FIR: fix @JvmPackageName

A single `JvmGeneratorExtensions` instance should be passed around.
This commit is contained in:
pyos
2020-11-23 11:54:14 +01:00
committed by teamcityserver
parent 2d4e9af289
commit 20c7c4881d
9 changed files with 15 additions and 14 deletions
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.backend.common.output.OutputFileCollection import org.jetbrains.kotlin.backend.common.output.OutputFileCollection
import org.jetbrains.kotlin.backend.common.output.SimpleOutputFileCollection import org.jetbrains.kotlin.backend.common.output.SimpleOutputFileCollection
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.backend.jvm.jvmPhases import org.jetbrains.kotlin.backend.jvm.jvmPhases
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
@@ -356,7 +357,8 @@ object KotlinToJVMBytecodeCompiler {
performanceManager?.notifyGenerationStarted() performanceManager?.notifyGenerationStarted()
performanceManager?.notifyIRTranslationStarted() performanceManager?.notifyIRTranslationStarted()
val (moduleFragment, symbolTable, sourceManager, components) = firAnalyzerFacade.convertToIr() val extensions = JvmGeneratorExtensions()
val (moduleFragment, symbolTable, sourceManager, components) = firAnalyzerFacade.convertToIr(extensions)
performanceManager?.notifyIRTranslationFinished() performanceManager?.notifyIRTranslationFinished()
@@ -392,7 +394,7 @@ object KotlinToJVMBytecodeCompiler {
performanceManager?.notifyIRGenerationStarted() performanceManager?.notifyIRGenerationStarted()
generationState.beforeCompile() generationState.beforeCompile()
codegenFactory.generateModuleInFrontendIRMode( codegenFactory.generateModuleInFrontendIRMode(
generationState, moduleFragment, symbolTable, sourceManager generationState, moduleFragment, symbolTable, sourceManager, extensions
) { context, irClass, _, serializationBindings, parent -> ) { context, irClass, _, serializationBindings, parent ->
FirMetadataSerializer(session, context, irClass, serializationBindings, parent) FirMetadataSerializer(session, context, irClass, serializationBindings, parent)
} }
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.analysis package org.jetbrains.kotlin.fir.analysis
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.analysis.collectors.FirDiagnosticsCollector import org.jetbrains.kotlin.fir.analysis.collectors.FirDiagnosticsCollector
@@ -25,6 +24,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi2ir.generators.GeneratorExtensions
class FirAnalyzerFacade(val session: FirSession, val languageVersionSettings: LanguageVersionSettings, val ktFiles: List<KtFile>) { class FirAnalyzerFacade(val session: FirSession, val languageVersionSettings: LanguageVersionSettings, val ktFiles: List<KtFile>) {
private var firFiles: List<FirFile>? = null private var firFiles: List<FirFile>? = null
@@ -64,14 +64,14 @@ class FirAnalyzerFacade(val session: FirSession, val languageVersionSettings: La
return collectedDiagnostics!! return collectedDiagnostics!!
} }
fun convertToIr(generateFacades: Boolean = true): Fir2IrResult { fun convertToIr(extensions: GeneratorExtensions): Fir2IrResult {
if (scopeSession == null) runResolution() if (scopeSession == null) runResolution()
val signaturer = IdSignatureDescriptor(JvmManglerDesc()) val signaturer = IdSignatureDescriptor(JvmManglerDesc())
return Fir2IrConverter.createModuleFragment( return Fir2IrConverter.createModuleFragment(
session, scopeSession!!, firFiles!!, session, scopeSession!!, firFiles!!,
languageVersionSettings, signaturer, languageVersionSettings, signaturer,
JvmGeneratorExtensions(generateFacades), FirJvmKotlinMangler(session), IrFactoryImpl, extensions, FirJvmKotlinMangler(session), IrFactoryImpl,
FirJvmVisibilityConverter, FirJvmVisibilityConverter,
Fir2IrJvmSpecialAnnotationSymbolProvider() Fir2IrJvmSpecialAnnotationSymbolProvider()
) )
@@ -9,6 +9,7 @@ import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementFinder import com.intellij.psi.PsiElementFinder
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade
@@ -55,6 +56,6 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() {
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project)) .uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
val session = createSession(myEnvironment, scope) val session = createSession(myEnvironment, scope)
val firAnalyzerFacade = FirAnalyzerFacade(session, myEnvironment.configuration.languageVersionSettings, psiFiles) val firAnalyzerFacade = FirAnalyzerFacade(session, myEnvironment.configuration.languageVersionSettings, psiFiles)
return firAnalyzerFacade.convertToIr(generateFacades = false).irModuleFragment return firAnalyzerFacade.convertToIr(JvmGeneratorExtensions(generateFacades = false)).irModuleFragment
} }
} }
@@ -177,10 +177,10 @@ class JvmIrCodegenFactory(private val phaseConfig: PhaseConfig) : CodegenFactory
irModuleFragment: IrModuleFragment, irModuleFragment: IrModuleFragment,
symbolTable: SymbolTable, symbolTable: SymbolTable,
sourceManager: PsiSourceManager, sourceManager: PsiSourceManager,
serializerFactory: MetadataSerializerFactory, extensions: JvmGeneratorExtensions,
serializerFactory: MetadataSerializerFactory
) { ) {
irModuleFragment.irBuiltins.functionFactory = IrFunctionFactory(irModuleFragment.irBuiltins, symbolTable) irModuleFragment.irBuiltins.functionFactory = IrFunctionFactory(irModuleFragment.irBuiltins, symbolTable)
val extensions = JvmGeneratorExtensions()
val irProviders = generateTypicalIrProviderList( val irProviders = generateTypicalIrProviderList(
irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable, extensions = extensions irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable, extensions = extensions
) )
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: A.kt // FILE: A.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: A.kt // FILE: A.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: A.kt // FILE: A.kt
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.TestsCompiletimeError
import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.backend.jvm.jvmPhases import org.jetbrains.kotlin.backend.jvm.jvmPhases
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
@@ -118,7 +119,8 @@ object GenerationUtils {
// TODO: add running checkers and check that it's safe to compile // TODO: add running checkers and check that it's safe to compile
val firAnalyzerFacade = FirAnalyzerFacade(session, configuration.languageVersionSettings, files) val firAnalyzerFacade = FirAnalyzerFacade(session, configuration.languageVersionSettings, files)
val (moduleFragment, symbolTable, sourceManager, components) = firAnalyzerFacade.convertToIr() val extensions = JvmGeneratorExtensions()
val (moduleFragment, symbolTable, sourceManager, components) = firAnalyzerFacade.convertToIr(extensions)
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
val codegenFactory = JvmIrCodegenFactory(configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases)) val codegenFactory = JvmIrCodegenFactory(configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases))
@@ -140,7 +142,7 @@ object GenerationUtils {
generationState.beforeCompile() generationState.beforeCompile()
codegenFactory.generateModuleInFrontendIRMode( codegenFactory.generateModuleInFrontendIRMode(
generationState, moduleFragment, symbolTable, sourceManager generationState, moduleFragment, symbolTable, sourceManager, extensions
) { context, irClass, _, serializationBindings, parent -> ) { context, irClass, _, serializationBindings, parent ->
FirMetadataSerializer(session, context, irClass, serializationBindings, parent) FirMetadataSerializer(session, context, irClass, serializationBindings, parent)
} }