[JS IR] Add tests for checking constant inlining with JS IR IC

^KT-62425
This commit is contained in:
Alexander Korepanov
2023-10-11 16:48:12 +02:00
committed by Space Team
parent 4ebfed04d3
commit 91edbeb747
49 changed files with 543 additions and 0 deletions
@@ -0,0 +1,2 @@
const val CONST_KEY = "KEY"
const val CONST_VALUE = "0"
@@ -0,0 +1,2 @@
const val CONST_KEY = "KEY"
const val CONST_VALUE = "1"
@@ -0,0 +1,2 @@
const val CONST_KEY = "KEY"
const val CONST_VALUE = 2
@@ -0,0 +1,2 @@
const val CONST_KEY = "KEY"
const val CONST_VALUE = 3
@@ -0,0 +1,2 @@
const val CONST_KEY = "KEY"
const val CONST_VALUE = 6
@@ -0,0 +1,2 @@
const val CONST_KEY = "KEY"
const val CONST_VALUE = 7
@@ -0,0 +1,26 @@
STEP 0:
modifications:
U : l1.0.kt -> l1.kt
added file: l1.kt
STEP 1:
modifications:
U : l1.1.kt -> l1.kt
modified ir: l1.kt
STEP 2:
modifications:
U : l1.2.kt -> l1.kt
modified ir: l1.kt
STEP 3:
modifications:
U : l1.3.kt -> l1.kt
modified ir: l1.kt
STEP 4:
STEP 5:
modifications:
U : l1.5.kt -> l1.kt
modified ir: l1.kt
STEP 6:
STEP 7:
modifications:
U : l1.7.kt -> l1.kt
modified ir: l1.kt
@@ -0,0 +1,28 @@
STEP 0:
modifications:
U : l1.0.kt -> l1.kt
added file: l1.kt
STEP 1:
modifications:
U : l1.1.kt -> l1.kt
modified ir: l1.kt
STEP 2:
modifications:
U : l1.2.kt -> l1.kt
modified ir: l1.kt
STEP 3:
modifications:
U : l1.3.kt -> l1.kt
modified ir: l1.kt
STEP 4:
updated exports: l1.kt
STEP 5:
modifications:
U : l1.5.kt -> l1.kt
modified ir: l1.kt
STEP 6:
updated exports: l1.kt
STEP 7:
modifications:
U : l1.7.kt -> l1.kt
modified ir: l1.kt
@@ -0,0 +1,3 @@
inline fun inlineFunction(): String {
return js("var testObj = { $CONST_KEY: '$CONST_VALUE' }; testObj.$CONST_KEY") as String
}
@@ -0,0 +1,3 @@
inline fun inlineFunction(): String {
return js("'4'") as String
}
@@ -0,0 +1 @@
fun inlineFunctionProxy() = inlineFunction()
@@ -0,0 +1,31 @@
STEP 0:
dependencies: lib1
modifications:
U : inlineFunction.0.6.kt -> inlineFunction.kt
U : inlineFunctionProxy.0.kt -> inlineFunctionProxy.kt
U : simpleFunction.0.6.kt -> simpleFunction.kt
added file: inlineFunction.kt, inlineFunctionProxy.kt, simpleFunction.kt
STEP 1..3:
dependencies: lib1
updated imports: inlineFunctionProxy.kt
modified ir: simpleFunction.kt, inlineFunction.kt
STEP 4:
dependencies: lib1
modifications:
U : inlineFunction.4.kt -> inlineFunction.kt
U : simpleFunction.4.kt -> simpleFunction.kt
modified ir: simpleFunction.kt, inlineFunction.kt
updated imports: inlineFunctionProxy.kt
STEP 5:
dependencies: lib1
STEP 6:
dependencies: lib1
modifications:
U : inlineFunction.0.6.kt -> inlineFunction.kt
U : simpleFunction.0.6.kt -> simpleFunction.kt
modified ir: simpleFunction.kt, inlineFunction.kt
updated imports: inlineFunctionProxy.kt
STEP 7:
dependencies: lib1
updated imports: inlineFunctionProxy.kt
modified ir: simpleFunction.kt, inlineFunction.kt
@@ -0,0 +1,36 @@
STEP 0:
dependencies: lib1
modifications:
U : inlineFunction.0.6.kt -> inlineFunction.kt
U : inlineFunctionProxy.0.kt -> inlineFunctionProxy.kt
U : simpleFunction.0.6.kt -> simpleFunction.kt
added file: inlineFunction.kt, inlineFunctionProxy.kt, simpleFunction.kt
STEP 1:
dependencies: lib1
updated imports: inlineFunctionProxy.kt, simpleFunction.kt, inlineFunction.kt
STEP 2:
dependencies: lib1
updated imports: inlineFunctionProxy.kt
modified ir: simpleFunction.kt, inlineFunction.kt
STEP 3:
dependencies: lib1
updated imports: inlineFunctionProxy.kt, simpleFunction.kt, inlineFunction.kt
STEP 4:
dependencies: lib1
modifications:
U : inlineFunction.4.kt -> inlineFunction.kt
U : simpleFunction.4.kt -> simpleFunction.kt
modified ir: simpleFunction.kt, , inlineFunction.kt
updated imports: inlineFunctionProxy.kt
STEP 5:
dependencies: lib1
STEP 6:
dependencies: lib1
modifications:
U : inlineFunction.0.6.kt -> inlineFunction.kt
U : simpleFunction.0.6.kt -> simpleFunction.kt
modified ir: simpleFunction.kt, inlineFunction.kt
updated imports: inlineFunctionProxy.kt
STEP 7:
dependencies: lib1
updated imports: inlineFunctionProxy.kt, simpleFunction.kt, inlineFunction.kt
@@ -0,0 +1,3 @@
fun simpleFunction(): String {
return js("var testObj = { $CONST_KEY: '$CONST_VALUE' }; testObj.$CONST_KEY") as String
}
@@ -0,0 +1,3 @@
fun simpleFunction(): String {
return js("'4'") as String
}
@@ -0,0 +1,11 @@
fun box(stepId: Int): String {
val expected = if (stepId == 5) stepId - 1 else stepId
var got = simpleFunction()
if (got != "$expected") return "Fail simpleFunction: '$got' != '$expected'"
got = inlineFunctionProxy()
if (got != "$expected") return "Fail inlineFunctionProxy: '$got' != '$expected'"
return "OK"
}
@@ -0,0 +1,5 @@
STEP 0:
dependencies: lib1, lib2
added file: m.kt
STEP 1..7:
dependencies: lib1, lib2
@@ -0,0 +1,26 @@
MODULES: lib1, lib2, main
STEP 0:
libs: lib1, lib2, main
dirty js modules: lib1, lib2, main
dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction, main, main/m, main/m.export
STEP 1..3:
libs: lib1, lib2, main
dirty js modules: lib1, lib2
dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
STEP 4:
libs: lib1, lib2, main
dirty js modules: lib2
dirty js files: lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
STEP 5:
libs: lib1, lib2, main
dirty js modules: lib1
dirty js files: lib1/l1
STEP 6:
libs: lib1, lib2, main
dirty js modules: lib2
dirty js files: lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
STEP 7:
libs: lib1, lib2, main
dirty js modules: lib1, lib2
dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
@@ -0,0 +1,18 @@
MODULES: lib1, lib2, main
STEP 0:
libs: lib1, lib2, main
dirty js modules: lib1, lib2, main
dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction, main, main/m, main/m.export
STEP 1..4:
libs: lib1, lib2, main
dirty js modules: lib1, lib2
dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction
STEP 5:
libs: lib1, lib2, main
dirty js modules: lib1
dirty js files: lib1/l1
STEP 6..7:
libs: lib1, lib2, main
dirty js modules: lib1, lib2
dirty js files: lib1/l1, lib2/simpleFunction, lib2/inlineFunctionProxy, lib2/inlineFunction