From c9b6847d8343c075b811f7b3435a820a480ad1bb Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Mon, 21 Jun 2021 17:12:28 +0200 Subject: [PATCH] FIR: Add test on delegated member with default param in overridden... sensitive to the file processing order, therefore failing on the current fir2ir at least with the new irBuiltIns --- .../FirBlackBoxCodegenTestGenerated.java | 6 ++++++ .../withDefaultsMultipleFilesOrder.kt | 20 +++++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 6 ++++++ .../IrBlackBoxCodegenTestGenerated.java | 6 ++++++ .../kotlin/ir/AbstractKlibTextTestCase.kt | 13 +++++------- .../LightAnalysisModeTestGenerated.java | 5 +++++ .../IrJsCodegenBoxES6TestGenerated.java | 5 +++++ .../IrJsCodegenBoxTestGenerated.java | 5 +++++ .../semantics/JsCodegenBoxTestGenerated.java | 5 +++++ .../IrCodegenBoxWasmTestGenerated.java | 5 +++++ 10 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index 4590bfa4bf8..c10e8dcbfe2 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -13939,6 +13939,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT public void testWithDefaultParameters() throws Exception { runTest("compiler/testData/codegen/box/delegation/withDefaultParameters.kt"); } + + @Test + @TestMetadata("withDefaultsMultipleFilesOrder.kt") + public void testWithDefaultsMultipleFilesOrder() throws Exception { + runTest("compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt"); + } } @Nested diff --git a/compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt b/compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt new file mode 100644 index 00000000000..74834745753 --- /dev/null +++ b/compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt @@ -0,0 +1,20 @@ +// FILE: lib.kt +interface ResolutionScope { + fun getContributedDescriptors(s: String = "OK"): String +} + +// processing deprecatedScopes.kt before scopes.kt should show that there is no problem in processing delegated members after fake overrides + +// FILE: deprecatedScopes.kt +abstract class DeprecatedLexicalScope(a: LexicalScope) : LexicalScope by a + +// FILE: scopes.kt +interface LexicalScope : ResolutionScope + +// FILE: main.kt +class ScopeImpl : LexicalScope { + override fun getContributedDescriptors(s: String): String = s +} +class Impl : DeprecatedLexicalScope(ScopeImpl()) + +fun box(): String = Impl().getContributedDescriptors() diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index c361b11c27a..ae949749963 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -13939,6 +13939,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { public void testWithDefaultParameters() throws Exception { runTest("compiler/testData/codegen/box/delegation/withDefaultParameters.kt"); } + + @Test + @TestMetadata("withDefaultsMultipleFilesOrder.kt") + public void testWithDefaultsMultipleFilesOrder() throws Exception { + runTest("compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt"); + } } @Nested diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index bb85ac2c041..a31b66f8143 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -13939,6 +13939,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes public void testWithDefaultParameters() throws Exception { runTest("compiler/testData/codegen/box/delegation/withDefaultParameters.kt"); } + + @Test + @TestMetadata("withDefaultsMultipleFilesOrder.kt") + public void testWithDefaultsMultipleFilesOrder() throws Exception { + runTest("compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt"); + } } @Nested diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractKlibTextTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractKlibTextTestCase.kt index 95649817d3e..c12c392413a 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractKlibTextTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractKlibTextTestCase.kt @@ -30,8 +30,7 @@ import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrModuleSeria import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl -import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns -import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory +import org.jetbrains.kotlin.ir.descriptors.IrBuiltInsOverDescriptors import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS @@ -206,6 +205,7 @@ abstract class AbstractKlibTextTestCase : CodegenTestCase() { return klibDir.canonicalPath } + @OptIn(ObsoleteDescriptorBasedAPI::class) protected fun deserializeModule(stdlib: KotlinLibrary, klib: KotlinLibrary): IrModuleFragment { val signaturer = IdSignatureDescriptor(JsManglerDesc) @@ -215,10 +215,8 @@ abstract class AbstractKlibTextTestCase : CodegenTestCase() { val symbolTable = SymbolTable(signaturer, IrFactoryImpl) val typeTranslator = TypeTranslatorImpl(symbolTable, myEnvironment.configuration.languageVersionSettings, testDescriptor) - val irBuiltIns = IrBuiltIns(testDescriptor.builtIns, typeTranslator, symbolTable) - val functionFactory = IrFunctionFactory(irBuiltIns, symbolTable) - irBuiltIns.functionFactory = functionFactory - val irLinker = JsIrLinker(null, IrMessageLogger.None, irBuiltIns, symbolTable, functionFactory, null, null) + val irBuiltIns = IrBuiltInsOverDescriptors(testDescriptor.builtIns, typeTranslator, symbolTable) + val irLinker = JsIrLinker(null, IrMessageLogger.None, irBuiltIns, symbolTable, null, null) irLinker.deserializeIrModuleHeader(stdlibDescriptor, stdlib) val testModule = irLinker.deserializeIrModuleHeader(testDescriptor, klib, DeserializationStrategy.ALL) irLinker.init(null, emptyList()) @@ -275,8 +273,7 @@ abstract class AbstractKlibTextTestCase : CodegenTestCase() { val symbolTable = SymbolTable(IdSignatureDescriptor(JsManglerDesc), IrFactoryImpl, NameProvider.DEFAULT) val context = psi2Ir.createGeneratorContext(moduleDescriptor, bindingContext, symbolTable) val irBuiltIns = context.irBuiltIns - val functionFactory = IrFunctionFactory(irBuiltIns, symbolTable) - val irLinker = JsIrLinker(moduleDescriptor, IrMessageLogger.None, irBuiltIns, symbolTable, functionFactory, null, null) + val irLinker = JsIrLinker(moduleDescriptor, IrMessageLogger.None, irBuiltIns, symbolTable, null, null) irLinker.deserializeIrModuleHeader(stdlibDescriptor, stdlib) return psi2Ir.generateModuleFragment(context, ktFiles, listOf(irLinker), emptyList(), expectActualSymbols) to bindingContext diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index ffb9386d1ee..36b4975dfda 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -11348,6 +11348,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes public void testWithDefaultParameters() throws Exception { runTest("compiler/testData/codegen/box/delegation/withDefaultParameters.kt"); } + + @TestMetadata("withDefaultsMultipleFilesOrder.kt") + public void testWithDefaultsMultipleFilesOrder() throws Exception { + runTest("compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt"); + } } @TestMetadata("compiler/testData/codegen/box/deprecated") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index b3a152a926c..8ce0dd3ca94 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -10072,6 +10072,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes public void testWithDefaultParameters() throws Exception { runTest("compiler/testData/codegen/box/delegation/withDefaultParameters.kt"); } + + @TestMetadata("withDefaultsMultipleFilesOrder.kt") + public void testWithDefaultsMultipleFilesOrder() throws Exception { + runTest("compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt"); + } } @TestMetadata("compiler/testData/codegen/box/deprecated") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 766950831b0..aa13b5b52d9 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -9478,6 +9478,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { public void testWithDefaultParameters() throws Exception { runTest("compiler/testData/codegen/box/delegation/withDefaultParameters.kt"); } + + @TestMetadata("withDefaultsMultipleFilesOrder.kt") + public void testWithDefaultsMultipleFilesOrder() throws Exception { + runTest("compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt"); + } } @TestMetadata("compiler/testData/codegen/box/deprecated") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index cf44c689393..2ce7f282463 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -9478,6 +9478,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { public void testWithDefaultParameters() throws Exception { runTest("compiler/testData/codegen/box/delegation/withDefaultParameters.kt"); } + + @TestMetadata("withDefaultsMultipleFilesOrder.kt") + public void testWithDefaultsMultipleFilesOrder() throws Exception { + runTest("compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt"); + } } @TestMetadata("compiler/testData/codegen/box/deprecated") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 724fe39925c..e78b8c88f49 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -4466,6 +4466,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest public void testWithDefaultParameters() throws Exception { runTest("compiler/testData/codegen/box/delegation/withDefaultParameters.kt"); } + + @TestMetadata("withDefaultsMultipleFilesOrder.kt") + public void testWithDefaultsMultipleFilesOrder() throws Exception { + runTest("compiler/testData/codegen/box/delegation/withDefaultsMultipleFilesOrder.kt"); + } } @TestMetadata("compiler/testData/codegen/box/deprecated")