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