diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt index fde59da2b13..633f809872d 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/convertToIr.kt @@ -45,6 +45,7 @@ fun FirSession.convertToIr( FirJvmKotlinMangler(this), JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), - irGeneratorExtensions + irGeneratorExtensions, + generateSignatures = false ) } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt index 24d9af3c269..8c5537d4b4f 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt @@ -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( diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt index e2dd1999369..0ce5537098a 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt @@ -43,4 +43,5 @@ interface Fir2IrComponents { val delegatedMemberGenerator: DelegatedMemberGenerator val extensions: Fir2IrExtensions + val generateSignatures: Boolean } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt index cc4133438a2..297bd9a6b60 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt @@ -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 diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt index 35cc4499318..abfd6338c6c 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt @@ -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 + irGenerationExtensions: Collection, + 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 diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt index f3ce762749d..3dc9cfbba17 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt @@ -284,7 +284,8 @@ class IncrementalFirJvmCompilerRunner( extensions, FirJvmKotlinMangler(cycleResult.session), JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), - irGenerationExtensions + irGenerationExtensions, + generateSignatures = false ) performanceManager?.notifyIRTranslationFinished() diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt index 09039ce2518..cccf13d46ed 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt @@ -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 -> diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index 9c5485780ae..0e314e64881 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -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) diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt index d6b3ecb0f4f..d0afe8a42fe 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt @@ -48,6 +48,7 @@ class FirAnalyzerFacade( val irGeneratorExtensions: Collection, val useLightTree: Boolean = false, val enablePluginPhases: Boolean = false, + val generateSignatures: Boolean = false, ) : AbstractFirAnalyzerFacade() { private var firFiles: List? = null private var _scopeSession: ScopeSession? = null @@ -117,7 +118,8 @@ class FirAnalyzerFacade( FirJvmKotlinMangler(session), JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter, Fir2IrJvmSpecialAnnotationSymbolProvider(), - irGeneratorExtensions + irGeneratorExtensions, + generateSignatures ) } }