[FIR] Move common members in symbols up in the hierarchy

This commit is contained in:
Dmitriy Novozhilov
2023-01-25 11:46:55 +02:00
committed by Space Team
parent a83caec94f
commit d856ae1f35
3 changed files with 14 additions and 27 deletions
@@ -551,8 +551,7 @@ val FirClassLikeSymbol<*>.classKind: ClassKind?
val FirBasedSymbol<*>.typeParameterSymbols: List<FirTypeParameterSymbol>? val FirBasedSymbol<*>.typeParameterSymbols: List<FirTypeParameterSymbol>?
get() = when (this) { get() = when (this) {
is FirCallableSymbol<*> -> typeParameterSymbols is FirCallableSymbol<*> -> typeParameterSymbols
is FirClassSymbol<*> -> typeParameterSymbols is FirClassLikeSymbol<*> -> typeParameterSymbols
is FirTypeAliasSymbol -> typeParameterSymbols
else -> null else -> null
} }
@@ -475,7 +475,7 @@ class FirSignatureEnhancement(
?: FakePureImplementationsProvider.getPurelyImplementedInterface(owner.symbol.classId) ?: FakePureImplementationsProvider.getPurelyImplementedInterface(owner.symbol.classId)
?: return null ?: return null
val superTypeSymbol = session.symbolProvider.getClassLikeSymbolByClassId(purelyImplementedClassId) ?: 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 typeParameters = owner.typeParameters
val supertypeParameterCount = superTypeParameterSymbols.size val supertypeParameterCount = superTypeParameterSymbols.size
val typeParameterCount = typeParameters.size val typeParameterCount = typeParameters.size
@@ -495,8 +495,7 @@ class FirSignatureEnhancement(
) )
} }
private fun enhanceSuperType(type: FirTypeRef): FirTypeRef =
private fun enhanceSuperType(type: FirTypeRef): FirTypeRef =
EnhancementSignatureParts( EnhancementSignatureParts(
session, typeQualifierResolver, null, isCovariant = false, forceOnlyHeadTypeConstructor = false, session, typeQualifierResolver, null, isCovariant = false, forceOnlyHeadTypeConstructor = false,
AnnotationQualifierApplicabilityType.TYPE_USE, contextQualifiers AnnotationQualifierApplicabilityType.TYPE_USE, contextQualifiers
@@ -33,6 +33,17 @@ sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration>(
val rawStatus: FirDeclarationStatus val rawStatus: FirDeclarationStatus
get() = fir.status get() = fir.status
val resolvedStatus: FirResolvedDeclarationStatus
get() {
lazyResolveToPhase(FirResolvePhase.STATUS)
return fir.status as FirResolvedDeclarationStatus
}
val typeParameterSymbols: List<FirTypeParameterSymbol>
get() {
return fir.typeParameters.map { it.symbol }
}
override fun toString(): String = "${this::class.simpleName} ${classId.asString()}" override fun toString(): String = "${this::class.simpleName} ${classId.asString()}"
} }
@@ -58,19 +69,8 @@ sealed class FirClassSymbol<C : FirClass>(classId: ClassId) : FirClassLikeSymbol
return fir.declarations.map { it.symbol } return fir.declarations.map { it.symbol }
} }
val typeParameterSymbols: List<FirTypeParameterSymbol>
get() {
return fir.typeParameters.map { it.symbol }
}
val classKind: ClassKind val classKind: ClassKind
get() = fir.classKind get() = fir.classKind
val resolvedStatus: FirResolvedDeclarationStatus
get() {
lazyResolveToPhase(FirResolvePhase.STATUS)
return fir.status as FirResolvedDeclarationStatus
}
} }
class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol<FirRegularClass>(classId) { class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol<FirRegularClass>(classId) {
@@ -91,20 +91,9 @@ class FirAnonymousObjectSymbol : FirClassSymbol<FirAnonymousObject>(ANONYMOUS_CL
class FirTypeAliasSymbol(classId: ClassId) : FirClassLikeSymbol<FirTypeAlias>(classId) { class FirTypeAliasSymbol(classId: ClassId) : FirClassLikeSymbol<FirTypeAlias>(classId) {
override fun toLookupTag(): ConeClassLikeLookupTag = ConeClassLikeLookupTagImpl(classId) override fun toLookupTag(): ConeClassLikeLookupTag = ConeClassLikeLookupTagImpl(classId)
val resolvedStatus: FirResolvedDeclarationStatus
get() {
lazyResolveToPhase(FirResolvePhase.STATUS)
return fir.status as FirResolvedDeclarationStatus
}
val resolvedExpandedTypeRef: FirResolvedTypeRef val resolvedExpandedTypeRef: FirResolvedTypeRef
get() { get() {
lazyResolveToPhase(FirResolvePhase.SUPER_TYPES) lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
return fir.expandedTypeRef as FirResolvedTypeRef return fir.expandedTypeRef as FirResolvedTypeRef
} }
val typeParameterSymbols: List<FirTypeParameterSymbol>
get() {
return fir.typeParameters.map { it.symbol }
}
} }