Files
kotlin-fork/compiler/testData/ir/irText/fakeOverrides/operators/basicOverrideOnComplexHierarchy.fir.kt.txt
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

108 lines
1.6 KiB
Kotlin
Vendored

open class A {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
open operator fun get(i: Int?): Int {
return 2
}
open operator fun invoke() {
}
open operator fun plus(i: Int?): A {
return A()
}
}
class B : Java1 {
constructor() /* primary */ {
super/*Java1*/()
/* <init>() */
}
}
class C : Java2 {
constructor() /* primary */ {
super/*Java2*/()
/* <init>() */
}
}
class D : Java1 {
constructor() /* primary */ {
super/*Java1*/()
/* <init>() */
}
override operator fun get(i: Int?): Int {
return 3
}
override operator fun invoke() {
}
override operator fun plus(i: Int?): A {
return A()
}
}
abstract class E : Java4 {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
}
class F : Java4 {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
override operator fun get(i: Int?): Int {
return 4
}
override operator fun invoke() {
}
override operator fun plus(i: Int?): Java3 {
return CHECK_NOT_NULL<Nothing>(arg0 = null)
}
}
interface KotlinInterface : Java3 {
}
fun test(b: B, c: C, d: D, e: E, f: F) {
val k: Unit = b.invoke()
val k1: A = b.plus(i = 1)
val k2: Int = b.get(i = 1)
val k3: Unit = c.invoke()
val k4: A = c.plus(i = 1)
val k5: Int = c.get(i = 1)
val k6: Unit = d.invoke()
val k7: A = d.plus(i = 1)
val k8: Int = d.get(i = 1)
val k9: Unit = e.invoke()
val k10: Java3 = e.plus(i = 1) /*!! Java3 */
val k11: Int = e.get(i = 1) /*!! Int */
val k12: Unit = f.invoke()
val k13: Java3 = f.plus(i = 1)
val k14: Int = f.get(i = 1)
}