From 9781d1fcdf275e3bcfde14d288b448b7913bb382 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 21 Jul 2017 13:02:42 +0300 Subject: [PATCH] Remove unused variable with constant initializer #KT-13886 Fixed --- .../idea/quickfix/RemovePsiElementSimpleFix.kt | 7 ++----- .../unusedVariableWithConstantInitializer.kt | 5 +++++ .../unusedVariableWithConstantInitializer.kt.after | 4 ++++ .../variables/unusedVariableWithNullInitializer.kt | 5 +++++ .../unusedVariableWithNullInitializer.kt.after | 4 ++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 12 ++++++++++++ 6 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 idea/testData/quickfix/variables/unusedVariableWithConstantInitializer.kt create mode 100644 idea/testData/quickfix/variables/unusedVariableWithConstantInitializer.kt.after create mode 100644 idea/testData/quickfix/variables/unusedVariableWithNullInitializer.kt create mode 100644 idea/testData/quickfix/variables/unusedVariableWithNullInitializer.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemovePsiElementSimpleFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemovePsiElementSimpleFix.kt index 80249cc7ffe..4b1525ce9eb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemovePsiElementSimpleFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemovePsiElementSimpleFix.kt @@ -21,10 +21,7 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.psi.KtImportDirective -import org.jetbrains.kotlin.psi.KtProperty -import org.jetbrains.kotlin.psi.KtTypeArgumentList +import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType open class RemovePsiElementSimpleFix(element: PsiElement, private val text: String) : KotlinQuickFixAction(element) { @@ -65,7 +62,7 @@ open class RemovePsiElementSimpleFix(element: PsiElement, private val text: Stri return object : RemovePsiElementSimpleFix(expression, "Remove variable '${expression.name}'") { override fun invoke(project: Project, editor: Editor?, file: KtFile) { val initializer = expression.initializer - if (initializer != null) { + if (initializer != null && initializer !is KtConstantExpression) { expression.replace(initializer) } else { diff --git a/idea/testData/quickfix/variables/unusedVariableWithConstantInitializer.kt b/idea/testData/quickfix/variables/unusedVariableWithConstantInitializer.kt new file mode 100644 index 00000000000..500ac7a0a34 --- /dev/null +++ b/idea/testData/quickfix/variables/unusedVariableWithConstantInitializer.kt @@ -0,0 +1,5 @@ +// "Remove variable 'flag'" "true" + +fun foo() { + val flag = true +} \ No newline at end of file diff --git a/idea/testData/quickfix/variables/unusedVariableWithConstantInitializer.kt.after b/idea/testData/quickfix/variables/unusedVariableWithConstantInitializer.kt.after new file mode 100644 index 00000000000..6c60d9253b3 --- /dev/null +++ b/idea/testData/quickfix/variables/unusedVariableWithConstantInitializer.kt.after @@ -0,0 +1,4 @@ +// "Remove variable 'flag'" "true" + +fun foo() { +} \ No newline at end of file diff --git a/idea/testData/quickfix/variables/unusedVariableWithNullInitializer.kt b/idea/testData/quickfix/variables/unusedVariableWithNullInitializer.kt new file mode 100644 index 00000000000..f000453ed76 --- /dev/null +++ b/idea/testData/quickfix/variables/unusedVariableWithNullInitializer.kt @@ -0,0 +1,5 @@ +// "Remove variable 'i'" "true" + +fun foo() { + val i: Int? = null +} \ No newline at end of file diff --git a/idea/testData/quickfix/variables/unusedVariableWithNullInitializer.kt.after b/idea/testData/quickfix/variables/unusedVariableWithNullInitializer.kt.after new file mode 100644 index 00000000000..2f70d727457 --- /dev/null +++ b/idea/testData/quickfix/variables/unusedVariableWithNullInitializer.kt.after @@ -0,0 +1,4 @@ +// "Remove variable 'i'" "true" + +fun foo() { +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 05f6bd9633b..2b21e27ede7 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -11366,12 +11366,24 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/variables"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); } + @TestMetadata("unusedVariableWithConstantInitializer.kt") + public void testUnusedVariableWithConstantInitializer() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/unusedVariableWithConstantInitializer.kt"); + doTest(fileName); + } + @TestMetadata("unusedVariableWithInitializer.kt") public void testUnusedVariableWithInitializer() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/unusedVariableWithInitializer.kt"); doTest(fileName); } + @TestMetadata("unusedVariableWithNullInitializer.kt") + public void testUnusedVariableWithNullInitializer() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/unusedVariableWithNullInitializer.kt"); + doTest(fileName); + } + @TestMetadata("unusedVariableWithoutInitializer.kt") public void testUnusedVariableWithoutInitializer() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/unusedVariableWithoutInitializer.kt");