summaryrefslogtreecommitdiff
path: root/test/files/neg/t4989.scala
diff options
context:
space:
mode:
authorAleksandar Prokopec <axel22@gmail.com>2012-06-28 19:48:31 +0200
committerAleksandar Prokopec <axel22@gmail.com>2012-06-28 19:48:31 +0200
commitb379ff4f59c139ff7d2b77e7e808f0b74aa9f268 (patch)
treed531663cc08c71cc2631c119403af3032c71b543 /test/files/neg/t4989.scala
parent2f0d94c02ab328a3f8da25b5ab8f402a68143af3 (diff)
parent6f08c06a35a0b70c49e23a296b13ac391a460584 (diff)
downloadscala-b379ff4f59c139ff7d2b77e7e808f0b74aa9f268.tar.gz
scala-b379ff4f59c139ff7d2b77e7e808f0b74aa9f268.tar.bz2
scala-b379ff4f59c139ff7d2b77e7e808f0b74aa9f268.zip
Merge branch 'master' into issue/5846,4597,4027,4112
Conflicts: src/library/scala/collection/MapLike.scala src/library/scala/collection/SortedMapLike.scala
Diffstat (limited to 'test/files/neg/t4989.scala')
-rw-r--r--test/files/neg/t4989.scala68
1 files changed, 68 insertions, 0 deletions
diff --git a/test/files/neg/t4989.scala b/test/files/neg/t4989.scala
new file mode 100644
index 0000000000..e7ff80ed74
--- /dev/null
+++ b/test/files/neg/t4989.scala
@@ -0,0 +1,68 @@
+abstract class A0 {
+ def print(): String
+}
+
+class A extends A0 {
+ def print(): String = "A"
+}
+
+abstract class B extends A {
+ def print() : String
+}
+
+class C extends B {
+ override def print(): String = super.print() // should be an error
+}
+
+trait T extends B {
+ override def print(): String = super.print() // should be an error
+}
+
+class D extends A {
+ override def print(): String = super.print() // okay
+}
+
+
+// it's okay do this when trait are in the mix, as the
+// suitable super accessor methods are used.
+object ConcreteMethodAndIntermediaryAreTraits {
+ trait T1 {
+ def print(): String = ""
+ }
+
+ trait T2 extends T1 {
+ def print(): String
+ }
+
+ class C3 extends T2 {
+ def print(): String = super.print() // okay
+ }
+}
+
+object IntermediaryIsTrait {
+ class T1 {
+ def print(): String = ""
+ }
+
+ trait T2 extends T1 {
+ def print(): String
+ }
+
+ class C3 extends T2 {
+ override def print(): String = super.print() // okay
+ }
+}
+
+object ConcreteMethodIsTrait {
+ trait T1 {
+ def print(): String = ""
+ }
+
+ abstract class T2 extends T1 {
+ def print(): String
+ }
+
+ class C3 extends T2 {
+ override def print(): String = super.print() // okay
+ }
+}