From d856ae1f35584ca84cd01208c3ff2d3dd19b4815 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 25 Jan 2023 11:46:55 +0200 Subject: [PATCH] [FIR] Move common members in symbols up in the hierarchy --- .../fir/analysis/checkers/FirHelpers.kt | 3 +- .../java/enhancement/SignatureEnhancement.kt | 5 ++- .../fir/symbols/impl/FirClassLikeSymbol.kt | 33 +++++++------------ 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt index 39befc2da89..f2ef910b685 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt @@ -551,8 +551,7 @@ val FirClassLikeSymbol<*>.classKind: ClassKind? val FirBasedSymbol<*>.typeParameterSymbols: List? get() = when (this) { is FirCallableSymbol<*> -> typeParameterSymbols - is FirClassSymbol<*> -> typeParameterSymbols - is FirTypeAliasSymbol -> typeParameterSymbols + is FirClassLikeSymbol<*> -> typeParameterSymbols else -> null } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt index 07d492d3389..f55e1e7f6f2 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt @@ -475,7 +475,7 @@ class FirSignatureEnhancement( ?: FakePureImplementationsProvider.getPurelyImplementedInterface(owner.symbol.classId) ?: return null val superTypeSymbol = session.symbolProvider.getClassLikeSymbolByClassId(purelyImplementedClassId) ?: return null - val superTypeParameterSymbols = superTypeSymbol.typeParameterSymbols ?: return null + val superTypeParameterSymbols = superTypeSymbol.typeParameterSymbols val typeParameters = owner.typeParameters val supertypeParameterCount = superTypeParameterSymbols.size val typeParameterCount = typeParameters.size @@ -495,8 +495,7 @@ class FirSignatureEnhancement( ) } - - private fun enhanceSuperType(type: FirTypeRef): FirTypeRef = + private fun enhanceSuperType(type: FirTypeRef): FirTypeRef = EnhancementSignatureParts( session, typeQualifierResolver, null, isCovariant = false, forceOnlyHeadTypeConstructor = false, AnnotationQualifierApplicabilityType.TYPE_USE, contextQualifiers diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt index 8659dae1eb9..5a89df5eaee 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt @@ -33,6 +33,17 @@ sealed class FirClassLikeSymbol( val rawStatus: FirDeclarationStatus get() = fir.status + val resolvedStatus: FirResolvedDeclarationStatus + get() { + lazyResolveToPhase(FirResolvePhase.STATUS) + return fir.status as FirResolvedDeclarationStatus + } + + val typeParameterSymbols: List + get() { + return fir.typeParameters.map { it.symbol } + } + override fun toString(): String = "${this::class.simpleName} ${classId.asString()}" } @@ -58,19 +69,8 @@ sealed class FirClassSymbol(classId: ClassId) : FirClassLikeSymbol return fir.declarations.map { it.symbol } } - val typeParameterSymbols: List - get() { - return fir.typeParameters.map { it.symbol } - } - val classKind: ClassKind get() = fir.classKind - - val resolvedStatus: FirResolvedDeclarationStatus - get() { - lazyResolveToPhase(FirResolvePhase.STATUS) - return fir.status as FirResolvedDeclarationStatus - } } class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol(classId) { @@ -91,20 +91,9 @@ class FirAnonymousObjectSymbol : FirClassSymbol(ANONYMOUS_CL class FirTypeAliasSymbol(classId: ClassId) : FirClassLikeSymbol(classId) { override fun toLookupTag(): ConeClassLikeLookupTag = ConeClassLikeLookupTagImpl(classId) - val resolvedStatus: FirResolvedDeclarationStatus - get() { - lazyResolveToPhase(FirResolvePhase.STATUS) - return fir.status as FirResolvedDeclarationStatus - } - val resolvedExpandedTypeRef: FirResolvedTypeRef get() { lazyResolveToPhase(FirResolvePhase.SUPER_TYPES) return fir.expandedTypeRef as FirResolvedTypeRef } - - val typeParameterSymbols: List - get() { - return fir.typeParameters.map { it.symbol } - } }