[FIR] Rename toResolvedFunctionSymbol to toResolvedNamedFunctionSymbol

This commit is contained in:
Kirill Rakhman
2023-07-26 13:01:50 +02:00
committed by Space Team
parent 61d2e338a4
commit 487c3e80bb
11 changed files with 18 additions and 19 deletions
@@ -13,14 +13,14 @@ import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirFunctionCallChec
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedArgumentList
import org.jetbrains.kotlin.fir.references.toResolvedFunctionSymbol
import org.jetbrains.kotlin.fir.references.toResolvedNamedFunctionSymbol
object FirSuperCallWithDefaultsChecker : FirFunctionCallChecker() {
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
if (expression.explicitReceiverIsNotSuperReference()) return
val functionSymbol = expression.calleeReference.toResolvedFunctionSymbol() ?: return
val functionSymbol = expression.calleeReference.toResolvedNamedFunctionSymbol() ?: return
if (!functionSymbol.valueParameterSymbols.any { it.hasDefaultValue }) return
val arguments = expression.argumentList as? FirResolvedArgumentList ?: return
if (arguments.arguments.size < functionSymbol.valueParameterSymbols.size) {
@@ -12,13 +12,13 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.FirFunctionCallOrigin
import org.jetbrains.kotlin.fir.expressions.FirOperationNameConventions
import org.jetbrains.kotlin.fir.references.toResolvedFunctionSymbol
import org.jetbrains.kotlin.fir.references.toResolvedNamedFunctionSymbol
import org.jetbrains.kotlin.fir.types.coneType
import org.jetbrains.kotlin.fir.types.isUnit
object FirAssignmentOperatorCallChecker : FirFunctionCallChecker() {
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
val resolvedCalleeSymbol = expression.calleeReference.toResolvedFunctionSymbol() ?: return
val resolvedCalleeSymbol = expression.calleeReference.toResolvedNamedFunctionSymbol() ?: return
val resolvedCalleeName = resolvedCalleeSymbol.name
if (expression.origin != FirFunctionCallOrigin.Operator ||
resolvedCalleeName !in FirOperationNameConventions.ASSIGNMENT_NAMES
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.arguments
import org.jetbrains.kotlin.fir.references.toResolvedFunctionSymbol
import org.jetbrains.kotlin.fir.references.toResolvedNamedFunctionSymbol
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
@@ -23,7 +23,7 @@ object FirDivisionByZeroChecker : FirFunctionCallChecker() {
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
val firstValue = (expression.arguments.singleOrNull() as? FirConstExpression<*>)?.value
if (firstValue != null && (firstValue == 0L || firstValue == 0.0f || firstValue == 0.0)) {
val callableId = (expression.calleeReference.toResolvedFunctionSymbol())?.callableId
val callableId = (expression.calleeReference.toResolvedNamedFunctionSymbol())?.callableId
if (callableId != null && callableId.packageName == defaultPackageName && callableId.callableName == defaultDivName) {
reporter.reportOn(expression.source, FirErrors.DIVISION_BY_ZERO, context)
}
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
import org.jetbrains.kotlin.fir.references.toResolvedFunctionSymbol
import org.jetbrains.kotlin.fir.references.toResolvedNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
@@ -38,7 +38,7 @@ object FirReturnSyntaxAndLabelChecker : FirReturnExpressionChecker() {
if (label?.source?.kind !is KtRealSourceElementKind) {
val functionCall = context.callsOrAssignments.asReversed().find {
it is FirFunctionCall &&
(it.calleeReference.toResolvedFunctionSymbol())?.callableId ==
(it.calleeReference.toResolvedNamedFunctionSymbol())?.callableId ==
FirSuspendCallChecker.KOTLIN_SUSPEND_BUILT_IN_FUNCTION_CALLABLE_ID
}
if (functionCall is FirFunctionCall &&
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.isEnumClass
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.references.toResolvedBaseSymbol
import org.jetbrains.kotlin.fir.references.toResolvedFunctionSymbol
import org.jetbrains.kotlin.fir.references.toResolvedNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
@@ -228,7 +228,7 @@ object FirUninitializedEnumChecker : FirQualifiedAccessExpressionChecker() {
val property = this.fir
if (property.delegate == null || property.delegate !is FirFunctionCall) return null
val delegateCall = property.delegate as FirFunctionCall
val calleeSymbol = delegateCall.calleeReference.toResolvedFunctionSymbol() ?: return null
val calleeSymbol = delegateCall.calleeReference.toResolvedNamedFunctionSymbol() ?: return null
if (calleeSymbol.callableId.asSingleFqName().asString() != "kotlin.lazy") return null
val lazyCallArgument = delegateCall.argumentList.arguments.singleOrNull() as? FirLambdaArgumentExpression ?: return null
return (lazyCallArgument.expression as? FirAnonymousFunctionExpression)?.anonymousFunction
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirQualifiedAccessE
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
import org.jetbrains.kotlin.fir.references.toResolvedFunctionSymbol
import org.jetbrains.kotlin.fir.references.toResolvedNamedFunctionSymbol
import org.jetbrains.kotlin.fir.types.ConeNullability
import org.jetbrains.kotlin.fir.types.classId
import org.jetbrains.kotlin.fir.types.coneType
@@ -33,7 +33,7 @@ object UselessCallOnNotNullChecker : FirQualifiedAccessExpressionChecker() {
}
private fun FirQualifiedAccessExpression.getCallableId(): CallableId? {
return calleeReference.toResolvedFunctionSymbol()?.callableId
return calleeReference.toResolvedNamedFunctionSymbol()?.callableId
}
private fun FirExpression.getPackage(): String {
@@ -432,7 +432,7 @@ class Fir2IrVisitor(
}
val initializer = variable.initializer
val isNextVariable = initializer is FirFunctionCall &&
initializer.calleeReference.toResolvedFunctionSymbol()?.callableId?.isIteratorNext() == true &&
initializer.calleeReference.toResolvedNamedFunctionSymbol()?.callableId?.isIteratorNext() == true &&
variable.source?.isChildOfForLoop == true
val irVariable = declarationStorage.createIrVariable(
variable, conversionScope.parentFromStack(),
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference
import org.jetbrains.kotlin.fir.references.builder.buildResolvedErrorReference
import org.jetbrains.kotlin.fir.resolve.calls.*
import org.jetbrains.kotlin.fir.resolve.dfa.PropertyStability
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.FirAnonymousFunctionReturnExpressionInfo
import org.jetbrains.kotlin.fir.resolve.diagnostics.*
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
@@ -511,7 +510,7 @@ fun FirSafeCallExpression.propagateTypeFromQualifiedAccessAfterNullCheck(
private val FirExpression.isCallToStatementLikeFunction: Boolean
get() {
val symbol = (this as? FirFunctionCall)?.calleeReference?.toResolvedFunctionSymbol() ?: return false
val symbol = (this as? FirFunctionCall)?.calleeReference?.toResolvedNamedFunctionSymbol() ?: return false
return origin == FirFunctionCallOrigin.Operator && symbol.name in OperatorNameConventions.STATEMENT_LIKE_OPERATORS
}
@@ -470,7 +470,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
private fun FirFunctionCall.transformToIntegerOperatorCallOrApproximateItIfNeeded(resolutionMode: ResolutionMode): FirFunctionCall {
if (!explicitReceiver.isIntegerLiteralOrOperatorCall()) return this
val resolvedSymbol = calleeReference.toResolvedFunctionSymbol() ?: return this
val resolvedSymbol = calleeReference.toResolvedNamedFunctionSymbol() ?: return this
if (!resolvedSymbol.isWrappedIntegerOperator()) return this
val arguments = this.argumentList.arguments
@@ -54,7 +54,7 @@ inline val FirCall.dynamicVarargArguments: List<FirExpression>?
get() = dynamicVararg?.arguments
inline val FirFunctionCall.isCalleeDynamic: Boolean
get() = calleeReference.toResolvedFunctionSymbol()?.origin == FirDeclarationOrigin.DynamicScope
get() = calleeReference.toResolvedNamedFunctionSymbol()?.origin == FirDeclarationOrigin.DynamicScope
inline val FirCall.resolvedArgumentMapping: LinkedHashMap<FirExpression, FirValueParameter>?
get() = when (val argumentList = argumentList) {
@@ -178,7 +178,7 @@ val FirQualifiedAccessExpression.allReceiverExpressions: List<FirExpression>
}
inline fun FirFunctionCall.forAllReifiedTypeParameters(block: (ConeKotlinType, FirTypeProjectionWithVariance) -> Unit) {
val functionSymbol = calleeReference.toResolvedFunctionSymbol() ?: return
val functionSymbol = calleeReference.toResolvedNamedFunctionSymbol() ?: return
for ((typeParameterSymbol, typeArgument) in functionSymbol.typeParameterSymbols.zip(typeArguments)) {
if (typeParameterSymbol.isReified && typeArgument is FirTypeProjectionWithVariance) {
@@ -48,7 +48,7 @@ fun FirReference.toResolvedValueParameterSymbol(discardErrorReference: Boolean =
return this.toResolvedSymbol<FirValueParameterSymbol>(discardErrorReference)
}
fun FirReference.toResolvedFunctionSymbol(discardErrorReference: Boolean = false): FirNamedFunctionSymbol? {
fun FirReference.toResolvedNamedFunctionSymbol(discardErrorReference: Boolean = false): FirNamedFunctionSymbol? {
return this.toResolvedSymbol<FirNamedFunctionSymbol>(discardErrorReference)
}