[JS IR] Rework incremental cache invalidation
Replace loading the whole world IR with loading only exported (reachable) IR.
For that purpose the direct and inverse dependency graph is used.
It is stored in a cache directory and the cache updater keeps it up to date.
If after loading it is found that other files must be also implicitly rebuilt
(see rebuilt reasons below), IR for that files also will be loaded.
This algorithm repeats until the number of implicitly rebuilt files is not 0.
More rebuilt reasons (dirty state) have been added:
- added file: this is a new file;
- modified ir: ir of the file has been updated;
- updated exports: exports from the file have been added or removed
(e.g. a function has been used from another file);
- updated inline imports: imported inline function has been modified
(transitively);
- removed inverse depends: a dependent file has been removed;
- removed direct depends: a dependency file has been removed;
- removed file: this file has been removed.
Incremental cache tests has been refactored:
- The supporting of all rebuilt reasons (dirty states) has been added;
- New file name format "*.$suffix.kt" for the test steps has been allowed,
so the syntax highlight works now;
- Explicit stdlib dependency usage has been removed.
This commit is contained in:
committed by
Space
parent
f003f19e1d
commit
9e780afdca
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
fun foo0() = 42
|
||||
|
||||
fun foo0_1() = 78
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
fun foo1() = foo0_1() / 2
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
fun foo1() = 123
|
||||
Vendored
+29
@@ -0,0 +1,29 @@
|
||||
STEP 0:
|
||||
modifications:
|
||||
U : l1a.0.kt -> l1a.kt
|
||||
added file: l1a.kt
|
||||
STEP 1:
|
||||
modifications:
|
||||
U : l1b.1.kt -> l1b.kt
|
||||
added file: l1b.kt
|
||||
updated exports: l1a.kt
|
||||
STEP 2:
|
||||
modifications:
|
||||
U : l1b.2.kt -> l1b.kt
|
||||
modified ir: l1b.kt
|
||||
updated exports: l1a.kt
|
||||
STEP 3:
|
||||
updated exports: l1a.kt, l1b.kt
|
||||
STEP 4:
|
||||
updated exports: l1a.kt, l1b.kt
|
||||
STEP 5:
|
||||
modifications:
|
||||
U : l1b.1.kt -> l1b.kt
|
||||
modified ir: l1b.kt
|
||||
updated exports: l1a.kt
|
||||
STEP 6:
|
||||
modifications:
|
||||
D : l1b.kt
|
||||
removed inverse depends: l1a.kt
|
||||
STEP 7:
|
||||
updated exports: l1a.kt
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
inline fun qux() = foo0()
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
inline fun qux() = foo0() + foo1()
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
inline fun qux() = foo0() + foo0_1()
|
||||
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
STEP 0:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.0.kt -> l2.kt
|
||||
added file: l2.kt
|
||||
STEP 1:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.1.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 2:
|
||||
dependencies: lib1
|
||||
STEP 3:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.3.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 4:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.1.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 5:
|
||||
dependencies: lib1
|
||||
STEP 6:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.0.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 7:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.3.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0, 6 -> if (qux() != 42) return "Fail"
|
||||
1, 5 -> if (qux() != 42 + 78 / 2) return "Fail"
|
||||
2, 4 -> if (qux() != 42 + 123) return "Fail"
|
||||
3, 7 -> if (qux() != 42 + 78) return "Fail"
|
||||
else -> return "Unknown"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
STEP 0:
|
||||
dependencies: lib1, lib2
|
||||
added file: m.kt
|
||||
STEP 1:
|
||||
dependencies: lib1, lib2
|
||||
updated inline imports: m.kt
|
||||
STEP 2:
|
||||
dependencies: lib1, lib2
|
||||
STEP 3..4:
|
||||
dependencies: lib1, lib2
|
||||
updated inline imports: m.kt
|
||||
STEP 5:
|
||||
dependencies: lib1, lib2
|
||||
STEP 6:
|
||||
dependencies: lib1, lib2
|
||||
updated inline imports: m.kt
|
||||
STEP 7:
|
||||
dependencies: lib1, lib2
|
||||
updated inline imports: m.kt
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
MODULES: lib1, lib2, main
|
||||
|
||||
STEP 0..1:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1, lib2, main
|
||||
STEP 2:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1
|
||||
STEP 3..4:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1, lib2, main
|
||||
STEP 5:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1
|
||||
STEP 6..7:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1, lib2, main
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
fun qux1() = 42 + foo() * 8
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
fun qux1() = 42
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
fun foo() = 99
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
STEP 0:
|
||||
added file: l1a.kt, l1b.kt
|
||||
STEP 1:
|
||||
updated exports: l1b.kt, l1a.kt
|
||||
STEP 2:
|
||||
updated exports: l1a.kt
|
||||
STEP 3:
|
||||
STEP 4:
|
||||
modifications:
|
||||
U : l1a.4.kt -> l1a.kt
|
||||
modified ir: l1a.kt
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
inline fun qux2() = foo() + 32
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
inline fun qux2() = foo() + 32 + qux1()
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
STEP 0:
|
||||
STEP 1:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.1.kt -> l2.kt
|
||||
added file: l2.kt
|
||||
STEP 2:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.2.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 3:
|
||||
modifications:
|
||||
D : l2.kt
|
||||
STEP 4:
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0, 3 -> if (qux1() != 42) return "Fail"
|
||||
4 -> if (qux1() != 42 + 99 * 8) return "Fail"
|
||||
else -> return "Unknown"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
1 -> if (qux2() != 99 + 32) return "Fail"
|
||||
2 -> if (qux2() != 99 + 32 + 42) return "Fail"
|
||||
else -> return "Unknown"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+20
@@ -0,0 +1,20 @@
|
||||
STEP 0:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : m.0.kt -> m.kt
|
||||
added file: m.kt
|
||||
STEP 1:
|
||||
dependencies: lib1, lib2
|
||||
modifications:
|
||||
U : m.1.kt -> m.kt
|
||||
modified ir: m.kt
|
||||
STEP 2:
|
||||
dependencies: lib1, lib2
|
||||
updated inline imports: m.kt
|
||||
STEP 3:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : m.0.kt -> m.kt
|
||||
modified ir: m.kt
|
||||
STEP 4:
|
||||
dependencies: lib1
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
MODULES: lib1, lib2, main
|
||||
|
||||
STEP 0:
|
||||
libs: lib1, main
|
||||
dirty js: lib1, main
|
||||
STEP 1..2:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1, lib2, main
|
||||
STEP 3:
|
||||
libs: lib1, main
|
||||
dirty js: lib1, main
|
||||
STEP 4:
|
||||
libs: lib1, main
|
||||
dirty js: lib1
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
fun f1() = "${f1_1()} ${f2_1()} ${f3_1()}"
|
||||
|
||||
fun f2() = "empty"
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
fun f1() = "${f1_1()} ${f2_1()} ${f3_1()}"
|
||||
|
||||
fun f2() = f1_2()
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fun f1_1() = "f1_1"
|
||||
|
||||
fun f1_2() = f2_2()
|
||||
|
||||
fun f1_3() = f2_3()
|
||||
|
||||
fun f1_4() = "something"
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fun f2_1() = "f2_1"
|
||||
|
||||
fun f2_2() = f3_2()
|
||||
|
||||
fun f2_3() = f3_3()
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fun f3_1() = "f3_1"
|
||||
|
||||
fun f3_2() = f1_3()
|
||||
|
||||
fun f3_3() = f1_4()
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
STEP 0:
|
||||
modifications:
|
||||
U : f.0.kt -> f.kt
|
||||
added file: f.kt, f1.kt, f2.kt, f3.kt
|
||||
STEP 1:
|
||||
modifications:
|
||||
U : f.1.kt -> f.kt
|
||||
modified ir: f.kt
|
||||
updated exports: f1.kt, f2.kt, f3.kt
|
||||
STEP 2:
|
||||
modifications:
|
||||
U : f.0.kt -> f.kt
|
||||
modified ir: f.kt
|
||||
updated exports: f1.kt, f2.kt, f3.kt
|
||||
STEP 3:
|
||||
modifications:
|
||||
U : f.1.kt -> f.kt
|
||||
modified ir: f.kt
|
||||
updated exports: f1.kt, f2.kt, f3.kt
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0, 2 -> {
|
||||
if (f1() != "f1_1 f2_1 f3_1") return "Fail f1"
|
||||
if (f2() != "empty") return "Fail f2"
|
||||
}
|
||||
1, 3 -> {
|
||||
if (f1() != "f1_1 f2_1 f3_1") return "Fail f1"
|
||||
if (f2() != "something") return "Fail f2"
|
||||
}
|
||||
else -> return "Unknown"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
STEP 0:
|
||||
dependencies: lib1
|
||||
added file: m.kt
|
||||
STEP 1..3:
|
||||
dependencies: lib1
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
MODULES: lib1, main
|
||||
|
||||
STEP 0:
|
||||
libs: lib1, main
|
||||
dirty js: lib1, main
|
||||
STEP 1..3:
|
||||
libs: lib1, main
|
||||
dirty js: lib1
|
||||
+1
@@ -0,0 +1 @@
|
||||
inline fun f1() = f1_2()
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
inline fun f1_2() = "f1_2 -> ${f2_2()}"
|
||||
|
||||
inline fun f1_3() = "f1_3 -> ${f2_3()}"
|
||||
|
||||
inline fun f1_4() = "f1_4 -> stop"
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
inline fun f1_2() = "f1_2 -> ${f2_2()}"
|
||||
|
||||
inline fun f1_3() = "f1_3 -> ${f2_3()}"
|
||||
|
||||
inline fun f1_4() = "f1_4 -> end"
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
inline fun f2_2() = "f2_2 -> ${f3_2()}"
|
||||
|
||||
inline fun f2_3() = "f2_3 -> ${f3_3()}"
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
inline fun f3_2() = "f3_2 -> ${f1_3()}"
|
||||
|
||||
inline fun f3_3() = "f3_3 -> ${f1_4()}"
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
STEP 0:
|
||||
modifications:
|
||||
U : f1.0.kt -> f1.kt
|
||||
added file: f.kt, f1.kt, f2.kt, f3.kt
|
||||
STEP 1:
|
||||
modifications:
|
||||
U : f1.1.kt -> f1.kt
|
||||
modified ir: f1.kt
|
||||
updated inline imports: f.kt, f2.kt, f3.kt
|
||||
STEP 2:
|
||||
modifications:
|
||||
U : f1.0.kt -> f1.kt
|
||||
modified ir: f1.kt
|
||||
updated inline imports: f.kt, f2.kt, f3.kt
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0, 2 -> {
|
||||
if (f1() != "f1_2 -> f2_2 -> f3_2 -> f1_3 -> f2_3 -> f3_3 -> f1_4 -> stop") return "Fail"
|
||||
}
|
||||
1 -> {
|
||||
if (f1() != "f1_2 -> f2_2 -> f3_2 -> f1_3 -> f2_3 -> f3_3 -> f1_4 -> end") return "Fail"
|
||||
}
|
||||
else -> return "Unknown"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
STEP 0:
|
||||
dependencies: lib1
|
||||
added file: m.kt
|
||||
STEP 1..2:
|
||||
dependencies: lib1
|
||||
updated inline imports: m.kt
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
MODULES: lib1, main
|
||||
|
||||
STEP 0..2:
|
||||
libs: lib1, main
|
||||
dirty js: lib1, main
|
||||
@@ -1,20 +1,16 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.0_simple_class.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.0_simple_class.kt -> l1.kt
|
||||
added file: l1.kt
|
||||
STEP 1:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.1_data_class.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.1_data_class.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 2:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.0_simple_class.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.0_simple_class.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 3:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.2_inline_class.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.2_inline_class.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0, 2 -> if (Demo(15) == Demo(15)) return "Fail"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
dependencies: lib1
|
||||
added file: m.kt
|
||||
STEP 1..3:
|
||||
dependencies: stdlib, lib1
|
||||
dependencies: lib1
|
||||
|
||||
@@ -2,7 +2,7 @@ MODULES: lib1, main
|
||||
|
||||
STEP 0:
|
||||
libs: lib1, main
|
||||
dirty js: stdlib, lib1, main
|
||||
dirty js: lib1, main
|
||||
STEP 1..3:
|
||||
libs: lib1, main
|
||||
dirty js: stdlib, lib1
|
||||
dirty js: lib1
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
class Demo(val x: String) {
|
||||
fun foo() = "foo $x"
|
||||
inline fun foo_inline() = "inline foo $x"
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
interface DemoInterface {
|
||||
fun foo(): Any
|
||||
}
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
interface DemoInterface {
|
||||
fun foo(): Any
|
||||
}
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
class Demo(val x: String) {
|
||||
fun foo() = "foo $x update"
|
||||
inline fun foo_inline() = "inline foo $x"
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
class Demo(val x: String) {
|
||||
fun foo() = "foo $x update"
|
||||
inline fun foo_inline() = "inline foo $x update"
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
class Demo(val x: String, val y: String = "default") {
|
||||
fun foo() = "foo $x update"
|
||||
inline fun foo_inline() = "inline foo $x update"
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
class Demo(val x: String, val y: String = "default") {
|
||||
fun foo() = "foo $x update"
|
||||
inline fun foo_inline() = "inline foo $x update"
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
class Demo(val x: String, val y: String = "default") {
|
||||
fun foo() = "foo $x update"
|
||||
inline fun foo_inline() = "inline foo $x update"
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
class Demo(val x: String, val y: String = "default") {
|
||||
fun foo() = "foo $x update"
|
||||
inline fun foo_inline() = "inline foo $x update"
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
interface DemoInterface {
|
||||
fun foo(): String
|
||||
}
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
interface DemoInterface {
|
||||
fun foo(): String
|
||||
}
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
interface DemoInterface {
|
||||
fun foo(): Any
|
||||
}
|
||||
Vendored
+24
-36
@@ -1,60 +1,48 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.0_init.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.0_init.kt -> l1.kt
|
||||
added file: l1.kt
|
||||
STEP 1:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.1_update_fun.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.1_update_fun.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 2:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.2_update_inline_fun.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.2_update_inline_fun.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 3:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.3_add_param.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.3_add_param.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 4:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.4_add_field.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.4_add_field.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 5:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.5_update_field.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.5_update_field.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 6:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.6_update_unused_inline.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.6_update_unused_inline.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 7:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.7_add_unused_interface.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.7_add_unused_interface.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 8:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.8_use_interface.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.8_use_interface.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 9:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.9_update_interface.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.9_update_interface.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 10:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.10_update_field_type.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.10_update_field_type.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 11:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.11_update_field_type.txt -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.11_update_field_type.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
|
||||
|
||||
fun box(stepId: Int): String {
|
||||
|
||||
Vendored
+12
-9
@@ -1,13 +1,16 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
dependencies: lib1
|
||||
added file: m.kt
|
||||
STEP 1:
|
||||
dependencies: stdlib, lib1
|
||||
STEP 2..3:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
dependencies: lib1
|
||||
STEP 2:
|
||||
dependencies: lib1
|
||||
updated inline imports: m.kt
|
||||
STEP 3:
|
||||
dependencies: lib1
|
||||
modified ir: m.kt
|
||||
STEP 4..9:
|
||||
dependencies: stdlib, lib1
|
||||
dependencies: lib1
|
||||
STEP 10..11:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
dependencies: lib1
|
||||
modified ir: m.kt
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@ MODULES: lib1, main
|
||||
|
||||
STEP 0:
|
||||
libs: lib1, main
|
||||
dirty js: stdlib, lib1, main
|
||||
dirty js: lib1, main
|
||||
STEP 1:
|
||||
libs: lib1, main
|
||||
dirty js: lib1
|
||||
@@ -14,7 +14,7 @@ STEP 4..6:
|
||||
dirty js: lib1
|
||||
STEP 7:
|
||||
libs: lib1, main
|
||||
dirty js: stdlib, lib1
|
||||
dirty js: lib1
|
||||
STEP 8..9:
|
||||
libs: lib1, main
|
||||
dirty js: lib1
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
const val FOO = "BAR"
|
||||
@@ -1 +1 @@
|
||||
const val FOO = "FOO"
|
||||
const val FOO = "FOO"
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
const val FOO = "BAR"
|
||||
+3
-5
@@ -1,8 +1,6 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib
|
||||
dirty: l1.kt
|
||||
added file: l1.kt
|
||||
STEP 1:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.1 -> l1.kt
|
||||
dirty: l1.kt
|
||||
U : l1.1.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
|
||||
fun qux() = FOO
|
||||
inline fun bar() = FOO
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: l2.kt
|
||||
dependencies: lib1
|
||||
added file: l2.kt
|
||||
STEP 1:
|
||||
dependencies: stdlib, lib1
|
||||
dependencies: lib1
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0 -> {
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib, lib1, lib2
|
||||
dirty: m.kt
|
||||
dependencies: lib1, lib2
|
||||
added file: m.kt
|
||||
STEP 1:
|
||||
dependencies: stdlib, lib1, lib2
|
||||
dependencies: lib1, lib2
|
||||
|
||||
@@ -2,7 +2,7 @@ MODULES: lib1, lib2, main
|
||||
|
||||
STEP 0:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: stdlib, lib1, lib2, main
|
||||
dirty js: lib1, lib2, main
|
||||
STEP 1:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1
|
||||
|
||||
+2
-4
@@ -1,6 +1,4 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib
|
||||
dirty: l1.kt
|
||||
added file: l1.kt
|
||||
STEP 1..6:
|
||||
dependencies: stdlib
|
||||
flags: FP
|
||||
updated exports: l1.kt
|
||||
|
||||
-1
@@ -1,2 +1 @@
|
||||
|
||||
fun qux() = foo() + bar()
|
||||
-1
@@ -1,2 +1 @@
|
||||
|
||||
fun qux() = foo() - 2
|
||||
-1
@@ -1,2 +1 @@
|
||||
|
||||
fun qux() = baz(2) + baz("test") + baz(true)
|
||||
-1
@@ -1,2 +1 @@
|
||||
|
||||
fun qux() = baz("test") + baz(true)
|
||||
-1
@@ -1,2 +1 @@
|
||||
|
||||
fun qux() = baz("test") + 100
|
||||
-1
@@ -1,2 +1 @@
|
||||
|
||||
fun qux() = foo() + 2
|
||||
|
||||
+18
-19
@@ -1,31 +1,30 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: l2.kt
|
||||
dependencies: lib1
|
||||
added file: l2.kt
|
||||
STEP 1:
|
||||
dependencies: stdlib, lib1
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.kt.1.txt -> l2.kt
|
||||
dirty: l2.kt
|
||||
U : l2.1.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 2:
|
||||
dependencies: stdlib, lib1
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.kt.2.txt -> l2.kt
|
||||
dirty: l2.kt
|
||||
U : l2.2.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 3:
|
||||
dependencies: stdlib, lib1
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.kt.3.txt -> l2.kt
|
||||
dirty: l2.kt
|
||||
U : l2.3.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 4:
|
||||
dependencies: stdlib, lib1
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.kt.4.txt -> l2.kt
|
||||
dirty: l2.kt
|
||||
U : l2.4.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 5:
|
||||
dependencies: stdlib, lib1
|
||||
flags: FP
|
||||
dependencies: lib1
|
||||
STEP 6:
|
||||
dependencies: stdlib, lib1
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.kt.6.txt -> l2.kt
|
||||
dirty: l2.kt
|
||||
U : l2.6.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
5 -> if (qux() != 14) return "Fail"
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0 -> if (qux() != 44) return "Fail"
|
||||
|
||||
+7
-7
@@ -1,12 +1,12 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib, lib1, lib2
|
||||
dirty: m.kt
|
||||
dependencies: lib1, lib2
|
||||
added file: m.kt
|
||||
STEP 1..4:
|
||||
dependencies: stdlib, lib1, lib2
|
||||
dependencies: lib1, lib2
|
||||
STEP 5:
|
||||
dependencies: stdlib, lib1, lib2
|
||||
dependencies: lib1, lib2
|
||||
modifications:
|
||||
U : m.kt.5.txt -> m.kt
|
||||
dirty: m.kt
|
||||
U : m.5.kt -> m.kt
|
||||
modified ir: m.kt
|
||||
STEP 6:
|
||||
dependencies: stdlib, lib1, lib2
|
||||
dependencies: lib1, lib2
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ MODULES: lib1, lib2, main
|
||||
|
||||
STEP 0:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: stdlib, lib1, lib2, main
|
||||
dirty js: lib1, lib2, main
|
||||
STEP 1..4:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1, lib2
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
var z1 = false
|
||||
var z2 = false
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
//@OptIn(kotlin.ExperimentalStdlibApi::class)
|
||||
//@EagerInitialization
|
||||
val x = run { z1 = true; 42 }
|
||||
|
||||
//@OptIn(kotlin.ExperimentalStdlibApi::class)
|
||||
//@EagerInitialization
|
||||
val y = run { z2 = true; 117 }
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
@OptIn(kotlin.ExperimentalStdlibApi::class)
|
||||
@EagerInitialization
|
||||
val x = run { z1 = true; 42 }
|
||||
|
||||
//@OptIn(kotlin.ExperimentalStdlibApi::class)
|
||||
//@EagerInitialization
|
||||
val y = run { z2 = true; 117 }
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
@OptIn(kotlin.ExperimentalStdlibApi::class)
|
||||
@EagerInitialization
|
||||
val x = run { z1 = true; 42 }
|
||||
|
||||
@OptIn(kotlin.ExperimentalStdlibApi::class)
|
||||
@EagerInitialization
|
||||
val y = run { z2 = true; 117 }
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
STEP 0:
|
||||
modifications:
|
||||
U : l2.0.kt -> l2.kt
|
||||
added file: l1.kt, l2.kt
|
||||
STEP 1:
|
||||
modifications:
|
||||
U : l2.1.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 2:
|
||||
modifications:
|
||||
U : l2.2.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 3:
|
||||
modifications:
|
||||
U : l2.0.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0, 3 -> {
|
||||
if (z1) return "Fail z1"
|
||||
if (z2) return "Fail z2"
|
||||
}
|
||||
1 -> {
|
||||
if (!z1) return "Fail z1"
|
||||
if (z2) return "Fail z2"
|
||||
}
|
||||
2 -> {
|
||||
if (!z1) return "Fail z1"
|
||||
if (!z2) return "Fail z2"
|
||||
}
|
||||
else -> return "Unknown"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
STEP 0:
|
||||
dependencies: lib1
|
||||
added file: m.kt
|
||||
STEP 1..3:
|
||||
dependencies: lib1
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
MODULES: lib1, main
|
||||
|
||||
STEP 0:
|
||||
libs: lib1, main
|
||||
dirty js: lib1, main
|
||||
STEP 1..3:
|
||||
libs: lib1, main
|
||||
dirty js: lib1
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
fun foo() = "hello"
|
||||
|
||||
inline fun fooInline() = "hello inline 0"
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
fun foo() = "hello"
|
||||
|
||||
inline fun fooInline() = "hello inline 3"
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
fun foo(): String {
|
||||
if (false) lib1Foo()
|
||||
return "hello 5"
|
||||
}
|
||||
|
||||
inline fun fooInline() = "hello inline 3"
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
fun foo(flag: Boolean = false): String {
|
||||
if (flag) lib1Foo()
|
||||
return "hello 6"
|
||||
}
|
||||
|
||||
inline fun fooInline() = "hello inline 3"
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
inline fun lib1Foo() = "empty"
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
inline fun lib1Foo() = foo()
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
inline fun lib1Foo() = fooInline()
|
||||
Vendored
+39
@@ -0,0 +1,39 @@
|
||||
STEP 0:
|
||||
modifications:
|
||||
U : l1.0.kt -> l1.kt
|
||||
U : l2.0.kt -> l2.kt
|
||||
added file: l1.kt, l2.kt
|
||||
STEP 1:
|
||||
modifications:
|
||||
U : l2.1.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
updated exports: l1.kt
|
||||
STEP 2:
|
||||
modifications:
|
||||
U : l2.2.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
updated exports: l1.kt
|
||||
STEP 3:
|
||||
modifications:
|
||||
U : l1.3.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
updated inline imports: l2.kt
|
||||
STEP 4:
|
||||
modifications:
|
||||
U : l2.1.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
updated exports: l1.kt
|
||||
STEP 5:
|
||||
modifications:
|
||||
U : l1.5.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 6:
|
||||
modifications:
|
||||
U : l1.6.kt -> l1.kt
|
||||
modified ir: l1.kt, l2.kt
|
||||
STEP 7:
|
||||
modifications:
|
||||
U : l2.0.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
updated inline imports: l1.kt
|
||||
updated exports: l1.kt
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user