Fir2Ir: introduce Fir2IrExtensions
This allows us to remove DeclarationStubGenerator from Fir2IrConverter, thus reducing dependency on descriptor-based code.
This commit is contained in:
committed by
Alexander Udalov
parent
6bc01f031c
commit
3c3c1be543
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.FirAnalyzerFacade
|
||||
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.createSessionForTests
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||
@@ -113,10 +114,12 @@ object GenerationUtils {
|
||||
emptyList(),
|
||||
IrGenerationExtension.getInstances(project)
|
||||
)
|
||||
val extensions = JvmGeneratorExtensionsImpl(configuration)
|
||||
val (moduleFragment, symbolTable, components) = firAnalyzerFacade.convertToIr(extensions)
|
||||
val (moduleFragment, symbolTable, components) = firAnalyzerFacade.convertToIr(
|
||||
JvmFir2IrExtensions(configuration)
|
||||
)
|
||||
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
|
||||
|
||||
val extensions = JvmGeneratorExtensionsImpl(configuration)
|
||||
val codegenFactory = JvmIrCodegenFactory(
|
||||
configuration,
|
||||
configuration.get(CLIConfigurationKeys.PHASE_CONFIG),
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
|
||||
import org.jetbrains.kotlin.fir.analysis.collectors.FirDiagnosticsCollector
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrResult
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
|
||||
@@ -36,7 +37,7 @@ abstract class AbstractFirAnalyzerFacade {
|
||||
|
||||
abstract fun runResolution(): List<FirFile>
|
||||
|
||||
abstract fun convertToIr(extensions: GeneratorExtensions): Fir2IrResult
|
||||
abstract fun convertToIr(fir2IrExtensions: Fir2IrExtensions): Fir2IrResult
|
||||
}
|
||||
|
||||
class FirAnalyzerFacade(
|
||||
@@ -99,7 +100,7 @@ class FirAnalyzerFacade(
|
||||
return collectedDiagnostics!!
|
||||
}
|
||||
|
||||
override fun convertToIr(extensions: GeneratorExtensions): Fir2IrResult {
|
||||
override fun convertToIr(fir2IrExtensions: Fir2IrExtensions): Fir2IrResult {
|
||||
if (_scopeSession == null) runResolution()
|
||||
val mangler = JvmDescriptorMangler(null)
|
||||
val signaturer = JvmIdSignatureDescriptor(mangler)
|
||||
@@ -111,8 +112,9 @@ class FirAnalyzerFacade(
|
||||
|
||||
return Fir2IrConverter.createModuleFragment(
|
||||
session, _scopeSession!!, firFiles!! + commonFirFiles,
|
||||
languageVersionSettings, mangler, signaturer,
|
||||
extensions, FirJvmKotlinMangler(session), IrFactoryImpl,
|
||||
languageVersionSettings, signaturer,
|
||||
fir2IrExtensions,
|
||||
FirJvmKotlinMangler(session), IrFactoryImpl,
|
||||
FirJvmVisibilityConverter,
|
||||
Fir2IrJvmSpecialAnnotationSymbolProvider(),
|
||||
irGeneratorExtensions
|
||||
|
||||
Reference in New Issue
Block a user