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,
FirJvmVisibilityConverter,
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.types.FirTypeRef
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.impl.IrExternalPackageFragmentImpl
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.Name
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.utils.addToStdlib.runUnless
class Fir2IrClassifierStorage(
private val components: Fir2IrComponents
@@ -292,14 +292,14 @@ class Fir2IrClassifierStorage(
predefinedOrigin: IrDeclarationOrigin? = null
): IrClass {
val visibility = regularClass.visibility
val modality = if (regularClass.classKind == ClassKind.ENUM_CLASS) {
regularClass.enumClassModality()
} else if (regularClass.classKind == ClassKind.ANNOTATION_CLASS) {
Modality.OPEN
} else {
regularClass.modality ?: Modality.FINAL
val modality = when (regularClass.classKind) {
ClassKind.ENUM_CLASS -> regularClass.enumClassModality()
ClassKind.ANNOTATION_CLASS -> Modality.OPEN
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 ->
declareIrClass(signature) { symbol ->
irFactory.createClass(
@@ -43,4 +43,5 @@ interface Fir2IrComponents {
val delegatedMemberGenerator: DelegatedMemberGenerator
val extensions: Fir2IrExtensions
val generateSignatures: Boolean
}
@@ -25,6 +25,7 @@ class Fir2IrComponentsStorage(
override val irFactory: IrFactory,
override val signatureComposer: FirBasedSignatureComposer,
override val extensions: Fir2IrExtensions,
override val generateSignatures: Boolean
) : Fir2IrComponents {
override lateinit var converter: Fir2IrConverter
@@ -396,7 +396,6 @@ class Fir2IrConverter(
}
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
fun createModuleFragment(
session: FirSession,
scopeSession: ScopeSession,
@@ -409,13 +408,16 @@ class Fir2IrConverter(
irFactory: IrFactory,
visibilityConverter: Fir2IrVisibilityConverter,
specialSymbolProvider: Fir2IrSpecialSymbolProvider,
irGenerationExtensions: Collection<IrGenerationExtension>
irGenerationExtensions: Collection<IrGenerationExtension>,
generateSignatures: Boolean
): Fir2IrResult {
val moduleDescriptor = FirModuleDescriptor(session)
val signatureComposer = FirBasedSignatureComposer(mangler)
val wrappedSignaturer = WrappedDescriptorSignatureComposer(signaturer, signatureComposer)
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)
components.converter = converter
@@ -284,7 +284,8 @@ class IncrementalFirJvmCompilerRunner(
extensions, FirJvmKotlinMangler(cycleResult.session), JvmIrMangler, IrFactoryImpl,
FirJvmVisibilityConverter,
Fir2IrJvmSpecialAnnotationSymbolProvider(),
irGenerationExtensions
irGenerationExtensions,
generateSignatures = false
)
performanceManager?.notifyIRTranslationFinished()
@@ -45,6 +45,7 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
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.model.DirectivesContainer
import org.jetbrains.kotlin.test.model.DependencyRelation
@@ -142,7 +143,8 @@ class FirFrontendFacade(
lightTreeFiles,
IrGenerationExtension.getInstances(project),
lightTreeEnabled,
enablePluginPhases
enablePluginPhases,
generateSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE
)
val firFiles = firAnalyzerFacade.runResolution()
val filesMap = firFiles.mapNotNull { firFile ->
@@ -113,7 +113,8 @@ object GenerationUtils {
configuration.languageVersionSettings,
files,
emptyList(),
IrGenerationExtension.getInstances(project)
IrGenerationExtension.getInstances(project),
generateSignatures = false
)
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
val (moduleFragment, components) = firAnalyzerFacade.convertToIr(fir2IrExtensions)
@@ -48,6 +48,7 @@ class FirAnalyzerFacade(
val irGeneratorExtensions: Collection<IrGenerationExtension>,
val useLightTree: Boolean = false,
val enablePluginPhases: Boolean = false,
val generateSignatures: Boolean = false,
) : AbstractFirAnalyzerFacade() {
private var firFiles: List<FirFile>? = null
private var _scopeSession: ScopeSession? = null
@@ -117,7 +118,8 @@ class FirAnalyzerFacade(
FirJvmKotlinMangler(session), JvmIrMangler, IrFactoryImpl,
FirJvmVisibilityConverter,
Fir2IrJvmSpecialAnnotationSymbolProvider(),
irGeneratorExtensions
irGeneratorExtensions,
generateSignatures
)
}
}