Introduce Variable: Convert property accessor body to block when needed
This commit is contained in:
+5
-8
@@ -257,7 +257,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
|||||||
return new Runnable() {
|
return new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (commonContainer instanceof JetNamedFunction) {
|
if (commonContainer instanceof JetDeclarationWithBody) {
|
||||||
JetDeclarationWithBody originalDeclaration = (JetDeclarationWithBody) commonContainer;
|
JetDeclarationWithBody originalDeclaration = (JetDeclarationWithBody) commonContainer;
|
||||||
final JetExpression originalBody = originalDeclaration.getBodyExpression();
|
final JetExpression originalBody = originalDeclaration.getBodyExpression();
|
||||||
assert originalBody != null : "Original body is not found: " + originalDeclaration;
|
assert originalBody != null : "Original body is not found: " + originalDeclaration;
|
||||||
@@ -510,11 +510,8 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
|||||||
parent instanceof JetClassBody || parent instanceof JetClassInitializer) {
|
parent instanceof JetClassBody || parent instanceof JetClassInitializer) {
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
else if (parent instanceof JetNamedFunction) {
|
if (parent instanceof JetDeclarationWithBody && ((JetDeclarationWithBody) parent).getBodyExpression() == place) {
|
||||||
JetNamedFunction function = (JetNamedFunction)parent;
|
return parent;
|
||||||
if (function.getBodyExpression() == place) {
|
|
||||||
return parent;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
place = parent;
|
place = parent;
|
||||||
}
|
}
|
||||||
@@ -562,8 +559,8 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
|||||||
result = parent;
|
result = parent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (parent instanceof JetNamedFunction) {
|
else if (parent instanceof JetDeclarationWithBody) {
|
||||||
JetNamedFunction function = (JetNamedFunction)parent;
|
JetDeclarationWithBody function = (JetDeclarationWithBody)parent;
|
||||||
if (function.getBodyExpression() == place) {
|
if (function.getBodyExpression() == place) {
|
||||||
if (!(place instanceof JetBlockExpression)) {
|
if (!(place instanceof JetBlockExpression)) {
|
||||||
result = parent;
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
+12
@@ -201,6 +201,18 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest {
|
|||||||
doIntroduceVariableTest(fileName);
|
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")
|
@TestMetadata("ReplaceOccurence.kt")
|
||||||
public void testReplaceOccurence() throws Exception {
|
public void testReplaceOccurence() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/ReplaceOccurence.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/ReplaceOccurence.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user