IDEA-163678 "Passing non-null argument to 'Optional'" warning expected

This commit is contained in:
peter
2016-11-09 14:31:09 +01:00
parent 20ed942a28
commit b261c7fd57
2 changed files with 9 additions and 2 deletions
@@ -1252,7 +1252,8 @@ public class ControlFlowAnalyzer extends JavaElementVisitor {
}
PsiExpression[] expressions = expression.getArgumentList().getExpressions();
PsiElement method = methodExpression.resolve();
JavaResolveResult result = methodExpression.advancedResolve(false);
PsiElement method = result.getElement();
PsiParameter[] parameters = method instanceof PsiMethod ? ((PsiMethod)method).getParameterList().getParameters() : null;
boolean isEqualsCall = expressions.length == 1 && method instanceof PsiMethod &&
"equals".equals(((PsiMethod)method).getName()) && parameters.length == 1 &&
@@ -1263,7 +1264,7 @@ public class ControlFlowAnalyzer extends JavaElementVisitor {
PsiExpression paramExpr = expressions[i];
paramExpr.accept(this);
if (parameters != null && i < parameters.length) {
generateBoxingUnboxingInstructionFor(paramExpr, parameters[i].getType());
generateBoxingUnboxingInstructionFor(paramExpr, result.getSubstitutor().substitute(parameters[i].getType()));
}
if (i == 0 && isEqualsCall) {
// stack: .., qualifier, arg1
@@ -20,5 +20,11 @@ class Test {
return Optional.ofNullable(<warning descr="Passing 'null' argument to 'Optional'">null</warning>);
}
long field;
Optional<Long> getName4() {
return Optional.ofNullable(<warning descr="Passing a non-null argument to 'Optional'">field</warning>);
}
}