Fir2Ir: pass Fir2IrExtensions to backend
This commit is contained in:
committed by
Alexander Udalov
parent
3c3c1be543
commit
13d4d60afa
+5
-10
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.cli.jvm.compiler
|
||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatformAnalyzerServices
|
||||
import org.jetbrains.kotlin.asJava.FilteredJvmDiagnostics
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
||||
import org.jetbrains.kotlin.cli.common.CLICompiler
|
||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||
@@ -161,19 +161,15 @@ object FirKotlinToJvmBytecodeCompiler {
|
||||
performanceManager?.notifyGenerationStarted()
|
||||
performanceManager?.notifyIRTranslationStarted()
|
||||
|
||||
val fir2IrResult = firResult.session.convertToIr(
|
||||
firResult.scopeSession, firResult.fir,
|
||||
JvmFir2IrExtensions(moduleConfiguration),
|
||||
irGenerationExtensions
|
||||
)
|
||||
val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration)
|
||||
val fir2IrResult = firResult.session.convertToIr(firResult.scopeSession, firResult.fir, fir2IrExtensions, irGenerationExtensions)
|
||||
|
||||
performanceManager?.notifyIRTranslationFinished()
|
||||
|
||||
val extensions = JvmGeneratorExtensionsImpl(moduleConfiguration)
|
||||
val generationState = runBackend(
|
||||
allSources,
|
||||
fir2IrResult,
|
||||
extensions,
|
||||
fir2IrExtensions,
|
||||
firResult.session,
|
||||
diagnosticsReporter
|
||||
)
|
||||
@@ -316,7 +312,7 @@ object FirKotlinToJvmBytecodeCompiler {
|
||||
private fun CompilationContext.runBackend(
|
||||
ktFiles: List<KtFile>,
|
||||
fir2IrResult: Fir2IrResult,
|
||||
extensions: JvmGeneratorExtensionsImpl,
|
||||
extensions: JvmGeneratorExtensions,
|
||||
session: FirSession,
|
||||
diagnosticsReporter: BaseDiagnosticsCollector
|
||||
): GenerationState {
|
||||
@@ -325,7 +321,6 @@ object FirKotlinToJvmBytecodeCompiler {
|
||||
val codegenFactory = JvmIrCodegenFactory(
|
||||
moduleConfiguration,
|
||||
moduleConfiguration.get(CLIConfigurationKeys.PHASE_CONFIG),
|
||||
jvmGeneratorExtensions = extensions
|
||||
)
|
||||
|
||||
val generationState = GenerationState.Builder(
|
||||
|
||||
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.KtSourceFile
|
||||
import org.jetbrains.kotlin.KtVirtualFileSourceFile
|
||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatformAnalyzerServices
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||
import org.jetbrains.kotlin.cli.common.CommonCompilerPerformanceManager
|
||||
@@ -48,6 +47,7 @@ import org.jetbrains.kotlin.fir.DependencyListForCliModule
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
||||
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||
@@ -185,7 +185,7 @@ fun convertAnalyzedFirToIr(
|
||||
analysisResults: ModuleCompilerAnalyzedOutput,
|
||||
environment: ModuleCompilerEnvironment
|
||||
): ModuleCompilerIrBackendInput {
|
||||
val extensions = JvmGeneratorExtensionsImpl(input.configuration)
|
||||
val extensions = JvmFir2IrExtensions(input.configuration)
|
||||
|
||||
// fir2ir
|
||||
val irGenerationExtensions =
|
||||
@@ -215,7 +215,6 @@ fun generateCodeFromIr(
|
||||
val codegenFactory = JvmIrCodegenFactory(
|
||||
input.configuration,
|
||||
input.configuration.get(CLIConfigurationKeys.PHASE_CONFIG),
|
||||
jvmGeneratorExtensions = input.extensions
|
||||
)
|
||||
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
|
||||
|
||||
|
||||
+2
-4
@@ -6,22 +6,20 @@
|
||||
package org.jetbrains.kotlin.cli.jvm.compiler.pipeline
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceFile
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
import org.jetbrains.kotlin.modules.TargetId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import java.io.File
|
||||
|
||||
// ---
|
||||
|
||||
@@ -55,7 +53,7 @@ data class ModuleCompilerAnalyzedOutput(
|
||||
data class ModuleCompilerIrBackendInput(
|
||||
val targetId: TargetId,
|
||||
val configuration: CompilerConfiguration,
|
||||
val extensions: JvmGeneratorExtensionsImpl,
|
||||
val extensions: JvmFir2IrExtensions,
|
||||
val irModuleFragment: IrModuleFragment,
|
||||
val symbolTable: SymbolTable,
|
||||
val components: Fir2IrComponents,
|
||||
|
||||
+37
-11
@@ -5,10 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.backend.jvm
|
||||
|
||||
import org.jetbrains.kotlin.backend.jvm.CachedFieldsForObjectInstances
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmFileFacadeClass
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmIrTypeSystemContext
|
||||
import org.jetbrains.kotlin.backend.jvm.handleJvmStaticInSingletonObjects
|
||||
import org.jetbrains.kotlin.backend.common.serialization.signature.PublicIdSignatureComputer
|
||||
import org.jetbrains.kotlin.backend.jvm.*
|
||||
import org.jetbrains.kotlin.backend.jvm.serialization.deserializeFromByteArray
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
@@ -17,21 +15,49 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
||||
import org.jetbrains.kotlin.fir.backend.FirIrProvider
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrMemberWithContainerSource
|
||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
import org.jetbrains.kotlin.ir.util.constructors
|
||||
import org.jetbrains.kotlin.ir.util.createParameterDeclarations
|
||||
import org.jetbrains.kotlin.ir.util.createSpecialAnnotationClass
|
||||
import org.jetbrains.kotlin.load.kotlin.FacadeClassSource
|
||||
import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource
|
||||
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||
|
||||
class JvmFir2IrExtensions(configuration: CompilerConfiguration) : Fir2IrExtensions {
|
||||
class JvmFir2IrExtensions(configuration: CompilerConfiguration) : Fir2IrExtensions, JvmGeneratorExtensions {
|
||||
|
||||
// TODO: make these available to backend context
|
||||
private val classNameOverride: MutableMap<IrClass, JvmClassName> = mutableMapOf()
|
||||
private val cachedFields = CachedFieldsForObjectInstances(IrFactoryImpl, configuration.languageVersionSettings)
|
||||
override val classNameOverride: MutableMap<IrClass, JvmClassName> = mutableMapOf()
|
||||
override val cachedFields = CachedFieldsForObjectInstances(IrFactoryImpl, configuration.languageVersionSettings)
|
||||
|
||||
private val kotlinIrInternalPackage =
|
||||
IrExternalPackageFragmentImpl(DescriptorlessExternalPackageFragmentSymbol(), IrBuiltIns.KOTLIN_INTERNAL_IR_FQN)
|
||||
|
||||
private val specialAnnotationConstructors = mutableListOf<IrConstructor>()
|
||||
|
||||
private val rawTypeAnnotationClass =
|
||||
createSpecialAnnotationClass(JvmSymbols.RAW_TYPE_ANNOTATION_FQ_NAME, kotlinIrInternalPackage)
|
||||
|
||||
override val rawTypeAnnotationConstructor: IrConstructor =
|
||||
rawTypeAnnotationClass.constructors.single()
|
||||
|
||||
private fun createSpecialAnnotationClass(fqn: FqName, parent: IrPackageFragment) =
|
||||
IrFactoryImpl.createSpecialAnnotationClass(fqn, parent).apply {
|
||||
specialAnnotationConstructors.add(constructors.single())
|
||||
}
|
||||
|
||||
override fun registerDeclarations(symbolTable: SymbolTable) {
|
||||
val signatureComputer = PublicIdSignatureComputer(JvmIrMangler)
|
||||
specialAnnotationConstructors.forEach { constructor ->
|
||||
symbolTable.declareConstructorWithSignature(signatureComputer.composePublicIdSignature(constructor, false), constructor.symbol)
|
||||
}
|
||||
}
|
||||
|
||||
override val irNeedsDeserialization: Boolean =
|
||||
configuration.get(JVMConfigurationKeys.SERIALIZE_IR, JvmSerializeIrMode.NONE) != JvmSerializeIrMode.NONE
|
||||
|
||||
@@ -460,6 +460,8 @@ class Fir2IrConverter(
|
||||
val callGenerator = CallAndReferenceGenerator(components, fir2irVisitor, conversionScope)
|
||||
components.callGenerator = callGenerator
|
||||
|
||||
fir2IrExtensions.registerDeclarations(symbolTable)
|
||||
|
||||
val irModuleFragment = IrModuleFragmentImpl(moduleDescriptor, irBuiltIns)
|
||||
|
||||
val allFirFiles = buildList {
|
||||
|
||||
@@ -7,12 +7,14 @@ package org.jetbrains.kotlin.fir.backend
|
||||
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrMemberWithContainerSource
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
|
||||
interface Fir2IrExtensions {
|
||||
val irNeedsDeserialization: Boolean
|
||||
|
||||
fun generateOrGetFacadeClass(declaration: IrMemberWithContainerSource, components: Fir2IrComponents): IrClass?
|
||||
fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean
|
||||
fun registerDeclarations(symbolTable: SymbolTable)
|
||||
|
||||
object Default : Fir2IrExtensions {
|
||||
override val irNeedsDeserialization: Boolean
|
||||
@@ -20,5 +22,6 @@ interface Fir2IrExtensions {
|
||||
|
||||
override fun generateOrGetFacadeClass(declaration: IrMemberWithContainerSource, components: Fir2IrComponents): IrClass? = null
|
||||
override fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean = false
|
||||
override fun registerDeclarations(symbolTable: SymbolTable) {}
|
||||
}
|
||||
}
|
||||
+4
-5
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.KtIoFileSourceFile
|
||||
import org.jetbrains.kotlin.KtSourceFile
|
||||
import org.jetbrains.kotlin.KtVirtualFileSourceFile
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl
|
||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
||||
import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS
|
||||
import org.jetbrains.kotlin.build.report.BuildReporter
|
||||
@@ -45,6 +44,7 @@ import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
||||
import org.jetbrains.kotlin.fir.languageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
||||
@@ -267,10 +267,9 @@ class IncrementalFirJvmCompilerRunner(
|
||||
performanceManager?.notifyGenerationStarted()
|
||||
performanceManager?.notifyIRTranslationStarted()
|
||||
|
||||
val extensions = JvmGeneratorExtensionsImpl(configuration)
|
||||
val extensions = JvmFir2IrExtensions(configuration)
|
||||
val irGenerationExtensions =
|
||||
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
||||
val mangler = JvmDescriptorMangler(null)
|
||||
val signaturer = JvmIdSignatureDescriptor(JvmDescriptorMangler(null))
|
||||
val allCommonFirFiles = cycleResult.session.moduleData.dependsOnDependencies
|
||||
.map { it.session }
|
||||
@@ -279,7 +278,7 @@ class IncrementalFirJvmCompilerRunner(
|
||||
|
||||
val (irModuleFragment, symbolTable, components) = Fir2IrConverter.createModuleFragment(
|
||||
cycleResult.session, cycleResult.scopeSession, cycleResult.fir + allCommonFirFiles,
|
||||
cycleResult.session.languageVersionSettings, mangler, signaturer,
|
||||
cycleResult.session.languageVersionSettings, signaturer,
|
||||
extensions, FirJvmKotlinMangler(cycleResult.session), IrFactoryImpl,
|
||||
FirJvmVisibilityConverter,
|
||||
Fir2IrJvmSpecialAnnotationSymbolProvider(),
|
||||
@@ -369,4 +368,4 @@ fun CompilerConfiguration.configureSourceRootsFromSources(
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-13
@@ -17,8 +17,6 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.addConstructor
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
@@ -173,17 +171,8 @@ open class JvmGeneratorExtensionsImpl(
|
||||
private val specialAnnotationConstructors = mutableListOf<IrConstructor>()
|
||||
|
||||
private fun createSpecialAnnotationClass(fqn: FqName, parent: IrPackageFragment) =
|
||||
IrFactoryImpl.buildClass {
|
||||
kind = ClassKind.ANNOTATION_CLASS
|
||||
name = fqn.shortName()
|
||||
}.apply {
|
||||
createImplicitParameterDeclarationWithWrappedDescriptor()
|
||||
this.parent = parent
|
||||
addConstructor {
|
||||
isPrimary = true
|
||||
}.also { constructor ->
|
||||
specialAnnotationConstructors.add(constructor)
|
||||
}
|
||||
IrFactoryImpl.createSpecialAnnotationClass(fqn, parent).apply {
|
||||
specialAnnotationConstructors.add(constructors.single())
|
||||
}
|
||||
|
||||
override fun createCustomSuperConstructorCall(
|
||||
|
||||
+3
-5
@@ -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.serialization.DescriptorByIdSignatureFinderImpl
|
||||
import org.jetbrains.kotlin.backend.jvm.intrinsics.IrIntrinsicMethods
|
||||
import org.jetbrains.kotlin.backend.jvm.ir.getIoFile
|
||||
@@ -64,7 +62,7 @@ open class JvmIrCodegenFactory(
|
||||
val symbolTable: SymbolTable,
|
||||
val phaseConfig: PhaseConfig?,
|
||||
val irProviders: List<IrProvider>,
|
||||
val extensions: JvmGeneratorExtensionsImpl,
|
||||
val extensions: JvmGeneratorExtensions,
|
||||
val backendExtension: JvmBackendExtension,
|
||||
val notifyCodegenStart: () -> Unit
|
||||
) : CodegenFactory.BackendInput
|
||||
@@ -294,11 +292,11 @@ open class JvmIrCodegenFactory(
|
||||
state: GenerationState,
|
||||
irModuleFragment: IrModuleFragment,
|
||||
symbolTable: SymbolTable,
|
||||
extensions: JvmGeneratorExtensionsImpl,
|
||||
extensions: JvmGeneratorExtensions,
|
||||
backendExtension: JvmBackendExtension,
|
||||
notifyCodegenStart: () -> Unit = {}
|
||||
) {
|
||||
val irProviders = configureBuiltInsAndGenerateIrProvidersInFrontendIRMode(irModuleFragment, symbolTable, extensions)
|
||||
val irProviders = configureBuiltInsAndGenerateIrProvidersInFrontendIRMode(irModuleFragment, symbolTable, jvmGeneratorExtensions)
|
||||
generateModule(
|
||||
state,
|
||||
JvmIrBackendInput(irModuleFragment, symbolTable, phaseConfig, irProviders, extensions, backendExtension, notifyCodegenStart)
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.util
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.ir.*
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.addConstructor
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildReceiverParameter
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildTypeParameter
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
@@ -986,6 +987,18 @@ fun IrClass.createImplicitParameterDeclarationWithWrappedDescriptor() {
|
||||
thisReceiver = buildReceiverParameter(this, IrDeclarationOrigin.INSTANCE_RECEIVER, symbol.typeWithParameters(typeParameters))
|
||||
}
|
||||
|
||||
fun IrFactory.createSpecialAnnotationClass(fqn: FqName, parent: IrPackageFragment) =
|
||||
buildClass {
|
||||
kind = ClassKind.ANNOTATION_CLASS
|
||||
name = fqn.shortName()
|
||||
}.apply {
|
||||
createImplicitParameterDeclarationWithWrappedDescriptor()
|
||||
this.parent = parent
|
||||
addConstructor {
|
||||
isPrimary = true
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun isElseBranch(branch: IrBranch) = branch is IrElseBranch || ((branch.condition as? IrConst<Boolean>)?.value == true)
|
||||
|
||||
@@ -1242,4 +1255,4 @@ private fun computeAllOverridden(function: IrSimpleFunction, result: MutableSet<
|
||||
}
|
||||
|
||||
fun IrBuiltIns.getKFunctionType(returnType: IrType, parameterTypes: List<IrType>) =
|
||||
kFunctionN(parameterTypes.size).typeWith(parameterTypes + returnType)
|
||||
kFunctionN(parameterTypes.size).typeWith(parameterTypes + returnType)
|
||||
|
||||
+5
-6
@@ -42,14 +42,12 @@ class Fir2IrResultsConverter(
|
||||
val compilerConfigurationProvider = testServices.compilerConfigurationProvider
|
||||
val configuration = compilerConfigurationProvider.getCompilerConfiguration(module)
|
||||
|
||||
val (irModuleFragment, symbolTable, components) = inputArtifact.firAnalyzerFacade.convertToIr(
|
||||
JvmFir2IrExtensions(configuration)
|
||||
)
|
||||
val fir2IrExtensions = JvmFir2IrExtensions(configuration)
|
||||
val (irModuleFragment, symbolTable, components) = inputArtifact.firAnalyzerFacade.convertToIr(fir2IrExtensions)
|
||||
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
|
||||
|
||||
val extensions = JvmGeneratorExtensionsImpl(configuration)
|
||||
val phaseConfig = configuration.get(CLIConfigurationKeys.PHASE_CONFIG)
|
||||
val codegenFactory = JvmIrCodegenFactory(configuration, phaseConfig, jvmGeneratorExtensions = extensions)
|
||||
val codegenFactory = JvmIrCodegenFactory(configuration, phaseConfig)
|
||||
|
||||
// TODO: handle fir from light tree
|
||||
val ktFiles = inputArtifact.firFiles.values.mapNotNull { it.psi as KtFile? }
|
||||
@@ -73,6 +71,7 @@ class Fir2IrResultsConverter(
|
||||
FirJvmBackendClassResolver(components)
|
||||
).build()
|
||||
|
||||
val extensions = JvmGeneratorExtensionsImpl(configuration)
|
||||
val irProviders = codegenFactory.configureBuiltInsAndGenerateIrProvidersInFrontendIRMode(irModuleFragment, symbolTable, extensions)
|
||||
|
||||
return IrBackendInput.JvmIrBackendInput(
|
||||
@@ -83,7 +82,7 @@ class Fir2IrResultsConverter(
|
||||
symbolTable,
|
||||
phaseConfig,
|
||||
irProviders,
|
||||
extensions,
|
||||
fir2IrExtensions,
|
||||
FirJvmBackendExtension(inputArtifact.session, components),
|
||||
notifyCodegenStart = {},
|
||||
),
|
||||
|
||||
@@ -114,16 +114,13 @@ object GenerationUtils {
|
||||
emptyList(),
|
||||
IrGenerationExtension.getInstances(project)
|
||||
)
|
||||
val (moduleFragment, symbolTable, components) = firAnalyzerFacade.convertToIr(
|
||||
JvmFir2IrExtensions(configuration)
|
||||
)
|
||||
val fir2IrExtensions = JvmFir2IrExtensions(configuration)
|
||||
val (moduleFragment, symbolTable, components) = firAnalyzerFacade.convertToIr(fir2IrExtensions)
|
||||
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
|
||||
|
||||
val extensions = JvmGeneratorExtensionsImpl(configuration)
|
||||
val codegenFactory = JvmIrCodegenFactory(
|
||||
configuration,
|
||||
configuration.get(CLIConfigurationKeys.PHASE_CONFIG),
|
||||
jvmGeneratorExtensions = extensions
|
||||
)
|
||||
|
||||
val generationState = GenerationState.Builder(
|
||||
@@ -137,7 +134,7 @@ object GenerationUtils {
|
||||
generationState.beforeCompile()
|
||||
generationState.oldBEInitTrace(files)
|
||||
codegenFactory.generateModuleInFrontendIRMode(
|
||||
generationState, moduleFragment, symbolTable, extensions, FirJvmBackendExtension(session, components),
|
||||
generationState, moduleFragment, symbolTable, fir2IrExtensions, FirJvmBackendExtension(session, components),
|
||||
) {}
|
||||
|
||||
generationState.factory.done()
|
||||
|
||||
Reference in New Issue
Block a user