diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java index 4f454ef70a1..b458f0b15be 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java @@ -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) { diff --git a/idea/testData/refactoring/introduceVariable/WhenEntryCondition.kt b/idea/testData/refactoring/introduceVariable/WhenEntryCondition.kt new file mode 100644 index 00000000000..95d61ad347c --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/WhenEntryCondition.kt @@ -0,0 +1,6 @@ +fun f(x : Int) { + val y = if (x < 0) 1 else when { + x - 1 < 1 -> 2 + else -> 3 + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/WhenEntryCondition.kt.after b/idea/testData/refactoring/introduceVariable/WhenEntryCondition.kt.after new file mode 100644 index 00000000000..24cbd645f4e --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/WhenEntryCondition.kt.after @@ -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 + } + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java index a654f6aab76..2d1b47fe1da 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java @@ -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");