improve "Ignore in then branch of 'if' statement with 'else' branch" option

This commit is contained in:
Bas Leijdekkers
2012-10-07 12:45:42 +02:00
parent 98fcf36c17
commit a1889aa5ca
2 changed files with 24 additions and 26 deletions
@@ -41,20 +41,7 @@ public class UnnecessaryReturnInspection extends BaseInspection {
@Override
@NotNull
public String getDisplayName() {
return InspectionGadgetsBundle.message(
"unnecessary.return.display.name");
}
@Override
public boolean isEnabledByDefault() {
return true;
}
@Override
public JComponent createOptionsPanel() {
return new SingleCheckboxOptionsPanel(
InspectionGadgetsBundle.message("unnecessary.return.option"),
this, "ignoreInThenBranch");
return InspectionGadgetsBundle.message("unnecessary.return.display.name");
}
@Override
@@ -68,6 +55,16 @@ public class UnnecessaryReturnInspection extends BaseInspection {
}
}
@Override
public boolean isEnabledByDefault() {
return true;
}
@Override
public JComponent createOptionsPanel() {
return new SingleCheckboxOptionsPanel(InspectionGadgetsBundle.message("unnecessary.return.option"), this, "ignoreInThenBranch");
}
@Override
public InspectionGadgetsFix buildFix(Object... infos) {
return new DeleteUnnecessaryStatementFix("return");
@@ -113,25 +110,19 @@ public class UnnecessaryReturnInspection extends BaseInspection {
if (!ControlFlowUtils.blockCompletesWithStatement(codeBlock, statement)) {
return;
}
if (ignoreInThenBranch && isInThenBranch(statement, statement.getParent())) {
if (ignoreInThenBranch && isInThenBranch(statement)) {
return;
}
registerStatementError(statement, Boolean.valueOf(constructor));
}
private boolean isInThenBranch(PsiReturnStatement statement, PsiElement parent) {
if (!(parent instanceof PsiCodeBlock)) {
private boolean isInThenBranch(PsiStatement statement) {
final PsiIfStatement ifStatement =
PsiTreeUtil.getParentOfType(statement, PsiIfStatement.class, true, PsiMethod.class, PsiLambdaExpression.class);
if (ifStatement == null) {
return false;
}
final PsiElement grandParent = parent.getParent();
if (grandParent == null) {
return false;
}
final PsiElement greatGrandParent = grandParent.getParent();
if (!(greatGrandParent instanceof PsiIfStatement)) {
return false;
}
final PsiStatement elseBranch = ((PsiIfStatement)greatGrandParent).getElseBranch();
final PsiStatement elseBranch = ifStatement.getElseBranch();
return elseBranch != null && !PsiTreeUtil.isAncestor(elseBranch, statement, true);
}
}
@@ -87,4 +87,11 @@ class C {
Callable<Integer> c = () -> { return 42; };
System.out.println(c);
}
void m5(boolean a) {
if (a) return;
else {
System.out.println();
}
}
}