Files
kotlin-fork/compiler/testData/codegen/box/bridges/internalMethodOverridePublishedApi.kt
T
Alexander Korepanov 7a31167e0b [Common IR] Do not add internal methods to overrides
[JS IR] Use a module name in JsFunctionSignature for internal methods

^KT-60635 Fixed
2023-08-09 16:35:59 +00:00

107 lines
2.0 KiB
Kotlin
Vendored

// WITH_STDLIB
// MODULE: lib1
// FILE: DemoClassInternal1.kt
abstract class DemoClassInternal {
@PublishedApi
internal open fun demo(): Int = 1
}
// FILE: TestDemo1.kt
inline fun testDemoInline(d: DemoClassInternal): Int = d.demo()
fun testDemo(d: DemoClassInternal): Int = d.demo()
// MODULE: main(lib1)
// FILE: MyDemo.kt
open class MyDemo1 : DemoClassInternal()
class MyDemo2 : DemoClassInternal() {
fun demo(): Int = 2
}
open class MyDemo3 : DemoClassInternal() {
open fun demo(): Int = 3
}
class MyDemo4: MyDemo1()
class MyDemo5: MyDemo1() {
fun demo(): Int = 5
}
class MyDemo6: MyDemo3()
class MyDemo7: MyDemo3() {
override fun demo(): Int = 7
}
// FILE: Box.kt
import kotlin.test.assertEquals
fun testMyDemo1() {
val myDemo = MyDemo1()
assertEquals(testDemoInline(myDemo), 1)
assertEquals(testDemo(myDemo), 1)
}
fun testMyDemo2() {
val myDemo = MyDemo2()
assertEquals(testDemoInline(myDemo), 2)
assertEquals(testDemo(myDemo), 2)
assertEquals(myDemo.demo(), 2)
}
fun testMyDemo3() {
val myDemo = MyDemo3()
assertEquals(testDemoInline(myDemo), 3)
assertEquals(testDemo(myDemo), 3)
assertEquals(myDemo.demo(), 3)
}
fun testMyDemo4() {
val myDemo = MyDemo4()
assertEquals(testDemoInline(myDemo), 1)
assertEquals(testDemo(myDemo), 1)
}
fun testMyDemo5() {
val myDemo = MyDemo5()
assertEquals(testDemoInline(myDemo), 5)
assertEquals(testDemo(myDemo), 5)
assertEquals(myDemo.demo(), 5)
}
fun testMyDemo6() {
val myDemo = MyDemo6()
assertEquals(testDemoInline(myDemo), 3)
assertEquals(testDemo(myDemo), 3)
assertEquals(myDemo.demo(), 3)
}
fun testMyDemo7() {
val myDemo = MyDemo7()
assertEquals(testDemoInline(myDemo), 7)
assertEquals(testDemo(myDemo), 7)
assertEquals(myDemo.demo(), 7)
}
fun box(): String {
testMyDemo1()
testMyDemo2()
testMyDemo3()
testMyDemo4()
testMyDemo5()
testMyDemo6()
testMyDemo7()
return "OK"
}