Refactoring
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.search.usagesSearch
|
package org.jetbrains.kotlin.idea.search.usagesSearch
|
||||||
|
|
||||||
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.psi.PsiConstructorCall
|
import com.intellij.psi.PsiConstructorCall
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
@@ -111,8 +112,14 @@ private fun KtElement.getConstructorCallDescriptor(): DeclarationDescriptor? {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun PsiElement.processDelegationCallConstructorUsages(scope: SearchScope, process: (KtCallElement) -> Boolean): Boolean {
|
||||||
|
val task = buildProcessDelegationCallConstructorUsagesTask(scope, process)
|
||||||
|
return task()
|
||||||
|
}
|
||||||
|
|
||||||
// should be executed under read-action, returns long-running part to be executed outside read-action
|
// should be executed under read-action, returns long-running part to be executed outside read-action
|
||||||
fun PsiElement.buildProcessDelegationCallConstructorUsagesTask(scope: SearchScope, process: (KtCallElement) -> Boolean): () -> Boolean {
|
fun PsiElement.buildProcessDelegationCallConstructorUsagesTask(scope: SearchScope, process: (KtCallElement) -> Boolean): () -> Boolean {
|
||||||
|
ApplicationManager.getApplication().assertReadAccessAllowed()
|
||||||
val task1 = buildProcessDelegationCallKotlinConstructorUsagesTask(scope, process)
|
val task1 = buildProcessDelegationCallKotlinConstructorUsagesTask(scope, process)
|
||||||
val task2 = buildProcessDelegationCallJavaConstructorUsagesTask(scope, process)
|
val task2 = buildProcessDelegationCallJavaConstructorUsagesTask(scope, process)
|
||||||
return { task1() && task2() }
|
return { task1() && task2() }
|
||||||
|
|||||||
+3
-2
@@ -53,6 +53,7 @@ import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOpt
|
|||||||
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters
|
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters
|
||||||
import org.jetbrains.kotlin.idea.search.restrictToKotlinSources
|
import org.jetbrains.kotlin.idea.search.restrictToKotlinSources
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.buildProcessDelegationCallConstructorUsagesTask
|
import org.jetbrains.kotlin.idea.search.usagesSearch.buildProcessDelegationCallConstructorUsagesTask
|
||||||
|
import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages
|
||||||
import org.jetbrains.kotlin.idea.util.*
|
import org.jetbrains.kotlin.idea.util.*
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
|
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
|
||||||
@@ -311,13 +312,13 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
functionPsi.buildProcessDelegationCallConstructorUsagesTask(functionPsi.useScope) {
|
functionPsi.processDelegationCallConstructorUsages(functionPsi.useScope) {
|
||||||
when (it) {
|
when (it) {
|
||||||
is KtConstructorDelegationCall -> result.add(KotlinConstructorDelegationCallUsage(it, changeInfo))
|
is KtConstructorDelegationCall -> result.add(KotlinConstructorDelegationCallUsage(it, changeInfo))
|
||||||
is KtSuperTypeCallEntry -> result.add(KotlinFunctionCallUsage(it, functionUsageInfo))
|
is KtSuperTypeCallEntry -> result.add(KotlinFunctionCallUsage(it, functionUsageInfo))
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}.invoke()
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processInternalReferences(functionUsageInfo: KotlinCallableDefinitionUsage<*>, visitor: KtTreeVisitor<BindingContext>) {
|
private fun processInternalReferences(functionUsageInfo: KotlinCallableDefinitionUsage<*>, visitor: KtTreeVisitor<BindingContext>) {
|
||||||
|
|||||||
+3
-2
@@ -44,6 +44,7 @@ import org.jetbrains.kotlin.idea.refactoring.formatClass
|
|||||||
import org.jetbrains.kotlin.idea.refactoring.formatFunction
|
import org.jetbrains.kotlin.idea.refactoring.formatFunction
|
||||||
import org.jetbrains.kotlin.idea.references.KtReference
|
import org.jetbrains.kotlin.idea.references.KtReference
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.buildProcessDelegationCallConstructorUsagesTask
|
import org.jetbrains.kotlin.idea.search.usagesSearch.buildProcessDelegationCallConstructorUsagesTask
|
||||||
|
import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
||||||
@@ -179,12 +180,12 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
|
|||||||
else -> return
|
else -> return
|
||||||
}
|
}
|
||||||
for (constructor in constructors) {
|
for (constructor in constructors) {
|
||||||
constructor.buildProcessDelegationCallConstructorUsagesTask(constructor.useScope) {
|
constructor.processDelegationCallConstructorUsages(constructor.useScope) {
|
||||||
if (!getIgnoranceCondition().value(it)) {
|
if (!getIgnoranceCondition().value(it)) {
|
||||||
usages.add(SafeDeleteReferenceSimpleDeleteUsageInfo(it, element, false))
|
usages.add(SafeDeleteReferenceSimpleDeleteUsageInfo(it, element, false))
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}.invoke()
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-4
@@ -20,15 +20,16 @@ import com.intellij.openapi.application.QueryExecutorBase
|
|||||||
import com.intellij.psi.PsiReference
|
import com.intellij.psi.PsiReference
|
||||||
import com.intellij.psi.search.searches.MethodReferencesSearch.SearchParameters
|
import com.intellij.psi.search.searches.MethodReferencesSearch.SearchParameters
|
||||||
import com.intellij.util.Processor
|
import com.intellij.util.Processor
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.buildProcessDelegationCallConstructorUsagesTask
|
import org.jetbrains.kotlin.idea.references.mainReference
|
||||||
|
import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages
|
||||||
|
|
||||||
class KotlinConstructorDelegationCallReferenceSearcher() : QueryExecutorBase<PsiReference, SearchParameters>(true) {
|
class KotlinConstructorDelegationCallReferenceSearcher() : QueryExecutorBase<PsiReference, SearchParameters>(true) {
|
||||||
override fun processQuery(queryParameters: SearchParameters, consumer: Processor<PsiReference>) {
|
override fun processQuery(queryParameters: SearchParameters, consumer: Processor<PsiReference>) {
|
||||||
val method = queryParameters.method
|
val method = queryParameters.method
|
||||||
if (!method.isConstructor) return
|
if (!method.isConstructor) return
|
||||||
|
|
||||||
method.buildProcessDelegationCallConstructorUsagesTask(method.useScope.intersectWith(queryParameters.effectiveSearchScope)) {
|
method.processDelegationCallConstructorUsages(method.useScope.intersectWith(queryParameters.effectiveSearchScope)) {
|
||||||
it.calleeExpression?.reference?.let { consumer.process(it) } ?: true
|
it.calleeExpression?.mainReference?.let { consumer.process(it) } ?: true
|
||||||
}.invoke()
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user