summaryrefslogtreecommitdiff
path: root/test/files/run
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-09-30 20:53:04 +0000
committerPaul Phillips <paulp@improving.org>2010-09-30 20:53:04 +0000
commit1148daec9c6aeba69d5d37fde877ab20b310db5b (patch)
tree0e5293ca55a211083c46ad644faf5fe56334bab4 /test/files/run
parentd3c453d15c318c7c8da73d6a2ea2ae59a14da196 (diff)
downloadscala-1148daec9c6aeba69d5d37fde877ab20b310db5b.tar.gz
scala-1148daec9c6aeba69d5d37fde877ab20b310db5b.tar.bz2
scala-1148daec9c6aeba69d5d37fde877ab20b310db5b.zip
Still giddy with the thrill of fixing #266, I v...
Still giddy with the thrill of fixing #266, I vanquish another pattern matcher bug from the dawn of time. If you've always wanted to write code like this: class Bob[K[_]] { def foo(other: Any) = other match { case x: (Bob[X] forSome { type X[_] }) => } } Now is your chance. Closes #1427, review by moors. (Is there a better way to "shake off" the pattern existential?)
Diffstat (limited to 'test/files/run')
-rw-r--r--test/files/run/bug1427.scala15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/files/run/bug1427.scala b/test/files/run/bug1427.scala
new file mode 100644
index 0000000000..ab0a42c7b7
--- /dev/null
+++ b/test/files/run/bug1427.scala
@@ -0,0 +1,15 @@
+class Bob[K[_]] {
+ def foo(other: Any) = other match {
+ case x: (Bob[X] forSome { type X[_] }) => true
+ case _ => false
+ }
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ val x = new Bob[List]
+ val results = List(x, new Bob[Set], 55) map (x foo _)
+
+ assert(results == List(true, true, false))
+ }
+}