From 2de4a6f924a703827ce62e47e16b980538d87fcb Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 21 Sep 2021 16:34:04 +0200 Subject: [PATCH] Analysis API: fix reference resolving for implicit invoke calls --- .../references/FirReferenceResolveHelper.kt | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/FirReferenceResolveHelper.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/FirReferenceResolveHelper.kt index e6a9d755c72..adbdc49248f 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/FirReferenceResolveHelper.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/FirReferenceResolveHelper.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.analysis.api.fir.getCandidateSymbols -import org.jetbrains.kotlin.analysis.api.fir.isImplicitFunctionCall import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFir import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirSafe import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession @@ -187,7 +186,7 @@ internal object FirReferenceResolveHelper { is FirErrorNamedReference -> getSymbolsByErrorNamedReference(fir, symbolBuilder) is FirVariableAssignment -> getSymbolsByVariableAssignment(fir, session, symbolBuilder) is FirResolvedNamedReference -> getSymbolByResolvedNameReference(fir, expression, analysisSession, session, symbolBuilder) - is FirResolvable -> getSymbolsByResolvable(fir, expression, session, symbolBuilder) + is FirResolvable -> getSymbolsByResolvable(fir, session, symbolBuilder) is FirNamedArgumentExpression -> getSymbolsByNameArgumentExpression(expression, analysisSession, symbolBuilder) else -> handleUnknownFirElement(expression, analysisSession, session, symbolBuilder) } @@ -212,7 +211,7 @@ internal object FirReferenceResolveHelper { if (parentAsCall != null) { val firResolvable = parentAsCall.getOrBuildFirSafe(analysisSession.firResolveState) if (firResolvable != null) { - return getSymbolsByResolvable(firResolvable, expression, session, symbolBuilder) + return getSymbolsByResolvable(firResolvable, session, symbolBuilder) } } return fir.toTargetSymbol(session, symbolBuilder) @@ -285,21 +284,10 @@ internal object FirReferenceResolveHelper { private fun getSymbolsByResolvable( fir: FirResolvable, - expression: KtSimpleNameExpression, session: FirSession, symbolBuilder: KtSymbolByFirBuilder ): Collection { - val calleeReference = - if (fir is FirFunctionCall - && fir.isImplicitFunctionCall() - && expression is KtNameReferenceExpression - ) { - // we are resolving implicit invoke call, like - // fun foo(a: () -> Unit) { - // a() - // } - (fir.dispatchReceiver as FirQualifiedAccessExpression).calleeReference - } else fir.calleeReference + val calleeReference = fir.calleeReference return calleeReference.toTargetSymbol(session, symbolBuilder) }