Introduce KtReferenceSearch to use LocalSearchScope, when possible
This fixes a set of problems in J2K tests in 183 #KT-28368 Fixed
This commit is contained in:
@@ -21,13 +21,18 @@ import com.intellij.find.findUsages.FindUsagesOptions
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiReference
|
||||
import com.intellij.psi.impl.light.LightMemberReference
|
||||
import com.intellij.psi.search.LocalSearchScope
|
||||
import com.intellij.psi.search.SearchScope
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.usages.UsageViewManager
|
||||
import com.intellij.util.Query
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.asJava.toLightElements
|
||||
import org.jetbrains.kotlin.idea.references.KtReference
|
||||
import org.jetbrains.kotlin.psi.KtConstructor
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtPsiUtil
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
fun PsiElement.processAllExactUsages(
|
||||
@@ -74,4 +79,15 @@ fun KtDeclaration.processAllUsages(
|
||||
},
|
||||
options
|
||||
)
|
||||
}
|
||||
|
||||
object ReferencesSearchScopeHelper {
|
||||
fun search(declaration: KtDeclaration, defaultScope: SearchScope? = null): Query<PsiReference> {
|
||||
val enclosingElement = KtPsiUtil.getEnclosingElementForLocalDeclaration(declaration)
|
||||
return when {
|
||||
enclosingElement != null -> ReferencesSearch.search(declaration, LocalSearchScope(enclosingElement))
|
||||
defaultScope != null -> ReferencesSearch.search(declaration, defaultScope)
|
||||
else -> ReferencesSearch.search(declaration)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,6 @@ import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiReference
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.util.Processor
|
||||
import com.intellij.util.Query
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
@@ -32,6 +31,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
|
||||
import org.jetbrains.kotlin.idea.core.NewDeclarationNameValidator
|
||||
import org.jetbrains.kotlin.idea.core.isVisible
|
||||
import org.jetbrains.kotlin.idea.findUsages.ReferencesSearchScopeHelper
|
||||
import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
@@ -204,7 +204,7 @@ class DestructureIntention : SelfTargetingRangeIntention<KtDeclaration>(
|
||||
Name.identifier(it), NoLookupLocation.FROM_BUILTINS).single())
|
||||
}
|
||||
|
||||
ReferencesSearch.search(declaration).iterateOverMapEntryPropertiesUsages(
|
||||
ReferencesSearchScopeHelper.search(declaration).iterateOverMapEntryPropertiesUsages(
|
||||
context,
|
||||
{ index, usageData -> noBadUsages = usagesToRemove[index].add(usageData, index) && noBadUsages },
|
||||
{ noBadUsages = false }
|
||||
|
||||
+2
-2
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.refactoring.inline
|
||||
import com.intellij.lang.findUsages.DescriptiveNameUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor
|
||||
import com.intellij.refactoring.RefactoringBundle
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil
|
||||
@@ -28,6 +27,7 @@ import com.intellij.usageView.UsageViewBundle
|
||||
import com.intellij.usageView.UsageViewDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInliner.UsageReplacementStrategy
|
||||
import org.jetbrains.kotlin.idea.codeInliner.replaceUsages
|
||||
import org.jetbrains.kotlin.idea.findUsages.ReferencesSearchScopeHelper
|
||||
import org.jetbrains.kotlin.idea.refactoring.pullUp.deleteWithCompanion
|
||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
@@ -55,7 +55,7 @@ class KotlinInlineCallableProcessor(
|
||||
if (inlineThisOnly && reference != null) return arrayOf(UsageInfo(reference))
|
||||
val usages = runReadAction {
|
||||
val searchScope = GlobalSearchScope.projectScope(myProject)
|
||||
ReferencesSearch.search(declaration, searchScope)
|
||||
ReferencesSearchScopeHelper.search(declaration, searchScope)
|
||||
}
|
||||
return usages.map(::UsageInfo).toTypedArray()
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.wm.WindowManager
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.refactoring.HelpID
|
||||
import com.intellij.refactoring.RefactoringBundle
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil
|
||||
@@ -33,15 +32,13 @@ import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInliner.CodeToInline
|
||||
import org.jetbrains.kotlin.idea.codeInliner.PropertyUsageReplacementStrategy
|
||||
import org.jetbrains.kotlin.idea.findUsages.ReferencesSearchScopeHelper
|
||||
import org.jetbrains.kotlin.idea.project.builtIns
|
||||
import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively
|
||||
import org.jetbrains.kotlin.idea.references.ReferenceAccess
|
||||
import org.jetbrains.kotlin.idea.references.readWriteAccess
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtBinaryExpression
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
import org.jetbrains.kotlin.psi.KtProperty
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getAssignmentByLHS
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelectorOrThis
|
||||
|
||||
@@ -118,7 +115,7 @@ class KotlinInlineValHandler(private val withPrompt: Boolean) : InlineActionHand
|
||||
private data class Usages(val referenceExpressions: Collection<KtExpression>, val conflicts: MultiMap<PsiElement, String>)
|
||||
|
||||
private fun findUsages(declaration: KtProperty): Usages {
|
||||
val references = ReferencesSearch.search(declaration)
|
||||
val references = ReferencesSearchScopeHelper.search(declaration)
|
||||
val referenceExpressions = mutableListOf<KtExpression>()
|
||||
val conflictUsages = MultiMap.create<PsiElement, String>()
|
||||
for (ref in references) {
|
||||
|
||||
Reference in New Issue
Block a user