summaryrefslogtreecommitdiff
path: root/test/files/neg/overloaded-unapply.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/neg/overloaded-unapply.scala')
-rw-r--r--test/files/neg/overloaded-unapply.scala24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/files/neg/overloaded-unapply.scala b/test/files/neg/overloaded-unapply.scala
new file mode 100644
index 0000000000..36909626c1
--- /dev/null
+++ b/test/files/neg/overloaded-unapply.scala
@@ -0,0 +1,24 @@
+sealed abstract class List[+a]
+private case object Nil extends List[Nothing]
+private final case class Cons[+a](head: a, tail: List[a])
+extends List[a]
+
+object List {
+ def unapply[a](xs: List[a]): Option[(a, List[a])] = xs match {
+ case Nil => None
+ case Cons(x, xs) => Some(x, xs)
+ }
+
+ def unapply[a](xs: List[a]): Option[Null] = xs match {
+ case Nil => Some(null)
+ case Cons(_, _) => None
+ }
+
+ def foo[a](xs: List[a]) = xs match {
+ case List(x, xs) => 7
+ }
+
+ def bar(xs: Any) = xs match { // test error message OverloadedUnapplyError
+ case List(x, xs) => 7
+ }
+}