FIR: Get rid of FirCallableSymbol::isFakeOverride and isIntersectionOverride

This commit is contained in:
Denis Zharkov
2020-10-28 18:42:03 +03:00
parent 36387d97ad
commit 3e37995004
22 changed files with 60 additions and 67 deletions
@@ -6,10 +6,12 @@
package org.jetbrains.kotlin.idea.fir
import org.jetbrains.kotlin.fir.FirSymbolOwner
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
import org.jetbrains.kotlin.fir.isIntersectionOverride
import org.jetbrains.kotlin.fir.isSubstitutionOverride
import org.jetbrains.kotlin.fir.references.FirReference
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
@@ -50,6 +52,6 @@ internal inline fun <reified D> D.unrollFakeOverrides(): D where D : FirDeclarat
private inline val FirBasedSymbol<*>.isFakeOrIntersectionOverride: Boolean
get() {
val origin = (fir as? FirDeclaration)?.origin ?: return false
return origin == FirDeclarationOrigin.SubstitutionOverride || origin == FirDeclarationOrigin.IntersectionOverride
val declaration = fir as? FirCallableDeclaration<*> ?: return false
return declaration.isSubstitutionOverride || declaration.isIntersectionOverride
}
@@ -5,7 +5,8 @@
package org.jetbrains.kotlin.idea.frontend.api.fir.scopes
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.isSubstitutionOverride
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.processClassifiersByName
@@ -65,7 +66,7 @@ internal fun FirScope.getCallableSymbols(callableNames: Collection<Name>, builde
}
processPropertiesByName(name) { firSymbol ->
val symbol = when {
firSymbol is FirPropertySymbol && firSymbol.isFakeOverride -> {
firSymbol is FirPropertySymbol && firSymbol.fir.isSubstitutionOverride -> {
builder.buildVariableSymbol(firSymbol.fir)
}
else -> builder.buildCallableSymbol(firSymbol.fir)
@@ -85,4 +86,4 @@ internal fun FirScope.getClassifierSymbols(classLikeNames: Collection<Name>, bui
}
yieldAll(classifierSymbols)
}
}
}