diff options
-rwxr-xr-x | src/library/scala/reflect/generic/UnPickler.scala | 5 | ||||
-rw-r--r-- | test/files/pos/bug4757/A_2.scala | 4 | ||||
-rw-r--r-- | test/files/pos/bug4757/B_3.scala | 3 | ||||
-rw-r--r-- | test/files/pos/bug4757/P_1.scala | 6 |
4 files changed, 17 insertions, 1 deletions
diff --git a/src/library/scala/reflect/generic/UnPickler.scala b/src/library/scala/reflect/generic/UnPickler.scala index b7f324d6a3..745dd1c0da 100755 --- a/src/library/scala/reflect/generic/UnPickler.scala +++ b/src/library/scala/reflect/generic/UnPickler.scala @@ -396,7 +396,10 @@ abstract class UnPickler { NullaryMethodType(restpe) case EXISTENTIALtpe => val restpe = readTypeRef() - ExistentialType(until(end, readSymbolRef), restpe) + val tparams = until(end, readSymbolRef) + // binary compatibility: in 2.9.x, Symbol doesn't have setFlag + tparams foreach (x => x.asInstanceOf[{ def setFlag(mask: Long): this.type }] setFlag EXISTENTIAL) + ExistentialType(tparams, restpe) case ANNOTATEDtpe => var typeRef = readNat() val selfsym = if (isSymbolRef(typeRef)) { diff --git a/test/files/pos/bug4757/A_2.scala b/test/files/pos/bug4757/A_2.scala new file mode 100644 index 0000000000..63106a6179 --- /dev/null +++ b/test/files/pos/bug4757/A_2.scala @@ -0,0 +1,4 @@ +object A { + def ss = P.x(3)(Nil) +} + diff --git a/test/files/pos/bug4757/B_3.scala b/test/files/pos/bug4757/B_3.scala new file mode 100644 index 0000000000..b50d1cd834 --- /dev/null +++ b/test/files/pos/bug4757/B_3.scala @@ -0,0 +1,3 @@ +object C { + def x: Seq[S[_]] = A.ss +} diff --git a/test/files/pos/bug4757/P_1.scala b/test/files/pos/bug4757/P_1.scala new file mode 100644 index 0000000000..8f01a4b669 --- /dev/null +++ b/test/files/pos/bug4757/P_1.scala @@ -0,0 +1,6 @@ +trait S[T] + +object P { + def x(t: Int)(ss: Seq[S[_]]): Seq[S[_]] = ss +} + |