Files
kotlin-fork/compiler/testData/ir/irText/fakeOverrides/annotations/nullabilityAnnotationOverrideOnComplexHierarchy.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

147 lines
2.2 KiB
Kotlin
Vendored

open class A : Java2 {
constructor() /* primary */ {
super/*Java2*/()
/* <init>() */
}
}
class B : Java2 {
constructor() /* primary */ {
super/*Java2*/()
/* <init>() */
}
override fun bar(): String {
return "2"
}
override fun foo(s: String?) {
}
}
class C : Java3 {
constructor() /* primary */ {
super/*Java3*/()
/* <init>() */
}
}
class D : Java3 {
constructor() /* primary */ {
super/*Java3*/()
/* <init>() */
}
override fun bar(): String {
return "3"
}
override fun foo(s: String?) {
}
}
abstract class E : Java2, Java4 {
constructor() /* primary */ {
super/*Java2*/()
/* <init>() */
}
}
class F : Java2, Java4 {
constructor() /* primary */ {
super/*Java2*/()
/* <init>() */
}
override fun foo(s: Any?) {
}
}
abstract class G : Java2, KotlinInterface {
constructor() /* primary */ {
super/*Java2*/()
/* <init>() */
}
}
class H : Java2, KotlinInterface {
override val nullableString: Any
field = nullableString
override get
constructor(nullableString: Any) /* primary */ {
super/*Java2*/()
/* <init>() */
}
override fun foo(s: Any) {
}
}
class I : Java5 {
constructor() /* primary */ {
super/*Java5*/()
/* <init>() */
}
}
interface KotlinInterface {
abstract fun bar(): Any?
abstract fun foo(s: Any)
abstract val nullableString: Any
abstract get
}
fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I) {
a(super<A>).#nullableString /*~> Unit */
a.foo(s = "")
a.bar() /*~> Unit */
b(super<B>).#nullableString /*~> Unit */
b.foo(s = "")
b.bar() /*~> Unit */
c(super<C>).#nullableString /*~> Unit */
c.foo(s = "")
c.bar() /*~> Unit */
d(super<D>).#nullableString /*~> Unit */
d.foo(s = "")
d.bar() /*~> Unit */
e(super<E>).#nullableString /*~> Unit */
e.foo(s = "")
e.foo(s = 1)
e.bar() /*~> Unit */
f(super<F>).#nullableString /*~> Unit */
f.foo(s = "")
f.foo(s = 1)
f.bar() /*~> Unit */
g(super<G>).#nullableString /*~> Unit */
g.foo(s = 1)
g.bar() /*~> Unit */
h(super<H>).#nullableString /*~> Unit */
h.foo(s = 1)
h.bar() /*~> Unit */
i(super<I>).#nullableString /*~> Unit */
i.foo(s = "")
i.bar() /*~> Unit */
}