aboutsummaryrefslogtreecommitdiff
path: root/tests/pending/pos/ticket2251.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/pending/pos/ticket2251.scala')
-rw-r--r--tests/pending/pos/ticket2251.scala39
1 files changed, 0 insertions, 39 deletions
diff --git a/tests/pending/pos/ticket2251.scala b/tests/pending/pos/ticket2251.scala
deleted file mode 100644
index 006407247..000000000
--- a/tests/pending/pos/ticket2251.scala
+++ /dev/null
@@ -1,39 +0,0 @@
-
-// Martin: I am not sure this is a solvable problem right now. I'll leave it in pending.
-// derived from pos/t1001
-class A
-trait B[T <: B[T]] extends A
-class C extends B[C]
-class D extends B[D]
-
-class Data {
- // force computing lub of C and D (printLubs enabled:)
-
-/*
-lub of List(D, C) at depth 2
- lub of List(D, C) at depth 1
- lub of List(D, C) at depth 0
- lub of List(D, C) is A
- lub of List(D, C) is B[_1] forSome { type _1 >: D with C <: A }
-lub of List(D, C) is B[_2] forSome { type _2 >: D with C{} <: B[_1] forSome { type _1 >: D with C{} <: A } }
-*/
-// --> result = WRONG
-
- // should be: B[X] forSome {type X <: B[X]} -- can this be done automatically? for now, just detect f-bounded polymorphism and fall back to more coarse approximation
-
- val data: List[A] = List(new C, new D)
-
- val data2 = List(new C, new D)
-
- val data3: List[B[_ <: B[_ <: A]]] = List(new C, new D)
-
- // Not yet --
- // val data4: List[B[X] forSome { type X <: B[X] }] = List(new C, new D)
- // <console>:7: error: type mismatch;
- // found : List[B[_ >: D with C <: B[_ >: D with C <: A]]]
- // required: List[B[X] forSome { type X <: B[X] }]
- // val data4: List[B[X] forSome { type X <: B[X] }] = List(new C, new D)
-
- // works
- val data5 = List[B[X] forSome { type X <: B[X] }](new C, new D)
-}