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");