diff --git a/compiler/fir/fir2ir/build.gradle.kts b/compiler/fir/fir2ir/build.gradle.kts index d30dcfd8174..f70f9c796a6 100644 --- a/compiler/fir/fir2ir/build.gradle.kts +++ b/compiler/fir/fir2ir/build.gradle.kts @@ -16,6 +16,7 @@ dependencies { compileOnly(project(":compiler:ir.tree")) compileOnly(project(":compiler:ir.psi2ir")) compileOnly(project(":compiler:ir.backend.common")) + compileOnly(project(":compiler:ir.serialization.common")) compileOnly(intellijCore()) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt index 7fd34b04538..24f67d77660 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.backend import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.backend.common.ir.BuiltinSymbolsBase +import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl import org.jetbrains.kotlin.config.AnalysisFlags import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.ModuleDescriptor @@ -62,6 +63,7 @@ class Fir2IrConverter( irGenerationExtensions: Collection, fir2irVisitor: Fir2IrVisitor, languageVersionSettings: LanguageVersionSettings, + descriptorMangler: KotlinMangler.DescriptorMangler, extensions: StubGeneratorExtensions, ) { for (firFile in allFirFiles) { @@ -69,7 +71,11 @@ class Fir2IrConverter( } val irProviders = - generateTypicalIrProviderList(irModuleFragment.descriptor, irBuiltIns, symbolTable, extensions = extensions) + generateTypicalIrProviderList( + irModuleFragment.descriptor, irBuiltIns, symbolTable, + descriptorFinder = DescriptorByIdSignatureFinderImpl(irModuleFragment.descriptor, descriptorMangler), + extensions = extensions + ) val externalDependenciesGenerator = ExternalDependenciesGenerator( symbolTable, irProviders @@ -460,7 +466,8 @@ class Fir2IrConverter( } converter.runSourcesConversion( - allFirFiles, irModuleFragment, irGenerationExtensions, fir2irVisitor, languageVersionSettings, generatorExtensions + allFirFiles, irModuleFragment, irGenerationExtensions, fir2irVisitor, languageVersionSettings, + descriptorMangler, generatorExtensions ) return Fir2IrResult(irModuleFragment, symbolTable, components) diff --git a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt index 4ed9694f2bf..16c73e0f0c6 100644 --- a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt +++ b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt @@ -8,10 +8,8 @@ package org.jetbrains.kotlin.backend.jvm import org.jetbrains.kotlin.analyzer.hasJdkCapability import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl -import org.jetbrains.kotlin.backend.common.phaser.CompilerPhase -import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig -import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel -import org.jetbrains.kotlin.backend.common.phaser.then +import org.jetbrains.kotlin.backend.common.phaser.* +import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl import org.jetbrains.kotlin.backend.jvm.intrinsics.IrIntrinsicMethods import org.jetbrains.kotlin.backend.jvm.ir.getKtFile import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor @@ -95,7 +93,9 @@ open class JvmIrCodegenFactory( val stubGenerator = DeclarationStubGeneratorImpl( - psi2irContext.moduleDescriptor, symbolTable, psi2irContext.irBuiltIns, mangler, jvmGeneratorExtensions + psi2irContext.moduleDescriptor, symbolTable, psi2irContext.irBuiltIns, + DescriptorByIdSignatureFinderImpl(psi2irContext.moduleDescriptor, mangler), + jvmGeneratorExtensions ) val frontEndContext = object : TranslationPluginContext { override val moduleDescriptor: ModuleDescriptor @@ -290,7 +290,7 @@ open class JvmIrCodegenFactory( ): List { return generateTypicalIrProviderList( irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable, - JvmDescriptorMangler(null), + DescriptorByIdSignatureFinderImpl(irModuleFragment.descriptor, JvmDescriptorMangler(null)), extensions = extensions ) } diff --git a/compiler/ir/ir.psi2ir/build.gradle.kts b/compiler/ir/ir.psi2ir/build.gradle.kts index 4df86ab8cfb..36e9ee88a3a 100644 --- a/compiler/ir/ir.psi2ir/build.gradle.kts +++ b/compiler/ir/ir.psi2ir/build.gradle.kts @@ -8,7 +8,6 @@ dependencies { api(project(":compiler:frontend")) api(project(":compiler:backend-common")) api(project(":compiler:ir.tree")) - api(project(":compiler:ir.serialization.common")) compileOnly(intellijCore()) } diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationStubGeneratorImpl.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationStubGeneratorImpl.kt index 153568c8fe7..3f9327319ee 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationStubGeneratorImpl.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationStubGeneratorImpl.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.psi2ir.generators -import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.NotFoundClasses import org.jetbrains.kotlin.ir.IrBuiltIns @@ -21,7 +20,7 @@ class DeclarationStubGeneratorImpl( moduleDescriptor: ModuleDescriptor, symbolTable: SymbolTable, irBuiltins: IrBuiltIns, - mangler: KotlinMangler.DescriptorMangler, + override val descriptorFinder: DescriptorByIdSignatureFinder, extensions: StubGeneratorExtensions = StubGeneratorExtensions.EMPTY, ) : DeclarationStubGenerator(moduleDescriptor, symbolTable, irBuiltins, extensions) { override val typeTranslator: TypeTranslator = @@ -33,12 +32,6 @@ class DeclarationStubGeneratorImpl( true, extensions ) - - override val descriptorFinder: DescriptorByIdSignatureFinder = DescriptorByIdSignatureFinderImpl( - moduleDescriptor, - mangler, - DescriptorByIdSignatureFinderImpl.LookupMode.MODULE_WITH_DEPENDENCIES - ) } // In most cases, IrProviders list consist of an optional deserializer and a DeclarationStubGenerator. @@ -46,12 +39,12 @@ fun generateTypicalIrProviderList( moduleDescriptor: ModuleDescriptor, irBuiltins: IrBuiltIns, symbolTable: SymbolTable, - mangler: KotlinMangler.DescriptorMangler, + descriptorFinder: DescriptorByIdSignatureFinder, deserializer: IrDeserializer? = null, extensions: StubGeneratorExtensions = StubGeneratorExtensions.EMPTY ): List { val stubGenerator = DeclarationStubGeneratorImpl( - moduleDescriptor, symbolTable, irBuiltins, mangler, extensions + moduleDescriptor, symbolTable, irBuiltins, descriptorFinder, extensions ) return listOfNotNull(deserializer, stubGenerator) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DescriptorByIdSignatureFinderImpl.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DescriptorByIdSignatureFinderImpl.kt index 45cade7ddcd..b19c053365d 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DescriptorByIdSignatureFinderImpl.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DescriptorByIdSignatureFinderImpl.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.utils.addIfNotNull class DescriptorByIdSignatureFinderImpl( private val moduleDescriptor: ModuleDescriptor, private val mangler: KotlinMangler.DescriptorMangler, - private val lookupMode: LookupMode + private val lookupMode: LookupMode = LookupMode.MODULE_WITH_DEPENDENCIES, ) : DescriptorByIdSignatureFinder { init { assert(lookupMode != LookupMode.MODULE_ONLY || moduleDescriptor is ModuleDescriptorImpl) { diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTextDumpHandler.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTextDumpHandler.kt index 2c35a63001b..1d822b59854 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTextDumpHandler.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTextDumpHandler.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.test.backend.handlers +import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies @@ -89,7 +90,7 @@ class IrTextDumpHandler(testServices: TestServices) : AbstractIrHandler(testServ irModule.descriptor, SymbolTable(signaturer, IrFactoryImpl), // TODO irModule.irBuiltins, - mangler, + DescriptorByIdSignatureFinderImpl(irModule.descriptor, mangler) ) val baseFile = testServices.moduleStructure.originalTestDataFiles.first() diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt index cde2603a8fb..7fe98219924 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.ir import org.jetbrains.kotlin.analyzer.AnalysisResult +import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor @@ -169,8 +170,8 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() { ) val irProviders = generateTypicalIrProviderList( moduleDescriptor, context.irBuiltIns, context.symbolTable, + DescriptorByIdSignatureFinderImpl(moduleDescriptor, JsManglerDesc), extensions = generatorExtensions, - mangler = JsManglerDesc, ) return psi2ir.generateModuleFragment(context, ktFilesToAnalyze, irProviders, emptyList()) } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt index f51a00ce31c..204a88f77fc 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir import com.intellij.openapi.util.text.StringUtil import junit.framework.TestCase +import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor import org.jetbrains.kotlin.cli.js.loadPluginsForTests import org.jetbrains.kotlin.config.CompilerConfiguration @@ -58,7 +59,7 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() { irModule.descriptor, SymbolTable(signaturer, IrFactoryImpl), // TODO irModule.irBuiltins, - mangler, + DescriptorByIdSignatureFinderImpl(irModule.descriptor, mangler) ) val path = wholeFile.path diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt index 33e6e9062d6..62f08e8770c 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.backend.konan import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideChecker +import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl import org.jetbrains.kotlin.backend.common.serialization.mangle.ManglerChecker import org.jetbrains.kotlin.backend.common.serialization.mangle.descriptor.Ir2DescriptorManglerAdapter import org.jetbrains.kotlin.backend.konan.descriptors.isForwardDeclarationModule @@ -59,7 +60,7 @@ internal fun Context.psiToIr( val stubGenerator = DeclarationStubGeneratorImpl( moduleDescriptor, symbolTable, generatorContext.irBuiltIns, - KonanManglerDesc + DescriptorByIdSignatureFinderImpl(moduleDescriptor, KonanManglerDesc), ) val irBuiltInsOverDescriptors = generatorContext.irBuiltIns as IrBuiltInsOverDescriptors val functionIrClassFactory: KonanIrAbstractDescriptorBasedFunctionFactory = diff --git a/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsCoreScriptingCompiler.kt b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsCoreScriptingCompiler.kt index 32200ef65bd..cc9c87ba4c8 100644 --- a/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsCoreScriptingCompiler.kt +++ b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsCoreScriptingCompiler.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.scripting.js +import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport @@ -17,8 +18,8 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext import org.jetbrains.kotlin.ir.backend.js.generateJsCode +import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc import org.jetbrains.kotlin.ir.backend.js.utils.NameTables -import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.IrScript import org.jetbrains.kotlin.ir.symbols.IrScriptSymbol @@ -74,9 +75,10 @@ class JsCoreScriptingCompiler( override fun getPreviousScripts() = replCompilerState.history.map { it.item.scriptSymbol } } - val mangler = JvmDescriptorMangler(null) val psi2irContext = psi2ir.createGeneratorContext(module, bindingContext, symbolTable, generatorExtensions) - val providers = generateTypicalIrProviderList(module, psi2irContext.irBuiltIns, psi2irContext.symbolTable, mangler) + val providers = generateTypicalIrProviderList( + module, psi2irContext.irBuiltIns, psi2irContext.symbolTable, DescriptorByIdSignatureFinderImpl(module, JsManglerDesc) + ) val irModuleFragment = psi2ir.generateModuleFragment(psi2irContext, files, providers, emptyList(), null) // TODO: deserializer val context = JsIrBackendContext( @@ -95,7 +97,7 @@ class JsCoreScriptingCompiler( irModuleFragment.descriptor, psi2irContext.irBuiltIns, psi2irContext.symbolTable, - mangler + DescriptorByIdSignatureFinderImpl(irModuleFragment.descriptor, JsManglerDesc) ) ).generateUnboundSymbolsAsDependencies()