[JS IR IC] Interface default implementations affect IC hash

Adding or removing a method or property with
a default implementation to an interface should
invalidate all children: we must regenerate JS code for them

^KT-56237 Fixed
This commit is contained in:
Alexander Korepanov
2023-04-25 14:53:34 +02:00
committed by Space Team
parent bad5c58952
commit 81b591ed21
45 changed files with 391 additions and 70 deletions
@@ -1,8 +1,9 @@
fun box(stepId: Int): String {
val obj = Module1Class()
val obj = Module2Class()
when (stepId) {
0, 1, 2, 3, 4, 5, 6, 7, 8 -> {
if (obj.testFunction1() != 1) return "Fail 1"
if (obj.testFunction1() != 1) return "Fail 1 class"
if (Module2Object.testFunction1() != 1) return "Fail 1 object"
}
else -> return "Unknown"
}
@@ -1,9 +1,11 @@
fun box(stepId: Int): String {
val obj = Module1Class()
val obj = Module2Class()
when (stepId) {
0, 1, 2, 3, 4, 5, 6, 7, 8 -> {
if (obj.testFunction1() != 1) return "Fail 1"
if (obj.testFunction22() != 22) return "Fail 22"
if (obj.testFunction1() != 1) return "Fail 1 class"
if (obj.testFunction22() != 22) return "Fail 22 class"
if (Module2Object.testFunction1() != 1) return "Fail 1 object"
if (Module2Object.testFunction22() != 22) return "Fail 22 object"
}
else -> return "Unknown"
}
@@ -1,15 +1,23 @@
fun box(stepId: Int): String {
val obj = Module1Class()
val obj = Module2Class()
when (stepId) {
0, 1, 2, 3, 4, 6, 7, 8 -> {
if (obj.testFunction1() != 1) return "Fail 1"
if (obj.testFunction22() != 22) return "Fail 22"
if (obj.testField222 != 222) return "Fail 222"
if (obj.testFunction1() != 1) return "Fail 1 class"
if (obj.testFunction22() != 22) return "Fail 22 class"
if (obj.testField222 != 222) return "Fail 222 class"
if (Module2Object.testFunction1() != 1) return "Fail 1 object"
if (Module2Object.testFunction22() != 22) return "Fail 22 object"
if (Module2Object.testField222 != 222) return "Fail 222 object"
}
5 -> {
if (obj.testFunction1() != 1) return "Fail 1"
if (obj.testFunction22() != 220) return "Fail 220"
if (obj.testField222 != 2220) return "Fail 2220"
if (obj.testFunction1() != 1) return "Fail 1 class"
if (obj.testFunction22() != 220) return "Fail 220 class"
if (obj.testField222 != 2220) return "Fail 2220 class"
if (Module2Object.testFunction1() != 1) return "Fail 1 object"
if (Module2Object.testFunction22() != 220) return "Fail 220 object"
if (Module2Object.testField222 != 2220) return "Fail 2220 object"
}
else -> return "Unknown"
}
@@ -1,13 +1,18 @@
suspend fun testCrossReference(): Int {
val obj = Module1Class()
suspend fun testCrossReferenceClass(): Int {
val obj = Module2Class()
return obj.testFunction2()
}
suspend fun testCrossReferenceObject(): Int {
return Module2Object.testFunction2()
}
fun box(stepId: Int): String {
val obj = Module1Class()
val obj = Module2Class()
when (stepId) {
0, 1, 2, 3, 4, 5, 6, 7, 8 -> {
if (obj.testFunction1() != 1) return "Fail 1"
if (obj.testFunction1() != 1) return "Fail 1 class"
if (Module2Object.testFunction1() != 1) return "Fail 1 object"
}
else -> return "Unknown"
}