summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-07-26 15:05:05 +0000
committerPaul Phillips <paulp@improving.org>2011-07-26 15:05:05 +0000
commit544ad5df3b77a8ab4ded924d903784f1e05f4e73 (patch)
tree6403f97b86558d934ae03e328a2d6ace24e237e1
parent122eeea49984f6e77fc8a8f677398743dadfcac1 (diff)
downloadscala-544ad5df3b77a8ab4ded924d903784f1e05f4e73.tar.gz
scala-544ad5df3b77a8ab4ded924d903784f1e05f4e73.tar.bz2
scala-544ad5df3b77a8ab4ded924d903784f1e05f4e73.zip
Backport of r25219/r25220.
-rwxr-xr-xsrc/library/scala/reflect/generic/UnPickler.scala5
-rw-r--r--test/files/pos/bug4757/A_2.scala4
-rw-r--r--test/files/pos/bug4757/B_3.scala3
-rw-r--r--test/files/pos/bug4757/P_1.scala6
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
+}
+