From e71bd4e4a4ef37b3ce1ce0b5dba344564fed1548 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 10 Feb 2020 11:55:05 +0200 Subject: [PATCH] No need to intersect with element's useScope - it's performed by reference search by default --- .../jetbrains/kotlin/idea/slicer/Slicer.kt | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/Slicer.kt b/idea/src/org/jetbrains/kotlin/idea/slicer/Slicer.kt index fd5f7aa5609..27c10680d95 100644 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/Slicer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/slicer/Slicer.kt @@ -71,7 +71,7 @@ abstract class Slicer( val options = KotlinFunctionFindUsagesOptions(project).apply { isSearchForTextOccurrences = false isSkipImportStatements = true - searchScope = scope.intersectWith(function.useScope) + searchScope = scope } val descriptor = function.unsafeResolveToDescriptor() as? CallableMemberDescriptor ?: return @@ -115,6 +115,16 @@ abstract class Slicer( kind: AccessKind, usageProcessor: (UsageInfo) -> Unit ) { + val options = KotlinPropertyFindUsagesOptions(project).apply { + isReadAccess = kind == AccessKind.READ_ONLY || kind == AccessKind.READ_OR_WRITE + isWriteAccess = + kind == AccessKind.WRITE_ONLY || kind == AccessKind.WRITE_WITH_OPTIONAL_READ || kind == AccessKind.READ_OR_WRITE + isReadWriteAccess = kind == AccessKind.WRITE_WITH_OPTIONAL_READ || kind == AccessKind.READ_OR_WRITE + isSearchForTextOccurrences = false + isSkipImportStatements = true + searchScope = scope + } + val allDeclarations = mutableListOf(declaration) val descriptor = declaration.unsafeResolveToDescriptor() if (descriptor is CallableMemberDescriptor) { @@ -123,19 +133,7 @@ abstract class Slicer( } } - for (aDeclaration in allDeclarations) { - aDeclaration.processAllExactUsages( - KotlinPropertyFindUsagesOptions(project).apply { - isReadAccess = kind == AccessKind.READ_ONLY || kind == AccessKind.READ_OR_WRITE - isWriteAccess = kind == AccessKind.WRITE_ONLY || kind == AccessKind.WRITE_WITH_OPTIONAL_READ || kind == AccessKind.READ_OR_WRITE - isReadWriteAccess = kind == AccessKind.WRITE_WITH_OPTIONAL_READ || kind == AccessKind.READ_OR_WRITE - isSearchForTextOccurrences = false - isSkipImportStatements = true - searchScope = scope.intersectWith(aDeclaration.useScope) - }, - usageProcessor - ) - } + allDeclarations.forEach { it.processAllExactUsages(options, usageProcessor) } } protected fun canProcessParameter(parameter: KtParameter) = !parameter.isVarArg