Files
kotlin-fork/compiler/testData/ir/irText/classes/implicitNotNullOnDelegatedImplementation.kt
T
Dmitry Petrov d622542824 PSI2IR: Fix delegated members generation
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
2019-12-30 18:36:16 +03:00

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; }
}