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

129 lines
1.9 KiB
Kotlin
Vendored

// MODULE: separate
// FILE: KotlinInternalSeparate.kt
open class KotlinInternalSeparate {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
@PublishedApi
internal open fun foo() {
}
@PublishedApi
internal open val a: Int
internal open get(): Int {
return 1
}
}
// MODULE: main
// FILE: test.kt
class A : InternalVisibility, JavaDefault {
constructor() /* primary */ {
super/*InternalVisibility*/()
/* <init>() */
}
override fun foo() {
}
internal override val a: Int
internal override get(): Int {
return 10
}
}
class B : InternalVisibility, JavaPublic {
constructor() /* primary */ {
super/*InternalVisibility*/()
/* <init>() */
}
override fun foo() {
}
internal override val a: Int
internal override get(): Int {
return 10
}
}
abstract class C : KotlinInternalSeparate, JavaDefault {
constructor() /* primary */ {
super/*KotlinInternalSeparate*/()
/* <init>() */
}
}
class D : KotlinInternalSeparate, JavaDefault {
constructor() /* primary */ {
super/*KotlinInternalSeparate*/()
/* <init>() */
}
override fun foo() {
}
}
abstract class E : KotlinInternalSeparate, JavaPublic {
constructor() /* primary */ {
super/*KotlinInternalSeparate*/()
/* <init>() */
}
}
class F : KotlinInternalSeparate, JavaPublic {
constructor() /* primary */ {
super/*KotlinInternalSeparate*/()
/* <init>() */
}
override fun foo() {
}
}
open class InternalVisibility {
@PublishedApi
internal open val a: Int
field = 4
internal open get
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
@PublishedApi
internal open fun foo() {
}
}
fun test(a: A, b: B, c: C, d: D, e: E, f: F) {
a.foo()
a.<get-a>() /*~> Unit */
b.foo()
b.<get-a>() /*~> Unit */
c.foo()
d.foo()
f.foo()
}