diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/analysis/FirAnalyzerFacade.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/analysis/FirAnalyzerFacade.kt index 5bdeaa8ef20..49507d43787 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/analysis/FirAnalyzerFacade.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/analysis/FirAnalyzerFacade.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.firProvider import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor -import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc +import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi2ir.generators.GeneratorExtensions @@ -98,7 +98,7 @@ class FirAnalyzerFacade( override fun convertToIr(extensions: GeneratorExtensions): Fir2IrResult { if (_scopeSession == null) runResolution() - val signaturer = JvmIdSignatureDescriptor(JvmManglerDesc()) + val signaturer = JvmIdSignatureDescriptor(JvmDescriptorMangler(null)) return Fir2IrConverter.createModuleFragment( session, _scopeSession!!, firFiles!!, 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 9cee545067e..4cfc052013b 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 @@ -20,8 +20,8 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin import org.jetbrains.kotlin.idea.MainFunctionDetector +import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrLinker -import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc import org.jetbrains.kotlin.ir.builders.TranslationPluginContext import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment @@ -40,7 +40,7 @@ import org.jetbrains.kotlin.resolve.CleanableBindingContext open class JvmIrCodegenFactory( private val phaseConfig: PhaseConfig, - private val externalMangler: JvmManglerDesc? = null, + private val externalMangler: JvmDescriptorMangler? = null, private val externalSymbolTable: SymbolTable? = null, private val jvmGeneratorExtensions: JvmGeneratorExtensionsImpl = JvmGeneratorExtensionsImpl() ) : CodegenFactory { @@ -65,7 +65,7 @@ open class JvmIrCodegenFactory( val (mangler, symbolTable) = if (externalSymbolTable != null) externalMangler!! to externalSymbolTable else { - val mangler = JvmManglerDesc(MainFunctionDetector(state.bindingContext, state.languageVersionSettings)) + val mangler = JvmDescriptorMangler(MainFunctionDetector(state.bindingContext, state.languageVersionSettings)) val symbolTable = SymbolTable(JvmIdSignatureDescriptor(mangler), IrFactoryImpl, JvmNameProvider) mangler to symbolTable } diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt index 55e0cbe5805..605375c0ca7 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt @@ -40,10 +40,10 @@ class JvmIrLinker( override val functionalInterfaceFactory: IrAbstractFunctionFactory, override val translationPluginContext: TranslationPluginContext?, private val stubGenerator: DeclarationStubGenerator, - private val manglerDesc: JvmManglerDesc + private val manglerDesc: JvmDescriptorMangler ) : KotlinIrLinker(currentModule, messageLogger, typeSystem.irBuiltIns, symbolTable, emptyList()) { - override val fakeOverrideBuilder = FakeOverrideBuilder(this, symbolTable, JvmManglerIr, typeSystem) + override val fakeOverrideBuilder = FakeOverrideBuilder(this, symbolTable, JvmIrMangler, typeSystem) private val javaName = Name.identifier("java") diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt index ed43e10f7da..4a9d0e83ade 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt @@ -26,8 +26,7 @@ import org.jetbrains.kotlin.ir.util.isFromJava import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor import org.jetbrains.kotlin.load.java.lazy.descriptors.isJavaField -abstract class AbstractJvmManglerIr : IrBasedKotlinManglerImpl() { - +object JvmIrMangler : IrBasedKotlinManglerImpl() { private class JvmIrExportChecker(compatibleMode: Boolean) : IrExportCheckerVisitor(compatibleMode) { override fun IrDeclaration.isPlatformSpecificExported() = false } @@ -42,20 +41,12 @@ abstract class AbstractJvmManglerIr : IrBasedKotlinManglerImpl() { override fun getExportChecker(compatibleMode: Boolean): KotlinExportChecker = JvmIrExportChecker(compatibleMode) - override fun getMangleComputer(mode: MangleMode): KotlinMangleComputer { - return JvmIrManglerComputer(StringBuilder(256), mode) - } + override fun getMangleComputer(mode: MangleMode): KotlinMangleComputer = + JvmIrManglerComputer(StringBuilder(256), mode) } -object JvmManglerIr : AbstractJvmManglerIr() - -abstract class AbstractJvmDescriptorMangler(private val mainDetector: MainFunctionDetector?) : DescriptorBasedKotlinManglerImpl() { - - companion object { - private val exportChecker = JvmDescriptorExportChecker() - } - - private class JvmDescriptorExportChecker : DescriptorExportCheckerVisitor() { +class JvmDescriptorMangler(private val mainDetector: MainFunctionDetector?) : DescriptorBasedKotlinManglerImpl() { + private object ExportChecker : DescriptorExportCheckerVisitor() { override fun DeclarationDescriptor.isPlatformSpecificExported() = false } @@ -69,13 +60,11 @@ abstract class AbstractJvmDescriptorMangler(private val mainDetector: MainFuncti override fun copy(newMode: MangleMode): DescriptorMangleComputer = JvmDescriptorManglerComputer(builder, mainDetector, newMode) - private fun isMainFunction(descriptor: FunctionDescriptor): Boolean = mainDetector?.isMain(descriptor) ?: false + private fun isMainFunction(descriptor: FunctionDescriptor): Boolean = + mainDetector != null && mainDetector.isMain(descriptor) - override fun FunctionDescriptor.platformSpecificSuffix(): String? { - return if (isMainFunction(this)) { - return source.containingFile.name - } else null - } + override fun FunctionDescriptor.platformSpecificSuffix(): String? = + if (isMainFunction(this)) source.containingFile.name else null override fun PropertyDescriptor.platformSpecificSuffix(): String? { // Since LV 1.4 there is a feature PreferJavaFieldOverload which allows to have java and kotlin @@ -91,11 +80,8 @@ abstract class AbstractJvmDescriptorMangler(private val mainDetector: MainFuncti } } - override fun getExportChecker(compatibleMode: Boolean): KotlinExportChecker = exportChecker + override fun getExportChecker(compatibleMode: Boolean): KotlinExportChecker = ExportChecker - override fun getMangleComputer(mode: MangleMode): KotlinMangleComputer { - return JvmDescriptorManglerComputer(StringBuilder(256), mainDetector, mode) - } + override fun getMangleComputer(mode: MangleMode): KotlinMangleComputer = + JvmDescriptorManglerComputer(StringBuilder(256), mainDetector, mode) } - -class JvmManglerDesc(mainDetector: MainFunctionDetector? = null) : AbstractJvmDescriptorMangler(mainDetector) \ No newline at end of file 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 a60daa6c9bb..7bcf111be10 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt @@ -27,7 +27,7 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.idea.MainFunctionDetector import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc -import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc +import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl @@ -143,7 +143,7 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() { JvmResolveUtil.analyze(ktFilesToAnalyze, environment), psi2ir, ktFilesToAnalyze, JvmGeneratorExtensionsImpl(generateFacades = false), createIdSignatureComposer = { bindingContext -> - JvmIdSignatureDescriptor(JvmManglerDesc(MainFunctionDetector(bindingContext, languageVersionSettings))) + JvmIdSignatureDescriptor(JvmDescriptorMangler(MainFunctionDetector(bindingContext, languageVersionSettings))) } ) } diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/KJvmReplCompilerBase.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/KJvmReplCompilerBase.kt index 11e29efd36a..f76351e6f6f 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/KJvmReplCompilerBase.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/KJvmReplCompilerBase.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.ScriptDescriptor import org.jetbrains.kotlin.idea.MainFunctionDetector -import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc +import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.psi.KtFile @@ -336,13 +336,13 @@ class ReplCompilationState( } private val manglerAndSymbolTable by lazy { - val mangler = JvmManglerDesc( + val mangler = JvmDescriptorMangler( MainFunctionDetector(analyzerEngine.trace.bindingContext, environment.configuration.languageVersionSettings) ) val symbolTable = SymbolTable(JvmIdSignatureDescriptor(mangler), IrFactoryImpl, JvmNameProvider) mangler to symbolTable } - override val mangler: JvmManglerDesc get() = manglerAndSymbolTable.first + override val mangler: JvmDescriptorMangler get() = manglerAndSymbolTable.first override val symbolTable: SymbolTable get() = manglerAndSymbolTable.second } diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/jvmReplCompilation.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/jvmReplCompilation.kt index d792b847a1c..56c87e1811f 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/jvmReplCompilation.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/jvmReplCompilation.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.cli.common.repl.BasicReplStageHistory import org.jetbrains.kotlin.cli.common.repl.IReplStageState import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.descriptors.ScriptDescriptor -import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc +import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.resolve.calls.tower.ImplicitsExtensionsResolutionFilter import java.util.concurrent.locks.ReentrantReadWriteLock @@ -65,7 +65,7 @@ class JvmReplCompilerState( val environment: KotlinCoreEnvironment val analyzerEngine: ReplCodeAnalyzerBase val implicitsResolutionFilter: ImplicitsExtensionsResolutionFilter - val mangler: JvmManglerDesc + val mangler: JvmDescriptorMangler val symbolTable: SymbolTable } }