201: Processors changed for UsageInfo and SliceUsage
This commit is contained in:
+1
-3
@@ -24,8 +24,6 @@ import com.intellij.openapi.actionSystem.DataContext
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiMethod
|
||||
import com.intellij.psi.PsiParameter
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.util.Processor
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinCallableFindUsagesOptions
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesHandlerFactory
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
@@ -75,7 +73,7 @@ class DelegatingFindMemberUsagesHandler(
|
||||
return kotlinHandler.getFindUsagesOptions(dataContext)
|
||||
}
|
||||
|
||||
override fun processElementUsages(element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions): Boolean {
|
||||
override fun processElementUsages(element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions): Boolean {
|
||||
val (handler, handlerOptions) = runReadAction { getHandlerAndOptions(element, options) } ?: return true
|
||||
return handler.processElementUsages(element, processor, handlerOptions!!)
|
||||
}
|
||||
|
||||
+2
-3
@@ -26,7 +26,6 @@ import com.intellij.psi.search.PsiElementProcessor
|
||||
import com.intellij.psi.search.PsiElementProcessorAdapter
|
||||
import com.intellij.psi.search.searches.MethodReferencesSearch
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.util.FilteredQuery
|
||||
import com.intellij.util.Processor
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
@@ -71,12 +70,12 @@ class KotlinFindClassUsagesHandler(
|
||||
)
|
||||
}
|
||||
|
||||
override fun createSearcher(element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions): Searcher {
|
||||
override fun createSearcher(element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions): Searcher {
|
||||
return MySearcher(element, processor, options)
|
||||
}
|
||||
|
||||
private class MySearcher(
|
||||
element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions
|
||||
element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions
|
||||
) : Searcher(element, processor, options) {
|
||||
|
||||
private val kotlinOptions = options as KotlinClassFindUsagesOptions
|
||||
|
||||
+4
-5
@@ -30,6 +30,7 @@ import com.intellij.openapi.progress.ProgressManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.MessageType
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.openapi.wm.ToolWindowId
|
||||
import com.intellij.openapi.wm.ToolWindowManager
|
||||
import com.intellij.psi.PsiElement
|
||||
@@ -37,7 +38,6 @@ import com.intellij.psi.PsiReference
|
||||
import com.intellij.psi.search.SearchScope
|
||||
import com.intellij.psi.search.searches.MethodReferencesSearch
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.util.*
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.asJava.toLightMethods
|
||||
@@ -67,7 +67,6 @@ import org.jetbrains.kotlin.resolve.findOriginalTopMostOverriddenDescriptors
|
||||
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||
import javax.swing.event.HyperlinkEvent
|
||||
import javax.swing.event.HyperlinkListener
|
||||
import com.intellij.openapi.util.Key
|
||||
|
||||
abstract class KotlinFindMemberUsagesHandler<T : KtNamedDeclaration> protected constructor(
|
||||
declaration: T,
|
||||
@@ -120,7 +119,7 @@ abstract class KotlinFindMemberUsagesHandler<T : KtNamedDeclaration> protected c
|
||||
factory: KotlinFindUsagesHandlerFactory
|
||||
) : KotlinFindMemberUsagesHandler<KtNamedDeclaration>(propertyDeclaration, elementsToSearch, factory) {
|
||||
|
||||
override fun processElementUsages(element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions): Boolean {
|
||||
override fun processElementUsages(element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions): Boolean {
|
||||
|
||||
if (ApplicationManager.getApplication().isUnitTestMode ||
|
||||
!isPropertyOfDataClass ||
|
||||
@@ -218,12 +217,12 @@ abstract class KotlinFindMemberUsagesHandler<T : KtNamedDeclaration> protected c
|
||||
}
|
||||
}
|
||||
|
||||
override fun createSearcher(element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions): Searcher {
|
||||
override fun createSearcher(element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions): Searcher {
|
||||
return MySearcher(element, processor, options)
|
||||
}
|
||||
|
||||
private inner class MySearcher(
|
||||
element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions
|
||||
element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions
|
||||
) : Searcher(element, processor, options) {
|
||||
|
||||
private val kotlinOptions = options as KotlinCallableFindUsagesOptions
|
||||
|
||||
@@ -54,7 +54,7 @@ abstract class KotlinFindUsagesHandler<T : PsiElement>(
|
||||
elementsToSearch.toTypedArray()
|
||||
}
|
||||
|
||||
private fun searchTextOccurrences(element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions): Boolean {
|
||||
private fun searchTextOccurrences(element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions): Boolean {
|
||||
if (!options.isSearchForTextOccurrences) return false
|
||||
|
||||
val scope = options.searchScope
|
||||
@@ -70,13 +70,13 @@ abstract class KotlinFindUsagesHandler<T : PsiElement>(
|
||||
return true
|
||||
}
|
||||
|
||||
override fun processElementUsages(element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions): Boolean {
|
||||
override fun processElementUsages(element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions): Boolean {
|
||||
return searchReferences(element, processor, options, forHighlight = false) && searchTextOccurrences(element, processor, options)
|
||||
}
|
||||
|
||||
private fun searchReferences(
|
||||
element: PsiElement,
|
||||
processor: Processor<UsageInfo>,
|
||||
processor: UsageInfoProcessor,
|
||||
options: FindUsagesOptions,
|
||||
forHighlight: Boolean
|
||||
): Boolean {
|
||||
@@ -85,7 +85,7 @@ abstract class KotlinFindUsagesHandler<T : PsiElement>(
|
||||
return searcher.executeTasks()
|
||||
}
|
||||
|
||||
protected abstract fun createSearcher(element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions): Searcher
|
||||
protected abstract fun createSearcher(element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions): Searcher
|
||||
|
||||
override fun findReferencesToHighlight(target: PsiElement, searchScope: SearchScope): Collection<PsiReference> {
|
||||
val results = Collections.synchronizedList(arrayListOf<PsiReference>())
|
||||
@@ -101,7 +101,7 @@ abstract class KotlinFindUsagesHandler<T : PsiElement>(
|
||||
return results
|
||||
}
|
||||
|
||||
protected abstract class Searcher(val element: PsiElement, val processor: Processor<UsageInfo>, val options: FindUsagesOptions) {
|
||||
protected abstract class Searcher(val element: PsiElement, val processor: UsageInfoProcessor, val options: FindUsagesOptions) {
|
||||
private val tasks = ArrayList<() -> Boolean>()
|
||||
|
||||
/**
|
||||
@@ -127,7 +127,7 @@ abstract class KotlinFindUsagesHandler<T : PsiElement>(
|
||||
companion object {
|
||||
val LOG = Logger.getInstance(KotlinFindUsagesHandler::class.java)
|
||||
|
||||
internal fun processUsage(processor: Processor<UsageInfo>, ref: PsiReference): Boolean =
|
||||
internal fun processUsage(processor: UsageInfoProcessor, ref: PsiReference): Boolean =
|
||||
processor.processIfNotNull {
|
||||
when {
|
||||
ref is LightMemberReference -> KotlinReferencePreservingUsageInfo(ref)
|
||||
@@ -136,15 +136,15 @@ abstract class KotlinFindUsagesHandler<T : PsiElement>(
|
||||
}
|
||||
}
|
||||
|
||||
internal fun processUsage(processor: Processor<UsageInfo>, element: PsiElement): Boolean =
|
||||
internal fun processUsage(processor: UsageInfoProcessor, element: PsiElement): Boolean =
|
||||
processor.processIfNotNull { if (element.isValid) UsageInfo(element) else null }
|
||||
|
||||
private fun Processor<UsageInfo>.processIfNotNull(callback: () -> UsageInfo?): Boolean {
|
||||
private fun UsageInfoProcessor.processIfNotNull(callback: () -> UsageInfo?): Boolean {
|
||||
val usageInfo = runReadAction(callback)
|
||||
return if (usageInfo != null) process(usageInfo) else true
|
||||
}
|
||||
|
||||
internal fun createReferenceProcessor(usageInfoProcessor: Processor<UsageInfo>): Processor<PsiReference> {
|
||||
internal fun createReferenceProcessor(usageInfoProcessor: UsageInfoProcessor): Processor<PsiReference> {
|
||||
val uniqueProcessor = CommonProcessors.UniqueProcessor(usageInfoProcessor)
|
||||
|
||||
return Processor { processUsage(uniqueProcessor, it) }
|
||||
|
||||
+1
-3
@@ -21,8 +21,6 @@ import com.intellij.find.findUsages.FindUsagesOptions
|
||||
import com.intellij.openapi.actionSystem.DataContext
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.util.Processor
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesHandlerFactory
|
||||
import org.jetbrains.kotlin.idea.findUsages.dialogs.KotlinTypeParameterFindUsagesDialog
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
@@ -39,7 +37,7 @@ class KotlinTypeParameterFindUsagesHandler(
|
||||
)
|
||||
}
|
||||
|
||||
override fun createSearcher(element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions): Searcher {
|
||||
override fun createSearcher(element: PsiElement, processor: UsageInfoProcessor, options: FindUsagesOptions): Searcher {
|
||||
return object : Searcher(element, processor, options) {
|
||||
override fun buildTaskList(forHighlight: Boolean): Boolean {
|
||||
addTask {
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.findUsages.handlers
|
||||
|
||||
import com.intellij.slicer.SliceUsage
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.util.Processor
|
||||
|
||||
// BUNCH: 193
|
||||
typealias UsageInfoProcessor = Processor<UsageInfo>
|
||||
typealias SliceUsageProcessor = Processor<SliceUsage>
|
||||
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.findUsages.handlers
|
||||
|
||||
import com.intellij.slicer.SliceUsage
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.util.Processor
|
||||
|
||||
// BUNCH: 193
|
||||
typealias UsageInfoProcessor = Processor<in UsageInfo>
|
||||
typealias SliceUsageProcessor = Processor<in SliceUsage>
|
||||
@@ -20,7 +20,7 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.slicer.SliceAnalysisParams
|
||||
import com.intellij.slicer.SliceUsage
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.util.Processor
|
||||
import org.jetbrains.kotlin.idea.findUsages.handlers.SliceUsageProcessor
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
|
||||
open class KotlinSliceUsage : SliceUsage {
|
||||
@@ -57,11 +57,11 @@ open class KotlinSliceUsage : SliceUsage {
|
||||
|
||||
override fun canBeLeaf() = element != null && lambdaLevel == 0
|
||||
|
||||
public override fun processUsagesFlownDownTo(element: PsiElement, uniqueProcessor: Processor<SliceUsage>) {
|
||||
public override fun processUsagesFlownDownTo(element: PsiElement, uniqueProcessor: SliceUsageProcessor) {
|
||||
InflowSlicer(element as? KtExpression ?: return, uniqueProcessor, this).processChildren()
|
||||
}
|
||||
|
||||
public override fun processUsagesFlownFromThe(element: PsiElement, uniqueProcessor: Processor<SliceUsage>) {
|
||||
public override fun processUsagesFlownFromThe(element: PsiElement, uniqueProcessor: SliceUsageProcessor) {
|
||||
OutflowSlicer(element as? KtExpression ?: return, uniqueProcessor, this).processChildren()
|
||||
}
|
||||
}
|
||||
@@ -16,9 +16,7 @@ import com.intellij.psi.search.LocalSearchScope
|
||||
import com.intellij.psi.search.SearchScope
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.slicer.JavaSliceUsage
|
||||
import com.intellij.slicer.SliceUsage
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.util.Processor
|
||||
import org.jetbrains.kotlin.asJava.namedUnwrappedElement
|
||||
import org.jetbrains.kotlin.builtins.functions.FunctionInvokeDescriptor
|
||||
import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
|
||||
@@ -36,6 +34,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.*
|
||||
import org.jetbrains.kotlin.idea.core.isOverridable
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinFunctionFindUsagesOptions
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinPropertyFindUsagesOptions
|
||||
import org.jetbrains.kotlin.idea.findUsages.handlers.SliceUsageProcessor
|
||||
import org.jetbrains.kotlin.idea.findUsages.processAllExactUsages
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinValVar
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.toValVar
|
||||
@@ -122,7 +121,7 @@ private fun KtParameter.canProcess() = !isVarArg
|
||||
|
||||
abstract class Slicer(
|
||||
protected val element: KtExpression,
|
||||
protected val processor: Processor<SliceUsage>,
|
||||
protected val processor: SliceUsageProcessor,
|
||||
protected val parentUsage: KotlinSliceUsage
|
||||
) {
|
||||
protected class PseudocodeCache {
|
||||
@@ -151,7 +150,7 @@ abstract class Slicer(
|
||||
|
||||
class InflowSlicer(
|
||||
element: KtExpression,
|
||||
processor: Processor<SliceUsage>,
|
||||
processor: SliceUsageProcessor,
|
||||
parentUsage: KotlinSliceUsage
|
||||
) : Slicer(element, processor, parentUsage) {
|
||||
private fun PsiElement.processHierarchyDownwardAndPass() {
|
||||
@@ -382,7 +381,7 @@ class InflowSlicer(
|
||||
|
||||
class OutflowSlicer(
|
||||
element: KtExpression,
|
||||
processor: Processor<SliceUsage>,
|
||||
processor: SliceUsageProcessor,
|
||||
parentUsage: KotlinSliceUsage
|
||||
) : Slicer(element, processor, parentUsage) {
|
||||
private fun KtDeclaration.processVariable() {
|
||||
|
||||
Reference in New Issue
Block a user