Java 8 rules for method overrides:
- report errors on implementing methods of Any in interfaces - update testData ~~~ Java 8 override restrictions: interface can't implement a method of 'Any' - update compiler sources
This commit is contained in:
+7
-4
@@ -1,12 +1,15 @@
|
||||
interface Trait {
|
||||
fun foo() = "O"
|
||||
override fun toString() = "K"
|
||||
fun bar(): String
|
||||
}
|
||||
|
||||
class SimpleClass : Trait
|
||||
class SimpleClass : Trait {
|
||||
override fun bar() = "K"
|
||||
}
|
||||
|
||||
// Delegating 'toString' doesn't work, see KT-9519
|
||||
class ComplexClass : Trait by SimpleClass() {
|
||||
override fun toString() = foo() + super.toString()
|
||||
fun qux() = foo() + bar()
|
||||
}
|
||||
|
||||
fun box() = ComplexClass().toString()
|
||||
fun box() = ComplexClass().qux()
|
||||
|
||||
@@ -8,10 +8,6 @@ interface IWithToString {
|
||||
override fun toString(): String
|
||||
}
|
||||
|
||||
interface IWithDefaultToString {
|
||||
override fun toString(): String = "I"
|
||||
}
|
||||
|
||||
class C1 : ClassWithToString(), ISomething {
|
||||
override fun toString(): String = super.toString()
|
||||
}
|
||||
@@ -20,15 +16,10 @@ class C2 : ClassWithToString(), IWithToString, ISomething {
|
||||
override fun toString(): String = super.toString()
|
||||
}
|
||||
|
||||
class C3 : IWithDefaultToString, ISomething {
|
||||
override fun toString(): String = super.toString()
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return when {
|
||||
C1().toString() != "C" -> "Failed #1"
|
||||
C2().toString() != "C" -> "Failed #2"
|
||||
C3().toString() != "I" -> "Failed #3"
|
||||
else -> "OK"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
interface A {
|
||||
override fun toString(): String {
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
|
||||
interface B : A
|
||||
|
||||
class C : B {
|
||||
override fun toString(): String {
|
||||
return super.toString()
|
||||
}
|
||||
}
|
||||
|
||||
fun box() = "${C()}"
|
||||
Reference in New Issue
Block a user