FIR2IR: don't create a new symbol table for conversion with dependents

This commit is contained in:
Mikhail Glukhikh
2023-01-11 12:29:52 +01:00
committed by Space Team
parent 52a3ba6aae
commit 6b7a5c9aa0
@@ -449,9 +449,11 @@ class Fir2IrConverter(
kotlinBuiltIns, dependentComponents
)
}
val signatureComposer = FirBasedSignatureComposer(mangler, dependentComposers = dependentComponents.map { it.signatureComposer as FirBasedSignatureComposer })
val wrappedSignaturer = WrappedDescriptorSignatureComposer(signaturer, signatureComposer)
val symbolTable = SymbolTable(wrappedSignaturer, irFactory, dependentTables = dependentComponents.map { it.symbolTable })
val signatureComposer = FirBasedSignatureComposer(
mangler,
dependentComposers = dependentComponents.map { it.signatureComposer as FirBasedSignatureComposer }
)
val symbolTable = createSymbolTable(signaturer, signatureComposer, irFactory, dependentComponents)
return createModuleFragmentWithSymbolTable(
session, scopeSession, firFiles, languageVersionSettings,
fir2IrExtensions, irMangler, irFactory, visibilityConverter,
@@ -477,7 +479,7 @@ class Fir2IrConverter(
): Fir2IrResult {
val signatureComposer = FirBasedSignatureComposer(mangler, dependentComposers = dependentComponents.map { it.signatureComposer as FirBasedSignatureComposer })
val signaturer = DescriptorSignatureComposerStub()
val symbolTable = SymbolTable(signaturer, irFactory, dependentTables = dependentComponents.map { it.symbolTable })
val symbolTable = createSymbolTable(signaturer, signatureComposer, irFactory, dependentComponents)
return createModuleFragmentWithSymbolTable(
session, scopeSession, firFiles, languageVersionSettings,
fir2IrExtensions, irMangler, irFactory, visibilityConverter,
@@ -486,6 +488,18 @@ class Fir2IrConverter(
)
}
private fun createSymbolTable(
signaturer: IdSignatureComposer,
signatureComposer: FirBasedSignatureComposer,
irFactory: IrFactory,
dependentComponents: List<Fir2IrComponents>
): SymbolTable =
dependentComponents.lastOrNull()?.symbolTable ?: SymbolTable(
signaturer = WrappedDescriptorSignatureComposer(signaturer, signatureComposer),
irFactory = irFactory,
dependentTables = dependentComponents.map { it.symbolTable }
)
private fun createModuleFragmentWithSymbolTable(
session: FirSession,
scopeSession: ScopeSession,