Don't build light classes when usages in Kotlin local scope requested

This commit is contained in:
Nikolay Krasko
2017-10-20 18:35:16 +03:00
parent 189e2506d1
commit ef274ad43b
@@ -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<T : KtNamedDeclaration>
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) }
}
}
}
}