Avoid looking for light methods if only Kotlin search needed
This commit is contained in:
+14
-8
@@ -16,20 +16,21 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.search.ideaExtensions
|
package org.jetbrains.kotlin.idea.search.ideaExtensions
|
||||||
|
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
|
||||||
import com.intellij.openapi.application.QueryExecutorBase
|
import com.intellij.openapi.application.QueryExecutorBase
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
import com.intellij.openapi.util.Computable
|
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
|
import com.intellij.psi.search.LocalSearchScope
|
||||||
import com.intellij.psi.search.RequestResultProcessor
|
import com.intellij.psi.search.RequestResultProcessor
|
||||||
|
import com.intellij.psi.search.SearchScope
|
||||||
import com.intellij.psi.search.searches.ReferencesSearch
|
import com.intellij.psi.search.searches.ReferencesSearch
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import com.intellij.util.Processor
|
import com.intellij.util.Processor
|
||||||
import org.jetbrains.kotlin.asJava.KotlinLightMethod
|
import org.jetbrains.kotlin.asJava.KotlinLightMethod
|
||||||
import org.jetbrains.kotlin.asJava.LightClassUtil
|
import org.jetbrains.kotlin.asJava.LightClassUtil
|
||||||
import org.jetbrains.kotlin.asJava.namedUnwrappedElement
|
import org.jetbrains.kotlin.asJava.namedUnwrappedElement
|
||||||
import org.jetbrains.kotlin.idea.references.matchesTarget
|
import org.jetbrains.kotlin.idea.JetFileType
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.*
|
import org.jetbrains.kotlin.idea.search.usagesSearch.UsagesSearchLocation
|
||||||
|
import org.jetbrains.kotlin.idea.search.usagesSearch.getSpecialNamesToSearch
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
@@ -66,7 +67,9 @@ public class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, Referenc
|
|||||||
resultProcessor)
|
resultProcessor)
|
||||||
}
|
}
|
||||||
|
|
||||||
searchLightElements(queryParameters, element)
|
if (!(unwrappedElement is JetElement && isOnlyKotlinSearch(queryParameters.getEffectiveSearchScope()))) {
|
||||||
|
searchLightElements(queryParameters, element)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -100,9 +103,9 @@ public class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, Referenc
|
|||||||
}
|
}
|
||||||
is JetProperty -> {
|
is JetProperty -> {
|
||||||
val propertyMethods = runReadAction { LightClassUtil.getLightClassPropertyMethods(element) }
|
val propertyMethods = runReadAction { LightClassUtil.getLightClassPropertyMethods(element) }
|
||||||
searchNamedElement(queryParameters, propertyMethods.getGetter())
|
searchNamedElement(queryParameters, propertyMethods.getGetter())
|
||||||
searchNamedElement(queryParameters, propertyMethods.getSetter())
|
searchNamedElement(queryParameters, propertyMethods.getSetter())
|
||||||
}
|
}
|
||||||
is KotlinLightMethod -> {
|
is KotlinLightMethod -> {
|
||||||
val declaration = element.getOrigin()
|
val declaration = element.getOrigin()
|
||||||
if (declaration is JetProperty || (declaration is JetParameter && declaration.hasValOrVar())) {
|
if (declaration is JetProperty || (declaration is JetParameter && declaration.hasValOrVar())) {
|
||||||
@@ -115,6 +118,9 @@ public class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, Referenc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun isOnlyKotlinSearch(searchScope: SearchScope) =
|
||||||
|
searchScope is LocalSearchScope && searchScope.getScope().all { it.getContainingFile().getFileType() == JetFileType.INSTANCE }
|
||||||
|
|
||||||
private fun searchNamedElement(queryParameters: ReferencesSearch.SearchParameters, element: PsiNamedElement?,
|
private fun searchNamedElement(queryParameters: ReferencesSearch.SearchParameters, element: PsiNamedElement?,
|
||||||
name: String? = element?.getName()) {
|
name: String? = element?.getName()) {
|
||||||
if (name != null && element != null) {
|
if (name != null && element != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user