summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-01-08 16:23:11 +0000
committerMartin Odersky <odersky@gmail.com>2009-01-08 16:23:11 +0000
commit86397c940a2b4df6166a9bc9ed3e03d008f4dd57 (patch)
treed42ce9c60542a512689331e086f9b44f46fce4f3 /test
parent0313e1c018d89fc4e4474f42308e81cfc60fdfb6 (diff)
downloadscala-86397c940a2b4df6166a9bc9ed3e03d008f4dd57.tar.gz
scala-86397c940a2b4df6166a9bc9ed3e03d008f4dd57.tar.bz2
scala-86397c940a2b4df6166a9bc9ed3e03d008f4dd57.zip
fixed erroneous cyclic reference error conditio...
fixed erroneous cyclic reference error condition; generated new starr.
Diffstat (limited to 'test')
-rw-r--r--test/files/neg/structural.check6
-rw-r--r--test/files/pos/NoCyclicReference.scala7
2 files changed, 10 insertions, 3 deletions
diff --git a/test/files/neg/structural.check b/test/files/neg/structural.check
index a0342c4d9c..3a4a627b26 100644
--- a/test/files/neg/structural.check
+++ b/test/files/neg/structural.check
@@ -1,6 +1,9 @@
structural.scala:3: error: illegal dependent method type
def f(x: { type D; def m: D }) = x.m
^
+structural.scala:19: error: illegal dependent method type
+ def f9[C <: AnyRef](x: AnyRef{ type D <: AnyRef; def m[E >: Null <: AnyRef](x: AnyRef): D }) = x.m[Tata](()) //suceed
+ ^
structural.scala:10: error: Parameter type in structural refinement may not refer to abstract type defined outside that same refinement
def f1[C <: AnyRef](x: AnyRef{ type D <: AnyRef; def m[E >: Null <: AnyRef](x: A): AnyRef; val x: A }) = x.m[Tata](x.x) //fail
^
@@ -10,9 +13,6 @@ structural.scala:11: error: Parameter type in structural refinement may not refe
structural.scala:12: error: Parameter type in structural refinement may not refer to abstract type defined outside that same refinement
def f3[C <: AnyRef](x: AnyRef{ type D <: AnyRef; def m[E >: Null <: AnyRef](x: C): AnyRef; val x: C }) = x.m[Tata](x.x) //fail
^
-structural.scala:19: error: illegal dependent method type
- def f9[C <: AnyRef](x: AnyRef{ type D <: AnyRef; def m[E >: Null <: AnyRef](x: AnyRef): D }) = x.m[Tata](()) //suceed
- ^
structural.scala:42: error: Parameter type in structural refinement may not refer to abstract type defined outside that same refinement
type Summable[T] = { def +(v : T) : T }
^
diff --git a/test/files/pos/NoCyclicReference.scala b/test/files/pos/NoCyclicReference.scala
new file mode 100644
index 0000000000..e42896661e
--- /dev/null
+++ b/test/files/pos/NoCyclicReference.scala
@@ -0,0 +1,7 @@
+package test
+
+trait Iterable[+A] { self =>
+
+ type CC[B] <: Iterable[B] { type CC[C] = self.CC[C] }
+
+}