diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java index 4100157d1970..5f94cb334f76 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java @@ -3481,6 +3481,11 @@ public abstract class ExtractionTestGenerated extends AbstractExtractionTest { runTest("testData/refactoring/introduceParameter/classUsedParameter.kt"); } + @TestMetadata("conflictingName.kt") + public void testConflictingName() throws Exception { + runTest("testData/refactoring/introduceParameter/conflictingName.kt"); + } + @TestMetadata("defaultParameter.kt") public void testDefaultParameter() throws Exception { runTest("testData/refactoring/introduceParameter/defaultParameter.kt"); diff --git a/plugins/kotlin/idea/tests/testData/refactoring/extractFunction/basic/noConflictWithInnerFunction1.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/extractFunction/basic/noConflictWithInnerFunction1.kt.fir.after index 7f05e197cf8a..386bceef53cb 100644 --- a/plugins/kotlin/idea/tests/testData/refactoring/extractFunction/basic/noConflictWithInnerFunction1.kt.fir.after +++ b/plugins/kotlin/idea/tests/testData/refactoring/extractFunction/basic/noConflictWithInnerFunction1.kt.fir.after @@ -1,9 +1,9 @@ fun foo() { val a = 1 // SIBLING: - fun b(): Boolean = a > 0 + fun bool1(): Boolean = a > 0 - if (b()) { + if (bool1()) { fun bool(): Int { return 0 } println(bool()) } diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceConstant/extractWithNameClash.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceConstant/extractWithNameClash.kt.fir.after deleted file mode 100644 index 4fa06d7696cf..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceConstant/extractWithNameClash.kt.fir.after +++ /dev/null @@ -1,8 +0,0 @@ -// EXTRACTION_TARGET: property with initializer -val i = 1 - -private const val n = 2 - -fun foo(): Int { - return n -} diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/avoidClassDuplicatingParameters.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/avoidClassDuplicatingParameters.kt.fir.after deleted file mode 100644 index 53957eb32040..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/avoidClassDuplicatingParameters.kt.fir.after +++ /dev/null @@ -1,3 +0,0 @@ -class Foo(i: Int, n: Int = 1 + 2) { - val x = n + 3 -} diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/avoidFunDuplicatingParameters.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/avoidFunDuplicatingParameters.kt.fir.after deleted file mode 100644 index 3ef563b43256..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/avoidFunDuplicatingParameters.kt.fir.after +++ /dev/null @@ -1,3 +0,0 @@ -fun foo(i: Int, n: Int = 1 + 2) { - val x = n + 3 -} diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/conflictingName.kt b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/conflictingName.kt new file mode 100644 index 000000000000..4bc6229e2e93 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/conflictingName.kt @@ -0,0 +1,5 @@ +class A(val bool: Boolean) { + fun m() { + val p = false + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/conflictingName.kt.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/conflictingName.kt.after new file mode 100644 index 000000000000..cde2ad485e3e --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/conflictingName.kt.after @@ -0,0 +1,5 @@ +class A(val bool: Boolean) { + fun m(b: Boolean = false) { + val p = b + } +} diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/conflictingName.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/conflictingName.kt.fir.after new file mode 100644 index 000000000000..350b72be8576 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/conflictingName.kt.fir.after @@ -0,0 +1,5 @@ +class A(val bool: Boolean) { + fun m(bool1: Boolean = false) { + val p = bool1 + } +} diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/defaultParameter.kt.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/defaultParameter.kt.after index dabdfb61d9ef..4dffb86b4465 100644 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/defaultParameter.kt.after +++ b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/defaultParameter.kt.after @@ -3,10 +3,10 @@ fun p2() { p(get42() + 1) } -fun p(n: Int) { - println(n) +fun p(i1: Int) { + println(i1) } fun get42(): Int = 42 -// IGNORE_K1 \ No newline at end of file +// IGNORE_K1 diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/variableConversion/caretAtIdentifier.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/variableConversion/caretAtIdentifier.kt.fir.after deleted file mode 100644 index 3c723c05d60d..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/variableConversion/caretAtIdentifier.kt.fir.after +++ /dev/null @@ -1,3 +0,0 @@ -fun foo(i: Int, n: Int = 1) { - val u = n + i -} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/variableConversion/fullSelection.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/variableConversion/fullSelection.kt.fir.after deleted file mode 100644 index 3c723c05d60d..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceParameter/variableConversion/fullSelection.kt.fir.after +++ /dev/null @@ -1,3 +0,0 @@ -fun foo(i: Int, n: Int = 1) { - val u = n + i -} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/conflictWithParentClass.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/conflictWithParentClass.kt.fir.after deleted file mode 100644 index 93e0081b8130..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/conflictWithParentClass.kt.fir.after +++ /dev/null @@ -1,10 +0,0 @@ -// EXTRACTION_TARGET: property with initializer -open class Base(protected val i: Int) - -class Impl(z: Int) : Base(z) { - private val n = 2 + 3 + i - - fun foo(): Int { - return n - } -} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractToClassWithNameClash.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractToClassWithNameClash.kt.fir.after deleted file mode 100644 index 504614fb9c73..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractToClassWithNameClash.kt.fir.after +++ /dev/null @@ -1,11 +0,0 @@ -// EXTRACTION_TARGET: property with initializer -class A { - val i = 1 - - private val n = 1 + 2 - - fun foo(): Int { - return n - } -} - diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractToClassWithNameClashAndAnonymousInitializer.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractToClassWithNameClashAndAnonymousInitializer.kt.fir.after deleted file mode 100644 index 1cef6f45ce58..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractToClassWithNameClashAndAnonymousInitializer.kt.fir.after +++ /dev/null @@ -1,16 +0,0 @@ -// EXTRACTION_TARGET: property with initializer - -class A { - val i: Int - - init { - i = 1 - } - - private val n = 1 + 2 - - fun foo(): Int { - return n - } -} - diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractToFileWithNameClash.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractToFileWithNameClash.kt.fir.after deleted file mode 100644 index 5e1f4d93db5b..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractToFileWithNameClash.kt.fir.after +++ /dev/null @@ -1,9 +0,0 @@ -// EXTRACTION_TARGET: property with initializer -val i = 1 - -private val n = 1 + 2 - -fun foo(): Int { - return n -} - diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/kt24615.kt.fir.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/kt24615.kt.fir.after deleted file mode 100644 index 0d5167e4369f..000000000000 --- a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/kt24615.kt.fir.after +++ /dev/null @@ -1,12 +0,0 @@ -// EXTRACTION_TARGET: property with getter - -open class Base(protected val i: Int) - -class Impl(i: Int) : Base(i) { - private val n: Int - get() = 2 + 3 + i - - fun foo(): Int { - return n - } -} \ No newline at end of file diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/introduce/extractionEngine/KotlinNameSuggester.kt b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/introduce/extractionEngine/KotlinNameSuggester.kt index 3c2300b41059..7c8b5d0e898a 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/introduce/extractionEngine/KotlinNameSuggester.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/introduce/extractionEngine/KotlinNameSuggester.kt @@ -19,8 +19,9 @@ object KotlinNameSuggester : IExtractionNameSuggester { if (kotlinType.isUnit) emptyList() else KotlinNameSuggester() .suggestTypeNames(kotlinType) - .filter(validator) + .map { KotlinNameSuggester.suggestNameByName(it, validator) } .toList() + .takeIf { it.isNotEmpty() } ?: listOf(KotlinNameSuggester.suggestNameByName(defaultName ?: "p", validator)) } override fun suggestNameByName( diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.tests.k2/test/org/jetbrains/kotlin/idea/k2/refactoring/introduce/K2IntroduceParameterTestGenerated.java b/plugins/kotlin/refactorings/kotlin.refactorings.tests.k2/test/org/jetbrains/kotlin/idea/k2/refactoring/introduce/K2IntroduceParameterTestGenerated.java index 48ef76e01db5..616a9fd19a99 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.tests.k2/test/org/jetbrains/kotlin/idea/k2/refactoring/introduce/K2IntroduceParameterTestGenerated.java +++ b/plugins/kotlin/refactorings/kotlin.refactorings.tests.k2/test/org/jetbrains/kotlin/idea/k2/refactoring/introduce/K2IntroduceParameterTestGenerated.java @@ -245,6 +245,11 @@ public abstract class K2IntroduceParameterTestGenerated extends AbstractK2Introd runTest("../../idea/tests/testData/refactoring/introduceParameter/classUsedParameter.kt"); } + @TestMetadata("conflictingName.kt") + public void testConflictingName() throws Exception { + runTest("../../idea/tests/testData/refactoring/introduceParameter/conflictingName.kt"); + } + @TestMetadata("defaultParameter.kt") public void testDefaultParameter() throws Exception { runTest("../../idea/tests/testData/refactoring/introduceParameter/defaultParameter.kt");