FIR2IR/MPP: use single SymbolTable during MPP compilation

This commit is contained in:
Mikhail Glukhikh
2023-01-11 14:13:58 +01:00
committed by Space Team
parent 33daca6809
commit 890e3d1c10
9 changed files with 58 additions and 23 deletions
@@ -123,7 +123,11 @@ object GenerationUtils {
generateSignatures = false
)
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
val (moduleFragment, components, pluginContext) = firAnalyzerFacade.convertToIr(fir2IrExtensions, dependentComponents = emptyList())
val (moduleFragment, components, pluginContext) = firAnalyzerFacade.convertToIr(
fir2IrExtensions,
dependentComponents = emptyList(),
symbolTable = null
)
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
val codegenFactory = JvmIrCodegenFactory(
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.util.SymbolTable
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.sourceFiles.LightTreeFile
@@ -38,7 +39,11 @@ abstract class AbstractFirAnalyzerFacade {
abstract fun runResolution(): List<FirFile>
abstract fun convertToIr(fir2IrExtensions: Fir2IrExtensions, dependentComponents: List<Fir2IrComponents>): Fir2IrResult
abstract fun convertToIr(
fir2IrExtensions: Fir2IrExtensions,
dependentComponents: List<Fir2IrComponents>,
symbolTable: SymbolTable?
): Fir2IrResult
}
class FirAnalyzerFacade(
@@ -87,7 +92,6 @@ class FirAnalyzerFacade(
return firFiles!!
}
@OptIn(ExperimentalStdlibApi::class)
override fun runCheckers(): Map<FirFile, List<KtDiagnostic>> {
if (_scopeSession == null) runResolution()
if (collectedDiagnostics != null) return collectedDiagnostics!!
@@ -104,7 +108,11 @@ class FirAnalyzerFacade(
return collectedDiagnostics!!
}
override fun convertToIr(fir2IrExtensions: Fir2IrExtensions, dependentComponents: List<Fir2IrComponents>): Fir2IrResult {
override fun convertToIr(
fir2IrExtensions: Fir2IrExtensions,
dependentComponents: List<Fir2IrComponents>,
symbolTable: SymbolTable?
): Fir2IrResult {
if (_scopeSession == null) runResolution()
val mangler = JvmDescriptorMangler(null)
val signaturer = JvmIdSignatureDescriptor(mangler)
@@ -119,7 +127,8 @@ class FirAnalyzerFacade(
irGeneratorExtensions,
generateSignatures,
kotlinBuiltIns = DefaultBuiltIns.Instance, // TODO: consider passing externally,
dependentComponents = dependentComponents
dependentComponents = dependentComponents,
currentSymbolTable = symbolTable
)
}
}