[IR] Store manglers used for signature computation in IrBackendInput
We will need them in signature dump tests later.
This commit is contained in:
committed by
Space Team
parent
a8b7306342
commit
a74df3b4b4
@@ -26,11 +26,7 @@ import org.jetbrains.kotlin.diagnostics.impl.PendingDiagnosticsCollectorWithSupp
|
|||||||
import org.jetbrains.kotlin.fir.BinaryModuleData
|
import org.jetbrains.kotlin.fir.BinaryModuleData
|
||||||
import org.jetbrains.kotlin.fir.DependencyListForCliModule
|
import org.jetbrains.kotlin.fir.DependencyListForCliModule
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.ConstValueProviderImpl
|
import org.jetbrains.kotlin.fir.backend.*
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrVisibilityConverter
|
|
||||||
import org.jetbrains.kotlin.fir.backend.extractFirDeclarations
|
|
||||||
import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler
|
import org.jetbrains.kotlin.fir.backend.js.FirJsKotlinMangler
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
||||||
@@ -43,6 +39,7 @@ 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.util.IrMessageLogger
|
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
||||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||||
@@ -146,9 +143,9 @@ fun transformFirToIr(
|
|||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
),
|
),
|
||||||
IrGenerationExtension.getInstances(moduleStructure.project),
|
IrGenerationExtension.getInstances(moduleStructure.project),
|
||||||
signatureComposerCreator = null,
|
signatureComposer = DescriptorSignatureComposerStub(JsManglerDesc),
|
||||||
irMangler = JsManglerIr,
|
irMangler = JsManglerIr,
|
||||||
firManglerCreator = ::FirJsKotlinMangler,
|
firMangler = FirJsKotlinMangler(),
|
||||||
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
||||||
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
||||||
diagnosticReporter = diagnosticsReporter,
|
diagnosticReporter = diagnosticsReporter,
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
|||||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
||||||
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.LanguageVersionSettings
|
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.*
|
import org.jetbrains.kotlin.fir.backend.*
|
||||||
@@ -19,7 +18,6 @@ import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProv
|
|||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.languageVersionSettings
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.signaturer.FirMangler
|
import org.jetbrains.kotlin.fir.signaturer.FirMangler
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
||||||
@@ -53,21 +51,30 @@ fun FirResult.convertToIrAndActualizeForJvm(
|
|||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
fir2IrConfiguration,
|
fir2IrConfiguration,
|
||||||
irGeneratorExtensions,
|
irGeneratorExtensions,
|
||||||
signatureComposerCreator = { JvmIdSignatureDescriptor(JvmDescriptorMangler(null)) },
|
signatureComposer = signatureComposerForJvmFir2Ir(fir2IrConfiguration.linkViaSignatures),
|
||||||
irMangler = JvmIrMangler,
|
irMangler = JvmIrMangler,
|
||||||
firManglerCreator = { FirJvmKotlinMangler() },
|
firMangler = FirJvmKotlinMangler(),
|
||||||
visibilityConverter = FirJvmVisibilityConverter,
|
visibilityConverter = FirJvmVisibilityConverter,
|
||||||
diagnosticReporter = diagnosticReporter,
|
diagnosticReporter = diagnosticReporter,
|
||||||
kotlinBuiltIns = DefaultBuiltIns.Instance,
|
kotlinBuiltIns = DefaultBuiltIns.Instance,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
fun signatureComposerForJvmFir2Ir(generateSignatures: Boolean): IdSignatureComposer {
|
||||||
|
val mangler = JvmDescriptorMangler(null)
|
||||||
|
return if (generateSignatures) {
|
||||||
|
JvmIdSignatureDescriptor(mangler)
|
||||||
|
} else {
|
||||||
|
DescriptorSignatureComposerStub(mangler)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun FirResult.convertToIrAndActualize(
|
fun FirResult.convertToIrAndActualize(
|
||||||
fir2IrExtensions: Fir2IrExtensions,
|
fir2IrExtensions: Fir2IrExtensions,
|
||||||
fir2IrConfiguration: Fir2IrConfiguration,
|
fir2IrConfiguration: Fir2IrConfiguration,
|
||||||
irGeneratorExtensions: Collection<IrGenerationExtension>,
|
irGeneratorExtensions: Collection<IrGenerationExtension>,
|
||||||
signatureComposerCreator: (() -> IdSignatureComposer)?,
|
signatureComposer: IdSignatureComposer,
|
||||||
irMangler: KotlinMangler.IrMangler,
|
irMangler: KotlinMangler.IrMangler,
|
||||||
firManglerCreator: () -> FirMangler,
|
firMangler: FirMangler,
|
||||||
visibilityConverter: Fir2IrVisibilityConverter,
|
visibilityConverter: Fir2IrVisibilityConverter,
|
||||||
kotlinBuiltIns: KotlinBuiltIns,
|
kotlinBuiltIns: KotlinBuiltIns,
|
||||||
diagnosticReporter: DiagnosticReporter,
|
diagnosticReporter: DiagnosticReporter,
|
||||||
@@ -76,11 +83,7 @@ fun FirResult.convertToIrAndActualize(
|
|||||||
val fir2IrResult: Fir2IrResult
|
val fir2IrResult: Fir2IrResult
|
||||||
val actualizationResult: IrActualizedResult?
|
val actualizationResult: IrActualizedResult?
|
||||||
|
|
||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(
|
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposer, firMangler)
|
||||||
generateSignatures = fir2IrConfiguration.linkViaSignatures,
|
|
||||||
signatureComposerCreator = signatureComposerCreator,
|
|
||||||
manglerCreator = firManglerCreator
|
|
||||||
)
|
|
||||||
|
|
||||||
when (outputs.size) {
|
when (outputs.size) {
|
||||||
0 -> error("No modules found")
|
0 -> error("No modules found")
|
||||||
|
|||||||
+6
-2
@@ -10,8 +10,12 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
|
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
|
||||||
|
import org.jetbrains.kotlin.ir.util.KotlinMangler
|
||||||
|
|
||||||
class DescriptorSignatureComposerStub : IdSignatureComposer {
|
/**
|
||||||
|
* 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? {
|
override fun composeSignature(descriptor: DeclarationDescriptor): IdSignature? {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@@ -31,4 +35,4 @@ class DescriptorSignatureComposerStub : IdSignatureComposer {
|
|||||||
override fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit) {
|
override fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit) {
|
||||||
body()
|
body()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-18
@@ -10,31 +10,20 @@ import org.jetbrains.kotlin.fir.signaturer.FirBasedSignatureComposer
|
|||||||
import org.jetbrains.kotlin.fir.signaturer.FirMangler
|
import org.jetbrains.kotlin.fir.signaturer.FirMangler
|
||||||
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.util.IdSignature
|
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
|
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
|
||||||
|
|
||||||
class Fir2IrCommonMemberStorage(
|
class Fir2IrCommonMemberStorage(
|
||||||
generateSignatures: Boolean,
|
signatureComposer: IdSignatureComposer,
|
||||||
signatureComposerCreator: (() -> IdSignatureComposer)?,
|
firMangler: FirMangler
|
||||||
manglerCreator: () -> FirMangler
|
|
||||||
) {
|
) {
|
||||||
val signatureComposer: FirBasedSignatureComposer
|
val firSignatureComposer = FirBasedSignatureComposer(firMangler)
|
||||||
|
|
||||||
val symbolTable: SymbolTable
|
val symbolTable = SymbolTable(
|
||||||
|
signaturer = WrappedDescriptorSignatureComposer(signatureComposer, firSignatureComposer),
|
||||||
init {
|
irFactory = IrFactoryImpl
|
||||||
val signaturer = if (generateSignatures && signatureComposerCreator != null)
|
)
|
||||||
signatureComposerCreator()
|
|
||||||
else
|
|
||||||
DescriptorSignatureComposerStub()
|
|
||||||
signatureComposer = FirBasedSignatureComposer(manglerCreator())
|
|
||||||
symbolTable = SymbolTable(
|
|
||||||
signaturer = WrappedDescriptorSignatureComposer(signaturer, signatureComposer),
|
|
||||||
irFactory = IrFactoryImpl
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
val classCache: MutableMap<FirRegularClass, IrClass> = mutableMapOf()
|
val classCache: MutableMap<FirRegularClass, IrClass> = mutableMapOf()
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.*
|
import org.jetbrains.kotlin.fir.backend.generators.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
@@ -462,7 +461,7 @@ class Fir2IrConverter(
|
|||||||
scopeSession,
|
scopeSession,
|
||||||
commonMemberStorage.symbolTable,
|
commonMemberStorage.symbolTable,
|
||||||
irFactory,
|
irFactory,
|
||||||
commonMemberStorage.signatureComposer,
|
commonMemberStorage.firSignatureComposer,
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
fir2IrConfiguration,
|
fir2IrConfiguration,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -658,4 +658,6 @@ interface IdSignatureComposer {
|
|||||||
fun composeAnonInitSignature(descriptor: ClassDescriptor): IdSignature?
|
fun composeAnonInitSignature(descriptor: ClassDescriptor): IdSignature?
|
||||||
|
|
||||||
fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit)
|
fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit)
|
||||||
|
|
||||||
|
val mangler: KotlinMangler.DescriptorMangler
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -15,7 +15,7 @@ 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.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
|
|
||||||
open class IdSignatureDescriptor(private val mangler: KotlinMangler.DescriptorMangler) : IdSignatureComposer {
|
open class IdSignatureDescriptor(override val mangler: KotlinMangler.DescriptorMangler) : IdSignatureComposer {
|
||||||
|
|
||||||
protected open fun createSignatureBuilder(type: SpecialDeclarationType): DescriptorBasedSignatureBuilder = DescriptorBasedSignatureBuilder(type)
|
protected open fun createSignatureBuilder(type: SpecialDeclarationType): DescriptorBasedSignatureBuilder = DescriptorBasedSignatureBuilder(type)
|
||||||
|
|
||||||
@@ -198,4 +198,4 @@ open class IdSignatureDescriptor(private val mangler: KotlinMangler.DescriptorMa
|
|||||||
override fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit) {
|
override fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit) {
|
||||||
body()
|
body()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+40
-3
@@ -12,9 +12,11 @@ import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
|||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
||||||
|
import org.jetbrains.kotlin.fir.signaturer.FirMangler
|
||||||
import org.jetbrains.kotlin.ir.backend.js.KotlinFileSerializedData
|
import org.jetbrains.kotlin.ir.backend.js.KotlinFileSerializedData
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
|
import org.jetbrains.kotlin.ir.util.KotlinMangler
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.test.model.BackendKinds
|
import org.jetbrains.kotlin.test.model.BackendKinds
|
||||||
import org.jetbrains.kotlin.test.model.ResultingArtifact
|
import org.jetbrains.kotlin.test.model.ResultingArtifact
|
||||||
@@ -26,11 +28,40 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput<IrBackendInput>() {
|
|||||||
|
|
||||||
abstract val irModuleFragment: IrModuleFragment
|
abstract val irModuleFragment: IrModuleFragment
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Here plugin context can be used as a service for inspecting resulting IR module
|
* Here plugin context can be used as a service for inspecting resulting IR module
|
||||||
*/
|
*/
|
||||||
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.
|
||||||
|
*
|
||||||
|
* This instance can be used to verify signatures in tests.
|
||||||
|
*
|
||||||
|
* @see org.jetbrains.kotlin.backend.common.serialization.mangle.descriptor.DescriptorMangleComputer
|
||||||
|
* @see org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
|
*/
|
||||||
|
abstract val descriptorMangler: KotlinMangler.DescriptorMangler
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The mangler instance that was used to build declaration signatures from IR declarations for this backend.
|
||||||
|
*
|
||||||
|
* @see org.jetbrains.kotlin.backend.common.serialization.mangle.ir.IrMangleComputer
|
||||||
|
* @see org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
|
*/
|
||||||
|
abstract val irMangler: KotlinMangler.IrMangler
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The mangler instance that was used to build declaration signatures from K2 (FIR) declarations for this backend, or `null` if
|
||||||
|
* this artifact was compiled using the classic frontend.
|
||||||
|
*
|
||||||
|
* This instance can be used to verify signatures in tests.
|
||||||
|
*
|
||||||
|
* @see org.jetbrains.kotlin.fir.backend.FirMangleComputer
|
||||||
|
* @see org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
|
*/
|
||||||
|
abstract val firMangler: FirMangler?
|
||||||
|
|
||||||
data class JsIrBackendInput(
|
data class JsIrBackendInput(
|
||||||
val mainModuleFragment: IrModuleFragment,
|
val mainModuleFragment: IrModuleFragment,
|
||||||
val dependentModuleFragments: List<IrModuleFragment>,
|
val dependentModuleFragments: List<IrModuleFragment>,
|
||||||
@@ -40,7 +71,10 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput<IrBackendInput>() {
|
|||||||
val expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>, // TODO: abstract from descriptors
|
val expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>, // TODO: abstract from descriptors
|
||||||
val diagnosticsCollector: BaseDiagnosticsCollector,
|
val diagnosticsCollector: BaseDiagnosticsCollector,
|
||||||
val hasErrors: Boolean,
|
val hasErrors: Boolean,
|
||||||
val serializeSingleFile: (KtSourceFile, IrActualizedResult?) -> ProtoBuf.PackageFragment
|
override val descriptorMangler: KotlinMangler.DescriptorMangler,
|
||||||
|
override val irMangler: KotlinMangler.IrMangler,
|
||||||
|
override val firMangler: FirMangler?,
|
||||||
|
val serializeSingleFile: (KtSourceFile, IrActualizedResult?) -> ProtoBuf.PackageFragment,
|
||||||
) : IrBackendInput() {
|
) : IrBackendInput() {
|
||||||
override val irModuleFragment: IrModuleFragment
|
override val irModuleFragment: IrModuleFragment
|
||||||
get() = mainModuleFragment
|
get() = mainModuleFragment
|
||||||
@@ -51,7 +85,10 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput<IrBackendInput>() {
|
|||||||
val codegenFactory: JvmIrCodegenFactory,
|
val codegenFactory: JvmIrCodegenFactory,
|
||||||
val dependentInputs: List<JvmIrCodegenFactory.JvmIrBackendInput>,
|
val dependentInputs: List<JvmIrCodegenFactory.JvmIrBackendInput>,
|
||||||
val backendInput: JvmIrCodegenFactory.JvmIrBackendInput,
|
val backendInput: JvmIrCodegenFactory.JvmIrBackendInput,
|
||||||
val sourceFiles: List<KtSourceFile>
|
val sourceFiles: List<KtSourceFile>,
|
||||||
|
override val descriptorMangler: KotlinMangler.DescriptorMangler,
|
||||||
|
override val irMangler: KotlinMangler.IrMangler,
|
||||||
|
override val firMangler: FirMangler?,
|
||||||
) : IrBackendInput() {
|
) : IrBackendInput() {
|
||||||
override val irModuleFragment: IrModuleFragment
|
override val irModuleFragment: IrModuleFragment
|
||||||
get() = backendInput.irModuleFragment
|
get() = backendInput.irModuleFragment
|
||||||
|
|||||||
+11
-2
@@ -16,8 +16,11 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
|
|||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.ir.backend.js.*
|
import org.jetbrains.kotlin.ir.backend.js.*
|
||||||
|
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerIr
|
||||||
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.js.config.ErrorTolerancePolicy
|
import org.jetbrains.kotlin.js.config.ErrorTolerancePolicy
|
||||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
@@ -71,7 +74,10 @@ class ClassicFrontend2IrConverter(
|
|||||||
codegenFactory,
|
codegenFactory,
|
||||||
dependentInputs = emptyList(),
|
dependentInputs = emptyList(),
|
||||||
conversionResult,
|
conversionResult,
|
||||||
sourceFiles = emptyList()
|
sourceFiles = emptyList(),
|
||||||
|
descriptorMangler = conversionResult.symbolTable.signaturer.mangler,
|
||||||
|
irMangler = JvmIrMangler,
|
||||||
|
firMangler = null,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,7 +117,10 @@ class ClassicFrontend2IrConverter(
|
|||||||
icData,
|
icData,
|
||||||
expectDescriptorToSymbol = expectDescriptorToSymbol,
|
expectDescriptorToSymbol = expectDescriptorToSymbol,
|
||||||
diagnosticsCollector = DiagnosticReporterFactory.createReporter(),
|
diagnosticsCollector = DiagnosticReporterFactory.createReporter(),
|
||||||
hasErrors
|
hasErrors,
|
||||||
|
descriptorMangler = (pluginContext.symbolTable as SymbolTable).signaturer.mangler,
|
||||||
|
irMangler = JsManglerIr,
|
||||||
|
firMangler = null,
|
||||||
) { file, _ ->
|
) { file, _ ->
|
||||||
metadataSerializer.serializeScope(file, analysisResult.bindingContext, moduleFragment.descriptor)
|
metadataSerializer.serializeScope(file, analysisResult.bindingContext, moduleFragment.descriptor)
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-13
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.test.frontend.fir
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.KtSourceFile
|
import org.jetbrains.kotlin.KtSourceFile
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
|
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.CommonConfigurationKeys
|
||||||
@@ -31,9 +32,11 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker
|
|||||||
import org.jetbrains.kotlin.ir.backend.js.JsFactories
|
import org.jetbrains.kotlin.ir.backend.js.JsFactories
|
||||||
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.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
|
import org.jetbrains.kotlin.ir.util.KotlinMangler
|
||||||
import org.jetbrains.kotlin.library.metadata.resolver.KotlinResolvedLibrary
|
import org.jetbrains.kotlin.library.metadata.resolver.KotlinResolvedLibrary
|
||||||
import org.jetbrains.kotlin.library.unresolvedDependencies
|
import org.jetbrains.kotlin.library.unresolvedDependencies
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
@@ -42,9 +45,7 @@ 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
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.*
|
||||||
import org.jetbrains.kotlin.test.services.compilerConfigurationProvider
|
|
||||||
import org.jetbrains.kotlin.test.services.jsLibraryProvider
|
|
||||||
import org.jetbrains.kotlin.utils.metadataVersion
|
import org.jetbrains.kotlin.utils.metadataVersion
|
||||||
|
|
||||||
class Fir2IrJsResultsConverter(
|
class Fir2IrJsResultsConverter(
|
||||||
@@ -67,11 +68,9 @@ class Fir2IrJsResultsConverter(
|
|||||||
lateinit var mainPluginContext: IrPluginContext
|
lateinit var mainPluginContext: IrPluginContext
|
||||||
var irBuiltIns: IrBuiltInsOverFir? = null
|
var irBuiltIns: IrBuiltInsOverFir? = null
|
||||||
|
|
||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(
|
val commonMemberStorage = Fir2IrCommonMemberStorage(IdSignatureDescriptor(JsManglerDesc), FirJsKotlinMangler())
|
||||||
generateSignatures = false,
|
|
||||||
signatureComposerCreator = null,
|
val irMangler = JsManglerIr
|
||||||
manglerCreator = ::FirJsKotlinMangler
|
|
||||||
)
|
|
||||||
|
|
||||||
for ((index, part) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
for ((index, part) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
||||||
val (irModuleFragment, components, pluginContext) =
|
val (irModuleFragment, components, pluginContext) =
|
||||||
@@ -82,7 +81,9 @@ class Fir2IrJsResultsConverter(
|
|||||||
configuration,
|
configuration,
|
||||||
testServices,
|
testServices,
|
||||||
commonMemberStorage,
|
commonMemberStorage,
|
||||||
irBuiltIns
|
irBuiltIns,
|
||||||
|
irMangler,
|
||||||
|
generateSignatures = true,
|
||||||
)
|
)
|
||||||
irBuiltIns = components.irBuiltIns
|
irBuiltIns = components.irBuiltIns
|
||||||
mainPluginContext = pluginContext
|
mainPluginContext = pluginContext
|
||||||
@@ -112,7 +113,10 @@ class Fir2IrJsResultsConverter(
|
|||||||
configuration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(),
|
configuration.incrementalDataProvider?.getSerializedData(sourceFiles) ?: emptyList(),
|
||||||
expectDescriptorToSymbol = mutableMapOf(),
|
expectDescriptorToSymbol = mutableMapOf(),
|
||||||
diagnosticsCollector = DiagnosticReporterFactory.createReporter(),
|
diagnosticsCollector = DiagnosticReporterFactory.createReporter(),
|
||||||
hasErrors = inputArtifact.hasErrors
|
hasErrors = inputArtifact.hasErrors,
|
||||||
|
descriptorMangler = commonMemberStorage.symbolTable.signaturer.mangler,
|
||||||
|
irMangler = irMangler,
|
||||||
|
firMangler = commonMemberStorage.firSignatureComposer.mangler,
|
||||||
) { file, irActualizedResult ->
|
) { file, irActualizedResult ->
|
||||||
val (firFile, components) = firFilesAndComponentsBySourceFile[file]
|
val (firFile, components) = firFilesAndComponentsBySourceFile[file]
|
||||||
?: error("cannot find FIR file by source file ${file.name} (${file.path})")
|
?: error("cannot find FIR file by source file ${file.name} (${file.path})")
|
||||||
@@ -142,7 +146,9 @@ fun AbstractFirAnalyzerFacade.convertToJsIr(
|
|||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
testServices: TestServices,
|
testServices: TestServices,
|
||||||
commonMemberStorage: Fir2IrCommonMemberStorage,
|
commonMemberStorage: Fir2IrCommonMemberStorage,
|
||||||
irBuiltIns: IrBuiltInsOverFir?
|
irBuiltIns: IrBuiltInsOverFir?,
|
||||||
|
irMangler: KotlinMangler.IrMangler,
|
||||||
|
generateSignatures: Boolean
|
||||||
): Fir2IrResult {
|
): Fir2IrResult {
|
||||||
this as FirAnalyzerFacade
|
this as FirAnalyzerFacade
|
||||||
// TODO: consider avoiding repeated libraries resolution
|
// TODO: consider avoiding repeated libraries resolution
|
||||||
@@ -151,7 +157,7 @@ fun AbstractFirAnalyzerFacade.convertToJsIr(
|
|||||||
|
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
linkViaSignatures = false,
|
linkViaSignatures = generateSignatures,
|
||||||
evaluatedConstTracker = configuration
|
evaluatedConstTracker = configuration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
)
|
)
|
||||||
@@ -159,7 +165,7 @@ fun AbstractFirAnalyzerFacade.convertToJsIr(
|
|||||||
session, scopeSession, firFiles.toList(),
|
session, scopeSession, firFiles.toList(),
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
fir2IrConfiguration,
|
fir2IrConfiguration,
|
||||||
JsManglerIr, IrFactoryImpl,
|
irMangler, IrFactoryImpl,
|
||||||
Fir2IrVisibilityConverter.Default,
|
Fir2IrVisibilityConverter.Default,
|
||||||
Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation
|
Fir2IrJvmSpecialAnnotationSymbolProvider(), // TODO: replace with appropriate (probably empty) implementation
|
||||||
irGeneratorExtensions,
|
irGeneratorExtensions,
|
||||||
|
|||||||
+8
-9
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.test.frontend.fir
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
|
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
|
||||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||||
@@ -22,8 +21,8 @@ import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
|
|||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
||||||
|
import org.jetbrains.kotlin.fir.pipeline.signatureComposerForJvmFir2Ir
|
||||||
import org.jetbrains.kotlin.fir.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
||||||
@@ -66,7 +65,8 @@ class Fir2IrJvmResultsConverter(
|
|||||||
val compilerConfigurationProvider = testServices.compilerConfigurationProvider
|
val compilerConfigurationProvider = testServices.compilerConfigurationProvider
|
||||||
val configuration = compilerConfigurationProvider.getCompilerConfiguration(module)
|
val configuration = compilerConfigurationProvider.getCompilerConfiguration(module)
|
||||||
|
|
||||||
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val irMangler = JvmIrMangler
|
||||||
|
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), irMangler)
|
||||||
|
|
||||||
// Create and initialize the module and its dependencies
|
// Create and initialize the module and its dependencies
|
||||||
val project = compilerConfigurationProvider.getProject(module)
|
val project = compilerConfigurationProvider.getProject(module)
|
||||||
@@ -89,11 +89,7 @@ class Fir2IrJvmResultsConverter(
|
|||||||
val firAnalyzerFacade = inputArtifact.partsForDependsOnModules.last().firAnalyzerFacade as? FirAnalyzerFacade
|
val firAnalyzerFacade = inputArtifact.partsForDependsOnModules.last().firAnalyzerFacade as? FirAnalyzerFacade
|
||||||
val generateSignatures = firAnalyzerFacade?.fir2IrConfiguration?.linkViaSignatures == true
|
val generateSignatures = firAnalyzerFacade?.fir2IrConfiguration?.linkViaSignatures == true
|
||||||
|
|
||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(
|
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(generateSignatures), FirJvmKotlinMangler())
|
||||||
generateSignatures = generateSignatures,
|
|
||||||
signatureComposerCreator = { JvmIdSignatureDescriptor(JvmDescriptorMangler(null)) },
|
|
||||||
manglerCreator = { FirJvmKotlinMangler() }
|
|
||||||
)
|
|
||||||
var irBuiltIns: IrBuiltInsOverFir? = null
|
var irBuiltIns: IrBuiltInsOverFir? = null
|
||||||
|
|
||||||
for ((index, firOutputPart) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
for ((index, firOutputPart) in inputArtifact.partsForDependsOnModules.withIndex()) {
|
||||||
@@ -136,7 +132,10 @@ class Fir2IrJvmResultsConverter(
|
|||||||
codegenFactory,
|
codegenFactory,
|
||||||
dependentIrParts,
|
dependentIrParts,
|
||||||
mainIrPart,
|
mainIrPart,
|
||||||
sourceFiles
|
sourceFiles,
|
||||||
|
descriptorMangler = commonMemberStorage.symbolTable.signaturer.mangler,
|
||||||
|
irMangler = irMangler,
|
||||||
|
firMangler = commonMemberStorage.firSignatureComposer.mangler,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
|||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
|
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
|
||||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||||
import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector
|
||||||
@@ -39,8 +38,8 @@ import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
|
|||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
||||||
|
import org.jetbrains.kotlin.fir.pipeline.signatureComposerForJvmFir2Ir
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
|
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
@@ -125,7 +124,7 @@ object GenerationUtils {
|
|||||||
session,
|
session,
|
||||||
Fir2IrConfiguration(
|
Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
linkViaSignatures = false,
|
linkViaSignatures = configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
||||||
evaluatedConstTracker = configuration
|
evaluatedConstTracker = configuration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
),
|
),
|
||||||
@@ -137,9 +136,8 @@ object GenerationUtils {
|
|||||||
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
|
|
||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(
|
val commonMemberStorage = Fir2IrCommonMemberStorage(
|
||||||
generateSignatures = firAnalyzerFacade.fir2IrConfiguration.linkViaSignatures,
|
signatureComposerForJvmFir2Ir(firAnalyzerFacade.fir2IrConfiguration.linkViaSignatures),
|
||||||
signatureComposerCreator = { JvmIdSignatureDescriptor(JvmDescriptorMangler(null)) },
|
FirJvmKotlinMangler(),
|
||||||
manglerCreator = { FirJvmKotlinMangler() }
|
|
||||||
)
|
)
|
||||||
|
|
||||||
val (moduleFragment, components, pluginContext) = firAnalyzerFacade.convertToIr(
|
val (moduleFragment, components, pluginContext) = firAnalyzerFacade.convertToIr(
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
|||||||
import org.jetbrains.kotlin.ir.types.impl.originalKotlinType
|
import org.jetbrains.kotlin.ir.types.impl.originalKotlinType
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
|
import org.jetbrains.kotlin.ir.util.IdSignatureComposer
|
||||||
|
import org.jetbrains.kotlin.ir.util.KotlinMangler
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi2ir.descriptors.IrBuiltInsOverDescriptors
|
import org.jetbrains.kotlin.psi2ir.descriptors.IrBuiltInsOverDescriptors
|
||||||
@@ -319,6 +320,9 @@ private fun getIrBuiltIns(): IrBuiltIns {
|
|||||||
override fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit) {
|
override fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit) {
|
||||||
body()
|
body()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val mangler: KotlinMangler.DescriptorMangler
|
||||||
|
get() = throw UnsupportedOperationException("Mangler is unavailable")
|
||||||
}
|
}
|
||||||
val symbolTable = SymbolTable(signaturer, IrFactoryImpl)
|
val symbolTable = SymbolTable(signaturer, IrFactoryImpl)
|
||||||
val typeTranslator = TypeTranslatorImpl(symbolTable, languageSettings, moduleDescriptor)
|
val typeTranslator = TypeTranslatorImpl(symbolTable, languageSettings, moduleDescriptor)
|
||||||
|
|||||||
+2
-2
@@ -82,9 +82,9 @@ internal fun PhaseContext.fir2Ir(
|
|||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
),
|
),
|
||||||
IrGenerationExtension.getInstances(config.project),
|
IrGenerationExtension.getInstances(config.project),
|
||||||
signatureComposerCreator = null,
|
signatureComposer = DescriptorSignatureComposerStub(KonanManglerDesc),
|
||||||
irMangler = KonanManglerIr,
|
irMangler = KonanManglerIr,
|
||||||
firManglerCreator = { FirNativeKotlinMangler() },
|
firMangler = FirNativeKotlinMangler(),
|
||||||
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
visibilityConverter = Fir2IrVisibilityConverter.Default,
|
||||||
diagnosticReporter = diagnosticsReporter,
|
diagnosticReporter = diagnosticsReporter,
|
||||||
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
kotlinBuiltIns = builtInsModule ?: DefaultBuiltIns.Instance,
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ import org.jetbrains.kotlin.ir.util.IdSignature
|
|||||||
import org.jetbrains.kotlin.ir.util.KotlinMangler
|
import org.jetbrains.kotlin.ir.util.KotlinMangler
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
|
|
||||||
class KonanIdSignaturer(private val mangler: KotlinMangler.DescriptorMangler) : IdSignatureDescriptor(mangler) {
|
class KonanIdSignaturer(mangler: KotlinMangler.DescriptorMangler) : IdSignatureDescriptor(mangler) {
|
||||||
|
|
||||||
override fun createSignatureBuilder(type: SpecialDeclarationType): DescriptorBasedSignatureBuilder =
|
override fun createSignatureBuilder(type: SpecialDeclarationType): DescriptorBasedSignatureBuilder =
|
||||||
KonanDescriptorBasedSignatureBuilder(type)
|
KonanDescriptorBasedSignatureBuilder(type)
|
||||||
@@ -60,4 +60,4 @@ class KonanIdSignaturer(private val mangler: KotlinMangler.DescriptorMangler) :
|
|||||||
markInteropDeclaration(descriptor)
|
markInteropDeclaration(descriptor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user