[FIR2IR] Move facade classes generation to the main converter
This commit is contained in:
+1
-1
@@ -350,7 +350,7 @@ object KotlinToJVMBytecodeCompiler {
|
||||
Fir2IrConverter.createModuleFragment(
|
||||
session, resolveTransformer.scopeSession, firFiles,
|
||||
moduleConfiguration.languageVersionSettings, signaturer = signaturer,
|
||||
generatorExtensions = JvmGeneratorExtensions(generateFacades = false)
|
||||
generatorExtensions = JvmGeneratorExtensions()
|
||||
)
|
||||
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.descriptors.WrappedDeclarationDescriptor
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi2ir.PsiSourceManager
|
||||
@@ -187,9 +188,11 @@ class Fir2IrConverter(
|
||||
irFiles += converter.registerFileAndClasses(firFile)
|
||||
}
|
||||
val irModuleFragment = IrModuleFragmentImpl(moduleDescriptor, builtIns, irFiles)
|
||||
val irProviders =
|
||||
generateTypicalIrProviderList(irModuleFragment.descriptor, builtIns, symbolTable, extensions = generatorExtensions)
|
||||
val externalDependenciesGenerator = ExternalDependenciesGenerator(
|
||||
symbolTable,
|
||||
generateTypicalIrProviderList(irModuleFragment.descriptor, builtIns, symbolTable, extensions = generatorExtensions),
|
||||
irProviders,
|
||||
languageVersionSettings
|
||||
)
|
||||
// Necessary call to generate built-in IR classes
|
||||
@@ -210,6 +213,12 @@ class Fir2IrConverter(
|
||||
}
|
||||
|
||||
externalDependenciesGenerator.generateUnboundSymbolsAsDependencies()
|
||||
val stubGenerator = irProviders.filterIsInstance<DeclarationStubGenerator>().first()
|
||||
for (descriptor in symbolTable.wrappedTopLevelCallableDescriptors()) {
|
||||
val parentClass = stubGenerator.generateOrGetFacadeClass(descriptor as WrappedDeclarationDescriptor<*>)
|
||||
descriptor.owner.parent = parentClass ?: continue
|
||||
}
|
||||
|
||||
return Fir2IrResult(irModuleFragment, symbolTable, sourceManager, components)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,8 +28,6 @@ import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory
|
||||
import org.jetbrains.kotlin.ir.descriptors.WrappedDeclarationDescriptor
|
||||
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -55,12 +53,6 @@ class JvmIrCodegenFactory(private val phaseConfig: PhaseConfig) : CodegenFactory
|
||||
irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable, extensions = extensions
|
||||
)
|
||||
|
||||
val stubGenerator = irProviders.filterIsInstance<DeclarationStubGenerator>().first()
|
||||
for (descriptor in symbolTable.wrappedTopLevelCallableDescriptors()) {
|
||||
val parentClass = stubGenerator.generateOrGetFacadeClass(descriptor as WrappedDeclarationDescriptor<*>)
|
||||
descriptor.owner.parent = parentClass ?: throw AssertionError("Facade class for ${descriptor.name} not found")
|
||||
}
|
||||
|
||||
JvmBackendFacade.doGenerateFilesInternal(
|
||||
state, irModuleFragment, symbolTable, sourceManager, phaseConfig, irProviders, extensions, createCodegen
|
||||
)
|
||||
|
||||
@@ -146,7 +146,7 @@ object GenerationUtils {
|
||||
configuration.languageVersionSettings,
|
||||
signaturer = IdSignatureDescriptor(JvmManglerDesc()),
|
||||
// TODO: differentiate JVM resolve from other targets, such as JS resolve.
|
||||
generatorExtensions = JvmGeneratorExtensions(generateFacades = false)
|
||||
generatorExtensions = JvmGeneratorExtensions()
|
||||
)
|
||||
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
|
||||
|
||||
|
||||
Reference in New Issue
Block a user