From bf13f7e637977c2bcedbb98bc6c27a1d3c6fc2e8 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 16 Apr 2015 14:16:38 +0300 Subject: [PATCH] Introduce Parameter: Do not remove unused parameters if new parameter is extracted with default value --- .../KotlinIntroduceParameterHandler.kt | 18 +++++++++++------- .../functionMultipleUnusedParameters.kt.after | 4 ++-- .../functionMultipleUsages.kt.after | 4 ++-- .../functionUnusedParameter.kt.after | 4 ++-- 4 files changed, 17 insertions(+), 13 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 67f0568dbcc..59da9a932bf 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 @@ -94,14 +94,18 @@ public data class IntroduceParameterDescriptor( } else JetValVar.None - val occurrenceRanges = occurrencesToReplace.map { it.getTextRange() } - parametersToRemove = parametersUsages.entrySet() - .filter { - it.value.all { paramRef -> - occurrenceRanges.any { occurrenceRange -> occurrenceRange.contains(paramRef.getElement().getTextRange()) } - } + parametersToRemove = + if (withDefaultValue) Collections.emptyList() + else { + val occurrenceRanges = occurrencesToReplace.map { it.getTextRange() } + parametersUsages.entrySet() + .filter { + it.value.all { paramRef -> + occurrenceRanges.any { occurrenceRange -> occurrenceRange.contains(paramRef.getElement().getTextRange()) } + } + } + .map { it.key } } - .map { it.key } } } diff --git a/idea/testData/refactoring/introduceParameter/functionMultipleUnusedParameters.kt.after b/idea/testData/refactoring/introduceParameter/functionMultipleUnusedParameters.kt.after index cb3367d9046..083a6778582 100644 --- a/idea/testData/refactoring/introduceParameter/functionMultipleUnusedParameters.kt.after +++ b/idea/testData/refactoring/introduceParameter/functionMultipleUnusedParameters.kt.after @@ -1,7 +1,7 @@ -fun foo(s: String, i: Int = a + b): Int { +fun foo(a: Int, s: String, b: Int, i: Int = a + b): Int { return i * 2 } fun test() { - foo("2") + foo(1, "2", 3) } \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/functionMultipleUsages.kt.after b/idea/testData/refactoring/introduceParameter/functionMultipleUsages.kt.after index 58fa970ac95..a24f9afe526 100644 --- a/idea/testData/refactoring/introduceParameter/functionMultipleUsages.kt.after +++ b/idea/testData/refactoring/introduceParameter/functionMultipleUsages.kt.after @@ -1,8 +1,8 @@ -fun foo(s: String, i: Int = a + 1): Int { +fun foo(a: Int, s: String, i: Int = a + 1): Int { val t = i * 2 return i - t } fun test() { - foo("2") + foo(1, "2") } \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/functionUnusedParameter.kt.after b/idea/testData/refactoring/introduceParameter/functionUnusedParameter.kt.after index def86ddd096..0c548ff9f00 100644 --- a/idea/testData/refactoring/introduceParameter/functionUnusedParameter.kt.after +++ b/idea/testData/refactoring/introduceParameter/functionUnusedParameter.kt.after @@ -1,7 +1,7 @@ -fun foo(s: String, i: Int = a + 1): Int { +fun foo(a: Int, s: String, i: Int = a + 1): Int { return i * 2 } fun test() { - foo("2") + foo(1, "2") } \ No newline at end of file