mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
improve "Ignore in then branch of 'if' statement with 'else' branch" option
This commit is contained in:
+17
-26
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user