diff options
author | Chris Lattner <sabre@nondot.org> | 2009-05-25 18:23:36 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-05-25 18:23:36 +0000 |
commit | 23464b8f14d4a84fa419423362de2e95e49460b9 (patch) | |
tree | c3f704fd8a99a5085b3d8a2cbb72c55261829af2 | |
parent | ae5342094afe2ccc11dfa15750f0753dab3ec820 (diff) | |
download | bcm5719-llvm-23464b8f14d4a84fa419423362de2e95e49460b9.tar.gz bcm5719-llvm-23464b8f14d4a84fa419423362de2e95e49460b9.zip |
tweak non-null check to put the caret on the function, but underline the
argument. This avoids the argument from being silenced when the argument is
the NULL macro, which is defined in a system header. This also makes the output
a bit nicer, e.g.:
t.c:8:3: warning: null passed to a callee which requires a non-null argument
func1(NULL, cp2, i1);
^ ~~~~
vs something like:
t.c:8:10: warning: argument is null where non-null is required
func1(NULL, cp2, i1);
^
llvm-svn: 72393
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 5a6babb3216..c4183a0e61b 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -793,9 +793,10 @@ Sema::CheckNonNullArguments(const NonNullAttr *NonNull, const CallExpr *TheCall) { for (NonNullAttr::iterator i = NonNull->begin(), e = NonNull->end(); i != e; ++i) { - const Expr *ArgExpr = TheCall->getArg(*i)->IgnoreParenCasts(); + const Expr *ArgExpr = TheCall->getArg(*i); if (ArgExpr->isNullPointerConstant(Context)) - Diag(ArgExpr->getLocStart(), diag::warn_null_arg); + Diag(TheCall->getCallee()->getLocStart(), diag::warn_null_arg) + << ArgExpr->getSourceRange(); } } |