diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/bug4877.check | 22 | ||||
-rw-r--r-- | test/files/neg/bug4877.flags | 1 | ||||
-rw-r--r-- | test/files/neg/bug4877.scala | 22 |
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 |