d622542824
When generating bodies for members implemented by delegation, invoke corresponding delegate member, not an interface member. Otherwise we might lose platform-specific nullability information in case of mixed Kotlin-Java hierarchies, as in implicitNotNullOnDelegatedImplementation.kt
47 lines
858 B
Kotlin
Vendored
47 lines
858 B
Kotlin
Vendored
// FILE: implicitNotNullOnDelegatedImplementation.kt
|
|
interface IFoo {
|
|
fun foo(): String
|
|
}
|
|
|
|
class K1 : JFoo()
|
|
|
|
class K2 : JFoo() {
|
|
override fun foo() = super.foo()
|
|
}
|
|
|
|
class K3 : JUnrelatedFoo(), IFoo
|
|
|
|
class K4 : JUnrelatedFoo(), IFoo {
|
|
override fun foo() = super.foo()
|
|
}
|
|
|
|
class TestJFoo : IFoo by JFoo() {
|
|
// nullability assertion in 'foo()'
|
|
}
|
|
|
|
class TestK1 : IFoo by K1() {
|
|
// nullability assertion in 'foo()'
|
|
}
|
|
|
|
class TestK2 : IFoo by K2() {
|
|
// no nullability assertion in 'foo()'
|
|
}
|
|
|
|
class TestK3 : IFoo by K3() {
|
|
// no nullability assertion in 'foo()'
|
|
}
|
|
|
|
class TestK4 : IFoo by K4() {
|
|
// nullability assertion in 'foo()'
|
|
}
|
|
|
|
|
|
// FILE: JFoo.java
|
|
public class JFoo implements IFoo {
|
|
public String foo() { return null; }
|
|
}
|
|
|
|
// FILE: JUnrelatedFoo.java
|
|
public class JUnrelatedFoo {
|
|
public String foo() { return null; }
|
|
} |