Fir2IrClassifierStorage: don't calculate signature in registerClass

This commit is contained in:
Mikhail Glukhikh
2022-06-28 19:01:58 +02:00
committed by Space
parent 24c1380b2e
commit 45eb9238b3
9 changed files with 27 additions and 16 deletions
@@ -45,6 +45,7 @@ fun FirSession.convertToIr(
FirJvmKotlinMangler(this), JvmIrMangler, IrFactoryImpl, FirJvmKotlinMangler(this), JvmIrMangler, IrFactoryImpl,
FirJvmVisibilityConverter, FirJvmVisibilityConverter,
Fir2IrJvmSpecialAnnotationSymbolProvider(), Fir2IrJvmSpecialAnnotationSymbolProvider(),
irGeneratorExtensions irGeneratorExtensions,
generateSignatures = false
) )
} }
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrEnumConstructorCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrEnumConstructorCallImpl
@@ -35,6 +34,7 @@ import org.jetbrains.kotlin.ir.util.constructors
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.utils.addToStdlib.runUnless
class Fir2IrClassifierStorage( class Fir2IrClassifierStorage(
private val components: Fir2IrComponents private val components: Fir2IrComponents
@@ -292,14 +292,14 @@ class Fir2IrClassifierStorage(
predefinedOrigin: IrDeclarationOrigin? = null predefinedOrigin: IrDeclarationOrigin? = null
): IrClass { ): IrClass {
val visibility = regularClass.visibility val visibility = regularClass.visibility
val modality = if (regularClass.classKind == ClassKind.ENUM_CLASS) { val modality = when (regularClass.classKind) {
regularClass.enumClassModality() ClassKind.ENUM_CLASS -> regularClass.enumClassModality()
} else if (regularClass.classKind == ClassKind.ANNOTATION_CLASS) { ClassKind.ANNOTATION_CLASS -> Modality.OPEN
Modality.OPEN else -> regularClass.modality ?: Modality.FINAL
} else { }
regularClass.modality ?: Modality.FINAL val signature = runUnless(regularClass.isLocal || !generateSignatures) {
signatureComposer.composeSignature(regularClass)
} }
val signature = if (regularClass.isLocal) null else signatureComposer.composeSignature(regularClass)
val irClass = regularClass.convertWithOffsets { startOffset, endOffset -> val irClass = regularClass.convertWithOffsets { startOffset, endOffset ->
declareIrClass(signature) { symbol -> declareIrClass(signature) { symbol ->
irFactory.createClass( irFactory.createClass(
@@ -43,4 +43,5 @@ interface Fir2IrComponents {
val delegatedMemberGenerator: DelegatedMemberGenerator val delegatedMemberGenerator: DelegatedMemberGenerator
val extensions: Fir2IrExtensions val extensions: Fir2IrExtensions
val generateSignatures: Boolean
} }
@@ -25,6 +25,7 @@ class Fir2IrComponentsStorage(
override val irFactory: IrFactory, override val irFactory: IrFactory,
override val signatureComposer: FirBasedSignatureComposer, override val signatureComposer: FirBasedSignatureComposer,
override val extensions: Fir2IrExtensions, override val extensions: Fir2IrExtensions,
override val generateSignatures: Boolean
) : Fir2IrComponents { ) : Fir2IrComponents {
override lateinit var converter: Fir2IrConverter override lateinit var converter: Fir2IrConverter
@@ -396,7 +396,6 @@ class Fir2IrConverter(
} }
} }
@OptIn(ObsoleteDescriptorBasedAPI::class)
fun createModuleFragment( fun createModuleFragment(
session: FirSession, session: FirSession,
scopeSession: ScopeSession, scopeSession: ScopeSession,
@@ -409,13 +408,16 @@ class Fir2IrConverter(
irFactory: IrFactory, irFactory: IrFactory,
visibilityConverter: Fir2IrVisibilityConverter, visibilityConverter: Fir2IrVisibilityConverter,
specialSymbolProvider: Fir2IrSpecialSymbolProvider, specialSymbolProvider: Fir2IrSpecialSymbolProvider,
irGenerationExtensions: Collection<IrGenerationExtension> irGenerationExtensions: Collection<IrGenerationExtension>,
generateSignatures: Boolean
): Fir2IrResult { ): Fir2IrResult {
val moduleDescriptor = FirModuleDescriptor(session) val moduleDescriptor = FirModuleDescriptor(session)
val signatureComposer = FirBasedSignatureComposer(mangler) val signatureComposer = FirBasedSignatureComposer(mangler)
val wrappedSignaturer = WrappedDescriptorSignatureComposer(signaturer, signatureComposer) val wrappedSignaturer = WrappedDescriptorSignatureComposer(signaturer, signatureComposer)
val symbolTable = SymbolTable(wrappedSignaturer, irFactory) val symbolTable = SymbolTable(wrappedSignaturer, irFactory)
val components = Fir2IrComponentsStorage(session, scopeSession, symbolTable, irFactory, signatureComposer, fir2IrExtensions) val components = Fir2IrComponentsStorage(
session, scopeSession, symbolTable, irFactory, signatureComposer, fir2IrExtensions, generateSignatures
)
val converter = Fir2IrConverter(moduleDescriptor, components) val converter = Fir2IrConverter(moduleDescriptor, components)
components.converter = converter components.converter = converter
@@ -284,7 +284,8 @@ class IncrementalFirJvmCompilerRunner(
extensions, FirJvmKotlinMangler(cycleResult.session), JvmIrMangler, IrFactoryImpl, extensions, FirJvmKotlinMangler(cycleResult.session), JvmIrMangler, IrFactoryImpl,
FirJvmVisibilityConverter, FirJvmVisibilityConverter,
Fir2IrJvmSpecialAnnotationSymbolProvider(), Fir2IrJvmSpecialAnnotationSymbolProvider(),
irGenerationExtensions irGenerationExtensions,
generateSignatures = false
) )
performanceManager?.notifyIRTranslationFinished() performanceManager?.notifyIRTranslationFinished()
@@ -45,6 +45,7 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
import org.jetbrains.kotlin.resolve.konan.platform.NativePlatformAnalyzerServices import org.jetbrains.kotlin.resolve.konan.platform.NativePlatformAnalyzerServices
import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.model.DependencyRelation import org.jetbrains.kotlin.test.model.DependencyRelation
@@ -142,7 +143,8 @@ class FirFrontendFacade(
lightTreeFiles, lightTreeFiles,
IrGenerationExtension.getInstances(project), IrGenerationExtension.getInstances(project),
lightTreeEnabled, lightTreeEnabled,
enablePluginPhases enablePluginPhases,
generateSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE
) )
val firFiles = firAnalyzerFacade.runResolution() val firFiles = firAnalyzerFacade.runResolution()
val filesMap = firFiles.mapNotNull { firFile -> val filesMap = firFiles.mapNotNull { firFile ->
@@ -113,7 +113,8 @@ object GenerationUtils {
configuration.languageVersionSettings, configuration.languageVersionSettings,
files, files,
emptyList(), emptyList(),
IrGenerationExtension.getInstances(project) IrGenerationExtension.getInstances(project),
generateSignatures = false
) )
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler) val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
val (moduleFragment, components) = firAnalyzerFacade.convertToIr(fir2IrExtensions) val (moduleFragment, components) = firAnalyzerFacade.convertToIr(fir2IrExtensions)
@@ -48,6 +48,7 @@ class FirAnalyzerFacade(
val irGeneratorExtensions: Collection<IrGenerationExtension>, val irGeneratorExtensions: Collection<IrGenerationExtension>,
val useLightTree: Boolean = false, val useLightTree: Boolean = false,
val enablePluginPhases: Boolean = false, val enablePluginPhases: Boolean = false,
val generateSignatures: Boolean = false,
) : AbstractFirAnalyzerFacade() { ) : AbstractFirAnalyzerFacade() {
private var firFiles: List<FirFile>? = null private var firFiles: List<FirFile>? = null
private var _scopeSession: ScopeSession? = null private var _scopeSession: ScopeSession? = null
@@ -117,7 +118,8 @@ class FirAnalyzerFacade(
FirJvmKotlinMangler(session), JvmIrMangler, IrFactoryImpl, FirJvmKotlinMangler(session), JvmIrMangler, IrFactoryImpl,
FirJvmVisibilityConverter, FirJvmVisibilityConverter,
Fir2IrJvmSpecialAnnotationSymbolProvider(), Fir2IrJvmSpecialAnnotationSymbolProvider(),
irGeneratorExtensions irGeneratorExtensions,
generateSignatures
) )
} }
} }