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