From f615ed2f26e3429fce6a2c348470cebf1d371567 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Sat, 24 Oct 2020 00:19:10 +0900 Subject: [PATCH] Revert ""Use destructuring declaration": fix it works correctly if variable name is shadowed" This reverts commit d61158a1 --- .../idea/intentions/DestructureIntention.kt | 10 +++------- .../dependentLocal.kt.after | 4 ++-- .../hasSameNameParameter.kt | 9 --------- .../hasSameNameParameter.kt.after | 9 --------- .../hasShadowedVariable.kt | 15 -------------- .../hasShadowedVariable.kt.after | 14 ------------- .../hasShadowedVariable2.kt | 15 -------------- .../hasShadowedVariable2.kt.after | 14 ------------- .../hasShadowedVariable.kt | 12 ----------- .../hasShadowedVariable.kt.after | 11 ---------- .../intentions/IntentionTestGenerated.java | 20 ------------------- 11 files changed, 5 insertions(+), 128 deletions(-) delete mode 100644 idea/testData/intentions/destructuringInLambda/hasSameNameParameter.kt delete mode 100644 idea/testData/intentions/destructuringInLambda/hasSameNameParameter.kt.after delete mode 100644 idea/testData/intentions/destructuringInLambda/hasShadowedVariable.kt delete mode 100644 idea/testData/intentions/destructuringInLambda/hasShadowedVariable.kt.after delete mode 100644 idea/testData/intentions/destructuringInLambda/hasShadowedVariable2.kt delete mode 100644 idea/testData/intentions/destructuringInLambda/hasShadowedVariable2.kt.after delete mode 100644 idea/testData/intentions/destructuringVariables/hasShadowedVariable.kt delete mode 100644 idea/testData/intentions/destructuringVariables/hasShadowedVariable.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/DestructureIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/DestructureIntention.kt index b3f97bb04de..dbb84538d46 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/DestructureIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/DestructureIntention.kt @@ -59,13 +59,9 @@ class DestructureIntention : SelfTargetingRangeIntention( override fun applyTo(element: KtDeclaration, editor: Editor?) { val (usagesToRemove, removeSelectorInLoopRange) = collectUsagesToRemove(element) ?: return val factory = KtPsiFactory(element) - val parent = element.parent - val (container, anchor) = if (parent is KtParameterList) parent.parent to null else parent to element val validator = NewDeclarationNameValidator( - container = container, anchor = anchor, target = NewDeclarationNameValidator.Target.VARIABLES, - excludedDeclarations = usagesToRemove.map { - (it.declarationToDrop as? KtDestructuringDeclaration)?.entries ?: listOfNotNull(it.declarationToDrop) - }.flatten() + container = element.parent, anchor = element, target = NewDeclarationNameValidator.Target.VARIABLES, + excludedDeclarations = usagesToRemove.map { listOfNotNull(it.declarationToDrop) }.flatten() ) val names = ArrayList() @@ -80,7 +76,7 @@ class DestructureIntention : SelfTargetingRangeIntention( if (usagesToReplace.isEmpty() && variableToDrop == null && underscoreSupported && !allUnused) { "_" } else { - KotlinNameSuggester.suggestNameByName(name ?: descriptor.name.asString(), validator) + name ?: KotlinNameSuggester.suggestNameByName(descriptor.name.asString(), validator) } runWriteAction { diff --git a/idea/testData/intentions/destructuringInLambda/dependentLocal.kt.after b/idea/testData/intentions/destructuringInLambda/dependentLocal.kt.after index ab8120cdd76..9e130328c81 100644 --- a/idea/testData/intentions/destructuringInLambda/dependentLocal.kt.after +++ b/idea/testData/intentions/destructuringInLambda/dependentLocal.kt.after @@ -2,9 +2,9 @@ data class XY(val x: Int, val y: Int) fun test(xys: Array) { - xys.forEach { (x, y1) -> + xys.forEach { (x, y) -> println(x) - val y = y1 + x + val y = y + x println(y) } } \ No newline at end of file diff --git a/idea/testData/intentions/destructuringInLambda/hasSameNameParameter.kt b/idea/testData/intentions/destructuringInLambda/hasSameNameParameter.kt deleted file mode 100644 index bbed1159363..00000000000 --- a/idea/testData/intentions/destructuringInLambda/hasSameNameParameter.kt +++ /dev/null @@ -1,9 +0,0 @@ -// WITH_RUNTIME -data class Event(val timestamp: Int, val otherVar: Int = 1, val otherVar2: String = "") - -val listA = listOf(Event(1), Event(2), Event(3)) -val listB = listOf(Event(1), Event(2), Event(3)) - -fun test2() { - listA.zip(listB) { (timestamp), it2 -> timestamp + it2.timestamp } -} \ No newline at end of file diff --git a/idea/testData/intentions/destructuringInLambda/hasSameNameParameter.kt.after b/idea/testData/intentions/destructuringInLambda/hasSameNameParameter.kt.after deleted file mode 100644 index d4741507521..00000000000 --- a/idea/testData/intentions/destructuringInLambda/hasSameNameParameter.kt.after +++ /dev/null @@ -1,9 +0,0 @@ -// WITH_RUNTIME -data class Event(val timestamp: Int, val otherVar: Int = 1, val otherVar2: String = "") - -val listA = listOf(Event(1), Event(2), Event(3)) -val listB = listOf(Event(1), Event(2), Event(3)) - -fun test2() { - listA.zip(listB) { (timestamp), (timestamp1) -> timestamp + timestamp1 } -} \ No newline at end of file diff --git a/idea/testData/intentions/destructuringInLambda/hasShadowedVariable.kt b/idea/testData/intentions/destructuringInLambda/hasShadowedVariable.kt deleted file mode 100644 index 2d1bd183694..00000000000 --- a/idea/testData/intentions/destructuringInLambda/hasShadowedVariable.kt +++ /dev/null @@ -1,15 +0,0 @@ -// WITH_RUNTIME -data class A(var x: Int) - -fun convert(f: (A) -> Unit) {} - -fun test() { - convert { - val x = it.x - - run { - val x = 1 - val z = it.x - } - } -} \ No newline at end of file diff --git a/idea/testData/intentions/destructuringInLambda/hasShadowedVariable.kt.after b/idea/testData/intentions/destructuringInLambda/hasShadowedVariable.kt.after deleted file mode 100644 index 06942ccb4a7..00000000000 --- a/idea/testData/intentions/destructuringInLambda/hasShadowedVariable.kt.after +++ /dev/null @@ -1,14 +0,0 @@ -// WITH_RUNTIME -data class A(var x: Int) - -fun convert(f: (A) -> Unit) {} - -fun test() { - convert { (x1) -> - - run { - val x = 1 - val z = x1 - } - } -} \ No newline at end of file diff --git a/idea/testData/intentions/destructuringInLambda/hasShadowedVariable2.kt b/idea/testData/intentions/destructuringInLambda/hasShadowedVariable2.kt deleted file mode 100644 index aab2ca23c25..00000000000 --- a/idea/testData/intentions/destructuringInLambda/hasShadowedVariable2.kt +++ /dev/null @@ -1,15 +0,0 @@ -// WITH_RUNTIME -data class A(var x: Int) - -fun convert(f: (A) -> Unit) {} - -fun test() { - convert { a -> - val x = a.x - - run { - val x = 1 - val z = a.x - } - } -} \ No newline at end of file diff --git a/idea/testData/intentions/destructuringInLambda/hasShadowedVariable2.kt.after b/idea/testData/intentions/destructuringInLambda/hasShadowedVariable2.kt.after deleted file mode 100644 index 06942ccb4a7..00000000000 --- a/idea/testData/intentions/destructuringInLambda/hasShadowedVariable2.kt.after +++ /dev/null @@ -1,14 +0,0 @@ -// WITH_RUNTIME -data class A(var x: Int) - -fun convert(f: (A) -> Unit) {} - -fun test() { - convert { (x1) -> - - run { - val x = 1 - val z = x1 - } - } -} \ No newline at end of file diff --git a/idea/testData/intentions/destructuringVariables/hasShadowedVariable.kt b/idea/testData/intentions/destructuringVariables/hasShadowedVariable.kt deleted file mode 100644 index efb9603174f..00000000000 --- a/idea/testData/intentions/destructuringVariables/hasShadowedVariable.kt +++ /dev/null @@ -1,12 +0,0 @@ -// WITH_RUNTIME -fun main() { - data class A(var x: Int) - - val a = A(0) - val x = a.x - - run { - val x = 1 - val z = a.x - } -} \ No newline at end of file diff --git a/idea/testData/intentions/destructuringVariables/hasShadowedVariable.kt.after b/idea/testData/intentions/destructuringVariables/hasShadowedVariable.kt.after deleted file mode 100644 index 9113f97555a..00000000000 --- a/idea/testData/intentions/destructuringVariables/hasShadowedVariable.kt.after +++ /dev/null @@ -1,11 +0,0 @@ -// WITH_RUNTIME -fun main() { - data class A(var x: Int) - - val (x1) = A(0) - - run { - val x = 1 - val z = x1 - } -} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 04173288fd7..36fc2095db6 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -8757,21 +8757,6 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/destructuringInLambda/fold.kt"); } - @TestMetadata("hasSameNameParameter.kt") - public void testHasSameNameParameter() throws Exception { - runTest("idea/testData/intentions/destructuringInLambda/hasSameNameParameter.kt"); - } - - @TestMetadata("hasShadowedVariable.kt") - public void testHasShadowedVariable() throws Exception { - runTest("idea/testData/intentions/destructuringInLambda/hasShadowedVariable.kt"); - } - - @TestMetadata("hasShadowedVariable2.kt") - public void testHasShadowedVariable2() throws Exception { - runTest("idea/testData/intentions/destructuringInLambda/hasShadowedVariable2.kt"); - } - @TestMetadata("invisible.kt") public void testInvisible() throws Exception { runTest("idea/testData/intentions/destructuringInLambda/invisible.kt"); @@ -8883,11 +8868,6 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/destructuringVariables/classProperty.kt"); } - @TestMetadata("hasShadowedVariable.kt") - public void testHasShadowedVariable() throws Exception { - runTest("idea/testData/intentions/destructuringVariables/hasShadowedVariable.kt"); - } - @TestMetadata("noInitializer.kt") public void testNoInitializer() throws Exception { runTest("idea/testData/intentions/destructuringVariables/noInitializer.kt");