From 7ac02d751af88f91f785ff56cbacf29bcf3a7754 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 18 Jun 2015 15:11:49 +0300 Subject: [PATCH] Minor: Use MultiMap --- .../KotlinIntroduceParameterHandler.kt | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt index 768a1e8e597..5b1314ad0e3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt @@ -31,6 +31,7 @@ import com.intellij.refactoring.listeners.RefactoringEventListener import com.intellij.usageView.BaseUsageViewDescriptor import com.intellij.usageView.UsageInfo import com.intellij.usageView.UsageViewDescriptor +import com.intellij.util.containers.MultiMap import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor @@ -73,7 +74,7 @@ public data class IntroduceParameterDescriptor( val newParameterTypeText: String, val newArgumentValue: JetExpression, val withDefaultValue: Boolean, - val parametersUsages: Map>, + val parametersUsages: MultiMap, val occurrencesToReplace: List, val parametersToRemove: List = getParametersToRemove(withDefaultValue, parametersUsages, occurrencesToReplace), val occurrenceReplacer: IntroduceParameterDescriptor.(JetPsiRange) -> Unit = {} @@ -106,7 +107,7 @@ public data class IntroduceParameterDescriptor( fun getParametersToRemove( withDefaultValue: Boolean, - parametersUsages: Map>, + parametersUsages: MultiMap, occurrencesToReplace: List ): List { if (withDefaultValue) return Collections.emptyList() @@ -341,27 +342,28 @@ public open class KotlinIntroduceParameterHandler( private fun findInternalUsagesOfParametersAndReceiver( targetParent: JetNamedDeclaration, targetDescriptor: FunctionDescriptor -): Map> { - val usages = ArrayList>>() +): MultiMap { + val usages = MultiMap() targetParent.getValueParameters() .filter { !it.hasValOrVar() } - .map { - it to DefaultSearchHelper() + .forEach { + val paramUsages = DefaultSearchHelper() .newRequest(UsagesSearchTarget(element = it)) .search() .map { it.getElement() as JetElement } + if (paramUsages.isNotEmpty()) { + usages.put(it, paramUsages) + } } - .filterTo(usages) { it.second.isNotEmpty() } val receiverTypeRef = (targetParent as? JetFunction)?.getReceiverTypeReference() if (receiverTypeRef != null) { - val receiverUsages = ArrayList() targetParent.acceptChildren( object : JetTreeVisitorVoid() { override fun visitThisExpression(expression: JetThisExpression) { super.visitThisExpression(expression) 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 || (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 {