Fir2IrClassifierStorage: don't calculate signature in registerClass
This commit is contained in:
@@ -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
|
||||
|
||||
+2
-1
@@ -284,7 +284,8 @@ class IncrementalFirJvmCompilerRunner(
|
||||
extensions, FirJvmKotlinMangler(cycleResult.session), JvmIrMangler, IrFactoryImpl,
|
||||
FirJvmVisibilityConverter,
|
||||
Fir2IrJvmSpecialAnnotationSymbolProvider(),
|
||||
irGenerationExtensions
|
||||
irGenerationExtensions,
|
||||
generateSignatures = false
|
||||
)
|
||||
|
||||
performanceManager?.notifyIRTranslationFinished()
|
||||
|
||||
+3
-1
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user