[FIR] Unity FirCallableDeclaration and FirCallableMemberDeclaration

After removal of all diamonds in FirDeclaration hierarchy
  FirCallableMemberDeclaration was only one inheritor of
  FirCallableDeclaration, so there is no need to keep them both
This commit is contained in:
Dmitriy Novozhilov
2021-07-12 11:11:29 +03:00
committed by teamcityserver
parent adc45fd3dd
commit 51fc2e453f
103 changed files with 403 additions and 516 deletions
@@ -58,7 +58,7 @@ private fun collectDesignationPath(declaration: FirDeclaration): List<FirDeclara
val containingClass = when (declaration) {
is FirCallableDeclaration -> {
if (declaration.symbol.callableId.isLocal) return null
if ((declaration as? FirCallableMemberDeclaration)?.status?.visibility == Visibilities.Local) return null
if ((declaration as? FirCallableDeclaration)?.status?.visibility == Visibilities.Local) return null
when (declaration) {
is FirSimpleFunction, is FirProperty, is FirField, is FirConstructor -> {
val klass = declaration.containingClass() ?: return emptyList()
@@ -115,7 +115,7 @@ internal class FirIdeRenderer private constructor(
return if (classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL
}
val containingFirClass = containingDeclaration as? FirRegularClass ?: return Modality.FINAL
if (this !is FirCallableMemberDeclaration) return Modality.FINAL
if (this !is FirCallableDeclaration) return Modality.FINAL
if (isOverride) {
if (containingFirClass.modality != Modality.FINAL) return Modality.OPEN
}
@@ -126,7 +126,7 @@ internal class FirIdeRenderer private constructor(
}
private fun StringBuilder.renderModalityForCallable(
callable: FirCallableMemberDeclaration,
callable: FirCallableDeclaration,
containingDeclaration: FirDeclaration?
) {
val modality = callable.modality ?: return
@@ -137,7 +137,7 @@ internal class FirIdeRenderer private constructor(
}
}
private fun StringBuilder.renderOverride(callableMember: FirCallableMemberDeclaration) {
private fun StringBuilder.renderOverride(callableMember: FirCallableDeclaration) {
if (RendererModifier.OVERRIDE !in options.modifiers) return
renderModifier(callableMember.isOverride || options.forceRenderingOverrideModifier, "override")
}
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols
import org.jetbrains.kotlin.fir.analysis.checkers.getImplementationStatus
import org.jetbrains.kotlin.fir.analysis.checkers.isVisibleInClass
import org.jetbrains.kotlin.fir.containingClass
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.originalForIntersectionOverrideAttr
import org.jetbrains.kotlin.fir.originalForSubstitutionOverride
@@ -35,7 +35,7 @@ class KtFirOverrideInfoProvider(
require(memberSymbol is KtFirSymbol<*>)
require(classSymbol is KtFirSymbol<*>)
return memberSymbol.firRef.withFir { memberFir ->
if (memberFir !is FirCallableMemberDeclaration) return@withFir false
if (memberFir !is FirCallableDeclaration) return@withFir false
classSymbol.firRef.withFir inner@{ parentClassFir ->
if (parentClassFir !is FirClass) return@inner false
memberFir.isVisibleInClass(parentClassFir)
@@ -47,7 +47,7 @@ class KtFirOverrideInfoProvider(
require(memberSymbol is KtFirSymbol<*>)
require(parentClassSymbol is KtFirSymbol<*>)
return memberSymbol.firRef.withFir { memberFir ->
if (memberFir !is FirCallableMemberDeclaration) return@withFir null
if (memberFir !is FirCallableDeclaration) return@withFir null
parentClassSymbol.firRef.withFir inner@{ parentClassFir ->
if (parentClassFir !is FirClass) return@inner null
memberFir.getImplementationStatus(SessionHolderImpl(firAnalysisSession.rootModuleSession, ScopeSession()), parentClassFir)
@@ -58,7 +58,7 @@ class KtFirOverrideInfoProvider(
override fun getOriginalContainingClassForOverride(symbol: KtCallableSymbol): KtClassOrObjectSymbol? {
require(symbol is KtFirSymbol<*>)
return symbol.firRef.withFir { firDeclaration ->
if (firDeclaration !is FirCallableMemberDeclaration) return@withFir null
if (firDeclaration !is FirCallableDeclaration) return@withFir null
with(analysisSession) {
getOriginalOverriddenSymbol(firDeclaration)?.containingClass()?.classId?.getCorrespondingToplevelClassOrObjectSymbol()
}
@@ -68,7 +68,7 @@ class KtFirOverrideInfoProvider(
override fun getOriginalOverriddenSymbol(symbol: KtCallableSymbol): KtCallableSymbol? {
require(symbol is KtFirSymbol<*>)
return symbol.firRef.withFir { firDeclaration ->
if (firDeclaration !is FirCallableMemberDeclaration) return@withFir null
if (firDeclaration !is FirCallableDeclaration) return@withFir null
with(analysisSession) {
getOriginalOverriddenSymbol(firDeclaration)
?.buildSymbol((analysisSession as KtFirAnalysisSession).firSymbolBuilder) as KtCallableSymbol?
@@ -76,7 +76,7 @@ class KtFirOverrideInfoProvider(
}
}
private fun getOriginalOverriddenSymbol(member: FirCallableMemberDeclaration): FirCallableMemberDeclaration? {
private fun getOriginalOverriddenSymbol(member: FirCallableDeclaration): FirCallableDeclaration? {
val originalForSubstitutionOverride = member.originalForSubstitutionOverride
if (originalForSubstitutionOverride != null) return getOriginalOverriddenSymbol(originalForSubstitutionOverride)
@@ -97,7 +97,7 @@ internal fun FirRefWithValidityCheck<FirCallableDeclaration>.receiverTypeAndAnno
}
}
internal fun FirRefWithValidityCheck<FirCallableMemberDeclaration>.dispatchReceiverTypeAndAnnotations(builder: KtSymbolByFirBuilder) =
internal fun FirRefWithValidityCheck<FirCallableDeclaration>.dispatchReceiverTypeAndAnnotations(builder: KtSymbolByFirBuilder) =
withFir { fir ->
fir.dispatchReceiverType?.let {
builder.typeBuilder.buildKtType(it)
@@ -73,7 +73,7 @@ internal object FirReferenceResolveHelper {
val classLikeDeclaration = ConeClassLikeLookupTagImpl(this).toSymbol(session)?.fir
if (classLikeDeclaration is FirRegularClass) {
if (calleeReference is FirResolvedNamedReference) {
val callee = calleeReference.resolvedSymbol.fir as? FirCallableMemberDeclaration
val callee = calleeReference.resolvedSymbol.fir as? FirCallableDeclaration
// TODO: check callee owner directly?
if (callee !is FirConstructor && callee?.isStatic != true) {
classLikeDeclaration.companionObject?.let { return it.buildSymbol(symbolBuilder) }
@@ -98,9 +98,9 @@ internal object FirReferenceResolveHelper {
syntheticProperty.setter!!.delegate
}
}
else -> symbol.fir as? FirDeclaration
else -> symbol.fir
}
listOfNotNull(fir?.buildSymbol(symbolBuilder))
listOfNotNull(fir.buildSymbol(symbolBuilder))
}
is FirResolvedCallableReference -> {
listOfNotNull(resolvedSymbol.fir.buildSymbol(symbolBuilder))
@@ -112,7 +112,7 @@ internal object FirReferenceResolveHelper {
listOfNotNull((superTypeRef as? FirResolvedTypeRef)?.toTargetSymbol(session, symbolBuilder))
}
is FirErrorNamedReference -> {
getCandidateSymbols().mapNotNull { it.fir.buildSymbol(symbolBuilder) }
getCandidateSymbols().map { it.fir.buildSymbol(symbolBuilder) }
}
else -> emptyList()
}
@@ -300,7 +300,7 @@ internal object FirReferenceResolveHelper {
fir: FirErrorNamedReference,
symbolBuilder: KtSymbolByFirBuilder
): List<KtSymbol> =
getFirSymbolsByErrorNamedReference(fir).mapNotNull { it.fir.buildSymbol(symbolBuilder) }
getFirSymbolsByErrorNamedReference(fir).map { it.fir.buildSymbol(symbolBuilder) }
fun getFirSymbolsByErrorNamedReference(