Fir2IrClassifierStorage: don't calculate signature in registerClass
This commit is contained in:
@@ -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
|
||||||
|
|||||||
+2
-1
@@ -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()
|
||||||
|
|||||||
+3
-1
@@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user