diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinExpressionMover.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinExpressionMover.java index bbad1bd9dae..b67c32ed376 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinExpressionMover.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinExpressionMover.java @@ -411,7 +411,7 @@ public class KotlinExpressionMover extends AbstractKotlinUpDownMover { @Override protected boolean checkSourceElement(@NotNull PsiElement element) { - return PsiTreeUtil.instanceOf(element, MOVABLE_ELEMENT_CLASSES); + return PsiTreeUtil.instanceOf(element, MOVABLE_ELEMENT_CLASSES) || element.getNode().getElementType() == KtTokens.SEMICOLON; } @Override @@ -427,6 +427,10 @@ public class KotlinExpressionMover extends AbstractKotlinUpDownMover { @Nullable private static PsiElement getMovableElement(@NotNull PsiElement element, boolean lookRight) { + if (element.getNode().getElementType() == KtTokens.SEMICOLON) { + return element; + } + //noinspection unchecked PsiElement movableElement = PsiUtilsKt.getParentOfTypesAndPredicate( element, diff --git a/idea/testData/codeInsight/moveUpDown/expressions/semicolon1.kt b/idea/testData/codeInsight/moveUpDown/expressions/semicolon1.kt new file mode 100644 index 00000000000..c260ee71ca3 --- /dev/null +++ b/idea/testData/codeInsight/moveUpDown/expressions/semicolon1.kt @@ -0,0 +1,5 @@ +// MOVE: up +fun x() { + println("a") + println("b"); +} \ No newline at end of file diff --git a/idea/testData/codeInsight/moveUpDown/expressions/semicolon1.kt.after b/idea/testData/codeInsight/moveUpDown/expressions/semicolon1.kt.after new file mode 100644 index 00000000000..0fdd6ae3752 --- /dev/null +++ b/idea/testData/codeInsight/moveUpDown/expressions/semicolon1.kt.after @@ -0,0 +1,5 @@ +// MOVE: up +fun x() { + println("b"); + println("a") +} \ No newline at end of file diff --git a/idea/testData/codeInsight/moveUpDown/expressions/semicolon2.kt b/idea/testData/codeInsight/moveUpDown/expressions/semicolon2.kt new file mode 100644 index 00000000000..fccdf8ac8f5 --- /dev/null +++ b/idea/testData/codeInsight/moveUpDown/expressions/semicolon2.kt @@ -0,0 +1,5 @@ +// MOVE: down +fun x() { + println("b"); + println("a") +} \ No newline at end of file diff --git a/idea/testData/codeInsight/moveUpDown/expressions/semicolon2.kt.after b/idea/testData/codeInsight/moveUpDown/expressions/semicolon2.kt.after new file mode 100644 index 00000000000..02abb75dfb5 --- /dev/null +++ b/idea/testData/codeInsight/moveUpDown/expressions/semicolon2.kt.after @@ -0,0 +1,5 @@ +// MOVE: down +fun x() { + println("a") + println("b"); +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/MoveStatementTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/MoveStatementTestGenerated.java index 364f40d2746..14eaadb962a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/MoveStatementTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/MoveStatementTestGenerated.java @@ -1109,6 +1109,16 @@ public class MoveStatementTestGenerated extends AbstractMoveStatementTest { runTest("idea/testData/codeInsight/moveUpDown/expressions/qualifiedCall2.kt"); } + @TestMetadata("semicolon1.kt") + public void testSemicolon1() throws Exception { + runTest("idea/testData/codeInsight/moveUpDown/expressions/semicolon1.kt"); + } + + @TestMetadata("semicolon2.kt") + public void testSemicolon2() throws Exception { + runTest("idea/testData/codeInsight/moveUpDown/expressions/semicolon2.kt"); + } + @TestMetadata("when1.kt") public void testWhen1() throws Exception { runTest("idea/testData/codeInsight/moveUpDown/expressions/when1.kt");