[JS IR] IC: Propagate dependencies from nested declaration to parent
JsIrLinker can't load nested declarations, therefore it is required to load their parent. This patch adds a dependency in the incremental cache graph between nested declaration user and nested declaration parent. ^KT-53931 Fixed ^KT-54120 Fixed
This commit is contained in:
committed by
Space
parent
bd085fbf43
commit
252dc01dd5
@@ -0,0 +1,5 @@
|
||||
class MyClass {
|
||||
class NestedClass {
|
||||
inline fun foo() = 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
class MyClass {
|
||||
class NestedClass {
|
||||
inline fun foo() = 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
class MyClass {
|
||||
class NestedClass {
|
||||
inline fun foo() = 1
|
||||
}
|
||||
|
||||
fun unusedFunction() = -1
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
data class MyClass(val unusedField: String) {
|
||||
class NestedClass {
|
||||
inline fun foo() = 1
|
||||
}
|
||||
|
||||
fun unusedFunction() = -1
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
data class MyClass(val unusedField: String) {
|
||||
class NestedClass {
|
||||
inline fun foo() = 1
|
||||
|
||||
val field = 5
|
||||
}
|
||||
|
||||
fun unusedFunction() = -1
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
data class MyClass(val unusedField: String) {
|
||||
class NestedClass {
|
||||
inline fun foo() = field
|
||||
|
||||
val field = 5
|
||||
}
|
||||
|
||||
fun unusedFunction() = -1
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
data class MyClass(val unusedField: String) {
|
||||
class NestedClass {
|
||||
inline fun foo() = field
|
||||
|
||||
val field = 6
|
||||
}
|
||||
|
||||
fun unusedFunction() = -1
|
||||
}
|
||||
+28
@@ -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:
|
||||
modifications:
|
||||
U : l1.4.kt -> l1.kt
|
||||
modified ir: 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
|
||||
@@ -0,0 +1,8 @@
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0, 1, 5, 6 -> if (MyClass.NestedClass().foo() != stepId) return "Fail"
|
||||
2, 3, 4 -> if (MyClass.NestedClass().foo() != 1) return "Fail"
|
||||
else -> return "Unknown"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
STEP 0:
|
||||
dependencies: lib1
|
||||
added file: m.kt
|
||||
STEP 1:
|
||||
dependencies: lib1
|
||||
updated imports: m.kt
|
||||
STEP 2:
|
||||
dependencies: lib1
|
||||
STEP 3:
|
||||
dependencies: lib1
|
||||
updated imports: m.kt
|
||||
STEP 4:
|
||||
dependencies: lib1
|
||||
STEP 5:
|
||||
dependencies: lib1
|
||||
updated imports: m.kt
|
||||
STEP 6:
|
||||
dependencies: lib1
|
||||
@@ -0,0 +1,20 @@
|
||||
MODULES: lib1, main
|
||||
|
||||
STEP 0..1:
|
||||
libs: lib1, main
|
||||
dirty js: lib1, main
|
||||
STEP 2:
|
||||
libs: lib1, main
|
||||
dirty js: lib1
|
||||
STEP 3:
|
||||
libs: lib1, main
|
||||
dirty js: lib1, main
|
||||
STEP 4:
|
||||
libs: lib1, main
|
||||
dirty js: lib1
|
||||
STEP 5:
|
||||
libs: lib1, main
|
||||
dirty js: lib1, main
|
||||
STEP 6:
|
||||
libs: lib1, main
|
||||
dirty js: lib1
|
||||
Reference in New Issue
Block a user