aboutsummaryrefslogtreecommitdiff
path: root/tests/untried/pos/cyclics-pos.scala
diff options
context:
space:
mode:
authorSamuel Gruetter <samuel.gruetter@epfl.ch>2014-03-12 22:44:33 +0100
committerSamuel Gruetter <samuel.gruetter@epfl.ch>2014-03-12 22:44:33 +0100
commit9ef5f6817688f814a3450126aa7383b0928e80a0 (patch)
tree5727a2f7f7fd665cefdb312af2785c692f04377c /tests/untried/pos/cyclics-pos.scala
parent194be919664447631ba55446eb4874979c908d27 (diff)
downloaddotty-9ef5f6817688f814a3450126aa7383b0928e80a0.tar.gz
dotty-9ef5f6817688f814a3450126aa7383b0928e80a0.tar.bz2
dotty-9ef5f6817688f814a3450126aa7383b0928e80a0.zip
add tests from scala/test/files/{pos,neg}
with explicit Unit return type
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 }
+}