[PSI2IR] Patch parents before referenceExpectsForUsedActuals
There were some ADAPTER_FOR_CALLABLE_REFERENCE functions with uninitialized parents at this point.
This commit is contained in:
@@ -73,8 +73,8 @@ class Psi2IrTranslator(
|
|||||||
val moduleGenerator = ModuleGenerator(context)
|
val moduleGenerator = ModuleGenerator(context)
|
||||||
val irModule = moduleGenerator.generateModuleFragmentWithoutDependencies(ktFiles)
|
val irModule = moduleGenerator.generateModuleFragmentWithoutDependencies(ktFiles)
|
||||||
|
|
||||||
expectDescriptorToSymbol?.let { referenceExpectsForUsedActuals(it, context.symbolTable, irModule) }
|
|
||||||
irModule.patchDeclarationParents()
|
irModule.patchDeclarationParents()
|
||||||
|
expectDescriptorToSymbol?.let { referenceExpectsForUsedActuals(it, context.symbolTable, irModule) }
|
||||||
postprocess(context, irModule)
|
postprocess(context, irModule)
|
||||||
// do not generate unbound symbols before postprocessing,
|
// do not generate unbound symbols before postprocessing,
|
||||||
// since plugins must work with non-lazy IR
|
// since plugins must work with non-lazy IR
|
||||||
|
|||||||
+5
@@ -6796,6 +6796,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
|||||||
runTest("js/js.translator/testData/box/regression/tmpInsidePrimaryConstructor.kt");
|
runTest("js/js.translator/testData/box/regression/tmpInsidePrimaryConstructor.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("wrappers.kt")
|
||||||
|
public void testWrappers() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/regression/wrappers.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("js/js.translator/testData/box/regression/stdlibTestSnippets")
|
@TestMetadata("js/js.translator/testData/box/regression/stdlibTestSnippets")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+5
@@ -6851,6 +6851,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
|||||||
runTest("js/js.translator/testData/box/regression/tmpInsidePrimaryConstructor.kt");
|
runTest("js/js.translator/testData/box/regression/tmpInsidePrimaryConstructor.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("wrappers.kt")
|
||||||
|
public void testWrappers() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/regression/wrappers.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("js/js.translator/testData/box/regression/stdlibTestSnippets")
|
@TestMetadata("js/js.translator/testData/box/regression/stdlibTestSnippets")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
// EXPECTED_REACHABLE_NODES: 1309
|
||||||
|
// KJS_WITH_FULL_RUNTIME
|
||||||
|
|
||||||
|
// MODULE: lib
|
||||||
|
// FILE: lib.kt
|
||||||
|
|
||||||
|
interface I
|
||||||
|
operator fun I.invoke(arg: String): String =
|
||||||
|
arg
|
||||||
|
|
||||||
|
fun foo(context: I) =
|
||||||
|
emptyArray<String>().forEach(context::invoke)
|
||||||
|
|
||||||
|
// MODULE: main(lib)
|
||||||
|
// FILE: main.kt
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
foo(object : I {})
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user