New diagnostic for Java default method call via super in trait

This commit is contained in:
Michael Bogdanov
2015-04-24 12:22:40 +03:00
parent 0854c601b4
commit 39fabda611
13 changed files with 192 additions and 16 deletions
@@ -0,0 +1,24 @@
// FILE: Test.java
public interface Test {
default String test() {
return "123";
}
}
// FILE: test.kt
trait KTrait : Test {
fun ktest() {
<!TRAIT_CANT_CALL_DEFAULT_METHOD_VIA_SUPER!>super.test()<!>
test()
}
}
class A : KTrait {
fun a() {
super.test()
test()
}
}
@@ -0,0 +1,26 @@
package
internal final class A : KTrait {
public constructor A()
internal final fun a(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal open override /*1*/ /*fake_override*/ fun ktest(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun test(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait KTrait : Test {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal open fun ktest(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun test(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public trait Test {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun test(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,24 @@
// FILE: test.kt
public trait Test {
fun test(): String {
return "123";
}
}
trait KTrait : Test {
fun ktest() {
super.test()
test()
}
}
class A : KTrait {
fun b() {
super.test()
test()
}
}
@@ -0,0 +1,26 @@
package
internal final class A : KTrait {
public constructor A()
internal final fun b(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal open override /*1*/ /*fake_override*/ fun ktest(): kotlin.Unit
internal open override /*1*/ /*fake_override*/ fun test(): kotlin.String
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait KTrait : Test {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal open fun ktest(): kotlin.Unit
internal open override /*1*/ /*fake_override*/ fun test(): kotlin.String
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public trait Test {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal open fun test(): kotlin.String
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}