56d1184515
Condition was too strict if @JvmDefault implicitly hidden by class in inheritance. Diagnostic is redundant cause there isn't breaking change depending on interface method generation strategy and delegating stub generation in inheriting class.
62 lines
1.6 KiB
Kotlin
Vendored
62 lines
1.6 KiB
Kotlin
Vendored
// !JVM_TARGET: 1.8
|
|
// FILE: 1.kt
|
|
interface A {
|
|
<!JVM_DEFAULT_IN_DECLARATION!>@JvmDefault
|
|
fun test()<!> {
|
|
}
|
|
}
|
|
|
|
// FILE: 2.kt
|
|
interface <!JVM_DEFAULT_THROUGH_INHERITANCE!>B<!> : A {
|
|
|
|
}
|
|
|
|
interface C : B {
|
|
<!JVM_DEFAULT_IN_DECLARATION!>@JvmDefault
|
|
override fun test()<!> {
|
|
super.<!USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL!>test<!>()
|
|
}
|
|
}
|
|
|
|
open class Foo : B {
|
|
override fun test() {
|
|
super.<!USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL!>test<!>()
|
|
}
|
|
}
|
|
open class <!JVM_DEFAULT_THROUGH_INHERITANCE!>Foo2<!> : B
|
|
|
|
open class Bar : Foo2() {
|
|
override fun test() {
|
|
super.test()
|
|
}
|
|
}
|
|
|
|
open class Bar2 : Bar() {
|
|
override fun test() {
|
|
super.test()
|
|
}
|
|
}
|
|
|
|
class ManySupers: Foo2(), B {
|
|
fun foo() {
|
|
super<Foo2>.test()
|
|
super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>B<!>>.<!USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL!>test<!>()
|
|
<!AMBIGUOUS_SUPER!>super<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>test<!>()
|
|
}
|
|
}
|
|
|
|
class <!JVM_DEFAULT_THROUGH_INHERITANCE!>ManySupers2<!>: Foo2(), C {
|
|
fun foo() {
|
|
super<Foo2>.test()
|
|
super<C>.<!USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL!>test<!>()
|
|
<!AMBIGUOUS_SUPER!>super<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>test<!>()
|
|
}
|
|
}
|
|
|
|
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>class <!JVM_DEFAULT_THROUGH_INHERITANCE!>ManySupers3<!><!>: Bar2(), C {
|
|
fun foo() {
|
|
super<Bar2>.test()
|
|
super<C>.<!USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL!>test<!>()
|
|
<!AMBIGUOUS_SUPER!>super<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>test<!>()
|
|
}
|
|
} |