[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>
This commit is contained in:
committed by
Space Team
parent
30aae741a6
commit
82255d5ee8
+137
@@ -0,0 +1,137 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_STDLIB
|
||||
// SEPARATE_SIGNATURE_DUMP_FOR_K2
|
||||
// ^ ISSUE: KT-66048
|
||||
|
||||
// FILE: Java1.java
|
||||
public class Java1 extends KotlinClass { }
|
||||
|
||||
// FILE: Java2.java
|
||||
public class Java2 extends KotlinClass {
|
||||
public String getA() {
|
||||
return "2";
|
||||
}
|
||||
public String getB() {
|
||||
return "2";
|
||||
}
|
||||
public void setC(String text) { }
|
||||
public String getC() {
|
||||
return "2";
|
||||
}
|
||||
public void overloadMethod(String first, String second, int third) { }
|
||||
}
|
||||
|
||||
// FILE: Java3.java
|
||||
interface Java3 {
|
||||
String a = "2";
|
||||
void foo();
|
||||
String getB();
|
||||
void setB(String text);
|
||||
void setC(String text);
|
||||
String getC();
|
||||
void overloadMethod(String first, String second, int third);
|
||||
}
|
||||
|
||||
// FILE: 1.kt
|
||||
open class KotlinClass {
|
||||
@JvmField
|
||||
val a = "1"
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
@JvmName("getBJava")
|
||||
fun getB() : String = "b"
|
||||
|
||||
@get:JvmName("getText")
|
||||
@set:JvmName("setText")
|
||||
var c = "1"
|
||||
|
||||
@JvmOverloads
|
||||
open fun overloadMethod(first : String, second : String = "text", third : Int = 10) { }
|
||||
}
|
||||
|
||||
class A : Java1() //Kotlin ← Java ← Kotlin
|
||||
|
||||
class B : Java1() {
|
||||
override fun overloadMethod(first: String, second: String, third: Int) { }
|
||||
}
|
||||
|
||||
class C : Java2() // Kotlin ← Java (override) ← Kotlin
|
||||
|
||||
class D : Java2() {
|
||||
override val a: String
|
||||
get() = "3"
|
||||
override fun overloadMethod(first: String, second: String, third: Int) { }
|
||||
}
|
||||
|
||||
abstract class E : Java1() , Java3 // Kotlin ← Java1, Java2 ← Kotlin2
|
||||
|
||||
class F : Java1() , Java3 {
|
||||
override fun foo() { }
|
||||
override fun setB(text: String) { }
|
||||
override fun setC(text: String) { }
|
||||
override fun getC(): String {
|
||||
return "5"
|
||||
}
|
||||
}
|
||||
|
||||
abstract class G : Java1() , KotlinInterface // Kotlin ← Java, Kotlin2 ← Kotlin3
|
||||
|
||||
class H(override val b: String) : Java1() , KotlinInterface {
|
||||
override fun foo() { }
|
||||
override fun overloadMethod(first: String) { }
|
||||
}
|
||||
|
||||
interface KotlinInterface{
|
||||
val a: String
|
||||
fun foo()
|
||||
val b : String
|
||||
var c : String
|
||||
fun overloadMethod(first : String)
|
||||
}
|
||||
|
||||
fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H) {
|
||||
a.a
|
||||
a.c
|
||||
a.c = "2"
|
||||
a.overloadMethod("")
|
||||
b.a
|
||||
b.c
|
||||
b.c = "2"
|
||||
b.overloadMethod("", "2", 3)
|
||||
c.a
|
||||
c.c
|
||||
c.c = "2"
|
||||
c.overloadMethod("")
|
||||
c.overloadMethod("","",1)
|
||||
d.a
|
||||
d.c
|
||||
d.c = "2"
|
||||
d.overloadMethod("")
|
||||
d.overloadMethod("","",1)
|
||||
e.a
|
||||
e.b
|
||||
e.c
|
||||
e.c = "2"
|
||||
e.b = "2"
|
||||
e.overloadMethod("")
|
||||
f.a
|
||||
f.b
|
||||
f.c
|
||||
f.c = "2"
|
||||
f.b = "2"
|
||||
f.overloadMethod("")
|
||||
g.a
|
||||
g.b
|
||||
g.c
|
||||
g.c = "2"
|
||||
g.overloadMethod("")
|
||||
h.a
|
||||
h.b
|
||||
h.c
|
||||
h.overloadMethod("")
|
||||
h.overloadMethod("", "", 1)
|
||||
}
|
||||
Reference in New Issue
Block a user