diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-01-13 17:42:48 +0100 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-01-27 22:42:02 -0800 |
commit | a87d40960bfdb4a683c05d3430a8874cb4dcff36 (patch) | |
tree | a65ddd00ebdee081055d982f6408cbfc34e9e62c /test/files/run | |
parent | 02963d724c512251ce66502226408091686989ee (diff) | |
download | scala-a87d40960bfdb4a683c05d3430a8874cb4dcff36.tar.gz scala-a87d40960bfdb4a683c05d3430a8874cb4dcff36.tar.bz2 scala-a87d40960bfdb4a683c05d3430a8874cb4dcff36.zip |
SI-6968 Simple Tuple patterns aren't irrefutable
Reverts part of c82ecab. The parser can't assume that
a pattern `(a, b)` will match, as results of
`.isInstanceOf[Tuple2]` can't be statically known until
after the typer.
The reopens SI-1336, SI-5589 and SI-4574, in exchange for fixing
this regression SI-6968. Keeping all of those fixed will require
a better definition of irrefutability, and some acrobatics to
ensure safe passage to the ambiguous trees through typechecking.
Diffstat (limited to 'test/files/run')
-rw-r--r-- | test/files/run/t4574.scala | 13 | ||||
-rw-r--r-- | test/files/run/t6968.check | 1 | ||||
-rw-r--r-- | test/files/run/t6968.scala | 7 |
3 files changed, 8 insertions, 13 deletions
diff --git a/test/files/run/t4574.scala b/test/files/run/t4574.scala deleted file mode 100644 index 1dde496aca..0000000000 --- a/test/files/run/t4574.scala +++ /dev/null @@ -1,13 +0,0 @@ -object Test { - val xs: List[(Int, Int)] = List((2, 2), null) - - def expectMatchError[T](msg: String)(body: => T) { - try { body ; assert(false, "Should not succeed.") } - catch { case _: MatchError => println(msg) } - } - - def main(args: Array[String]): Unit = { - expectMatchError("I hereby refute null!")( for ((x, y) <- xs) yield x ) - expectMatchError("I denounce null as unListLike!")( (null: Any) match { case List(_*) => true } ) - } -} 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(", ")) + } +} |