From ffccef753d2aea428756228be0e2667fcd4b6390 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 9 Nov 2015 16:00:10 +0100 Subject: [PATCH] one more place where we missed the search scope when highlighting usages #KT-8904 Fixed --- .../findUsages/handlers/KotlinFindClassUsagesHandler.kt | 2 +- .../idea/findUsages/handlers/KotlinFindUsagesHandler.kt | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt index 653cc4fbf66..894d364c759 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt @@ -113,7 +113,7 @@ public class KotlinFindClassUsagesHandler( val result = runReadAction { val constructors = classOrObject.toLightClass()?.getConstructors() ?: PsiMethod.EMPTY_ARRAY constructors.filterIsInstance().all { constructor -> - constructor.processDelegationCallConstructorUsages(constructor.getUseScope()) { + constructor.processDelegationCallConstructorUsages(constructor.getUseScope().intersectWith(options.searchScope)) { it.getCalleeExpression()?.mainReference?.let { referenceProcessor.process(it) } ?: false } } diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt index c9c0b7f5872..15ae5448a6c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt @@ -18,9 +18,11 @@ package org.jetbrains.kotlin.idea.findUsages.handlers import com.intellij.find.findUsages.FindUsagesHandler import com.intellij.find.findUsages.FindUsagesOptions +import com.intellij.openapi.diagnostic.Logger import com.intellij.psi.PsiElement import com.intellij.psi.PsiReference import com.intellij.psi.search.GlobalSearchScope +import com.intellij.psi.search.LocalSearchScope import com.intellij.psi.search.SearchScope import com.intellij.usageView.UsageInfo import com.intellij.util.CommonProcessors @@ -74,10 +76,14 @@ public abstract class KotlinFindUsagesHandler(psiElement: T, val results = Collections.synchronizedList(arrayListOf()) val options = getFindUsagesOptions().clone() options.searchScope = searchScope + val scopeContainingFile = (searchScope as? LocalSearchScope)?.scope?.get(0)?.containingFile searchReferences(target, object : Processor { override fun process(info: UsageInfo): Boolean { val reference = info.getReference() if (reference != null) { + if (scopeContainingFile != null && reference.element.containingFile != scopeContainingFile) { + LOG.error("findReferencesToHighight() found a reference from a different file: $reference") + } results.add(reference) } return true @@ -87,6 +93,7 @@ public abstract class KotlinFindUsagesHandler(psiElement: T, } companion object { + val LOG = Logger.getInstance(KotlinFindUsagesHandler::class.java) protected fun processUsage(processor: Processor, ref: PsiReference): Boolean = processor.processIfNotNull { if (ref.element.isValid) KotlinReferenceUsageInfo(ref) else null }