Files
anzhela.sukhanova 82255d5ee8 [Test] KT-61360: add tests for the IrFakeOverrideBuilder
Add tests for fake overrides with focus on java interoperability

Co-authored-by: Aleksandra Arsenteva <aleksandra.arsenteva@jetbrains.com>
2024-03-04 16:21:02 +00:00

139 lines
2.6 KiB
Kotlin
Vendored

// TARGET_BACKEND: JVM
// FILE: Java1.java
public interface Java1 {
static Object a = 1;
static void foo(Object t) {}
static Object bar() {
return null;
}
}
// FILE: Java2.java
public class Java2 {
static Integer a = 2;
static void foo(Integer t) {}
static Integer bar() {
return 1;
}
}
// FILE: Java3.java
public interface Java3 {
default void foo(int t) {}
}
// FILE: Java4.java
public interface Java4 extends KotlinInterface { }
// FILE: Java5.java
public class Java5 implements Java1 {
public static int a = 5;
public static void foo(Object t) { }
}
// FILE: 1.kt
abstract class A : Java1, Java2(), KotlinInterface //Kotlin ← Java1, Java2, Kotlin2
class B(override var a: Int) : Java1, Java2(), KotlinInterface {
override fun bar(): Int {
return 5
}
override fun foo(t: Int) { }
}
class C(override var a: Int) : Java1, KotlinInterface, KotlinInterface2 { //Kotlin ← Java, Kotlin1, Kotlin2
override fun foo(t: Any) { }
override fun bar(): Int {
return 1
}
}
class D : Java1, Java2(), Java3 //Kotlin ← Java1, Java2, Java3
class E : Java1, Java2(), Java3 {
override fun foo(t: Int) { }
}
abstract class F : Java1, Java4 //Kotlin ← Java1, Java2 ← Kotlin2
class G : Java1, Java4 {
override var a: Int
get() = 10
set(value) { }
override fun foo(t: Int) { }
override fun bar(): Int {
return 10
}
}
class H(override var a: Int) : Java4, KotlinInterface2 { //Kotlin ← Java, Kotlin2 ← Kotlin3
override fun foo(t: Any) { }
override fun bar(): Int {
return 1
}
override fun foo(t: Int) { }
}
abstract class I : Java5(), KotlinInterface //Kotlin ← Java, Kotlin2 ← Java2
class J : Java5(), KotlinInterface {
override var a: Int
get() = 10
set(value) {}
}
class K : Java5(), Java3 //Kotlin ← Java1, Java2 ← Java3
class L : Java5(), Java3 {
override fun foo(t: Int) {}
}
interface KotlinInterface {
var a: Int
fun foo(t: Int) { }
fun bar(): Int {
return 10
}
}
interface KotlinInterface2 {
val a: Any
fun foo(t: Any)
fun bar(): Any
}
fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K, l: L){
a.a
a.foo(1)
a.bar()
b.a
b.foo(1)
b.bar()
c.a
c.foo(1)
c.foo("")
c.bar()
d.foo(1)
e.foo(1)
f.a
f.foo(1)
f.bar()
g.a
g.foo(1)
g.bar()
h.a
h.foo(1)
h.foo("")
h.bar()
i.a
i.foo(1)
i.bar()
j.a
j.foo(1)
j.bar()
k.foo(1)
l.foo(1)
}