Introduce Variable: Fix extraction of expression from when-entry condition

#KT-8444 Fixed
This commit is contained in:
Alexey Sedunov
2015-09-02 15:07:44 +03:00
parent 3038e2382b
commit c005fe613f
4 changed files with 24 additions and 1 deletions
@@ -558,7 +558,9 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
return parent;
}
}
if (parent instanceof JetBlockExpression || parent instanceof JetWhenEntry || parent instanceof JetClassInitializer) {
if (parent instanceof JetBlockExpression
|| (parent instanceof JetWhenEntry && place == ((JetWhenEntry) parent).getExpression())
|| parent instanceof JetClassInitializer) {
return parent;
}
if (parent instanceof JetDeclarationWithBody && ((JetDeclarationWithBody) parent).getBodyExpression() == place) {
@@ -0,0 +1,6 @@
fun f(x : Int) {
val y = if (x < 0) 1 else when {
<selection>x - 1</selection> < 1 -> 2
else -> 3
}
}
@@ -0,0 +1,9 @@
fun f(x : Int) {
val y = if (x < 0) 1 else {
val i = x - 1
when {
i < 1 -> 2
else -> 3
}
}
}
@@ -331,6 +331,12 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest {
doIntroduceVariableTest(fileName);
}
@TestMetadata("WhenEntryCondition.kt")
public void testWhenEntryCondition() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/WhenEntryCondition.kt");
doIntroduceVariableTest(fileName);
}
@TestMetadata("WhenParts.kt")
public void testWhenParts() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/WhenParts.kt");