summaryrefslogtreecommitdiff
path: root/test/files/pos/cyclics.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/pos/cyclics.scala')
-rw-r--r--test/files/pos/cyclics.scala23
1 files changed, 21 insertions, 2 deletions
diff --git a/test/files/pos/cyclics.scala b/test/files/pos/cyclics.scala
index 69092ce7ab..a49f4faaca 100644
--- a/test/files/pos/cyclics.scala
+++ b/test/files/pos/cyclics.scala
@@ -1,7 +1,26 @@
trait Param[T]
trait Abs { type T }
trait Cyclic1[A <: Param[A]] // works
-trait Cyclic2[A <: Abs { type T <: A }] // fails
-trait Cyclic3 { type A <: Abs { type T = A } } // fails
+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 elements: Iterator[Elem]
+
+ def map [B] (f: Elem => B): ConstrOf[B]
+
+ def foreach(f: Elem => Unit) = elements.foreach(f)
+}
+
+
+trait Iterable[A] extends IterableTemplate { self =>
+ type Elem
+ type Constr <: Iterable[A] { type Constr <: Iterable.this.Constr }
+}