diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-08-08 13:40:38 +0200 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-08-08 13:44:40 +0200 |
commit | 52fa311f885e20b05178bf28553f3952ba8a5df7 (patch) | |
tree | 64f8e534a50e3816dcb00d641d431dc3bc984f78 /test/files | |
parent | a80b538763d88604d93b8c71604042c69e6b1073 (diff) | |
download | scala-52fa311f885e20b05178bf28553f3952ba8a5df7.tar.gz scala-52fa311f885e20b05178bf28553f3952ba8a5df7.tar.bz2 scala-52fa311f885e20b05178bf28553f3952ba8a5df7.zip |
SI-6205 make pt fully defined before inferTypedPattern
refines my fix for SI-2038 (#981) by making pt fully defined before calling inferTypedPattern,
instead of making the result of inferTypedPattern fully defined
I finally realized my mistake by diffing the -Ytyper-debug output of compiling the variants with:
```
x match {case Holder(k: A[kt]) => (k: A[kt])}
```
and
```
(x: Any) match {case Holder(k: A[kt]) => (k: A[kt])}
```
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/pos/t6205.scala | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/files/pos/t6205.scala b/test/files/pos/t6205.scala new file mode 100644 index 0000000000..02d924fe85 --- /dev/null +++ b/test/files/pos/t6205.scala @@ -0,0 +1,18 @@ +// original code by reporter +class A[T] +class Test1 { + def x(backing: Map[A[_], Any]) = + for( (k: A[kt], v) <- backing) + yield (k: A[kt]) +} + +// this tests same thing as above, but independent of library classes, +// earlier expansions eliminated as well as variance (everything's invariant) +case class Holder[A](a: A) +class Mapped[A] { def map[T](f: Holder[A] => T): Iterable[T] = ??? } +class Test2 { + def works(backing: Mapped[A[_]]): Iterable[A[_]] + = backing.map(x => + x match {case Holder(k: A[kt]) => (k: A[kt])} + ) +}
\ No newline at end of file |