diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java b/idea/src/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java index 83ee1c34a7b..c5acd8e399c 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java @@ -257,7 +257,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { return new Runnable() { @Override public void run() { - if (commonContainer instanceof JetNamedFunction) { + if (commonContainer instanceof JetDeclarationWithBody) { JetDeclarationWithBody originalDeclaration = (JetDeclarationWithBody) commonContainer; final JetExpression originalBody = originalDeclaration.getBodyExpression(); assert originalBody != null : "Original body is not found: " + originalDeclaration; @@ -510,11 +510,8 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { parent instanceof JetClassBody || parent instanceof JetClassInitializer) { return parent; } - else if (parent instanceof JetNamedFunction) { - JetNamedFunction function = (JetNamedFunction)parent; - if (function.getBodyExpression() == place) { - return parent; - } + if (parent instanceof JetDeclarationWithBody && ((JetDeclarationWithBody) parent).getBodyExpression() == place) { + return parent; } place = parent; } @@ -562,8 +559,8 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { result = parent; } } - else if (parent instanceof JetNamedFunction) { - JetNamedFunction function = (JetNamedFunction)parent; + else if (parent instanceof JetDeclarationWithBody) { + JetDeclarationWithBody function = (JetDeclarationWithBody)parent; if (function.getBodyExpression() == place) { if (!(place instanceof JetBlockExpression)) { result = parent; diff --git a/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlock.kt b/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlock.kt new file mode 100644 index 00000000000..05b164eed3a --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlock.kt @@ -0,0 +1 @@ +val x: Int get() = 1 \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlock.kt.after b/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlock.kt.after new file mode 100644 index 00000000000..f042e7d1da2 --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlock.kt.after @@ -0,0 +1,4 @@ +val x: Int get() { + val i = 1 + return i +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlockInner.kt b/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlockInner.kt new file mode 100644 index 00000000000..f66a356075a --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlockInner.kt @@ -0,0 +1,8 @@ +val a = 2 + +val x: Int get() = + if (a > 1) { + (a + 1) * (a - 1) + } else { + a * (a + 1) + } \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlockInner.kt.after b/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlockInner.kt.after new file mode 100644 index 00000000000..e1e61f518d6 --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlockInner.kt.after @@ -0,0 +1,10 @@ +val a = 2 + +val x: Int get() { + val i = a + 1 + return if (a > 1) { + i * (a - 1) + } else { + a * i + } +} diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/JetExtractionTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/JetExtractionTestGenerated.java index a6e30161ed0..788c2277d28 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/JetExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/JetExtractionTestGenerated.java @@ -201,6 +201,18 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest { doIntroduceVariableTest(fileName); } + @TestMetadata("PropertyAccessorAddBlock.kt") + public void testPropertyAccessorAddBlock() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlock.kt"); + doIntroduceVariableTest(fileName); + } + + @TestMetadata("PropertyAccessorAddBlockInner.kt") + public void testPropertyAccessorAddBlockInner() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/PropertyAccessorAddBlockInner.kt"); + doIntroduceVariableTest(fileName); + } + @TestMetadata("ReplaceOccurence.kt") public void testReplaceOccurence() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/ReplaceOccurence.kt");