From 8bd81c1d4c98037ad06b0a6d0e4cd42623e7960a Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Mon, 3 Jul 2017 15:49:16 +0200 Subject: [PATCH] invert if: don't insert continue outside while loop (IDEA-175283) --- .../intention/impl/InvertIfConditionAction.java | 2 +- .../invertIfCondition/afterWhileAfter.java | 12 ++++++++++++ .../invertIfCondition/beforeWhileAfter.java | 8 ++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/invertIfCondition/afterWhileAfter.java create mode 100644 java/java-tests/testData/codeInsight/invertIfCondition/beforeWhileAfter.java diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java index 9a4fa4f8bd0b..31df112fb414 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java @@ -218,7 +218,7 @@ public class InvertIfConditionAction extends PsiElementBaseIntentionAction { while (element != null && !(element instanceof PsiStatement)) element = element.getParent(); if (element != null && element.getParent() instanceof PsiForStatement && ((PsiForStatement)element.getParent()).getUpdate() == element || - element instanceof PsiWhileStatement && flow.getStartOffset(element) == endOffset || + element instanceof PsiWhileStatement && flow.getStartOffset(element) == endOffset && PsiTreeUtil.isAncestor(element, ifStatement, true) || element instanceof PsiForeachStatement && flow.getStartOffset(element) + 1 == endOffset) { PsiStatement statement = factory.createStatementFromText("continue;", ifStatement); statement = (PsiStatement)codeStyle.reformat(statement); diff --git a/java/java-tests/testData/codeInsight/invertIfCondition/afterWhileAfter.java b/java/java-tests/testData/codeInsight/invertIfCondition/afterWhileAfter.java new file mode 100644 index 000000000000..6322770bf6b6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/invertIfCondition/afterWhileAfter.java @@ -0,0 +1,12 @@ +// "Invert 'if' condition" "true" +class A { + public void foo() { + if (!c) { + } + else { + a(); + } + while (true) { + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/invertIfCondition/beforeWhileAfter.java b/java/java-tests/testData/codeInsight/invertIfCondition/beforeWhileAfter.java new file mode 100644 index 000000000000..fcebc2a74fc6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/invertIfCondition/beforeWhileAfter.java @@ -0,0 +1,8 @@ +// "Invert 'if' condition" "true" +class A { + public void foo() { + if (c) a(); + while (true) { + } + } +} \ No newline at end of file