Files
kotlin-fork/compiler/testData/codegen/box/bridges/internalMethodOverrideInFriendModule.kt
T
Pavel Kunyavskiy e6fd523431 [IrFakeOverrideBuilder] Consolidate visibility handling
Now fake overrides declarations invisible for override
are totally ignored by FakeOverrideBuilder, instead of
creating fake overrides for them, and than filtering them
out later.

As side-effect it fixes KT-64972.

^KT-64974
2024-01-16 13:35:16 +00:00

75 lines
2.2 KiB
Kotlin
Vendored

// WITH_STDLIB
// MODULE: lib1
// FILE: Demo.kt
var DemoOpenSetterCalls = 0
var DemoOpenGetterCalls = 0
abstract class Demo {
internal open fun demoOpenFun(): Int = 5
internal open val demoOpenVal: Int = 6
internal open val demoOpenValGet: Int
get() = 7
internal open var demoOpenVarSetGet: Int = 8
set(value) { ++DemoOpenSetterCalls; field = value }
get() { ++DemoOpenGetterCalls; return field }
}
// FILE: TestDemo.kt
fun testOpenFun(d: Demo): Int = d.demoOpenFun()
fun testOpenVal(d: Demo): Int = d.demoOpenVal
fun testOpenValGet(d: Demo): Int = d.demoOpenValGet
fun testOpenVarGet(d: Demo): Int = d.demoOpenVarSetGet
fun testOpenVarSet(d: Demo, v: Int) { d.demoOpenVarSetGet = v }
// MODULE: main()(lib1)
// FILE: MyDemo.kt
var MyDemoOpenSetterCalls = 0
var MyDemoOpenGetterCalls = 0
class MyDemo : Demo() {
override fun demoOpenFun(): Int = 100 * super.demoOpenFun()
override val demoOpenVal: Int = 600
override val demoOpenValGet: Int
get() = 110 * super.demoOpenValGet
override var demoOpenVarSetGet: Int
set(value) { ++MyDemoOpenSetterCalls; super.demoOpenVarSetGet = value }
get() { ++MyDemoOpenGetterCalls; return 111 * super.demoOpenVarSetGet }
}
// FILE: Box.kt
import kotlin.test.assertEquals
fun testMyDemo() {
val myDemo = MyDemo()
assertEquals(testOpenFun(myDemo), 500)
assertEquals(testOpenVal(myDemo), 600)
assertEquals(testOpenValGet(myDemo), 770)
assertEquals(testOpenVarGet(myDemo), 888)
testOpenVarSet(myDemo, -8)
assertEquals(testOpenVarGet(myDemo), -888)
assertEquals(DemoOpenSetterCalls, 1)
assertEquals(DemoOpenGetterCalls, 2)
assertEquals(MyDemoOpenSetterCalls, 1)
assertEquals(MyDemoOpenGetterCalls, 2)
assertEquals(myDemo.demoOpenFun(), 500)
assertEquals(myDemo.demoOpenVal, 600)
assertEquals(myDemo.demoOpenValGet, 770)
assertEquals(myDemo.demoOpenVarSetGet, -888)
myDemo.demoOpenVarSetGet = -9
assertEquals(myDemo.demoOpenVarSetGet, -999)
assertEquals(DemoOpenSetterCalls, 2)
assertEquals(DemoOpenGetterCalls, 4)
assertEquals(MyDemoOpenSetterCalls, 2)
assertEquals(MyDemoOpenGetterCalls, 4)
}
fun box(): String {
testMyDemo()
return "OK"
}