summaryrefslogtreecommitdiff
path: root/test/files/neg
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-08-06 21:53:17 +0000
committerPaul Phillips <paulp@improving.org>2011-08-06 21:53:17 +0000
commit05382e2351e1ec6ebfbb50c4df12a2b1410a0b80 (patch)
tree4112795a3f5fa89fa47408a20526b88d57599c34 /test/files/neg
parent990fa046e6bbe95d5def208b38fead77d2437f9f (diff)
downloadscala-05382e2351e1ec6ebfbb50c4df12a2b1410a0b80.tar.gz
scala-05382e2351e1ec6ebfbb50c4df12a2b1410a0b80.tar.bz2
scala-05382e2351e1ec6ebfbb50c4df12a2b1410a0b80.zip
Improved structural type error messages, and ot...
Improved structural type error messages, and other error message related boosts. Closes SI-4877, review by odersky.
Diffstat (limited to 'test/files/neg')
-rw-r--r--test/files/neg/bug4877.check22
-rw-r--r--test/files/neg/bug4877.flags1
-rw-r--r--test/files/neg/bug4877.scala22
3 files changed, 45 insertions, 0 deletions
diff --git a/test/files/neg/bug4877.check b/test/files/neg/bug4877.check
new file mode 100644
index 0000000000..6970271c40
--- /dev/null
+++ b/test/files/neg/bug4877.check
@@ -0,0 +1,22 @@
+bug4877.scala:4: error: type mismatch;
+ found : java.lang.Object{def bar: Int}
+ required: AnyRef{def bar: String}
+ def foo: AnyRef { def bar: String } = new AnyRef { def bar = 42 }
+ ^
+bug4877.scala:6: error: type mismatch;
+ found : java.lang.Object{def bar(x: Int): java.lang.String}
+ required: AnyRef{def bar(x: Int): Int}
+ def foo3: AnyRef { def bar(x: Int): Int } = new AnyRef { def bar(x: Int) = "abc" }
+ ^
+bug4877.scala:7: error: type mismatch;
+ found : java.lang.Object with C{def bar(x: Int): Int}
+ required: C{def bar(x: Int): Int; def quux(x: Int): Int}
+ def foo4: C { def bar(x: Int): Int ; def quux(x: Int): Int } = new C { def bar(x: Int) = 5 }
+ ^
+bug4877.scala:17: error: type mismatch;
+ found : java.lang.Object{type Mom = String; def bar(x: Int): Int; def bippy(): List[Int]}
+ required: B.this.Bippy (which expands to)
+ AnyRef{type Mom; def bar(x: Int): this.Mom; def bippy(): List[this.Mom]}
+ val x: Bippy = new AnyRef {
+ ^
+four errors found
diff --git a/test/files/neg/bug4877.flags b/test/files/neg/bug4877.flags
new file mode 100644
index 0000000000..7ccd56103a
--- /dev/null
+++ b/test/files/neg/bug4877.flags
@@ -0,0 +1 @@
+-Xlint \ No newline at end of file
diff --git a/test/files/neg/bug4877.scala b/test/files/neg/bug4877.scala
new file mode 100644
index 0000000000..5d97877518
--- /dev/null
+++ b/test/files/neg/bug4877.scala
@@ -0,0 +1,22 @@
+trait C { }
+
+class A {
+ def foo: AnyRef { def bar: String } = new AnyRef { def bar = 42 }
+ def foo2: AnyRef { def bar: String } = new AnyRef { def bar = "abc" }
+ def foo3: AnyRef { def bar(x: Int): Int } = new AnyRef { def bar(x: Int) = "abc" }
+ def foo4: C { def bar(x: Int): Int ; def quux(x: Int): Int } = new C { def bar(x: Int) = 5 }
+}
+
+class B {
+ type Bippy = {
+ type Mom
+ def bar(x: Int): Mom
+ def bippy(): List[Mom]
+ }
+
+ val x: Bippy = new AnyRef {
+ type Mom = String
+ def bar(x: Int) = 55
+ def bippy() = List(bar(55))
+ }
+} \ No newline at end of file