From ef274ad43b69f5cb836d84a7d41cfae09438cfb7 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Fri, 20 Oct 2017 18:35:16 +0300 Subject: [PATCH] Don't build light classes when usages in Kotlin local scope requested --- .../handlers/KotlinFindMemberUsagesHandler.kt | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt index a9efd06d85f..6d4acebed66 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt @@ -45,6 +45,7 @@ import org.jetbrains.kotlin.idea.search.excludeKotlinSources import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReadWriteAccessDetector import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters +import org.jetbrains.kotlin.idea.search.isOnlyKotlinSearch import org.jetbrains.kotlin.idea.search.usagesSearch.dataClassComponentFunction import org.jetbrains.kotlin.idea.search.usagesSearch.isImportUsage import org.jetbrains.kotlin.idea.util.application.runReadAction @@ -146,16 +147,18 @@ abstract class KotlinFindMemberUsagesHandler addTask { query.forEach(referenceProcessor) } } - // TODO: very bad code!! ReferencesSearch does not work correctly for constructors and annotation parameters - val psiMethodScopeSearch = when { - element is KtNamedFunction || element is KtParameter && element.dataClassComponentFunction() != null -> - options.searchScope.excludeKotlinSources() - else -> options.searchScope - } + if (element is KtElement && !isOnlyKotlinSearch(options.searchScope)) { + // TODO: very bad code!! ReferencesSearch does not work correctly for constructors and annotation parameters + val psiMethodScopeSearch = when { + element is KtNamedFunction || element is KtParameter && element.dataClassComponentFunction() != null -> + options.searchScope.excludeKotlinSources() + else -> options.searchScope + } - for (psiMethod in element.toLightMethods()) { - applyQueryFilters(element, options, MethodReferencesSearch.search(psiMethod, psiMethodScopeSearch, true)).let { query -> - addTask { query.forEach(referenceProcessor) } + for (psiMethod in element.toLightMethods()) { + applyQueryFilters(element, options, MethodReferencesSearch.search(psiMethod, psiMethodScopeSearch, true)).let { query -> + addTask { query.forEach(referenceProcessor) } + } } } }