From 1fd676d6baa55e64d73afa477257eb5f711dcf4f Mon Sep 17 00:00:00 2001 From: Pavel Dolgov Date: Tue, 21 Feb 2017 15:01:54 +0300 Subject: [PATCH] Java: Minor refactoring in the intention "Invert 'if' condition" - code reuse, nullability (IDEA-167957) --- .../impl/InvertIfConditionAction.java | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) 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 d37fbf3d8c74..71046a572197 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 @@ -241,11 +241,7 @@ public class InvertIfConditionAction extends PsiElementBaseIntentionAction { PsiElement parent = ifStatement.getParent(); if (parent != null) { if (!(parent instanceof PsiCodeBlock)) { - PsiCodeBlock codeBlock = factory.createCodeBlockFromText("{}", ifStatement); - codeBlock = (PsiCodeBlock)codeStyle.reformat(codeBlock); - codeBlock.add(ifStatement); - codeBlock = (PsiCodeBlock)ifStatement.replace(codeBlock); - ifStatement = (PsiIfStatement)codeBlock.getStatements()[0]; + ifStatement = (PsiIfStatement)wrapWithCodeBlock(ifStatement); parent = ifStatement.getParent(); thenBranch = ifStatement.getThenBranch(); } @@ -320,24 +316,25 @@ public class InvertIfConditionAction extends PsiElementBaseIntentionAction { ifStatement.setElseBranch(thenBranch); } - private static PsiIfStatement addAfterWithinCodeBlock(PsiIfStatement ifStatement, PsiStatement branch) { + private static PsiStatement wrapWithCodeBlock(@NotNull PsiStatement statement) { + final Project project = statement.getProject(); + final PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory(); + final CodeStyleManager codeStyle = CodeStyleManager.getInstance(project); + PsiCodeBlock codeBlock = factory.createCodeBlockFromText("{}", statement); + codeBlock = (PsiCodeBlock)codeStyle.reformat(codeBlock); + codeBlock.add(statement); + codeBlock = (PsiCodeBlock)statement.replace(codeBlock); + return codeBlock.getStatements()[0]; + } + + private static PsiIfStatement addAfterWithinCodeBlock(@NotNull PsiIfStatement ifStatement, @NotNull PsiStatement branch) { final PsiElement parent = ifStatement.getParent(); if (parent != null && !(parent instanceof PsiCodeBlock)) { - final Project project = ifStatement.getProject(); - final PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory(); - final CodeStyleManager codeStyle = CodeStyleManager.getInstance(project); - PsiCodeBlock codeBlock = factory.createCodeBlockFromText("{}", ifStatement); - codeBlock = (PsiCodeBlock)codeStyle.reformat(codeBlock); - final PsiIfStatement wrappedIfStatement = (PsiIfStatement)codeBlock.add(ifStatement); - - addAfter(wrappedIfStatement, branch); - codeBlock = (PsiCodeBlock)ifStatement.replace(codeBlock); - return (PsiIfStatement)codeBlock.getStatements()[0]; - } - else { - addAfter(ifStatement, branch); - return ifStatement; + branch = (PsiStatement)branch.copy(); + ifStatement = (PsiIfStatement)wrapWithCodeBlock(ifStatement); } + addAfter(ifStatement, branch); + return ifStatement; } static void addAfter(PsiIfStatement ifStatement, PsiStatement branch) throws IncorrectOperationException {