[Common IR] Do not add internal methods to overrides
[JS IR] Use a module name in JsFunctionSignature for internal methods ^KT-60635 Fixed
This commit is contained in:
committed by
Space Team
parent
788fa5d545
commit
7a31167e0b
+75
@@ -0,0 +1,75 @@
|
||||
// IGNORE_BACKEND: WASM
|
||||
// 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"
|
||||
}
|
||||
Reference in New Issue
Block a user