invert if: don't insert continue outside while loop (IDEA-175283)

This commit is contained in:
Anna.Kozlova
2017-07-03 16:53:16 +02:00
parent 596b751e24
commit 8bd81c1d4c
3 changed files with 21 additions and 1 deletions
@@ -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);
@@ -0,0 +1,12 @@
// "Invert 'if' condition" "true"
class A {
public void foo() {
if (!c) {
}
else {
a();
}
while (true) {
}
}
}
@@ -0,0 +1,8 @@
// "Invert 'if' condition" "true"
class A {
public void foo() {
<caret>if (c) a();
while (true) {
}
}
}