K2 Scripting, Fir2Ir: allow out of order supertypes declaration

fix script declarations registration logic in Fir2Ir to allow
supertypes of a class to be defined later than the class itself.

#KT-64534 fixed
This commit is contained in:
Ilya Chernikov
2024-03-15 15:08:49 +01:00
committed by Space Team
parent f18aa5e70f
commit 0df3a37303
9 changed files with 76 additions and 1 deletions
@@ -528,10 +528,12 @@ class Fir2IrConverter(
addDeclarationToParentIfNeeded(irScript)
declarationStorage.withScope(irScript.symbol) {
irScript.parent = parent
for (scriptDeclaration in declaration.declarations.filterIsInstance<FirRegularClass>()) {
registerClassAndNestedClasses(scriptDeclaration, irScript)
}
for (scriptDeclaration in declaration.declarations) {
when (scriptDeclaration) {
is FirRegularClass -> {
registerClassAndNestedClasses(scriptDeclaration, irScript)
processClassAndNestedClassHeaders(scriptDeclaration)
}
is FirTypeAlias -> classifierStorage.createAndCacheIrTypeAlias(scriptDeclaration, irScript)
@@ -54575,6 +54575,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
runTest("compiler/testData/codegen/box/script/localCaptureTestsK2.kt");
}
@Test
@TestMetadata("outOuOrderDecls.kt")
public void testOutOuOrderDecls() {
runTest("compiler/testData/codegen/box/script/outOuOrderDecls.kt");
}
@Test
@TestMetadata("scripInstance.kt")
public void testScripInstance() {