diff options
Diffstat (limited to 'test/files/neg/overloaded-unapply.scala')
-rw-r--r-- | test/files/neg/overloaded-unapply.scala | 24 |
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 + } +} |