[Analysis API, FIR] optimize KtSymbol requests for declaration statuses
resolvedStatus is not needed for the most calls while it may be expensive to compute as it requires running declaration resolve.
This commit is contained in:
+28
-28
@@ -29,20 +29,20 @@ inline val FirCallableSymbol<*>.allowsToHaveFakeOverride: Boolean
|
||||
|
||||
inline val FirCallableSymbol<*>.isActual: Boolean get() = resolvedStatus.isActual
|
||||
inline val FirCallableSymbol<*>.isExpect: Boolean get() = resolvedStatus.isExpect
|
||||
inline val FirCallableSymbol<*>.isInner: Boolean get() = resolvedStatus.isInner
|
||||
inline val FirCallableSymbol<*>.isStatic: Boolean get() = resolvedStatus.isStatic
|
||||
inline val FirCallableSymbol<*>.isOverride: Boolean get() = resolvedStatus.isOverride
|
||||
inline val FirCallableSymbol<*>.isInner: Boolean get() = rawStatus.isInner
|
||||
inline val FirCallableSymbol<*>.isStatic: Boolean get() = rawStatus.isStatic
|
||||
inline val FirCallableSymbol<*>.isOverride: Boolean get() = rawStatus.isOverride
|
||||
inline val FirCallableSymbol<*>.isOperator: Boolean get() = resolvedStatus.isOperator
|
||||
inline val FirCallableSymbol<*>.isInfix: Boolean get() = resolvedStatus.isInfix
|
||||
inline val FirCallableSymbol<*>.isInline: Boolean get() = resolvedStatus.isInline
|
||||
inline val FirCallableSymbol<*>.isTailRec: Boolean get() = resolvedStatus.isTailRec
|
||||
inline val FirCallableSymbol<*>.isExternal: Boolean get() = resolvedStatus.isExternal
|
||||
inline val FirCallableSymbol<*>.isSuspend: Boolean get() = resolvedStatus.isSuspend
|
||||
inline val FirCallableSymbol<*>.isConst: Boolean get() = resolvedStatus.isConst
|
||||
inline val FirCallableSymbol<*>.isLateInit: Boolean get() = resolvedStatus.isLateInit
|
||||
inline val FirCallableSymbol<*>.isFromSealedClass: Boolean get() = resolvedStatus.isFromSealedClass
|
||||
inline val FirCallableSymbol<*>.isFromEnumClass: Boolean get() = resolvedStatus.isFromEnumClass
|
||||
inline val FirCallableSymbol<*>.isFun: Boolean get() = resolvedStatus.isFun
|
||||
inline val FirCallableSymbol<*>.isInline: Boolean get() = rawStatus.isInline
|
||||
inline val FirCallableSymbol<*>.isTailRec: Boolean get() = rawStatus.isTailRec
|
||||
inline val FirCallableSymbol<*>.isExternal: Boolean get() = rawStatus.isExternal
|
||||
inline val FirCallableSymbol<*>.isSuspend: Boolean get() = rawStatus.isSuspend
|
||||
inline val FirCallableSymbol<*>.isConst: Boolean get() = rawStatus.isConst
|
||||
inline val FirCallableSymbol<*>.isLateInit: Boolean get() = rawStatus.isLateInit
|
||||
inline val FirCallableSymbol<*>.isFromSealedClass: Boolean get() = rawStatus.isFromSealedClass
|
||||
inline val FirCallableSymbol<*>.isFromEnumClass: Boolean get() = rawStatus.isFromEnumClass
|
||||
inline val FirCallableSymbol<*>.isFun: Boolean get() = rawStatus.isFun
|
||||
|
||||
// ---------------------- regular with status ----------------------
|
||||
|
||||
@@ -61,15 +61,15 @@ inline val FirClassSymbol<*>.effectiveVisibility: EffectiveVisibility get() = re
|
||||
|
||||
inline val FirClassSymbol<*>.isActual: Boolean get() = resolvedStatus.isActual
|
||||
inline val FirClassSymbol<*>.isExpect: Boolean get() = resolvedStatus.isExpect
|
||||
inline val FirClassSymbol<*>.isInner: Boolean get() = resolvedStatus.isInner
|
||||
inline val FirClassSymbol<*>.isStatic: Boolean get() = resolvedStatus.isStatic
|
||||
inline val FirClassSymbol<*>.isInline: Boolean get() = resolvedStatus.isInline
|
||||
inline val FirClassSymbol<*>.isExternal: Boolean get() = resolvedStatus.isExternal
|
||||
inline val FirClassSymbol<*>.isFromSealedClass: Boolean get() = resolvedStatus.isFromSealedClass
|
||||
inline val FirClassSymbol<*>.isFromEnumClass: Boolean get() = resolvedStatus.isFromEnumClass
|
||||
inline val FirClassSymbol<*>.isFun: Boolean get() = resolvedStatus.isFun
|
||||
inline val FirClassSymbol<*>.isCompanion: Boolean get() = resolvedStatus.isCompanion
|
||||
inline val FirClassSymbol<*>.isData: Boolean get() = resolvedStatus.isData
|
||||
inline val FirClassSymbol<*>.isInner: Boolean get() = rawStatus.isInner
|
||||
inline val FirClassSymbol<*>.isStatic: Boolean get() = rawStatus.isStatic
|
||||
inline val FirClassSymbol<*>.isInline: Boolean get() = rawStatus.isInline
|
||||
inline val FirClassSymbol<*>.isExternal: Boolean get() = rawStatus.isExternal
|
||||
inline val FirClassSymbol<*>.isFromSealedClass: Boolean get() = rawStatus.isFromSealedClass
|
||||
inline val FirClassSymbol<*>.isFromEnumClass: Boolean get() = rawStatus.isFromEnumClass
|
||||
inline val FirClassSymbol<*>.isFun: Boolean get() = rawStatus.isFun
|
||||
inline val FirClassSymbol<*>.isCompanion: Boolean get() = rawStatus.isCompanion
|
||||
inline val FirClassSymbol<*>.isData: Boolean get() = rawStatus.isData
|
||||
inline val FirClassSymbol<*>.isSealed: Boolean get() = resolvedStatus.modality == Modality.SEALED
|
||||
|
||||
inline val FirRegularClassSymbol.canHaveAbstractDeclaration: Boolean
|
||||
@@ -93,13 +93,13 @@ inline val FirTypeAliasSymbol.effectiveVisibility: EffectiveVisibility
|
||||
|
||||
inline val FirTypeAliasSymbol.isActual: Boolean get() = resolvedStatus.isActual
|
||||
inline val FirTypeAliasSymbol.isExpect: Boolean get() = resolvedStatus.isExpect
|
||||
inline val FirTypeAliasSymbol.isInner: Boolean get() = resolvedStatus.isInner
|
||||
inline val FirTypeAliasSymbol.isStatic: Boolean get() = resolvedStatus.isStatic
|
||||
inline val FirTypeAliasSymbol.isInline: Boolean get() = resolvedStatus.isInline
|
||||
inline val FirTypeAliasSymbol.isExternal: Boolean get() = resolvedStatus.isExternal
|
||||
inline val FirTypeAliasSymbol.isFromSealedClass: Boolean get() = resolvedStatus.isFromSealedClass
|
||||
inline val FirTypeAliasSymbol.isFromEnumClass: Boolean get() = resolvedStatus.isFromEnumClass
|
||||
inline val FirTypeAliasSymbol.isFun: Boolean get() = resolvedStatus.isFun
|
||||
inline val FirTypeAliasSymbol.isInner: Boolean get() = rawStatus.isInner
|
||||
inline val FirTypeAliasSymbol.isStatic: Boolean get() = rawStatus.isStatic
|
||||
inline val FirTypeAliasSymbol.isInline: Boolean get() = rawStatus.isInline
|
||||
inline val FirTypeAliasSymbol.isExternal: Boolean get() = rawStatus.isExternal
|
||||
inline val FirTypeAliasSymbol.isFromSealedClass: Boolean get() = rawStatus.isFromSealedClass
|
||||
inline val FirTypeAliasSymbol.isFromEnumClass: Boolean get() = rawStatus.isFromEnumClass
|
||||
inline val FirTypeAliasSymbol.isFun: Boolean get() = rawStatus.isFun
|
||||
|
||||
// ---------------------- common classes ----------------------
|
||||
|
||||
|
||||
@@ -37,6 +37,10 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
|
||||
return fir.status as FirResolvedDeclarationStatus
|
||||
}
|
||||
|
||||
val rawStatus: FirDeclarationStatus
|
||||
get() = fir.status
|
||||
|
||||
|
||||
val typeParameterSymbols: List<FirTypeParameterSymbol>
|
||||
get() {
|
||||
return fir.typeParameters.map { it.symbol }
|
||||
|
||||
@@ -30,6 +30,9 @@ sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration>(
|
||||
return fir.deprecation
|
||||
}
|
||||
|
||||
val rawStatus: FirDeclarationStatus
|
||||
get() = fir.status
|
||||
|
||||
override fun toString(): String = "${this::class.simpleName} ${classId.asString()}"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user