Minor: Use MultiMap
This commit is contained in:
+13
-14
@@ -31,6 +31,7 @@ import com.intellij.refactoring.listeners.RefactoringEventListener
|
|||||||
import com.intellij.usageView.BaseUsageViewDescriptor
|
import com.intellij.usageView.BaseUsageViewDescriptor
|
||||||
import com.intellij.usageView.UsageInfo
|
import com.intellij.usageView.UsageInfo
|
||||||
import com.intellij.usageView.UsageViewDescriptor
|
import com.intellij.usageView.UsageViewDescriptor
|
||||||
|
import com.intellij.util.containers.MultiMap
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
||||||
@@ -73,7 +74,7 @@ public data class IntroduceParameterDescriptor(
|
|||||||
val newParameterTypeText: String,
|
val newParameterTypeText: String,
|
||||||
val newArgumentValue: JetExpression,
|
val newArgumentValue: JetExpression,
|
||||||
val withDefaultValue: Boolean,
|
val withDefaultValue: Boolean,
|
||||||
val parametersUsages: Map<JetElement, List<JetElement>>,
|
val parametersUsages: MultiMap<JetElement, JetElement>,
|
||||||
val occurrencesToReplace: List<JetPsiRange>,
|
val occurrencesToReplace: List<JetPsiRange>,
|
||||||
val parametersToRemove: List<JetElement> = getParametersToRemove(withDefaultValue, parametersUsages, occurrencesToReplace),
|
val parametersToRemove: List<JetElement> = getParametersToRemove(withDefaultValue, parametersUsages, occurrencesToReplace),
|
||||||
val occurrenceReplacer: IntroduceParameterDescriptor.(JetPsiRange) -> Unit = {}
|
val occurrenceReplacer: IntroduceParameterDescriptor.(JetPsiRange) -> Unit = {}
|
||||||
@@ -106,7 +107,7 @@ public data class IntroduceParameterDescriptor(
|
|||||||
|
|
||||||
fun getParametersToRemove(
|
fun getParametersToRemove(
|
||||||
withDefaultValue: Boolean,
|
withDefaultValue: Boolean,
|
||||||
parametersUsages: Map<JetElement, List<JetElement>>,
|
parametersUsages: MultiMap<JetElement, JetElement>,
|
||||||
occurrencesToReplace: List<JetPsiRange>
|
occurrencesToReplace: List<JetPsiRange>
|
||||||
): List<JetElement> {
|
): List<JetElement> {
|
||||||
if (withDefaultValue) return Collections.emptyList()
|
if (withDefaultValue) return Collections.emptyList()
|
||||||
@@ -341,27 +342,28 @@ public open class KotlinIntroduceParameterHandler(
|
|||||||
private fun findInternalUsagesOfParametersAndReceiver(
|
private fun findInternalUsagesOfParametersAndReceiver(
|
||||||
targetParent: JetNamedDeclaration,
|
targetParent: JetNamedDeclaration,
|
||||||
targetDescriptor: FunctionDescriptor
|
targetDescriptor: FunctionDescriptor
|
||||||
): Map<JetElement, List<JetElement>> {
|
): MultiMap<JetElement, JetElement> {
|
||||||
val usages = ArrayList<Pair<JetElement, List<JetElement>>>()
|
val usages = MultiMap<JetElement, JetElement>()
|
||||||
targetParent.getValueParameters()
|
targetParent.getValueParameters()
|
||||||
.filter { !it.hasValOrVar() }
|
.filter { !it.hasValOrVar() }
|
||||||
.map {
|
.forEach {
|
||||||
it to DefaultSearchHelper<JetParameter>()
|
val paramUsages = DefaultSearchHelper<JetParameter>()
|
||||||
.newRequest(UsagesSearchTarget(element = it))
|
.newRequest(UsagesSearchTarget(element = it))
|
||||||
.search()
|
.search()
|
||||||
.map { it.getElement() as JetElement }
|
.map { it.getElement() as JetElement }
|
||||||
|
if (paramUsages.isNotEmpty()) {
|
||||||
|
usages.put(it, paramUsages)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.filterTo(usages) { it.second.isNotEmpty() }
|
|
||||||
val receiverTypeRef = (targetParent as? JetFunction)?.getReceiverTypeReference()
|
val receiverTypeRef = (targetParent as? JetFunction)?.getReceiverTypeReference()
|
||||||
if (receiverTypeRef != null) {
|
if (receiverTypeRef != null) {
|
||||||
val receiverUsages = ArrayList<JetElement>()
|
|
||||||
targetParent.acceptChildren(
|
targetParent.acceptChildren(
|
||||||
object : JetTreeVisitorVoid() {
|
object : JetTreeVisitorVoid() {
|
||||||
override fun visitThisExpression(expression: JetThisExpression) {
|
override fun visitThisExpression(expression: JetThisExpression) {
|
||||||
super.visitThisExpression(expression)
|
super.visitThisExpression(expression)
|
||||||
|
|
||||||
if (expression.getInstanceReference().getReference()?.resolve() == targetDescriptor) {
|
if (expression.getInstanceReference().getReference()?.resolve() == targetDescriptor) {
|
||||||
receiverUsages.add(expression)
|
usages.putValue(receiverTypeRef, expression)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,16 +375,13 @@ private fun findInternalUsagesOfParametersAndReceiver(
|
|||||||
|
|
||||||
if ((resolvedCall.getExtensionReceiver() as? ThisReceiver)?.getDeclarationDescriptor() == targetDescriptor ||
|
if ((resolvedCall.getExtensionReceiver() as? ThisReceiver)?.getDeclarationDescriptor() == targetDescriptor ||
|
||||||
(resolvedCall.getDispatchReceiver() as? ThisReceiver)?.getDeclarationDescriptor() == targetDescriptor) {
|
(resolvedCall.getDispatchReceiver() as? ThisReceiver)?.getDeclarationDescriptor() == targetDescriptor) {
|
||||||
receiverUsages.add(resolvedCall.getCall().getCallElement())
|
usages.putValue(receiverTypeRef, resolvedCall.getCall().getCallElement())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
if (receiverUsages.isNotEmpty()) {
|
|
||||||
usages.add(receiverTypeRef to receiverUsages)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return usages.toMap()
|
return usages
|
||||||
}
|
}
|
||||||
|
|
||||||
trait KotlinIntroduceLambdaParameterHelper: KotlinIntroduceParameterHelper {
|
trait KotlinIntroduceLambdaParameterHelper: KotlinIntroduceParameterHelper {
|
||||||
|
|||||||
Reference in New Issue
Block a user