From 5cbc653f005d96f96ed7dd216929832c0f2be9a7 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 26 Apr 2017 13:16:56 +0300 Subject: [PATCH] Avoid 'invoke' reference resolve because of references on the same range When 'text' usages are being search, invoke reference in 'some(text)' is considered relevant. --- .../src/org/jetbrains/kotlin/idea/references/referenceUtil.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt index 25d1ed98ad5..005c2b9ef01 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.types.expressions.OperatorConventions +import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.kotlin.utils.addToStdlib.constant import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull @@ -78,6 +79,9 @@ fun PsiReference.matchesTarget(candidateTarget: PsiElement): Boolean { when (this) { is KtInvokeFunctionReference -> { if (candidateTarget !is KtNamedFunction && candidateTarget !is PsiMethod) return false + if ((candidateTarget as PsiNamedElement).name != OperatorNameConventions.INVOKE.asString()) { + return false + } } is KtDestructuringDeclarationReference -> { if (candidateTarget !is KtNamedFunction && candidateTarget !is KtParameter && candidateTarget !is PsiMethod) return false