[AA] Rename originalOverriddenSymbol to unwrapFakeOverrides

- `unwrap` signals that fake overrides will be unwrapped until the
  original symbol is recovered.
- Also remove nullability of the returned `KtCallableSymbol`. If the
  given symbol cannot be unwrapped, it is most likely already the
  original symbol.
- Remove the lazy resolve to `STATUS` in `KtFirOverrideInfoProvider`, as
  it's not needed to unwrap fake overrides.
This commit is contained in:
Marco Pennekamp
2022-11-23 18:38:08 +01:00
committed by teamcity
parent fa4a4e56f3
commit ea346e3e0e
3 changed files with 20 additions and 24 deletions
@@ -63,31 +63,27 @@ internal class KtFirOverrideInfoProvider(
override fun getOriginalContainingClassForOverride(symbol: KtCallableSymbol): KtClassOrObjectSymbol? {
require(symbol is KtFirSymbol<*>)
symbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS)
val firDeclaration = symbol.firSymbol.fir as FirCallableDeclaration
val containingClass =
getOriginalOverriddenSymbol(firDeclaration)?.containingClassLookupTag()?.toSymbol(rootModuleSession) ?: return null
unwrapFakeOverrides(firDeclaration).containingClassLookupTag()?.toSymbol(rootModuleSession) ?: return null
return analysisSession.firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(containingClass.fir.symbol) as? KtClassOrObjectSymbol
}
override fun getOriginalOverriddenSymbol(symbol: KtCallableSymbol): KtCallableSymbol? {
override fun unwrapFakeOverrides(symbol: KtCallableSymbol): KtCallableSymbol {
require(symbol is KtFirSymbol<*>)
symbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS)
val firDeclaration = symbol.firSymbol.fir as FirCallableDeclaration
return getOriginalOverriddenSymbol(firDeclaration)
?.buildSymbol(analysisSession.firSymbolBuilder) as KtCallableSymbol?
return unwrapFakeOverrides(firDeclaration).buildSymbol(analysisSession.firSymbolBuilder) as KtCallableSymbol
}
private fun getOriginalOverriddenSymbol(member: FirCallableDeclaration): FirCallableDeclaration? {
private fun unwrapFakeOverrides(member: FirCallableDeclaration): FirCallableDeclaration {
val originalForSubstitutionOverride = member.originalForSubstitutionOverride
if (originalForSubstitutionOverride != null) return getOriginalOverriddenSymbol(originalForSubstitutionOverride)
if (originalForSubstitutionOverride != null) return unwrapFakeOverrides(originalForSubstitutionOverride)
val originalForIntersectionOverrideAttr = member.originalForIntersectionOverrideAttr
if (originalForIntersectionOverrideAttr != null) return getOriginalOverriddenSymbol(originalForIntersectionOverrideAttr)
if (originalForIntersectionOverrideAttr != null) return unwrapFakeOverrides(originalForIntersectionOverrideAttr)
val delegatedWrapperData = member.delegatedWrapperData
if (delegatedWrapperData != null) return getOriginalOverriddenSymbol(delegatedWrapperData.wrapped)
if (delegatedWrapperData != null) return unwrapFakeOverrides(delegatedWrapperData.wrapped)
return member
}