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 4f659d23aff..b9d9f85ed93 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
@@ -377,8 +377,16 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
}
}
else {
+ PsiElement parent = anchor.getParent();
+ PsiElement copyTo = parent.getLastChild();
+ PsiElement copyFrom = anchor.getNextSibling();
+
property = (JetProperty)emptyBody.addAfter(property, firstChild);
emptyBody.addAfter(psiFactory.createNewLine(), firstChild);
+ if (copyFrom != null && copyTo != null) {
+ emptyBody.addRangeAfter(copyFrom, copyTo, property);
+ parent.deleteChildRange(copyFrom, copyTo);
+ }
emptyBody = (JetBlockExpression) anchor.replace(emptyBody);
}
for (PsiElement child : emptyBody.getChildren()) {
@@ -406,7 +414,13 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
replaceExpression(replace);
}
else if (!needBraces) {
- replace.delete();
+ PsiElement sibling = PsiTreeUtil.skipSiblingsBackward(replace, PsiWhiteSpace.class);
+ if (sibling == property) {
+ replace.getParent().deleteChildRange(property.getNextSibling(), replace);
+ }
+ else {
+ replace.delete();
+ }
}
}
propertyRef.set(property);
diff --git a/idea/testData/refactoring/introduceVariable/NoNewLinesInBetween.kt b/idea/testData/refactoring/introduceVariable/NoNewLinesInBetween.kt
new file mode 100644
index 00000000000..0cd8d852acb
--- /dev/null
+++ b/idea/testData/refactoring/introduceVariable/NoNewLinesInBetween.kt
@@ -0,0 +1,5 @@
+fun bar(): Int = 1
+
+fun foo() {
+ bar();
+}
\ No newline at end of file
diff --git a/idea/testData/refactoring/introduceVariable/NoNewLinesInBetween.kt.after b/idea/testData/refactoring/introduceVariable/NoNewLinesInBetween.kt.after
new file mode 100644
index 00000000000..1f5f3942917
--- /dev/null
+++ b/idea/testData/refactoring/introduceVariable/NoNewLinesInBetween.kt.after
@@ -0,0 +1,5 @@
+fun bar(): Int = 1
+
+fun foo() {
+ val i = bar();
+}
\ No newline at end of file
diff --git a/idea/testData/refactoring/introduceVariable/NoNewLinesInBetweenNoBraces.kt b/idea/testData/refactoring/introduceVariable/NoNewLinesInBetweenNoBraces.kt
new file mode 100644
index 00000000000..c26ec052344
--- /dev/null
+++ b/idea/testData/refactoring/introduceVariable/NoNewLinesInBetweenNoBraces.kt
@@ -0,0 +1,6 @@
+fun bar(): Int = 1
+fun baz()
+
+fun foo() {
+ if (true) bar(); else baz()
+}
\ No newline at end of file
diff --git a/idea/testData/refactoring/introduceVariable/NoNewLinesInBetweenNoBraces.kt.after b/idea/testData/refactoring/introduceVariable/NoNewLinesInBetweenNoBraces.kt.after
new file mode 100644
index 00000000000..e136ba4be0c
--- /dev/null
+++ b/idea/testData/refactoring/introduceVariable/NoNewLinesInBetweenNoBraces.kt.after
@@ -0,0 +1,8 @@
+fun bar(): Int = 1
+fun baz()
+
+fun foo() {
+ if (true) {
+ val i = bar();
+ } else baz()
+}
\ 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 f04cfa8e09f..7c2272963b7 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
@@ -177,6 +177,18 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest {
doIntroduceVariableTest(fileName);
}
+ @TestMetadata("NoNewLinesInBetween.kt")
+ public void testNoNewLinesInBetween() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/NoNewLinesInBetween.kt");
+ doIntroduceVariableTest(fileName);
+ }
+
+ @TestMetadata("NoNewLinesInBetweenNoBraces.kt")
+ public void testNoNewLinesInBetweenNoBraces() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/NoNewLinesInBetweenNoBraces.kt");
+ doIntroduceVariableTest(fileName);
+ }
+
@TestMetadata("nonEquivalentReceivers.kt")
public void testNonEquivalentReceivers() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/nonEquivalentReceivers.kt");