[JS IR] IC improvements

- Reuse a built fragment
  - Use cache for saving built JS code
This commit is contained in:
Alexander Korepanov
2022-03-30 18:19:28 +03:00
committed by Space
parent f8ae097e50
commit 9952d43252
137 changed files with 1280 additions and 899 deletions
@@ -1,2 +1,9 @@
fun box() = Demo(100500) == Demo(15)
fun box(stepId: Int): String {
when (stepId) {
0, 2 -> if (Demo(15) == Demo(15)) return "Fail"
1, 3 -> if (Demo(15) != Demo(15)) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,9 +1,5 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
STEP 2:
dependencies: stdlib, lib1
STEP 3:
STEP 1..3:
dependencies: stdlib, lib1
@@ -2,9 +2,7 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
STEP 1:
libs: lib1, main
STEP 2:
libs: lib1, main
STEP 3:
dirty js: stdlib, lib1, main
STEP 1..3:
libs: lib1, main
dirty js: stdlib, lib1
@@ -1 +1,39 @@
fun box() = Demo("test1").foo() + Demo("test2").foo_inline() + "${Demo("test3").field1}"
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
fun box(stepId: Int): String {
when (stepId) {
0 -> {
isEqual(Demo("test1").foo(), "foo test1") ?: return "Fail function"
isEqual(Demo("test2").foo_inline(), "inline foo test2") ?: return "Fail inline function"
isEqual(Demo("test3").field1, "field1") ?: return "Fail field"
}
1 -> {
isEqual(Demo("test1").foo(), "foo test1 update") ?: return "Fail function"
isEqual(Demo("test2").foo_inline(), "inline foo test2") ?: return "Fail inline function"
isEqual(Demo("test3").field1, "field1") ?: return "Fail field"
}
2, 3, 4 -> {
isEqual(Demo("test1").foo(), "foo test1 update") ?: return "Fail function"
isEqual(Demo("test2").foo_inline(), "inline foo test2 update") ?: return "Fail inline function"
isEqual(Demo("test3").field1, "field1") ?: return "Fail field"
}
5, 6, 7, 8, 9 -> {
isEqual(Demo("test1").foo(), "foo test1 update") ?: return "Fail function"
isEqual(Demo("test2").foo_inline(), "inline foo test2 update") ?: return "Fail inline function"
isEqual(Demo("test3").field1, "field1 update") ?: return "Fail field"
}
10 -> {
isEqual(Demo("test1").foo(), "foo test1 update") ?: return "Fail function"
isEqual(Demo("test2").foo_inline(), "inline foo test2 update") ?: return "Fail inline function"
isEqual(Demo("test3").field1, 77) ?: return "Fail field"
}
11 -> {
isEqual(Demo("test1").foo(), "foo test1 update") ?: return "Fail function"
isEqual(Demo("test2").foo_inline(), "inline foo test2 update") ?: return "Fail inline function"
isEqual(Demo("test3").field1, null) ?: return "Fail field"
}
else -> return "Unkown"
}
return "OK"
}
@@ -3,27 +3,11 @@ STEP 0:
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
STEP 2:
STEP 2..3:
dependencies: stdlib, lib1
dirty: m.kt
STEP 3:
dependencies: stdlib, lib1
dirty: m.kt
STEP 4:
dependencies: stdlib, lib1
STEP 5:
dependencies: stdlib, lib1
STEP 6:
dependencies: stdlib, lib1
STEP 7:
dependencies: stdlib, lib1
STEP 8:
dependencies: stdlib, lib1
STEP 9:
dependencies: stdlib, lib1
STEP 10:
dependencies: stdlib, lib1
dirty: m.kt
STEP 11:
STEP 4..9:
dependencies: stdlib, lib1
STEP 10..11:
dependencies: stdlib, lib1
dirty: m.kt
@@ -2,25 +2,22 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
dirty js: stdlib, lib1, main
STEP 1:
libs: lib1, main
STEP 2:
dirty js: lib1
STEP 2..3:
libs: lib1, main
STEP 3:
libs: lib1, main
STEP 4:
libs: lib1, main
STEP 5:
libs: lib1, main
STEP 6:
dirty js: lib1, main
STEP 4..6:
libs: lib1, main
dirty js: lib1
STEP 7:
libs: lib1, main
STEP 8:
dirty js: stdlib, lib1
STEP 8..9:
libs: lib1, main
STEP 9:
libs: lib1, main
STEP 10:
libs: lib1, main
STEP 11:
dirty js: lib1
STEP 10..11:
libs: lib1, main
dirty js: lib1, main
@@ -1,6 +1,5 @@
STEP 0:
dependencies: stdlib, lib1
dirty: l2.kt
STEP 1:
dependencies: stdlib, lib1
@@ -1,2 +1,15 @@
fun box() = qux() == bar()
fun box(stepId: Int): String {
when (stepId) {
0 -> {
if (qux() != "FOO") return "Fail qux"
if (bar() != "FOO") return "Fail bar"
}
1 -> {
if (qux() != "BAR") return "Fail qux"
if (bar() != "BAR") return "Fail bar"
}
else -> return "Unknown"
}
return "OK"
}
@@ -1,6 +1,5 @@
STEP 0:
dependencies: stdlib, lib1, lib2
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1, lib2
@@ -2,6 +2,7 @@ MODULES: lib1, lib2, main
STEP 0:
libs: lib1, lib2, main
dirty js: stdlib, lib1, lib2, main
STEP 1:
libs: lib1, lib2, main
libs: lib1, lib2, main
dirty js: lib1
@@ -0,0 +1,6 @@
fun foo() = 42
fun bar() = 24
fun baz(s: String) = s.length
fun baz(i: Int) = i + 2
fun baz(b: Boolean) = if (b) 10 else 1
@@ -0,0 +1,6 @@
STEP 0:
dependencies: stdlib
dirty: l1.kt
STEP 1..6:
dependencies: stdlib
flags: FP
@@ -0,0 +1,2 @@
fun qux() = foo() + 2
@@ -0,0 +1,2 @@
fun qux() = foo() + bar()
@@ -0,0 +1,2 @@
fun qux() = foo() - 2
@@ -0,0 +1,2 @@
fun qux() = baz(2) + baz("test") + baz(true)
@@ -0,0 +1,2 @@
fun qux() = baz("test") + baz(true)
@@ -0,0 +1,2 @@
fun qux() = baz("test") + 100
@@ -0,0 +1,31 @@
STEP 0:
dependencies: stdlib, lib1
dirty: l2.kt
STEP 1:
dependencies: stdlib, lib1
modifications:
U : l2.kt.1.txt -> l2.kt
dirty: l2.kt
STEP 2:
dependencies: stdlib, lib1
modifications:
U : l2.kt.2.txt -> l2.kt
dirty: l2.kt
STEP 3:
dependencies: stdlib, lib1
modifications:
U : l2.kt.3.txt -> l2.kt
dirty: l2.kt
STEP 4:
dependencies: stdlib, lib1
modifications:
U : l2.kt.4.txt -> l2.kt
dirty: l2.kt
STEP 5:
dependencies: stdlib, lib1
flags: FP
STEP 6:
dependencies: stdlib, lib1
modifications:
U : l2.kt.6.txt -> l2.kt
dirty: l2.kt
@@ -0,0 +1,12 @@
fun box(stepId: Int): String {
when (stepId) {
0 -> if (qux() != 44) return "Fail"
1 -> if (qux() != 66) return "Fail"
2 -> if (qux() != 40) return "Fail"
3 -> if (qux() != 18) return "Fail"
4 -> if (qux() != 14) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -0,0 +1,11 @@
fun box(stepId: Int): String {
when (stepId) {
5 -> if (qux() != 14) return "Fail"
6 -> if (qux() != 104) return "Fail"
else -> return "Unknown"
}
if (baz(77) != 79) return "Fail"
if (baz("test") != 4) return "Fail"
return "OK"
}
@@ -0,0 +1,12 @@
STEP 0:
dependencies: stdlib, lib1, lib2
dirty: m.kt
STEP 1..4:
dependencies: stdlib, lib1, lib2
STEP 5:
dependencies: stdlib, lib1, lib2
modifications:
U : m.kt.5.txt -> m.kt
dirty: m.kt
STEP 6:
dependencies: stdlib, lib1, lib2
@@ -0,0 +1,14 @@
MODULES: lib1, lib2, main
STEP 0:
libs: lib1, lib2, main
dirty js: stdlib, lib1, lib2, main
STEP 1..4:
libs: lib1, lib2, main
dirty js: lib1, lib2
STEP 5:
libs: lib1, lib2, main
dirty js: lib1, main
STEP 6:
libs: lib1, lib2, main
dirty js: lib1, lib2, main
@@ -3,5 +3,4 @@ STEP 0:
dirty: l1.kt
STEP 1:
dependencies: stdlib
dirty:
flags: FP
@@ -1,9 +1,8 @@
STEP 0:
dependencies: stdlib, lib1
dirty: l2.kt
STEP 1:
dependencies: stdlib, lib1
modifications:
U : l2.kt.1 -> l2.kt
dirty: l2.kt
dirty: l2.kt
@@ -1,2 +1,9 @@
fun box() = qux()
fun box(stepId: Int): String {
when (stepId) {
0 -> if (qux() != 42) return "Fail"
1 -> if (qux() != 44) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,6 +1,5 @@
STEP 0:
dependencies: stdlib, lib1, lib2
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1, lib2
dependencies: stdlib, lib1, lib2
@@ -2,6 +2,7 @@ MODULES: lib1, lib2, main
STEP 0:
libs: lib1, lib2, main
dirty js: stdlib, lib1, lib2, main
STEP 1:
libs: lib1, lib2, main
libs: lib1, lib2, main
dirty js: lib2
@@ -3,5 +3,4 @@ STEP 0:
dirty: l1.kt
STEP 1:
dependencies: stdlib
dirty:
flags: FP
@@ -1,7 +1,6 @@
STEP 0:
dependencies: stdlib, lib1
dirty: l2.kt
STEP 1:
dependencies: stdlib, lib1
flags: FP
flags: FP
@@ -1,2 +1,2 @@
fun box() = qux()
fun box() = if (qux() == 42) "OK" else "Fail"
@@ -1,7 +1,6 @@
STEP 0:
dependencies: stdlib, lib1, lib2
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1, lib2
flags: FP
flags: FP
@@ -2,6 +2,6 @@ MODULES: lib1, lib2, main
STEP 0:
libs: lib1, lib2, main
dirty js: stdlib, lib1, lib2, main
STEP 1:
libs: lib1, lib2, main
libs: lib1, lib2, main
@@ -1,2 +1,11 @@
fun box() = foo()
fun box(stepId: Int): String {
when (stepId) {
0 -> if (foo() != (42 + 77)) return "Fail"
1 -> if (foo() != (42 + 88)) return "Fail"
2 -> if (foo() != (42 + 88 + 11)) return "Fail"
3 -> if (foo() != (42 + 88 + 22)) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -2,9 +2,13 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
dirty js: stdlib, lib1, main
STEP 1:
libs: lib1, main
dirty js: lib1
STEP 2:
libs: lib1, main
dirty js: lib1, main
STEP 3:
libs: lib1, main
dirty js: lib1
@@ -1,2 +1,23 @@
fun box() = foo()
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
fun box(stepId: Int): String {
when (stepId) {
0, 8, 15, 16 -> isEqual(foo(), 42) ?: return "Fail"
1 -> isEqual(foo(), false) ?: return "Fail"
2 -> isEqual(foo(), 3.14) ?: return "Fail"
3, 5, 6, 12 -> isEqual(foo(), "string") ?: return "Fail"
4 -> isEqual(foo(), null) ?: return "Fail"
7 -> {
foo() // Unit
return "OK"
}
9 -> isEqual(foo(), 42 + 77) ?: return "Fail"
10 -> isEqual(foo(), 42 + 98 + 1) ?: return "Fail"
11 -> isEqual(foo(), 42 + 91) ?: return "Fail"
13 -> isEqual(foo(), 99) ?: return "Fail"
14 -> isEqual(foo(), 1L) ?: return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,51 +1,3 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
dirty: m.kt
STEP 2:
dependencies: stdlib, lib1
dirty: m.kt
STEP 3:
dependencies: stdlib, lib1
dirty: m.kt
STEP 4:
dependencies: stdlib, lib1
dirty: m.kt
STEP 5:
dependencies: stdlib, lib1
dirty: m.kt
STEP 6:
dependencies: stdlib, lib1
dirty: m.kt
STEP 7:
dependencies: stdlib, lib1
dirty: m.kt
STEP 8:
dependencies: stdlib, lib1
dirty: m.kt
STEP 9:
dependencies: stdlib, lib1
dirty: m.kt
STEP 10:
dependencies: stdlib, lib1
dirty: m.kt
STEP 11:
dependencies: stdlib, lib1
dirty: m.kt
STEP 12:
dependencies: stdlib, lib1
dirty: m.kt
STEP 13:
dependencies: stdlib, lib1
dirty: m.kt
STEP 14:
dependencies: stdlib, lib1
dirty: m.kt
STEP 15:
dependencies: stdlib, lib1
dirty: m.kt
STEP 16:
STEP 0..16:
dependencies: stdlib, lib1
dirty: m.kt
@@ -2,35 +2,13 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
STEP 1:
dirty js: stdlib, lib1, main
STEP 1..6:
libs: lib1, main
STEP 2:
dirty js: lib1, main
STEP 7..8:
libs: lib1, main
STEP 3:
libs: lib1, main
STEP 4:
libs: lib1, main
STEP 5:
libs: lib1, main
STEP 6:
libs: lib1, main
STEP 7:
libs: lib1, main
STEP 8:
libs: lib1, main
STEP 9:
libs: lib1, main
STEP 10:
libs: lib1, main
STEP 11:
libs: lib1, main
STEP 12:
libs: lib1, main
STEP 13:
libs: lib1, main
STEP 14:
libs: lib1, main
STEP 15:
libs: lib1, main
STEP 16:
dirty js: stdlib, lib1, main
STEP 9..16:
libs: lib1, main
dirty js: lib1, main
@@ -1,2 +1,2 @@
fun box() = foo("demo")
fun box() = foo("OK")
@@ -1,15 +1,3 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
dirty: m.kt
STEP 2:
dependencies: stdlib, lib1
dirty: m.kt
STEP 3:
dependencies: stdlib, lib1
dirty: m.kt
STEP 4:
STEP 0..4:
dependencies: stdlib, lib1
dirty: m.kt
@@ -2,11 +2,7 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
STEP 1:
libs: lib1, main
STEP 2:
libs: lib1, main
STEP 3:
libs: lib1, main
STEP 4:
dirty js: stdlib, lib1, main
STEP 1..4:
libs: lib1, main
dirty js: lib1, main
@@ -3,25 +3,7 @@ STEP 0:
modifications:
U : proxy.kt.0.txt -> proxy.kt
dirty: proxy.kt
STEP 1:
dependencies: stdlib
flags: FP
STEP 2:
dependencies: stdlib
flags: FP
STEP 3:
dependencies: stdlib
flags: FP
STEP 4:
dependencies: stdlib
flags: FP
STEP 5:
dependencies: stdlib
flags: FP
STEP 6:
dependencies: stdlib
flags: FP
STEP 7:
STEP 1..7:
dependencies: stdlib
flags: FP
STEP 8:
@@ -29,25 +11,7 @@ STEP 8:
modifications:
U : proxy.kt.1.txt -> proxy.kt
dirty: proxy.kt
STEP 9:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 10:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 11:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 12:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 13:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 14:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 15:
STEP 9..15:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 16:
@@ -55,24 +19,6 @@ STEP 16:
modifications:
U : proxy.kt.2.txt -> proxy.kt
dirty: proxy.kt
STEP 17:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 18:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 19:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 20:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 21:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 22:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 23:
STEP 17..23:
dependencies: stdlib, lib1
dirty: proxy.kt
@@ -1,2 +1,14 @@
fun box() = foo("demo")
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
fun box(stepId: Int): String {
when (stepId) {
in 0..5 -> isEqual(foo("test"), 123) ?: return "Fail"
in 8..13 -> isEqual(foo("test"), 123) ?: return "Fail"
in 16..21 -> isEqual(foo("test"), 123) ?: return "Fail"
6, 14, 22 -> isEqual(foo("test"), 99) ?: return "Fail"
7, 15, 23 -> isEqual(foo("test"), "test") ?: return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,2 +1,14 @@
fun box() = foo_proxy("demo")
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
fun box(stepId: Int): String {
when (stepId) {
in 0..5 -> isEqual(foo_proxy("test"), 123) ?: return "Fail"
in 8..13 -> isEqual(foo_proxy("test"), 123) ?: return "Fail"
in 16..21 -> isEqual(foo_proxy("test"), 123) ?: return "Fail"
6, 14, 22 -> isEqual(foo_proxy("test"), 99) ?: return "Fail"
7, 15, 23 -> isEqual(foo_proxy("test"), "test") ?: return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,25 +1,4 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
dirty: m.kt
STEP 2:
dependencies: stdlib, lib1
dirty: m.kt
STEP 3:
dependencies: stdlib, lib1
dirty: m.kt
STEP 4:
dependencies: stdlib, lib1
dirty: m.kt
STEP 5:
dependencies: stdlib, lib1
dirty: m.kt
STEP 6:
dependencies: stdlib, lib1
dirty: m.kt
STEP 7:
STEP 0..7:
dependencies: stdlib, lib1
dirty: m.kt
STEP 8:
@@ -27,48 +6,6 @@ STEP 8:
modifications:
U : m.proxy.kt.txt -> m.kt
dirty: m.kt
STEP 9:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 10:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 11:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 12:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 13:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 14:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 15:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 16:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 17:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 18:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 19:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 20:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 21:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 22:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 23:
STEP 9..23:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
@@ -2,49 +2,22 @@ MODULES: lib1, main, libProxy
STEP 0:
libs: lib1, main
STEP 1:
dirty js: stdlib, lib1, main
STEP 1..5:
libs: lib1, main
STEP 2:
dirty js: lib1, main
STEP 6..7:
libs: lib1, main
STEP 3:
libs: lib1, main
STEP 4:
libs: lib1, main
STEP 5:
libs: lib1, main
STEP 6:
libs: lib1, main
STEP 7:
libs: lib1, main
STEP 8:
dirty js: stdlib, lib1, main
STEP 8..13:
libs: lib1, libProxy, main
STEP 9:
dirty js: lib1, libProxy, main
STEP 14..16:
libs: lib1, libProxy, main
STEP 10:
dirty js: stdlib, lib1, libProxy, main
STEP 17..21:
libs: lib1, libProxy, main
STEP 11:
libs: lib1, libProxy, main
STEP 12:
libs: lib1, libProxy, main
STEP 13:
libs: lib1, libProxy, main
STEP 14:
libs: lib1, libProxy, main
STEP 15:
libs: lib1, libProxy, main
STEP 16:
libs: lib1, libProxy, main
STEP 17:
libs: lib1, libProxy, main
STEP 18:
libs: lib1, libProxy, main
STEP 19:
libs: lib1, libProxy, main
STEP 20:
libs: lib1, libProxy, main
STEP 21:
libs: lib1, libProxy, main
STEP 22:
libs: lib1, libProxy, main
STEP 23:
dirty js: lib1, libProxy, main
STEP 22..23:
libs: lib1, libProxy, main
dirty js: stdlib, lib1, libProxy, main
@@ -1,2 +1,9 @@
fun box() = foo()
fun box(stepId: Int): String {
when(stepId) {
0, 1 -> if (foo() != 42) return "Fail"
2 -> if (foo() != 77) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,7 +1,4 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
STEP 0..1:
dependencies: stdlib, lib1
dirty: m.kt
STEP 2:
@@ -1,8 +1,8 @@
MODULES: lib1, main
STEP 0:
libs: lib1, main
STEP 1:
STEP 0..1:
libs: lib1, main
dirty js: stdlib, lib1, main
STEP 2:
libs: lib1, main
dirty js: lib1
@@ -1,6 +1,53 @@
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
inline fun test1(x: () -> Any) = x()
fun test2(x: () -> Any) = x()
inline fun test3(x: () -> Any) = x()
fun box() = test1(::foo1).toString() + test2(::foo2).toString() + test3 { foo3() }.toString()
fun box(stepId: Int): String {
when (stepId) {
0 -> {
isEqual(test1(::foo1), "foo1") ?: return "Fail foo1"
isEqual(test2(::foo2), "foo2") ?: return "Fail foo2"
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
}
1 -> {
isEqual(test1(::foo1), "foo1 update") ?: return "Fail foo1"
isEqual(test2(::foo2), "foo2") ?: return "Fail foo2"
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
}
2 -> {
isEqual(test1(::foo1), "foo1 update") ?: return "Fail foo1"
isEqual(test2(::foo2), "foo2 update") ?: return "Fail foo2"
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
}
3 -> {
isEqual(test1(::foo1), 77) ?: return "Fail foo1"
isEqual(test2(::foo2), "foo2 update") ?: return "Fail foo2"
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
}
4 -> {
isEqual(test1(::foo1), 77) ?: return "Fail foo1"
isEqual(test2(::foo2), 88) ?: return "Fail foo2"
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
}
5, 6 -> {
isEqual(test1(::foo1), 77) ?: return "Fail foo1"
isEqual(test2(::foo2), 88) ?: return "Fail foo2"
isEqual(test3 { foo3() }, "foo3 update") ?: return "Fail foo3"
}
7, 8 -> {
isEqual(test1(::foo1), 99) ?: return "Fail foo1"
isEqual(test2(::foo2), 88) ?: return "Fail foo2"
isEqual(test3 { foo3() }, "foo3 update") ?: return "Fail foo3"
}
9 -> {
isEqual(test1(::foo1), 88) ?: return "Fail foo1"
isEqual(test2(::foo2), 88) ?: return "Fail foo2"
isEqual(test3 { foo3() }, "foo3 update") ?: return "Fail foo3"
}
else -> return "Unknown"
}
return "OK"
}
@@ -1,28 +1,8 @@
STEP 0:
STEP 0..1:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
STEP 2:
dependencies: stdlib, lib1
STEP 3:
dependencies: stdlib, lib1
dirty: m.kt
STEP 4:
dependencies: stdlib, lib1
dirty: m.kt
STEP 5:
dependencies: stdlib, lib1
dirty: m.kt
STEP 6:
dependencies: stdlib, lib1
dirty: m.kt
STEP 7:
dependencies: stdlib, lib1
dirty: m.kt
STEP 8:
dependencies: stdlib, lib1
dirty: m.kt
STEP 9:
STEP 3..9:
dependencies: stdlib, lib1
dirty: m.kt
@@ -2,21 +2,13 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
dirty js: stdlib, lib1, main
STEP 1:
libs: lib1, main
dirty js: lib1, main
STEP 2:
libs: lib1, main
STEP 3:
libs: lib1, main
STEP 4:
libs: lib1, main
STEP 5:
libs: lib1, main
STEP 6:
libs: lib1, main
STEP 7:
libs: lib1, main
STEP 8:
libs: lib1, main
STEP 9:
dirty js: lib1
STEP 3..9:
libs: lib1, main
dirty js: lib1, main
@@ -1,2 +1,9 @@
fun box() = foo()
fun box(stepId: Int): String {
when (stepId) {
0 -> if (foo() != (42 + 77)) return "Fail"
1, 2, 3 -> if (foo() != (42 + 88)) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,12 +1,3 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
dirty: m.kt
STEP 2:
dependencies: stdlib, lib1
dirty: m.kt
STEP 3:
STEP 0..3:
dependencies: stdlib, lib1
dirty: m.kt
@@ -2,9 +2,7 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
STEP 1:
libs: lib1, main
STEP 2:
libs: lib1, main
STEP 3:
dirty js: stdlib, lib1, main
STEP 1..3:
libs: lib1, main
dirty js: lib1, main
@@ -1 +1 @@
inline fun foo() = js("40 + 2")
inline fun foo() = js("42 + 1")
@@ -1 +1 @@
inline fun foo() = js("'42'")
inline fun foo() = js("'44'")
@@ -1,2 +1,11 @@
fun box() = foo()
fun box(stepId: Int): String {
when (stepId) {
0 -> if (foo() != 42) return "Fail"
1 -> if (foo() != 43) return "Fail"
2 -> if (foo() != "44") return "Fail"
3 -> if (foo() != "hello") return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,13 +1,3 @@
STEP 0:
STEP 0..3:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
dirty: m.kt
STEP 2:
dependencies: stdlib, lib1
dirty: m.kt
STEP 3:
dependencies: stdlib, lib1
dirty: m.kt
@@ -2,9 +2,7 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
STEP 1:
libs: lib1, main
STEP 2:
libs: lib1, main
STEP 3:
dirty js: stdlib, lib1, main
STEP 1..3:
libs: lib1, main
dirty js: lib1, main
@@ -1,2 +1,6 @@
fun box() = foo() + gaz()
fun box(): String {
if (foo() != 77) return "Fail foo"
if (gaz() != 99) return "Fail gaz"
return "OK"
}
@@ -1,18 +1,5 @@
STEP 0:
STEP 0..3:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
dirty: m.kt
STEP 2:
dependencies: stdlib, lib1
dirty: m.kt
STEP 3:
dependencies: stdlib, lib1
dirty: m.kt
STEP 4:
dependencies: stdlib, lib1
STEP 5:
dependencies: stdlib, lib1
STEP 6:
STEP 4..6:
dependencies: stdlib, lib1
@@ -2,15 +2,10 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
STEP 1:
dirty js: stdlib, lib1, main
STEP 1..3:
libs: lib1, main
STEP 2:
libs: lib1, main
STEP 3:
libs: lib1, main
STEP 4:
libs: lib1, main
STEP 5:
libs: lib1, main
STEP 6:
dirty js: lib1, main
STEP 4..6:
libs: lib1, main
dirty js: lib1
@@ -1,2 +1,5 @@
fun box() = qux()
fun box(): String {
if (qux() != 42) return "Fail"
return "OK"
}
@@ -1,2 +1,5 @@
fun box() = qux() + 88
fun box(): String {
if (qux() != 42) return "Fail qux"
return "OK"
}
@@ -1,7 +1,6 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt, m0.kt, m1.kt
STEP 1:
dependencies: stdlib, lib1
modifications:
@@ -2,6 +2,7 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
dirty js: stdlib, lib1, main
STEP 1:
libs: lib1, main
dirty js: main
@@ -5,8 +5,6 @@ STEP 1:
dependencies: stdlib
modifications:
D : l12.kt
dirty:
STEP 2:
dependencies: stdlib
modifications:
@@ -1,15 +1,13 @@
STEP 0:
dependencies: stdlib, lib1
dirty: l21.kt
STEP 1:
dependencies: stdlib, lib1
modifications:
U : l22.kt.1 -> l22.kt
dirty: l21.kt, l22.kt
STEP 2:
dependencies: stdlib, lib1
modifications:
D : l22.kt
dirty: l21.kt
dirty: l21.kt
@@ -1,11 +1,3 @@
STEP 0:
STEP 0..2:
dependencies: stdlib, lib1, lib2
dirty: l3.kt
STEP 1:
dependencies: stdlib, lib1, lib2
dirty: l3.kt
STEP 2:
dependencies: stdlib, lib1, lib2
dirty: l3.kt
@@ -1,2 +1,10 @@
fun box() = dex(4, 2)
fun box(stepId: Int): String {
when (stepId) {
0 -> if (dex(4, 2) != 11) return "Fail"
1 -> if (dex(4, 2) != 10) return "Fail"
2 -> if (dex(4, 2) != 9) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,11 +1,3 @@
STEP 0:
STEP 0..2:
dependencies: stdlib, lib1, lib2, lib3
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1, lib2, lib3
dirty: m.kt
STEP 2:
dependencies: stdlib, lib1, lib2, lib3
dirty: m.kt
@@ -2,9 +2,7 @@ MODULES: lib1, lib2, lib3, main
STEP 0:
libs: lib1, lib2, lib3, main
STEP 1:
dirty js: stdlib, lib1, lib2, lib3, main
STEP 1..2:
libs: lib1, lib2, lib3, main
STEP 2:
libs: lib1, lib2, lib3, main
dirty js: lib1, lib2, lib3, main
@@ -1,9 +1,8 @@
STEP 0:
dependencies: stdlib, lib1
dirty: l2.kt
STEP 1:
dependencies: stdlib, lib1
modifications:
U : l22.kt.1 -> l22.kt
dirty: l2.kt, l22.kt
dirty: l2.kt, l22.kt
@@ -1,7 +1,3 @@
STEP 0:
STEP 0..1:
dependencies: stdlib, lib1, lib2
dirty: l3.kt
STEP 1:
dependencies: stdlib, lib1, lib2
dirty: l3.kt
@@ -1,2 +1,9 @@
fun box() = dex(4, 2)
fun box(stepId: Int): String {
when (stepId) {
0 -> if (dex(4, 2) != 11) return "Fail"
1 -> if (dex(4, 2) != 18) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,7 +1,3 @@
STEP 0:
STEP 0..1:
dependencies: stdlib, lib1, lib2, lib3
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1, lib2, lib3
dirty: m.kt
@@ -2,6 +2,7 @@ MODULES: lib1, lib2, lib3, main
STEP 0:
libs: lib1, lib2, lib3, main
dirty js: stdlib, lib1, lib2, lib3, main
STEP 1:
libs: lib1, lib2, lib3, main
libs: lib1, lib2, lib3, main
dirty js: lib1, lib2, lib3, main
@@ -1,2 +1,10 @@
fun box() = foo()
fun box(stepId: Int): String {
when (stepId) {
0 -> if (foo() != 42) return "Fail"
1 -> if (foo() != 33) return "Fail"
2 -> if (foo() != 77) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,7 +1,5 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
STEP 2:
STEP 1..2:
dependencies: stdlib, lib1
@@ -2,7 +2,7 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
STEP 1:
libs: lib1, main
STEP 2:
dirty js: stdlib, lib1, main
STEP 1..2:
libs: lib1, main
dirty js: lib1
@@ -1,7 +1,5 @@
STEP 0:
dependencies: stdlib, lib1
dirty: l2.kt
STEP 1:
dependencies: stdlib, lib1
dirty:
@@ -1,2 +1,9 @@
fun box() = qux(4, 2)
fun box(stepId: Int): String {
when (stepId) {
0 -> if (qux(4, 2) != -8) return "Fail"
1 -> if (qux(4, 2) != -4) return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,7 +1,5 @@
STEP 0:
dependencies: stdlib, lib1, lib2
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1, lib2
dirty:
@@ -2,6 +2,7 @@ MODULES: lib1, lib2, main
STEP 0:
libs: lib1, lib2, main
dirty js: stdlib, lib1, lib2, main
STEP 1:
libs: lib1, lib2, main
libs: lib1, lib2, main
dirty js: lib1
@@ -1,8 +1,7 @@
STEP 0:
dependencies: stdlib, lib1
dirty: l2_0.kt, l2_1.kt
STEP 1:
dependencies: stdlib, lib1
modifications:
D : l2_1.kt
D : l2_1.kt
@@ -1,2 +1,6 @@
fun box() = qux0() + qux1()
fun box(): String {
if (qux0() != 42) return "Fail"
if (qux1() != 24) return "Fail"
return "OK"
}
@@ -1,2 +1,5 @@
fun box() = qux0()
fun box(): String {
if (qux0() != 42) return "Fail"
return "OK"
}
@@ -1,9 +1,8 @@
STEP 0:
dependencies: stdlib, lib1, lib2
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1, lib2
modifications:
U : m.kt.new -> m.kt
dirty: m.kt
dirty: m.kt
@@ -2,6 +2,7 @@ MODULES: lib1, lib2, main
STEP 0:
libs: lib1, lib2, main
dirty js: stdlib, lib1, lib2, main
STEP 1:
libs: lib1, lib2, main
libs: lib1, lib2, main
dirty js: lib1, lib2, main
@@ -1,7 +1,6 @@
STEP 0:
dependencies: stdlib
dirty: l1.kt
STEP 1:
dependencies: stdlib
flags: FP
flags: FP UNUSED
@@ -1,9 +1,8 @@
STEP 0:
dependencies: stdlib, lib1
dirty: l2.kt
STEP 1:
dependencies: stdlib
modifications:
U : l2.kt.1 -> l2.kt
dirty: l2.kt
dirty: l2.kt
@@ -1,2 +1,9 @@
fun box() = qux()
fun box(stepId: Int): String {
when (stepId) {
0 -> if (qux() != 42) return "Fail"
1 -> if (qux() != 99) return "Fail"
else -> "Unknown"
}
return "OK"
}
@@ -1,6 +1,5 @@
STEP 0:
dependencies: stdlib, lib1, lib2
dirty: m.kt
STEP 1:
dependencies: stdlib, lib2
@@ -2,6 +2,7 @@ MODULES: lib1, lib2, main
STEP 0:
libs: lib1, lib2, main
dirty js: stdlib, lib1, lib2, main
STEP 1:
libs: lib1, lib2, main
libs: lib1, lib2, main
dirty js: lib2
@@ -1,2 +1,5 @@
fun box() = foo0()
fun box(): String {
if (foo0() != 42) return "Fail"
return "OK"
}
@@ -2,9 +2,9 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
dirty js: stdlib, lib1, main
STEP 1:
libs: lib1, main
dirty js: lib1
STEP 2:
libs: lib1, main
@@ -1,2 +1,5 @@
fun box() = foo()
fun box(): String {
if (foo() != 42) return "Fail"
return "OK"
}
@@ -1,6 +1,5 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
dependencies: stdlib, lib1
@@ -2,6 +2,7 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
dirty js: stdlib, lib1, main
STEP 1:
libs: lib1, main
libs: lib1, main
dirty js: lib1

Some files were not shown because too many files have changed in this diff Show More