aboutsummaryrefslogtreecommitdiff
path: root/tests/untried/pos/cyclics-pos.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/untried/pos/cyclics-pos.scala')
-rw-r--r--tests/untried/pos/cyclics-pos.scala26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/untried/pos/cyclics-pos.scala b/tests/untried/pos/cyclics-pos.scala
new file mode 100644
index 000000000..395e88815
--- /dev/null
+++ b/tests/untried/pos/cyclics-pos.scala
@@ -0,0 +1,26 @@
+trait Param[T]
+trait Abs { type T }
+trait Cyclic1[A <: Param[A]] // works
+trait Cyclic2[A <: Abs { type T <: A }]
+trait Cyclic3 { type A <: Abs { type T = A } }
+trait Cyclic4 { type A <: Param[A] } // works
+trait Cyclic5 { type AA <: Abs; type A <: AA { type T = A } }
+
+
+trait IterableTemplate {
+ type Elem
+ type Constr <: IterableTemplate
+ type ConstrOf[A] = Constr { type Elem = A }
+
+ def iterator: Iterator[Elem]
+
+ def map [B] (f: Elem => B): ConstrOf[B]
+
+ def foreach(f: Elem => Unit) = iterator.foreach(f)
+}
+
+
+trait Iterable[A] extends IterableTemplate { self =>
+ type Elem
+ type Constr <: Iterable[A] { type Constr <: Iterable.this.Constr }
+}