KotlinReferencesSearcher: cleanup after J2K
This commit is contained in:
+25
-33
@@ -26,6 +26,7 @@ import com.intellij.util.Processor
|
|||||||
import org.jetbrains.kotlin.asJava.*
|
import org.jetbrains.kotlin.asJava.*
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.*
|
import org.jetbrains.kotlin.idea.search.usagesSearch.*
|
||||||
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.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
|
||||||
public class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, ReferencesSearch.SearchParameters>() {
|
public class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, ReferencesSearch.SearchParameters>() {
|
||||||
@@ -75,45 +76,36 @@ public class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, Referenc
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun searchLightElements(queryParameters: ReferencesSearch.SearchParameters, element: PsiElement) {
|
private fun searchLightElements(queryParameters: ReferencesSearch.SearchParameters, element: PsiElement) {
|
||||||
if (element is JetClassOrObject) {
|
when (element) {
|
||||||
processJetClassOrObject(element, queryParameters)
|
is JetClassOrObject -> processJetClassOrObject(element, queryParameters)
|
||||||
}
|
is JetNamedFunction, is JetSecondaryConstructor -> {
|
||||||
else if (element is JetNamedFunction || element is JetSecondaryConstructor) {
|
val function = element as JetFunction
|
||||||
val function = element as JetFunction
|
val name = function.getName()
|
||||||
val name = function.getName()
|
if (name != null) {
|
||||||
if (name != null) {
|
val method = runReadAction { LightClassUtil.getLightClassMethod(function) }
|
||||||
val method = ApplicationManager.getApplication().runReadAction<PsiMethod>(object : Computable<PsiMethod?> {
|
searchNamedElement(queryParameters, method)
|
||||||
override fun compute(): PsiMethod? {
|
|
||||||
return LightClassUtil.getLightClassMethod(function)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
searchNamedElement(queryParameters, method)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (element is JetProperty) {
|
|
||||||
val propertyMethods = ApplicationManager.getApplication().runReadAction<LightClassUtil.PropertyAccessorsPsiMethods>(object : Computable<LightClassUtil.PropertyAccessorsPsiMethods> {
|
|
||||||
override fun compute(): LightClassUtil.PropertyAccessorsPsiMethods {
|
|
||||||
return LightClassUtil.getLightClassPropertyMethods(element)
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
searchNamedElement(queryParameters, propertyMethods.getGetter())
|
|
||||||
searchNamedElement(queryParameters, propertyMethods.getSetter())
|
|
||||||
}
|
|
||||||
else if (element is KotlinLightMethod) {
|
|
||||||
val declaration = element.getOrigin()
|
|
||||||
if (declaration is JetProperty || (declaration is JetParameter && declaration.hasValOrVar())) {
|
|
||||||
searchNamedElement(queryParameters, declaration as PsiNamedElement)
|
|
||||||
}
|
}
|
||||||
else if (declaration is JetPropertyAccessor) {
|
is JetProperty -> {
|
||||||
searchNamedElement(queryParameters, PsiTreeUtil.getParentOfType<JetProperty>(declaration, javaClass<JetProperty>()))
|
val propertyMethods = runReadAction { LightClassUtil.getLightClassPropertyMethods(element) }
|
||||||
|
searchNamedElement(queryParameters, propertyMethods.getGetter())
|
||||||
|
searchNamedElement(queryParameters, propertyMethods.getSetter())
|
||||||
|
}
|
||||||
|
is KotlinLightMethod -> {
|
||||||
|
val declaration = element.getOrigin()
|
||||||
|
if (declaration is JetProperty || (declaration is JetParameter && declaration.hasValOrVar())) {
|
||||||
|
searchNamedElement(queryParameters, declaration as PsiNamedElement)
|
||||||
|
}
|
||||||
|
else if (declaration is JetPropertyAccessor) {
|
||||||
|
searchNamedElement(queryParameters, PsiTreeUtil.getParentOfType<JetProperty>(declaration, javaClass<JetProperty>()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
if (name != null && element != null) {
|
||||||
queryParameters.getOptimizer().searchWord(name, queryParameters.getEffectiveSearchScope(), true, element)
|
queryParameters.getOptimizer().searchWord(name, queryParameters.getEffectiveSearchScope(), true, element)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user