IR: use IrFactory in SymbolTable

This commit is contained in:
Alexander Udalov
2020-07-13 17:48:07 +02:00
parent c6a127e87e
commit db4cbe7103
23 changed files with 92 additions and 62 deletions
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.backend.evaluate.evaluateConstants
import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator
import org.jetbrains.kotlin.fir.backend.generators.CallAndReferenceGenerator
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
import org.jetbrains.kotlin.fir.backend.evaluate.evaluateConstants
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
import org.jetbrains.kotlin.fir.psi
@@ -199,13 +199,13 @@ class Fir2IrConverter(
scopeSession: ScopeSession,
firFiles: List<FirFile>,
languageVersionSettings: LanguageVersionSettings,
fakeOverrideMode: FakeOverrideMode = FakeOverrideMode.NORMAL,
signaturer: IdSignatureComposer,
generatorExtensions: GeneratorExtensions,
mangler: FirMangler
mangler: FirMangler,
irFactory: IrFactory,
): Fir2IrResult {
val moduleDescriptor = FirModuleDescriptor(session)
val symbolTable = SymbolTable(signaturer)
val symbolTable = SymbolTable(signaturer, irFactory)
val constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable)
val typeTranslator = TypeTranslator(
symbolTable,
@@ -247,7 +247,7 @@ class Fir2IrConverter(
converter.processClassHeaders(firFile)
}
val fakeOverrideGenerator = FakeOverrideGenerator(
session, scopeSession, classifierStorage, declarationStorage, conversionScope, fakeOverrideMode
session, scopeSession, classifierStorage, declarationStorage, conversionScope, FakeOverrideMode.NORMAL
)
components.fakeOverrideGenerator = fakeOverrideGenerator
val fir2irVisitor = Fir2IrVisitor(converter, components, conversionScope)
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
import org.jetbrains.kotlin.ir.AbstractIrTextTestCase
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import java.io.File
abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() {
@@ -87,10 +88,11 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() {
return Fir2IrConverter.createModuleFragment(
session, resolveTransformer.scopeSession, firFiles,
myEnvironment.configuration.languageVersionSettings,
signaturer = signaturer,
signaturer,
// TODO: differentiate JVM resolve from other targets, such as JS resolve.
generatorExtensions = JvmGeneratorExtensions(generateFacades = false),
mangler = FirJvmKotlinMangler(session)
JvmGeneratorExtensions(generateFacades = false),
FirJvmKotlinMangler(session),
IrFactoryImpl,
).irModuleFragment
}
}
}