FIR IDE: use KtVariableWithInvokeFunctionCall for extension invoke
This commit is contained in:
committed by
Ilya Kirillov
parent
c19ed07fd1
commit
9ca8d39240
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
|
||||
fun FirFunctionCall.isImplicitFunctionCall(): Boolean {
|
||||
if (dispatchReceiver !is FirQualifiedAccessExpression) return false
|
||||
if (extensionReceiver !is FirQualifiedAccessExpression && dispatchReceiver !is FirQualifiedAccessExpression) return false
|
||||
return calleeReference.getCandidateSymbols().any(FirBasedSymbol<*>::isInvokeFunction)
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -181,7 +181,8 @@ internal class KtFirCallResolver(
|
||||
return when {
|
||||
firCall.isImplicitFunctionCall() -> {
|
||||
val target = with(FirReferenceResolveHelper) {
|
||||
val calleeReference = (firCall.dispatchReceiver as FirQualifiedAccessExpression).calleeReference
|
||||
val calleeReference = ((firCall.extensionReceiver as? FirQualifiedAccessExpression)
|
||||
?: firCall.dispatchReceiver as FirQualifiedAccessExpression).calleeReference
|
||||
calleeReference.toTargetSymbol(session, firSymbolBuilder).singleOrNull()
|
||||
}
|
||||
when (target) {
|
||||
|
||||
+9
-3
@@ -259,8 +259,14 @@ public class ResolveCallTestGenerated extends AbstractResolveCallTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("variableWithInvoke.kt")
|
||||
public void testVariableWithInvoke() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/analysisSession/resolveCall/variableWithInvoke.kt");
|
||||
@TestMetadata("variableWithExtensionInvoke.kt")
|
||||
public void testVariableWithExtensionInvoke() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/analysisSession/resolveCall/variableWithExtensionInvoke.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("variableWithMemberInvoke.kt")
|
||||
public void testVariableWithMemberInvoke() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/analysisSession/resolveCall/variableWithMemberInvoke.kt");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user