[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 irModule = moduleGenerator.generateModuleFragmentWithoutDependencies(ktFiles)
|
||||
|
||||
expectDescriptorToSymbol?.let { referenceExpectsForUsedActuals(it, context.symbolTable, irModule) }
|
||||
irModule.patchDeclarationParents()
|
||||
expectDescriptorToSymbol?.let { referenceExpectsForUsedActuals(it, context.symbolTable, irModule) }
|
||||
postprocess(context, irModule)
|
||||
// do not generate unbound symbols before postprocessing,
|
||||
// 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");
|
||||
}
|
||||
|
||||
@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")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
+5
@@ -6851,6 +6851,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
||||
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")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@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