summaryrefslogtreecommitdiff
path: root/test/files/neg/t7850.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-12-15 18:28:03 -0800
committerPaul Phillips <paulp@improving.org>2013-12-15 18:28:03 -0800
commitdef46a9d448c4ee84eea48694a65af438370f940 (patch)
tree43ff702f2988f0d88780c92394762991c4bb8764 /test/files/neg/t7850.scala
parent11bfa25e37d32f4017d5c04b4899b1bdfbd95e06 (diff)
downloadscala-def46a9d448c4ee84eea48694a65af438370f940.tar.gz
scala-def46a9d448c4ee84eea48694a65af438370f940.tar.bz2
scala-def46a9d448c4ee84eea48694a65af438370f940.zip
SI-7850 CCE in patmat with invalid isEmpty.
Name-based pattern matcher needed some hardening against unapply methods with the right name but wrong types. Only isEmpty methods which return Boolean are acceptable. Catching it directly rather than indirectly also allowed for better error messages.
Diffstat (limited to 'test/files/neg/t7850.scala')
-rw-r--r--test/files/neg/t7850.scala16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/files/neg/t7850.scala b/test/files/neg/t7850.scala
new file mode 100644
index 0000000000..04edad82b5
--- /dev/null
+++ b/test/files/neg/t7850.scala
@@ -0,0 +1,16 @@
+// isEmpty returns non-boolean
+class Casey(a: Int) { def isEmpty = this; def get = this }
+object Casey { def unapply(a: Casey) = a }
+
+// no isEmpty method at all
+class Dingy(a: Int) { def get = this }
+object Dingy { def unapply(a: Dingy) = a }
+
+object Test {
+ def main(args: Array[String]) {
+ val Casey(x1) = new Casey(1)
+ val Dingy(x2) = new Dingy(1)
+ println(s"$x1 $x2")
+ }
+}
+