Introduce Variable: Convert property accessor body to block when needed

This commit is contained in:
Alexey Sedunov
2014-12-22 19:22:06 +03:00
parent 05a0481efa
commit 82579f489b
6 changed files with 40 additions and 8 deletions
@@ -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;
@@ -0,0 +1 @@
val x: Int get() = <selection>1</selection>
@@ -0,0 +1,4 @@
val x: Int get() {
val i = 1
return i
}
@@ -0,0 +1,8 @@
val a = 2
val x: Int get() =
if (a > 1) {
(<selection>a + 1</selection>) * (a - 1)
} else {
a * (a + 1)
}
@@ -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
}
}
@@ -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");