[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
+5
@@ -0,0 +1,5 @@
|
||||
class MyClass1 {
|
||||
companion object {
|
||||
inline fun companionMethod() = 0
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
class MyClass1 {
|
||||
companion object {
|
||||
inline fun companionMethod() = 1
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
class MyClass1 {
|
||||
class InternalClass {
|
||||
companion object {
|
||||
inline fun companionMethod() = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
class MyClass1 {
|
||||
class InternalClass {
|
||||
companion object {
|
||||
inline fun companionMethod() = 3
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
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:
|
||||
updated exports: l1.kt
|
||||
+1
@@ -0,0 +1 @@
|
||||
inline fun foo() = MyClass1.companionMethod()
|
||||
+1
@@ -0,0 +1 @@
|
||||
inline fun foo() = MyClass1.InternalClass.companionMethod()
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
inline fun foo(): Int {
|
||||
bar(null)
|
||||
return MyClass1.InternalClass.companionMethod() + 1
|
||||
}
|
||||
|
||||
fun bar(x: Any?): Any = (x as? MyClass1) ?: 1
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
inline fun foo(): Int {
|
||||
bar(null)
|
||||
return MyClass1.InternalClass.companionMethod() + 1
|
||||
}
|
||||
|
||||
fun bar(x: Any?): Any = x ?: MyClass1()
|
||||
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
STEP 0:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.0.kt -> l2.kt
|
||||
added file: l2.kt
|
||||
STEP 1:
|
||||
dependencies: lib1
|
||||
updated imports: l2.kt
|
||||
STEP 2:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.2.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 3:
|
||||
dependencies: lib1
|
||||
updated imports: l2.kt
|
||||
STEP 4:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.4.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
STEP 5:
|
||||
dependencies: lib1
|
||||
modifications:
|
||||
U : l2.5.kt -> l2.kt
|
||||
modified ir: l2.kt
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0, 1, 2, 3, 4 -> if (foo() != stepId) return "Fail"
|
||||
5 -> if (foo() != 4) return "Fail"
|
||||
else -> return "Unkown"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
STEP 0:
|
||||
dependencies: lib1, lib2
|
||||
added file: m.kt
|
||||
STEP 1..4:
|
||||
dependencies: lib1, lib2
|
||||
updated imports: m.kt
|
||||
STEP 5:
|
||||
dependencies: lib1, lib2
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
MODULES: lib1, lib2, main
|
||||
|
||||
STEP 0..4:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1, lib2, main
|
||||
STEP 5:
|
||||
libs: lib1, lib2, main
|
||||
dirty js: lib1, lib2
|
||||
Reference in New Issue
Block a user