82255d5ee8
Add tests for fake overrides with focus on java interoperability Co-authored-by: Aleksandra Arsenteva <aleksandra.arsenteva@jetbrains.com>
111 lines
2.1 KiB
Kotlin
Vendored
111 lines
2.1 KiB
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
|
|
// FILE: Java1.java
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
public class Java1 {
|
|
@Nullable
|
|
public String nullableString = "3";
|
|
@Nullable
|
|
public String bar() {
|
|
return nullableString;
|
|
}
|
|
public void foo(@Nullable String s) {}
|
|
}
|
|
|
|
// FILE: Java2.java
|
|
public class Java2 extends Java1 { }
|
|
|
|
// FILE: Java3.java
|
|
public class Java3 extends Java1 {
|
|
@Override
|
|
public String bar() {
|
|
return "2";
|
|
}
|
|
|
|
@Override
|
|
public void foo(String s){}
|
|
public String nullableString = "5";
|
|
}
|
|
|
|
// FILE: Java4.java
|
|
public interface Java4 {
|
|
public Object bar();
|
|
|
|
public void foo(Object s);
|
|
public Object nullableString = "6";
|
|
}
|
|
|
|
// FILE: Java5.java
|
|
public class Java5 extends A { }
|
|
|
|
// FILE: 1.kt
|
|
open class A : Java2() // Kotlin ← Java1 ← Java2
|
|
|
|
class B : Java2() {
|
|
override fun bar(): String {
|
|
return "2"
|
|
}
|
|
override fun foo(s: String?) { }
|
|
}
|
|
|
|
class C : Java3() // Kotlin ← Java1(override) ← Java2
|
|
|
|
class D : Java3() {
|
|
override fun foo(s: String?) { }
|
|
override fun bar(): String {
|
|
return "3"
|
|
}
|
|
}
|
|
|
|
abstract class E : Java2(), Java4 // Kotlin ← Java1, Java2 ← Java3
|
|
|
|
class F : Java2(), Java4 {
|
|
override fun foo(s: Any?) { }
|
|
}
|
|
|
|
abstract class G : Java2() , KotlinInterface //Kotlin ← Java, Kotlin2 ← Java2
|
|
|
|
class H(override val nullableString: Any) : Java2() , KotlinInterface {
|
|
override fun foo(s: Any) { }
|
|
}
|
|
|
|
class I : Java5() //Kotlin ← Java ← Kotlin ← Java
|
|
|
|
interface KotlinInterface {
|
|
fun bar(): Any?
|
|
fun foo(s: Any)
|
|
val nullableString: Any
|
|
}
|
|
|
|
fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I) {
|
|
a.nullableString
|
|
a.foo("")
|
|
a.bar()
|
|
b.nullableString
|
|
b.foo("")
|
|
b.bar()
|
|
c.nullableString
|
|
c.foo("")
|
|
c.bar()
|
|
d.nullableString
|
|
d.foo("")
|
|
d.bar()
|
|
e.nullableString
|
|
e.foo("")
|
|
e.foo(1)
|
|
e.bar()
|
|
f.nullableString
|
|
f.foo("")
|
|
f.foo(1)
|
|
f.bar()
|
|
g.nullableString
|
|
g.foo(1)
|
|
g.bar()
|
|
h.nullableString
|
|
h.foo(1)
|
|
h.bar()
|
|
i.nullableString
|
|
i.foo("")
|
|
i.bar()
|
|
} |