mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-14 14:56:47 +00:00
-Wsentinel: Suggest nullptr in C++11 instead of NULL
llvm-svn: 221945
This commit is contained in:
parent
29d880bdc7
commit
92493e5e96
@ -398,8 +398,8 @@ void Sema::DiagnoseSentinelCalls(NamedDecl *D, SourceLocation Loc,
|
||||
if (sentinelExpr->isValueDependent()) return;
|
||||
if (Context.isSentinelNullExpr(sentinelExpr)) return;
|
||||
|
||||
// Pick a reasonable string to insert. Optimistically use 'nil' or
|
||||
// 'NULL' if those are actually defined in the context. Only use
|
||||
// Pick a reasonable string to insert. Optimistically use 'nil', 'nullptr',
|
||||
// or 'NULL' if those are actually defined in the context. Only use
|
||||
// 'nil' for ObjC methods, where it's much more likely that the
|
||||
// variadic arguments form a list of object pointers.
|
||||
SourceLocation MissingNilLoc
|
||||
@ -408,6 +408,8 @@ void Sema::DiagnoseSentinelCalls(NamedDecl *D, SourceLocation Loc,
|
||||
if (calleeType == CT_Method &&
|
||||
PP.getIdentifierInfo("nil")->hasMacroDefinition())
|
||||
NullValue = "nil";
|
||||
else if (getLangOpts().CPlusPlus11)
|
||||
NullValue = "nullptr";
|
||||
else if (PP.getIdentifierInfo("NULL")->hasMacroDefinition())
|
||||
NullValue = "NULL";
|
||||
else
|
||||
|
@ -1,7 +1,11 @@
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||
// RUN: not %clang_cc1 -fsyntax-only %s -fdiagnostics-parseable-fixits 2>&1 | \
|
||||
// RUN: FileCheck %s --check-prefix=C
|
||||
// RUN: not %clang_cc1 -fsyntax-only %s -fdiagnostics-parseable-fixits -x c++ -std=c++11 2>&1 | \
|
||||
// RUN: FileCheck %s --check-prefix=CXX11
|
||||
int x __attribute__((sentinel)); //expected-warning{{'sentinel' attribute only applies to functions, methods and blocks}}
|
||||
|
||||
void f1(int a, ...) __attribute__ ((sentinel));
|
||||
void f1(int a, ...) __attribute__ ((sentinel)); // expected-note {{function has been explicitly marked sentinel here}}
|
||||
void f2(int a, ...) __attribute__ ((sentinel(1)));
|
||||
|
||||
void f3(int a, ...) __attribute__ ((sentinel("hello"))); //expected-error{{'sentinel' attribute requires parameter 1 to be an integer constant}}
|
||||
@ -13,3 +17,10 @@ void f5(int a) __attribute__ ((sentinel)); //expected-warning{{'sentinel' attrib
|
||||
|
||||
|
||||
void f6() __attribute__((__sentinel__)); // expected-warning {{'sentinel' attribute requires named arguments}}
|
||||
|
||||
void g() {
|
||||
// The integer literal zero is not a sentinel.
|
||||
f1(1, 0); // expected-warning {{missing sentinel in function call}}
|
||||
// C: fix-it:{{.*}}:{23:10-23:10}:", (void*) 0"
|
||||
// CXX11: fix-it:{{.*}}:{23:10-23:10}:", nullptr"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user