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 ff2c85192e67..017c7cfe5dc7 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 @@ -287,9 +287,14 @@ public class InvertIfConditionAction extends PsiElementBaseIntentionAction { PsiBlockStatement codeBlock = (PsiBlockStatement) factory.createStatementFromText("{}", ifStatement); - codeBlock.getCodeBlock().addRange(first, last); - ct.replaceAndRestoreComments(ifStatement.getThenBranch(), codeBlock); - first.getParent().deleteChildRange(first, last); + if (first == last && PsiUtil.isJavaToken(last, JavaTokenType.RBRACE)) { + ct.replaceAndRestoreComments(ifStatement.getThenBranch(), codeBlock); + } + else { + codeBlock.getCodeBlock().addRange(first, last); + ct.replaceAndRestoreComments(ifStatement.getThenBranch(), codeBlock); + first.getParent().deleteChildRange(first, last); + } } codeStyle.reformat(ifStatement); return ifStatement; diff --git a/java/java-tests/testData/codeInsight/invertIfCondition/afterUnreachable.java b/java/java-tests/testData/codeInsight/invertIfCondition/afterUnreachable.java new file mode 100644 index 000000000000..bb72a3020d57 --- /dev/null +++ b/java/java-tests/testData/codeInsight/invertIfCondition/afterUnreachable.java @@ -0,0 +1,20 @@ +// "Invert 'if' condition" "true" +class A { + void foo(boolean b, String[] entries) { + { + try { + String filePath = ""; + for (String entry : entries) { + final String rootPath = ""; + if (!b) { + } + else { + break; + } + } + } + finally { + } + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/invertIfCondition/beforeUnreachable.java b/java/java-tests/testData/codeInsight/invertIfCondition/beforeUnreachable.java new file mode 100644 index 000000000000..b47529cd8bc6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/invertIfCondition/beforeUnreachable.java @@ -0,0 +1,18 @@ +// "Invert 'if' condition" "true" +class A { + void foo(boolean b, String[] entries) { + { + try { + String filePath = ""; + for (String entry : entries) { + final String rootPath = ""; + if (b) { + break; + } + } + } + finally { + } + } + } +} \ No newline at end of file