ObviousNullCheckInspection: ignore null literals

This commit is contained in:
Tagir Valeev
2017-05-15 15:11:38 +07:00
parent 35cf1cc0a9
commit 67e97bc713
2 changed files with 3 additions and 2 deletions
@@ -67,9 +67,9 @@ public class ObviousNullCheckInspection extends BaseJavaBatchLocalInspectionTool
@Nullable
private static String getObviouslyNonNullExplanation(PsiExpression arg) {
if (arg == null) return null;
if (arg == null || ExpressionUtils.isNullLiteral(arg)) return null;
if (arg instanceof PsiNewExpression) return "newly created object";
if (arg instanceof PsiLiteralExpression && !ExpressionUtils.isNullLiteral(arg)) return "literal";
if (arg instanceof PsiLiteralExpression) return "literal";
if (arg.getType() instanceof PsiPrimitiveType) return "a value of primitive type";
if (arg instanceof PsiPolyadicExpression && ((PsiPolyadicExpression)arg).getOperationTokenType() == JavaTokenType.PLUS) {
return "concatenation";
@@ -9,6 +9,7 @@ abstract class ObviousNullCheck {
void test() {
assertNotNull(<warning descr="Useless null-check: a value of primitive type is never null">5 + 6</warning>);
Objects.requireNonNull(null);
Objects.requireNonNull(<warning descr="Useless null-check: literal is never null">"xyz"</warning>, "xyz");
Objects.requireNonNull((<warning descr="Useless null-check: concatenation is never null">getFoo() + getBar()</warning>));
Objects.requireNonNull(<warning descr="Useless null-check: newly created object is never null">new ArrayList()</warning>, () -> "new returned null");