From fa8fcb53c58b5759ad500fdaf50a66ccb8c08a12 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 2 Sep 2015 15:17:46 +0300 Subject: [PATCH] Introduce Variable: Forbid extraction from class initializer (aside of its body) #KT-8329 Fixed --- .../KotlinIntroduceVariableHandler.java | 10 ++++------ .../introduceVariable/InsideOfInitializerAnnotation.kt | 4 ++++ .../InsideOfInitializerAnnotation.kt.conflicts | 1 + .../introduce/JetExtractionTestGenerated.java | 6 ++++++ 4 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 idea/testData/refactoring/introduceVariable/InsideOfInitializerAnnotation.kt create mode 100644 idea/testData/refactoring/introduceVariable/InsideOfInitializerAnnotation.kt.conflicts diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java index b458f0b15be..44767692efa 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java @@ -330,8 +330,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { JetProperty property = psiFactory.createProperty(variableText); PsiElement anchor = calculateAnchor(commonParent, commonContainer, allReplaces); if (anchor == null) return; - boolean needBraces = !(commonContainer instanceof JetBlockExpression || - commonContainer instanceof JetClassInitializer); + boolean needBraces = !(commonContainer instanceof JetBlockExpression); if (!needBraces) { property = (JetProperty)commonContainer.addBefore(property, anchor); commonContainer.addBefore(psiFactory.createNewLine(), anchor); @@ -548,7 +547,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { @Nullable private static PsiElement getContainer(PsiElement place) { - if (place instanceof JetBlockExpression || place instanceof JetClassInitializer) { + if (place instanceof JetBlockExpression) { return place; } while (place != null) { @@ -559,8 +558,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { } } if (parent instanceof JetBlockExpression - || (parent instanceof JetWhenEntry && place == ((JetWhenEntry) parent).getExpression()) - || parent instanceof JetClassInitializer) { + || (parent instanceof JetWhenEntry && place == ((JetWhenEntry) parent).getExpression())) { return parent; } if (parent instanceof JetDeclarationWithBody && ((JetDeclarationWithBody) parent).getBodyExpression() == place) { @@ -596,7 +594,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { result = parent; } } - else if (parent instanceof JetClassBody || parent instanceof JetFile || parent instanceof JetClassInitializer) { + else if (parent instanceof JetClassBody || parent instanceof JetFile) { return result; } else if (parent instanceof JetBlockExpression) { diff --git a/idea/testData/refactoring/introduceVariable/InsideOfInitializerAnnotation.kt b/idea/testData/refactoring/introduceVariable/InsideOfInitializerAnnotation.kt new file mode 100644 index 00000000000..ace8099d55b --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/InsideOfInitializerAnnotation.kt @@ -0,0 +1,4 @@ +class C { + deprecated("") + init {} +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/InsideOfInitializerAnnotation.kt.conflicts b/idea/testData/refactoring/introduceVariable/InsideOfInitializerAnnotation.kt.conflicts new file mode 100644 index 00000000000..1568c6aea62 --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/InsideOfInitializerAnnotation.kt.conflicts @@ -0,0 +1 @@ +Cannot refactor in this place diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java index 2d1b47fe1da..507243e2705 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java @@ -145,6 +145,12 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest { doIntroduceVariableTest(fileName); } + @TestMetadata("InsideOfInitializerAnnotation.kt") + public void testInsideOfInitializerAnnotation() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/InsideOfInitializerAnnotation.kt"); + doIntroduceVariableTest(fileName); + } + @TestMetadata("IntroduceAndCreateBlock.kt") public void testIntroduceAndCreateBlock() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/IntroduceAndCreateBlock.kt");