From 7b8abc54572aaa417dfd41ff757deec1bcd61983 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Tue, 16 Jul 2019 21:52:42 +0900 Subject: [PATCH] Move statement: enable expression ended with semicolon (KT-8581) #KT-8581 Fixed --- .../codeInsight/upDownMover/KotlinExpressionMover.java | 6 +++++- .../codeInsight/moveUpDown/expressions/semicolon1.kt | 5 +++++ .../moveUpDown/expressions/semicolon1.kt.after | 5 +++++ .../codeInsight/moveUpDown/expressions/semicolon2.kt | 5 +++++ .../moveUpDown/expressions/semicolon2.kt.after | 5 +++++ .../moveUpDown/MoveStatementTestGenerated.java | 10 ++++++++++ 6 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 idea/testData/codeInsight/moveUpDown/expressions/semicolon1.kt create mode 100644 idea/testData/codeInsight/moveUpDown/expressions/semicolon1.kt.after create mode 100644 idea/testData/codeInsight/moveUpDown/expressions/semicolon2.kt create mode 100644 idea/testData/codeInsight/moveUpDown/expressions/semicolon2.kt.after 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");