convert to nested ifs: accept no containing block

This commit is contained in:
Anna.Kozlova
2018-07-16 17:26:32 +02:00
parent 92fc888a6a
commit 8ee66e432e
4 changed files with 33 additions and 3 deletions
@@ -56,10 +56,16 @@ public class ConvertToNestedIfIntention extends Intention {
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(project).getElementFactory();
final PsiBlockStatement blockStatement = (PsiBlockStatement)elementFactory.createStatementFromText("{" + newStatementText + "}", returnStatement);
final PsiElement parent = returnStatement.getParent();
for (PsiStatement st : blockStatement.getCodeBlock().getStatements()) {
CodeStyleManager.getInstance(project).reformat(parent.addBefore(st, returnStatement));
if (parent instanceof PsiCodeBlock) {
for (PsiStatement st : blockStatement.getCodeBlock().getStatements()) {
CodeStyleManager.getInstance(project).reformat(parent.addBefore(st, returnStatement));
}
PsiReplacementUtil.replaceStatement(returnStatement, "return false;", tracker);
}
else {
blockStatement.getCodeBlock().add(elementFactory.createStatementFromText("return false;", returnStatement));
tracker.replaceAndRestoreComments(returnStatement, blockStatement);
}
PsiReplacementUtil.replaceStatement(returnStatement, "return false;", tracker);
}
private static StringBuilder buildIf(@Nullable PsiExpression expression,
@@ -0,0 +1,9 @@
package com.siyeh.ipp.trivialif.convert_to_nested_if;
public class X {
boolean m(boolean a, boolean b, boolean c) {
if (a) return <caret>b || c;//c1
return false;//c2
}
}
@@ -0,0 +1,14 @@
package com.siyeh.ipp.trivialif.convert_to_nested_if;
public class X {
boolean m(boolean a, boolean b, boolean c) {
//c1
if (a) {
if (b) r<caret>eturn true;
if (c) return true;
return false;
}
return false;//c2
}
}
@@ -22,6 +22,7 @@ public class ConvertToNestedIfIntentionTest extends IPPTestCase {
public void testNested() { doTest(); }
public void testStaircase() { doTest(); }
public void testNoBraces() { doTest(); }
public void testStaircaseWithParenthesis() { doTest(); }
public void testStaircaseWithOrInside() { doTest(); }
public void testOrStaircaseInside() { doTest(); }