summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/reflect/scala/reflect/internal/TreeInfo.scala18
-rw-r--r--test/files/run/t6968.check1
-rw-r--r--test/files/run/t6968.scala7
-rw-r--r--test/files/scalacheck/parallel-collections/ParallelMapCheck1.scala2
-rw-r--r--test/pending/neg/t5589neg.check (renamed from test/files/neg/t5589neg.check)0
-rw-r--r--test/pending/neg/t5589neg.scala (renamed from test/files/neg/t5589neg.scala)0
-rw-r--r--test/pending/neg/t5589neg2.scala (renamed from test/files/neg/t5589neg2.scala)0
-rw-r--r--test/pending/pos/t1336.scala (renamed from test/files/pos/t1336.scala)0
-rw-r--r--test/pending/pos/t5589.scala (renamed from test/files/pos/t5589.scala)0
-rw-r--r--test/pending/run/t4574.scala (renamed from test/files/run/t4574.scala)0
10 files changed, 17 insertions, 11 deletions
diff --git a/src/reflect/scala/reflect/internal/TreeInfo.scala b/src/reflect/scala/reflect/internal/TreeInfo.scala
index e1a18570b2..98c1afb323 100644
--- a/src/reflect/scala/reflect/internal/TreeInfo.scala
+++ b/src/reflect/scala/reflect/internal/TreeInfo.scala
@@ -261,22 +261,24 @@ abstract class TreeInfo {
* in the position `for { <tree> <- expr }` based only
* on information at the `parser` phase? To qualify, there
* may be no subtree that will be interpreted as a
- * Stable Identifier Pattern.
+ * Stable Identifier Pattern, nor any type tests, even
+ * on TupleN. See SI-6968.
*
* For instance:
*
* {{{
- * foo @ (bar, (baz, quux))
+ * (foo @ (bar @ _)) = 0
* }}}
*
- * is a variable pattern; if the structure matches,
- * then the remainder is inevitable.
+ * is a not a variable pattern; if only binds names.
*
* The following are not variable patterns.
*
* {{{
- * foo @ (bar, (`baz`, quux)) // back quoted ident, not at top level
- * foo @ (bar, Quux) // UpperCase ident, not at top level
+ * `bar`
+ * Bar
+ * (a, b)
+ * _: T
* }}}
*
* If the pattern is a simple identifier, it is always
@@ -305,10 +307,6 @@ abstract class TreeInfo {
tree match {
case Bind(name, pat) => isVarPatternDeep0(pat)
case Ident(name) => isVarPattern(tree)
- case Apply(sel, args) =>
- ( isReferenceToScalaMember(sel, TupleClass(args.size).name.toTermName)
- && (args forall isVarPatternDeep0)
- )
case _ => false
}
}
diff --git a/test/files/run/t6968.check b/test/files/run/t6968.check
new file mode 100644
index 0000000000..7a18941537
--- /dev/null
+++ b/test/files/run/t6968.check
@@ -0,0 +1 @@
+1, 3, 5
diff --git a/test/files/run/t6968.scala b/test/files/run/t6968.scala
new file mode 100644
index 0000000000..b5cadfd9e1
--- /dev/null
+++ b/test/files/run/t6968.scala
@@ -0,0 +1,7 @@
+object Test {
+ def main(args: Array[String]) {
+ val mixedList = List(1,(1,2),4,(3,1),(5,4),6)
+ val as = for((a,b) <- mixedList) yield a
+ println(as.mkString(", "))
+ }
+}
diff --git a/test/files/scalacheck/parallel-collections/ParallelMapCheck1.scala b/test/files/scalacheck/parallel-collections/ParallelMapCheck1.scala
index 05237bace8..b6af8f41bd 100644
--- a/test/files/scalacheck/parallel-collections/ParallelMapCheck1.scala
+++ b/test/files/scalacheck/parallel-collections/ParallelMapCheck1.scala
@@ -20,7 +20,7 @@ abstract class ParallelMapCheck[K, V](collname: String) extends ParallelIterable
property("gets iterated keys") = forAll(collectionPairs) {
case (t, coll) =>
val containsT = for ((k, v) <- t) yield (coll.get(k) == Some(v))
- val containsSelf = for ((k, v) <- coll) yield (coll.get(k) == Some(v))
+ val containsSelf = coll.map { case (k, v) => coll.get(k) == Some(v) }
("Par contains elements of seq map" |: containsT.forall(_ == true)) &&
("Par contains elements of itself" |: containsSelf.forall(_ == true))
}
diff --git a/test/files/neg/t5589neg.check b/test/pending/neg/t5589neg.check
index f1dad94df3..f1dad94df3 100644
--- a/test/files/neg/t5589neg.check
+++ b/test/pending/neg/t5589neg.check
diff --git a/test/files/neg/t5589neg.scala b/test/pending/neg/t5589neg.scala
index 31ff2c3693..31ff2c3693 100644
--- a/test/files/neg/t5589neg.scala
+++ b/test/pending/neg/t5589neg.scala
diff --git a/test/files/neg/t5589neg2.scala b/test/pending/neg/t5589neg2.scala
index b7c7ab7218..b7c7ab7218 100644
--- a/test/files/neg/t5589neg2.scala
+++ b/test/pending/neg/t5589neg2.scala
diff --git a/test/files/pos/t1336.scala b/test/pending/pos/t1336.scala
index 63967985c7..63967985c7 100644
--- a/test/files/pos/t1336.scala
+++ b/test/pending/pos/t1336.scala
diff --git a/test/files/pos/t5589.scala b/test/pending/pos/t5589.scala
index 69cbb20391..69cbb20391 100644
--- a/test/files/pos/t5589.scala
+++ b/test/pending/pos/t5589.scala
diff --git a/test/files/run/t4574.scala b/test/pending/run/t4574.scala
index 1dde496aca..1dde496aca 100644
--- a/test/files/run/t4574.scala
+++ b/test/pending/run/t4574.scala