summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-03-14 18:35:34 +0000
committerMartin Odersky <odersky@gmail.com>2007-03-14 18:35:34 +0000
commit8a799ca9851e83fc9acae686b2335660de04cd72 (patch)
tree35c494760d7090d931dc9d3ab170fa9facdd3a56 /test
parent611228e4e8a546caa5b161295070755b6d535995 (diff)
downloadscala-8a799ca9851e83fc9acae686b2335660de04cd72.tar.gz
scala-8a799ca9851e83fc9acae686b2335660de04cd72.tar.bz2
scala-8a799ca9851e83fc9acae686b2335660de04cd72.zip
changed test files
Diffstat (limited to 'test')
-rw-r--r--test/files/neg/bug1001.check6
-rw-r--r--test/files/neg/bug1001.scala105
-rw-r--r--test/files/neg/bug987.check2
3 files changed, 112 insertions, 1 deletions
diff --git a/test/files/neg/bug1001.check b/test/files/neg/bug1001.check
new file mode 100644
index 0000000000..e386359f4d
--- /dev/null
+++ b/test/files/neg/bug1001.check
@@ -0,0 +1,6 @@
+bug1001.scala:104: error: the type intersection Ee with D is malformed
+ --- because ---
+no common type instance of base types B[D] and B[Ee] exists
+ val data = List(N26,N25)
+ ^
+one error found
diff --git a/test/files/neg/bug1001.scala b/test/files/neg/bug1001.scala
new file mode 100644
index 0000000000..139ade366c
--- /dev/null
+++ b/test/files/neg/bug1001.scala
@@ -0,0 +1,105 @@
+// I suspect the stack overflow is occurring when the compiler is determining the types for the following line at the end of the file:-
+// val data = List(N26,N25)
+
+abstract class A
+{
+ // commenting out the following line (only) leads to successful compilation
+ protected val data: List[A]
+}
+
+trait B[T <: B[T]] requires T extends A {}
+
+abstract class C extends A
+{
+ // commenting out the following line (only) leads to successful compilation
+ protected val data: List[C]
+}
+
+abstract class D extends C with B[D] {}
+
+abstract class Ee extends C with B[Ee]
+{
+}
+
+
+object N1 extends D
+{
+ val data = Nil
+}
+
+object N2 extends D
+{
+ val data = Nil
+}
+
+object N5 extends D
+{
+ val data = List(N1)
+}
+
+object N6 extends D
+{
+ val data = List(N1)
+}
+
+object N8 extends D
+{
+ val data = List(N1)
+}
+
+object N10 extends D
+{
+ val data = Nil
+}
+
+object N13 extends D
+{
+ val data = List(N2)
+}
+
+object N14 extends D
+{
+ val data = List(N5,N10,N8)
+}
+
+object N15 extends D
+{
+ val data = List(N14)
+}
+
+object N16 extends D
+{
+ val data = List(N13,N6,N15)
+}
+
+object N17 extends D
+{
+ val data = List(N16)
+}
+
+object N21 extends D
+{
+ val data = List(N16)
+}
+
+object N22 extends D
+{
+ val data = List(N17)
+}
+
+object N25 extends D
+{
+ val data = List(N22)
+}
+
+object N26 extends Ee
+{
+ val data = List(N21,N17)
+}
+
+// Commenting out the following object (only) leads to successful compilation
+object N31 extends Ee
+{
+ // If we use List[C](N26,N25), we achieve successful compilation
+ val data = List(N26,N25)
+}
diff --git a/test/files/neg/bug987.check b/test/files/neg/bug987.check
index 3e9c19217d..77e71c9b5e 100644
--- a/test/files/neg/bug987.check
+++ b/test/files/neg/bug987.check
@@ -3,7 +3,7 @@ bug987.scala:15: error: the type intersection B[D] with B[C] is malformed
no common type instance of base types B[C] and B[D] exists
class E extends D
^
-bug987.scala:20: error: illegal cyclic reference involving class D
+bug987.scala:20: error: illegal cyclic reference involving class E
class F extends D
^
two errors found