[FIR2IR] Don't use descriptor manglers in FIR2IR

They don't do anything, only complicate the initial configuration.

KT-64990
This commit is contained in:
Sergej Jaskiewicz
2024-01-15 19:48:34 +01:00
committed by Space Team
parent 8b4cc050eb
commit bc5810ee67
21 changed files with 34 additions and 109 deletions
@@ -267,7 +267,6 @@ internal class KtFirCompilerFacility(
fir2IrExtensions, fir2IrExtensions,
fir2IrConfiguration, fir2IrConfiguration,
irGeneratorExtensions, irGeneratorExtensions,
signatureComposerForJvmFir2Ir(),
JvmIrMangler, JvmIrMangler,
FirJvmKotlinMangler(), FirJvmKotlinMangler(),
FirJvmVisibilityConverter, FirJvmVisibilityConverter,
@@ -33,7 +33,6 @@ import org.jetbrains.kotlin.fir.session.KlibIcData
import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.js.IncrementalDataProvider import org.jetbrains.kotlin.incremental.js.IncrementalDataProvider
import org.jetbrains.kotlin.ir.backend.js.* import org.jetbrains.kotlin.ir.backend.js.*
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerIr import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerIr
import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl
import org.jetbrains.kotlin.ir.util.IrMessageLogger import org.jetbrains.kotlin.ir.util.IrMessageLogger
@@ -243,7 +242,6 @@ fun transformFirToIr(
fir2IrExtensions, fir2IrExtensions,
Fir2IrConfiguration.forKlibCompilation(moduleStructure.compilerConfiguration, diagnosticsReporter), Fir2IrConfiguration.forKlibCompilation(moduleStructure.compilerConfiguration, diagnosticsReporter),
IrGenerationExtension.getInstances(moduleStructure.project), IrGenerationExtension.getInstances(moduleStructure.project),
signatureComposer = DescriptorSignatureComposerStub(JsManglerDesc),
irMangler = JsManglerIr, irMangler = JsManglerIr,
firMangler = FirJsKotlinMangler(), firMangler = FirJsKotlinMangler(),
visibilityConverter = Fir2IrVisibilityConverter.Default, visibilityConverter = Fir2IrVisibilityConverter.Default,
@@ -203,7 +203,6 @@ fun FirResult.convertToIrAndActualizeForJvm(
fir2IrExtensions, fir2IrExtensions,
fir2IrConfiguration, fir2IrConfiguration,
irGeneratorExtensions, irGeneratorExtensions,
signatureComposerForJvmFir2Ir(),
JvmIrMangler, JvmIrMangler,
FirJvmKotlinMangler(), FirJvmKotlinMangler(),
FirJvmVisibilityConverter, FirJvmVisibilityConverter,
@@ -19,12 +19,10 @@ import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProv
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.overrides.buildForAll import org.jetbrains.kotlin.ir.overrides.buildForAll
import org.jetbrains.kotlin.ir.types.IrTypeSystemContext import org.jetbrains.kotlin.ir.types.IrTypeSystemContext
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
import org.jetbrains.kotlin.ir.util.KotlinMangler import org.jetbrains.kotlin.ir.util.KotlinMangler
import org.jetbrains.kotlin.ir.visitors.acceptVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid
@@ -43,16 +41,10 @@ data class Fir2IrActualizedResult(
val irActualizedResult: IrActualizedResult?, val irActualizedResult: IrActualizedResult?,
) )
fun signatureComposerForJvmFir2Ir(): IdSignatureComposer {
val mangler = JvmDescriptorMangler(null)
return DescriptorSignatureComposerStub(mangler)
}
fun FirResult.convertToIrAndActualize( fun FirResult.convertToIrAndActualize(
fir2IrExtensions: Fir2IrExtensions, fir2IrExtensions: Fir2IrExtensions,
fir2IrConfiguration: Fir2IrConfiguration, fir2IrConfiguration: Fir2IrConfiguration,
irGeneratorExtensions: Collection<IrGenerationExtension>, irGeneratorExtensions: Collection<IrGenerationExtension>,
signatureComposer: IdSignatureComposer,
irMangler: KotlinMangler.IrMangler, irMangler: KotlinMangler.IrMangler,
firMangler: FirMangler, firMangler: FirMangler,
visibilityConverter: Fir2IrVisibilityConverter, visibilityConverter: Fir2IrVisibilityConverter,
@@ -60,7 +52,7 @@ fun FirResult.convertToIrAndActualize(
actualizerTypeContextProvider: (IrBuiltIns) -> IrTypeSystemContext, actualizerTypeContextProvider: (IrBuiltIns) -> IrTypeSystemContext,
fir2IrResultPostCompute: (ModuleCompilerAnalyzedOutput, Fir2IrResult) -> Unit = { _, _ -> }, fir2IrResultPostCompute: (ModuleCompilerAnalyzedOutput, Fir2IrResult) -> Unit = { _, _ -> },
): Fir2IrActualizedResult { ): Fir2IrActualizedResult {
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposer, firMangler) val commonMemberStorage = Fir2IrCommonMemberStorage(firMangler)
require(outputs.isNotEmpty()) { "No modules found" } require(outputs.isNotEmpty()) { "No modules found" }
@@ -1,38 +0,0 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
import org.jetbrains.kotlin.ir.util.KotlinMangler
/**
* A dummy signature composer that returns `null` for all declaration descriptors.
*/
class DescriptorSignatureComposerStub(override val mangler: KotlinMangler.DescriptorMangler) : IdSignatureComposer {
override fun composeSignature(descriptor: DeclarationDescriptor): IdSignature? {
return null
}
override fun composeEnumEntrySignature(descriptor: ClassDescriptor): IdSignature? {
return null
}
override fun composeFieldSignature(descriptor: PropertyDescriptor): IdSignature? {
return null
}
override fun composeAnonInitSignature(descriptor: ClassDescriptor): IdSignature? {
return null
}
override fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit) {
body()
}
}
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.signaturer.FirBasedSignatureComposer
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.symbols.*
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.ir.util.SymbolTable
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
@@ -22,13 +21,10 @@ import java.util.concurrent.ConcurrentHashMap
* *
* See `/docs/fir/k2_kmp.md` * See `/docs/fir/k2_kmp.md`
*/ */
class Fir2IrCommonMemberStorage( class Fir2IrCommonMemberStorage(firMangler: FirMangler) {
signatureComposer: IdSignatureComposer,
firMangler: FirMangler
) {
val firSignatureComposer = FirBasedSignatureComposer(firMangler) val firSignatureComposer = FirBasedSignatureComposer(firMangler)
val symbolTable = SymbolTable(signaturer = signatureComposer, irFactory = IrFactoryImpl) val symbolTable = SymbolTable(signaturer = null, irFactory = IrFactoryImpl)
val classCache: MutableMap<FirRegularClass, IrClass> = mutableMapOf() val classCache: MutableMap<FirRegularClass, IrClass> = mutableMapOf()
@@ -62,7 +62,6 @@ interface Fir2IrComponents {
val annotationsFromPluginRegistrar: Fir2IrIrGeneratedDeclarationsRegistrar val annotationsFromPluginRegistrar: Fir2IrIrGeneratedDeclarationsRegistrar
interface Manglers { interface Manglers {
val descriptorMangler: KotlinMangler.DescriptorMangler
val irMangler: KotlinMangler.IrMangler val irMangler: KotlinMangler.IrMangler
val firMangler: FirMangler val firMangler: FirMangler
} }
@@ -75,9 +75,6 @@ class Fir2IrComponentsStorage(
get() = symbolTable.lock get() = symbolTable.lock
override val manglers: Fir2IrComponents.Manglers = object : Fir2IrComponents.Manglers { override val manglers: Fir2IrComponents.Manglers = object : Fir2IrComponents.Manglers {
override val descriptorMangler: KotlinMangler.DescriptorMangler
get() = symbolTable.signaturer.mangler
override val irMangler: KotlinMangler.IrMangler override val irMangler: KotlinMangler.IrMangler
get() = irMangler get() = irMangler
@@ -68,7 +68,7 @@ open class FragmentDeclarationGenerator(
isInline = false, isInline = false,
isExpect = false, isExpect = false,
returnType = irClass.defaultType, returnType = irClass.defaultType,
symbol = IrConstructorPublicSymbolImpl(context.symbolTable.signaturer.composeSignature(irClass.descriptor)!!), symbol = IrConstructorPublicSymbolImpl(context.symbolTable.signaturer!!.composeSignature(irClass.descriptor)!!),
isPrimary = true, isPrimary = true,
isExternal = false isExternal = false
) )
@@ -38,7 +38,7 @@ open class DescriptorSymbolTableExtension(table: SymbolTable) : SymbolTableExten
get() = table.nameProvider get() = table.nameProvider
private val signatureComposer: IdSignatureComposer private val signatureComposer: IdSignatureComposer
get() = table.signaturer get() = table.signaturer!!
private val externalPackageFragmentSlice: SymbolTableSlice<PackageFragmentDescriptor, IrExternalPackageFragment, IrExternalPackageFragmentSymbol> = SymbolTableSlice.Flat(lock) private val externalPackageFragmentSlice: SymbolTableSlice<PackageFragmentDescriptor, IrExternalPackageFragment, IrExternalPackageFragmentSymbol> = SymbolTableSlice.Flat(lock)
@@ -17,7 +17,7 @@ private fun <SymbolOwner : IrSymbolOwner, Symbol : IrBindableSymbol<*, SymbolOwn
@OptIn(SymbolTableInternals::class) @OptIn(SymbolTableInternals::class)
open class SymbolTable( open class SymbolTable(
val signaturer: IdSignatureComposer, val signaturer: IdSignatureComposer?, // TODO: This is `null` only in FIR2IR. Make non-nullable again after KT-64990 is fixed.
val irFactory: IrFactory, val irFactory: IrFactory,
val nameProvider: NameProvider = NameProvider.DEFAULT, val nameProvider: NameProvider = NameProvider.DEFAULT,
) : ReferenceSymbolTable { ) : ReferenceSymbolTable {
@@ -94,8 +94,13 @@ fun deserializeFromByteArray(
deserializer.deserializeDeclaration(declarationProto, setParent = false) deserializer.deserializeDeclaration(declarationProto, setParent = false)
} }
symbolTable.signaturer.withFileSignature(dummyFileSignature) { val signaturer = symbolTable.signaturer
if (signaturer == null) {
ExternalDependenciesGenerator(symbolTable, irProviders).generateUnboundSymbolsAsDependencies() ExternalDependenciesGenerator(symbolTable, irProviders).generateUnboundSymbolsAsDependencies()
} else {
signaturer.withFileSignature(dummyFileSignature) {
ExternalDependenciesGenerator(symbolTable, irProviders).generateUnboundSymbolsAsDependencies()
}
} }
toplevelParent.acceptChildrenVoid(PatchDeclarationParentsVisitor(toplevelParent)) toplevelParent.acceptChildrenVoid(PatchDeclarationParentsVisitor(toplevelParent))
buildFakeOverridesForLocalClasses(symbolTable, typeSystemContext, symbolDeserializer, toplevelParent) buildFakeOverridesForLocalClasses(symbolTable, typeSystemContext, symbolDeserializer, toplevelParent)
@@ -176,7 +176,7 @@ class IrMangledNameAndSignatureDumpHandler(
private inner class DumpStrategy( private inner class DumpStrategy(
val module: TestModule, val module: TestModule,
val irMangler: KotlinMangler.IrMangler, val irMangler: KotlinMangler.IrMangler,
val descriptorMangler: KotlinMangler.DescriptorMangler, val descriptorMangler: KotlinMangler.DescriptorMangler?,
val firMangler: FirMangler?, val firMangler: FirMangler?,
val irBuiltIns: IrBuiltIns, val irBuiltIns: IrBuiltIns,
) : CustomKotlinLikeDumpStrategy { ) : CustomKotlinLikeDumpStrategy {
@@ -242,7 +242,7 @@ class IrMangledNameAndSignatureDumpHandler(
// for computing signature mangled names. // for computing signature mangled names.
firMangler?.addSignatureMangledNameTo(signatureMangledNames, firDeclaration, ComputedBy.FE) firMangler?.addSignatureMangledNameTo(signatureMangledNames, firDeclaration, ComputedBy.FE)
} else } else
descriptorMangler.addSignatureMangledNameTo(signatureMangledNames, symbol.descriptor, ComputedBy.FE) descriptorMangler?.addSignatureMangledNameTo(signatureMangledNames, symbol.descriptor, ComputedBy.FE)
} }
fun printActualMangledNamesAndSignatures() { fun printActualMangledNamesAndSignatures() {
@@ -33,14 +33,15 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput<IrBackendInput>() {
abstract val irPluginContext: IrPluginContext abstract val irPluginContext: IrPluginContext
/** /**
* The mangler instance that was used to build declaration signatures from (possibly deserialized) K1 descriptors for this backend. * The mangler instance that was used to build declaration signatures from (possibly deserialized) K1 descriptors for this backend,
* or `null` if this artifact was compiled using the K2 frontend.
* *
* This instance can be used to verify signatures in tests. * This instance can be used to verify signatures in tests.
* *
* @see org.jetbrains.kotlin.backend.common.serialization.mangle.descriptor.DescriptorMangleComputer * @see org.jetbrains.kotlin.backend.common.serialization.mangle.descriptor.DescriptorMangleComputer
* @see org.jetbrains.kotlin.ir.util.IdSignature * @see org.jetbrains.kotlin.ir.util.IdSignature
*/ */
abstract val descriptorMangler: KotlinMangler.DescriptorMangler abstract val descriptorMangler: KotlinMangler.DescriptorMangler?
/** /**
* The mangler instance that was used to build declaration signatures from IR declarations for this backend. * The mangler instance that was used to build declaration signatures from IR declarations for this backend.
@@ -70,7 +71,7 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput<IrBackendInput>() {
val icData: List<KotlinFileSerializedData>, val icData: List<KotlinFileSerializedData>,
override val diagnosticReporter: BaseDiagnosticsCollector, override val diagnosticReporter: BaseDiagnosticsCollector,
val hasErrors: Boolean, val hasErrors: Boolean,
override val descriptorMangler: KotlinMangler.DescriptorMangler, override val descriptorMangler: KotlinMangler.DescriptorMangler?,
override val irMangler: KotlinMangler.IrMangler, override val irMangler: KotlinMangler.IrMangler,
override val firMangler: FirMangler?, override val firMangler: FirMangler?,
val serializeSingleFile: (KtSourceFile) -> ProtoBuf.PackageFragment, val serializeSingleFile: (KtSourceFile) -> ProtoBuf.PackageFragment,
@@ -80,7 +81,7 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput<IrBackendInput>() {
override val irModuleFragment: IrModuleFragment, override val irModuleFragment: IrModuleFragment,
override val irPluginContext: IrPluginContext, override val irPluginContext: IrPluginContext,
override val diagnosticReporter: BaseDiagnosticsCollector, override val diagnosticReporter: BaseDiagnosticsCollector,
override val descriptorMangler: KotlinMangler.DescriptorMangler, override val descriptorMangler: KotlinMangler.DescriptorMangler?,
override val irMangler: KotlinMangler.IrMangler, override val irMangler: KotlinMangler.IrMangler,
override val firMangler: FirMangler?, override val firMangler: FirMangler?,
) : IrBackendInput() { ) : IrBackendInput() {
@@ -96,7 +97,7 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput<IrBackendInput>() {
val icData: List<KotlinFileSerializedData>, val icData: List<KotlinFileSerializedData>,
override val diagnosticReporter: BaseDiagnosticsCollector, override val diagnosticReporter: BaseDiagnosticsCollector,
val hasErrors: Boolean, val hasErrors: Boolean,
override val descriptorMangler: KotlinMangler.DescriptorMangler, override val descriptorMangler: KotlinMangler.DescriptorMangler?,
override val irMangler: KotlinMangler.IrMangler, override val irMangler: KotlinMangler.IrMangler,
override val firMangler: FirMangler?, override val firMangler: FirMangler?,
val serializeSingleFile: (KtSourceFile) -> ProtoBuf.PackageFragment, val serializeSingleFile: (KtSourceFile) -> ProtoBuf.PackageFragment,
@@ -107,7 +108,7 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput<IrBackendInput>() {
val codegenFactory: JvmIrCodegenFactory, val codegenFactory: JvmIrCodegenFactory,
val backendInput: JvmIrCodegenFactory.JvmIrBackendInput, val backendInput: JvmIrCodegenFactory.JvmIrBackendInput,
val sourceFiles: List<KtSourceFile>, val sourceFiles: List<KtSourceFile>,
override val descriptorMangler: KotlinMangler.DescriptorMangler, override val descriptorMangler: KotlinMangler.DescriptorMangler?,
override val irMangler: KotlinMangler.IrMangler, override val irMangler: KotlinMangler.IrMangler,
override val firMangler: FirMangler?, override val firMangler: FirMangler?,
) : IrBackendInput() { ) : IrBackendInput() {
@@ -128,7 +129,7 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput<IrBackendInput>() {
override val irModuleFragment: IrModuleFragment, override val irModuleFragment: IrModuleFragment,
override val irPluginContext: IrPluginContext, override val irPluginContext: IrPluginContext,
override val diagnosticReporter: BaseDiagnosticsCollector, override val diagnosticReporter: BaseDiagnosticsCollector,
override val descriptorMangler: KotlinMangler.DescriptorMangler, override val descriptorMangler: KotlinMangler.DescriptorMangler?,
override val irMangler: KotlinMangler.IrMangler, override val irMangler: KotlinMangler.IrMangler,
override val firMangler: FirMangler?, override val firMangler: FirMangler?,
) : IrBackendInput() ) : IrBackendInput()
@@ -75,7 +75,7 @@ class ClassicFrontend2IrConverter(
codegenFactory, codegenFactory,
conversionResult, conversionResult,
sourceFiles = emptyList(), sourceFiles = emptyList(),
descriptorMangler = conversionResult.symbolTable.signaturer.mangler, descriptorMangler = conversionResult.symbolTable.signaturer!!.mangler,
irMangler = JvmIrMangler, irMangler = JvmIrMangler,
firMangler = null, firMangler = null,
) )
@@ -114,7 +114,7 @@ class ClassicFrontend2IrConverter(
icData, icData,
diagnosticReporter = DiagnosticReporterFactory.createReporter(), diagnosticReporter = DiagnosticReporterFactory.createReporter(),
hasErrors, hasErrors,
descriptorMangler = (pluginContext.symbolTable as SymbolTable).signaturer.mangler, descriptorMangler = (pluginContext.symbolTable as SymbolTable).signaturer!!.mangler,
irMangler = JsManglerIr, irMangler = JsManglerIr,
firMangler = null, firMangler = null,
) { file -> ) { file ->
@@ -156,7 +156,7 @@ class ClassicFrontend2IrConverter(
icData, icData,
diagnosticReporter = DiagnosticReporterFactory.createReporter(), diagnosticReporter = DiagnosticReporterFactory.createReporter(),
hasErrors, hasErrors,
descriptorMangler = (pluginContext.symbolTable as SymbolTable).signaturer.mangler, descriptorMangler = (pluginContext.symbolTable as SymbolTable).signaturer!!.mangler,
irMangler = JsManglerIr, irMangler = JsManglerIr,
firMangler = null, firMangler = null,
) { file -> ) { file ->
@@ -7,14 +7,11 @@ package org.jetbrains.kotlin.test.frontend.fir
import org.jetbrains.kotlin.KtSourceFile import org.jetbrains.kotlin.KtSourceFile
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
@@ -35,7 +32,6 @@ import org.jetbrains.kotlin.library.unresolvedDependencies
import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.model.BackendKinds import org.jetbrains.kotlin.test.model.BackendKinds
import org.jetbrains.kotlin.test.model.Frontend2BackendConverter import org.jetbrains.kotlin.test.model.Frontend2BackendConverter
import org.jetbrains.kotlin.test.model.FrontendKinds import org.jetbrains.kotlin.test.model.FrontendKinds
@@ -51,7 +47,6 @@ abstract class AbstractFir2IrNonJvmResultsConverter(
FrontendKinds.FIR, FrontendKinds.FIR,
BackendKinds.IrBackend BackendKinds.IrBackend
) { ) {
protected abstract fun createDescriptorMangler(): KotlinMangler.DescriptorMangler
protected abstract fun createIrMangler(): KotlinMangler.IrMangler protected abstract fun createIrMangler(): KotlinMangler.IrMangler
protected abstract fun createFirMangler(): FirMangler protected abstract fun createFirMangler(): FirMangler
protected abstract fun resolveLibraries(module: TestModule, compilerConfiguration: CompilerConfiguration): List<KotlinResolvedLibrary> protected abstract fun resolveLibraries(module: TestModule, compilerConfiguration: CompilerConfiguration): List<KotlinResolvedLibrary>
@@ -90,7 +85,6 @@ abstract class AbstractFir2IrNonJvmResultsConverter(
Fir2IrExtensions.Default, Fir2IrExtensions.Default,
fir2IrConfiguration, fir2IrConfiguration,
module.irGenerationExtensions(testServices), module.irGenerationExtensions(testServices),
IdSignatureDescriptor(createDescriptorMangler()),
irMangler, irMangler,
createFirMangler(), createFirMangler(),
Fir2IrVisibilityConverter.Default, Fir2IrVisibilityConverter.Default,
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.ir.backend.js.JsFactories
import org.jetbrains.kotlin.ir.backend.js.KotlinFileSerializedData import org.jetbrains.kotlin.ir.backend.js.KotlinFileSerializedData
import org.jetbrains.kotlin.ir.backend.js.getSerializedData import org.jetbrains.kotlin.ir.backend.js.getSerializedData
import org.jetbrains.kotlin.ir.backend.js.incrementalDataProvider import org.jetbrains.kotlin.ir.backend.js.incrementalDataProvider
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerIr import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerIr
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.util.KotlinMangler import org.jetbrains.kotlin.ir.util.KotlinMangler
@@ -43,16 +42,12 @@ abstract class Fir2IrJsWasmResultsConverter(testServices: TestServices) : Abstra
List<KotlinFileSerializedData>, List<KotlinFileSerializedData>,
BaseDiagnosticsCollector, BaseDiagnosticsCollector,
Boolean, Boolean,
KotlinMangler.DescriptorMangler, KotlinMangler.DescriptorMangler?,
KotlinMangler.IrMangler, KotlinMangler.IrMangler,
FirMangler?, FirMangler?,
(KtSourceFile) -> ProtoBuf.PackageFragment (KtSourceFile) -> ProtoBuf.PackageFragment
) -> IrBackendInput ) -> IrBackendInput
override fun createDescriptorMangler(): KotlinMangler.DescriptorMangler {
return JsManglerDesc
}
override fun createIrMangler(): KotlinMangler.IrMangler { override fun createIrMangler(): KotlinMangler.IrMangler {
return JsManglerIr return JsManglerIr
} }
@@ -83,7 +78,7 @@ abstract class Fir2IrJsWasmResultsConverter(testServices: TestServices) : Abstra
compilerConfiguration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(), compilerConfiguration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(),
diagnosticReporter, diagnosticReporter,
inputArtifact.hasErrors, inputArtifact.hasErrors,
manglers.descriptorMangler, /*descriptorMangler = */null,
manglers.irMangler, manglers.irMangler,
manglers.firMangler, manglers.firMangler,
) { file -> ) { file ->
@@ -108,7 +103,7 @@ abstract class Fir2IrJsWasmResultsConverter(testServices: TestServices) : Abstra
} }
class Fir2IrJsResultsConverter(testServices: TestServices) : Fir2IrJsWasmResultsConverter(testServices) { class Fir2IrJsResultsConverter(testServices: TestServices) : Fir2IrJsWasmResultsConverter(testServices) {
override val artifactFactory: (IrModuleFragment, IrPluginContext, List<KtSourceFile>, List<KotlinFileSerializedData>, BaseDiagnosticsCollector, Boolean, KotlinMangler.DescriptorMangler, KotlinMangler.IrMangler, FirMangler?, (KtSourceFile) -> ProtoBuf.PackageFragment) -> IrBackendInput override val artifactFactory: (IrModuleFragment, IrPluginContext, List<KtSourceFile>, List<KotlinFileSerializedData>, BaseDiagnosticsCollector, Boolean, KotlinMangler.DescriptorMangler?, KotlinMangler.IrMangler, FirMangler?, (KtSourceFile) -> ProtoBuf.PackageFragment) -> IrBackendInput
get() = IrBackendInput::JsIrBackendInput get() = IrBackendInput::JsIrBackendInput
override fun resolveLibraries(module: TestModule, compilerConfiguration: CompilerConfiguration): List<KotlinResolvedLibrary> { override fun resolveLibraries(module: TestModule, compilerConfiguration: CompilerConfiguration): List<KotlinResolvedLibrary> {
@@ -118,7 +113,7 @@ class Fir2IrJsResultsConverter(testServices: TestServices) : Fir2IrJsWasmResults
class Fir2IrWasmResultsConverter(testServices: TestServices) : Fir2IrJsWasmResultsConverter(testServices) { class Fir2IrWasmResultsConverter(testServices: TestServices) : Fir2IrJsWasmResultsConverter(testServices) {
override val artifactFactory: (IrModuleFragment, IrPluginContext, List<KtSourceFile>, List<KotlinFileSerializedData>, BaseDiagnosticsCollector, Boolean, KotlinMangler.DescriptorMangler, KotlinMangler.IrMangler, FirMangler?, (KtSourceFile) -> ProtoBuf.PackageFragment) -> IrBackendInput override val artifactFactory: (IrModuleFragment, IrPluginContext, List<KtSourceFile>, List<KotlinFileSerializedData>, BaseDiagnosticsCollector, Boolean, KotlinMangler.DescriptorMangler?, KotlinMangler.IrMangler, FirMangler?, (KtSourceFile) -> ProtoBuf.PackageFragment) -> IrBackendInput
get() = IrBackendInput::WasmBackendInput get() = IrBackendInput::WasmBackendInput
override fun resolveLibraries(module: TestModule, compilerConfiguration: CompilerConfiguration): List<KotlinResolvedLibrary> { override fun resolveLibraries(module: TestModule, compilerConfiguration: CompilerConfiguration): List<KotlinResolvedLibrary> {
@@ -14,11 +14,9 @@ import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
import org.jetbrains.kotlin.codegen.ClassBuilderFactories import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
import org.jetbrains.kotlin.fir.backend.jvm.* import org.jetbrains.kotlin.fir.backend.jvm.*
import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualize import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualize
import org.jetbrains.kotlin.fir.pipeline.signatureComposerForJvmFir2Ir
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
@@ -68,7 +66,6 @@ class Fir2IrJvmResultsConverter(
val phaseConfig = configuration.get(CLIConfigurationKeys.PHASE_CONFIG) val phaseConfig = configuration.get(CLIConfigurationKeys.PHASE_CONFIG)
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(), FirJvmKotlinMangler())
val diagnosticReporter = DiagnosticReporterFactory.createReporter() val diagnosticReporter = DiagnosticReporterFactory.createReporter()
val compilerConfiguration = compilerConfigurationProvider.getCompilerConfiguration(module) val compilerConfiguration = compilerConfigurationProvider.getCompilerConfiguration(module)
@@ -78,7 +75,6 @@ class Fir2IrJvmResultsConverter(
fir2IrExtensions, fir2IrExtensions,
fir2IrConfiguration, fir2IrConfiguration,
module.irGenerationExtensions(testServices), module.irGenerationExtensions(testServices),
signatureComposerForJvmFir2Ir(),
irMangler, irMangler,
FirJvmKotlinMangler(), FirJvmKotlinMangler(),
FirJvmVisibilityConverter, FirJvmVisibilityConverter,
@@ -114,9 +110,9 @@ class Fir2IrJvmResultsConverter(
codegenFactory, codegenFactory,
backendInput, backendInput,
sourceFiles, sourceFiles,
descriptorMangler = commonMemberStorage.symbolTable.signaturer.mangler, descriptorMangler = null,
irMangler = irMangler, irMangler = fir2irResult.components.manglers.irMangler,
firMangler = commonMemberStorage.firSignatureComposer.mangler, firMangler = fir2irResult.components.manglers.firMangler,
) )
} }
} }
@@ -15,9 +15,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.fir.FirDiagnosticsCompilerResultsReporter import org.jetbrains.kotlin.cli.common.fir.FirDiagnosticsCompilerResultsReporter
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
import org.jetbrains.kotlin.descriptors.isEmpty import org.jetbrains.kotlin.descriptors.isEmpty
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
@@ -98,7 +96,6 @@ internal fun PhaseContext.fir2Ir(
NativeFir2IrExtensions, NativeFir2IrExtensions,
fir2IrConfiguration, fir2IrConfiguration,
IrGenerationExtension.getInstances(config.project), IrGenerationExtension.getInstances(config.project),
signatureComposer = DescriptorSignatureComposerStub(KonanManglerDesc),
irMangler = KonanManglerIr, irMangler = KonanManglerIr,
firMangler = FirNativeKotlinMangler, firMangler = FirNativeKotlinMangler,
visibilityConverter = Fir2IrVisibilityConverter.Default, visibilityConverter = Fir2IrVisibilityConverter.Default,
@@ -133,7 +133,7 @@ class ClassicFrontend2NativeIrConverter(
moduleFragment, moduleFragment,
pluginContext, pluginContext,
diagnosticReporter = DiagnosticReporterFactory.createReporter(), diagnosticReporter = DiagnosticReporterFactory.createReporter(),
descriptorMangler = (pluginContext.symbolTable as SymbolTable).signaturer.mangler, descriptorMangler = (pluginContext.symbolTable as SymbolTable).signaturer!!.mangler,
irMangler = KonanManglerIr, irMangler = KonanManglerIr,
firMangler = null, firMangler = null,
) )
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.konan.test
import org.jetbrains.kotlin.KtSourceFile import org.jetbrains.kotlin.KtSourceFile
import org.jetbrains.kotlin.backend.common.serialization.metadata.DynamicTypeDeserializer import org.jetbrains.kotlin.backend.common.serialization.metadata.DynamicTypeDeserializer
import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerDesc
import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerIr import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerIr
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.CompilerConfiguration
@@ -30,10 +29,6 @@ import org.jetbrains.kotlin.test.services.TestServices
class Fir2IrNativeResultsConverter(testServices: TestServices) : AbstractFir2IrNonJvmResultsConverter(testServices) { class Fir2IrNativeResultsConverter(testServices: TestServices) : AbstractFir2IrNonJvmResultsConverter(testServices) {
override fun createDescriptorMangler(): KotlinMangler.DescriptorMangler {
return KonanManglerDesc
}
override fun createIrMangler(): KotlinMangler.IrMangler { override fun createIrMangler(): KotlinMangler.IrMangler {
return KonanManglerIr return KonanManglerIr
} }
@@ -62,7 +57,7 @@ class Fir2IrNativeResultsConverter(testServices: TestServices) : AbstractFir2IrN
fir2IrResult.irModuleFragment, fir2IrResult.irModuleFragment,
fir2IrResult.pluginContext, fir2IrResult.pluginContext,
diagnosticReporter = diagnosticReporter, diagnosticReporter = diagnosticReporter,
descriptorMangler = manglers.descriptorMangler, descriptorMangler = null,
irMangler = manglers.irMangler, irMangler = manglers.irMangler,
firMangler = manglers.firMangler, firMangler = manglers.firMangler,
) )