aboutsummaryrefslogtreecommitdiff
path: root/tests/untried/pos/unapplyNeedsMemberType.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/untried/pos/unapplyNeedsMemberType.scala')
-rw-r--r--tests/untried/pos/unapplyNeedsMemberType.scala25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/untried/pos/unapplyNeedsMemberType.scala b/tests/untried/pos/unapplyNeedsMemberType.scala
new file mode 100644
index 000000000..3a96e189a
--- /dev/null
+++ b/tests/untried/pos/unapplyNeedsMemberType.scala
@@ -0,0 +1,25 @@
+// error with -Xunapply, (because of missing call to memberType?)
+
+trait Gunk[a] {
+
+ type Seq
+
+ object Cons {
+ def unapply(s: Seq) = unapply_Cons(s)
+ }
+ def unapply_Cons(s: Any): Option[Tuple2[a, Seq]]
+}
+
+class Join[a] extends Gunk[a] {
+ type Seq = JoinSeq
+
+ abstract class JoinSeq
+ case class App(xs: Seq, ys: Seq) extends JoinSeq
+
+ def append(s1: Seq, s2: Seq): Seq = s1 // mock implementation
+
+ def unapply_Cons(s: Any) = s match {
+ case App(Cons(x, xs), ys) => Some((x, append(xs, ys)))
+ case _ => null
+ }
+}