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 23e6cb7403a..83ee1c34a7b 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 @@ -177,7 +177,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { @Override public void pass(OccurrencesChooser.ReplaceChoice replaceChoice) { boolean replaceOccurrence = - container != expression.getParent() || container instanceof JetNamedFunction; + container != expression.getParent() || BindingContextUtilPackage.isUsedAsExpression(expression, bindingContext); List allReplaces; if (OccurrencesChooser.ReplaceChoice.ALL == replaceChoice) { if (allOccurrences.size() > 1) replaceOccurrence = true; diff --git a/idea/testData/refactoring/introduceVariable/IfThenValuedAddBlock.kt b/idea/testData/refactoring/introduceVariable/IfThenValuedAddBlock.kt new file mode 100644 index 00000000000..8e76a051b14 --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/IfThenValuedAddBlock.kt @@ -0,0 +1,3 @@ +fun a(x: Int) { + val t = if (x > 0) x + x - 1 else x * x + 1 +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/IfThenValuedAddBlock.kt.after b/idea/testData/refactoring/introduceVariable/IfThenValuedAddBlock.kt.after new file mode 100644 index 00000000000..a680bf6c178 --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/IfThenValuedAddBlock.kt.after @@ -0,0 +1,6 @@ +fun a(x: Int) { + val t = if (x > 0) { + val i = x + x + i - 1 + } else x * x + 1 +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/It.kt.after b/idea/testData/refactoring/introduceVariable/It.kt.after index 57e869d9c78..e4fd6200727 100644 --- a/idea/testData/refactoring/introduceVariable/It.kt.after +++ b/idea/testData/refactoring/introduceVariable/It.kt.after @@ -3,5 +3,6 @@ fun b() { a {it} a { val i = it + i } } \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/WhenValuedAddBlock.kt b/idea/testData/refactoring/introduceVariable/WhenValuedAddBlock.kt new file mode 100644 index 00000000000..9a232466853 --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/WhenValuedAddBlock.kt @@ -0,0 +1,7 @@ +fun a(x: Int) { + val t = when { + x > 0 -> x * x + 1 + x < 0 -> x + x + else -> 0 + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/WhenValuedAddBlock.kt.after b/idea/testData/refactoring/introduceVariable/WhenValuedAddBlock.kt.after new file mode 100644 index 00000000000..c19d17fe036 --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/WhenValuedAddBlock.kt.after @@ -0,0 +1,10 @@ +fun a(x: Int) { + val t = when { + x > 0 -> { + val i = x * x + i + 1 + } + x < 0 -> x + x + else -> 0 + } +} \ No newline at end of file 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 6d310d2f436..a6e30161ed0 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 @@ -129,6 +129,12 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest { doIntroduceVariableTest(fileName); } + @TestMetadata("IfThenValuedAddBlock.kt") + public void testIfThenValuedAddBlock() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/IfThenValuedAddBlock.kt"); + doIntroduceVariableTest(fileName); + } + @TestMetadata("It.kt") public void testIt() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/It.kt"); @@ -249,6 +255,12 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest { doIntroduceVariableTest(fileName); } + @TestMetadata("WhenValuedAddBlock.kt") + public void testWhenValuedAddBlock() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/WhenValuedAddBlock.kt"); + doIntroduceVariableTest(fileName); + } + @TestMetadata("WhileAddBlock.kt") public void testWhileAddBlock() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/WhileAddBlock.kt");