diff options
Diffstat (limited to 'clang')
3 files changed, 9 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 5a5874ee7a6..497713f6602 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -13076,7 +13076,8 @@ bool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) { StringRef LiteralName = FnDecl->getDeclName().getCXXLiteralIdentifier()->getName(); - if (LiteralName[0] != '_') { + if (LiteralName[0] != '_' && + !getSourceManager().isInSystemHeader(FnDecl->getLocation())) { // C++11 [usrlit.suffix]p1: // Literal suffix identifiers that do not start with an underscore // are reserved for future standardization. diff --git a/clang/test/SemaCXX/no-warn-user-defined-literals-in-system-headers.cpp b/clang/test/SemaCXX/no-warn-user-defined-literals-in-system-headers.cpp new file mode 100644 index 00000000000..ee5b0c47b9f --- /dev/null +++ b/clang/test/SemaCXX/no-warn-user-defined-literals-in-system-headers.cpp @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wsystem-headers -isystem %S %s + +#include <no-warn-user-defined-literals-in-system-headers.h> + +void operator "" bar(long double); // expected-warning{{user-defined literal suffixes not starting with '_' are reserved}} diff --git a/clang/test/SemaCXX/no-warn-user-defined-literals-in-system-headers.h b/clang/test/SemaCXX/no-warn-user-defined-literals-in-system-headers.h new file mode 100644 index 00000000000..d1e2583168f --- /dev/null +++ b/clang/test/SemaCXX/no-warn-user-defined-literals-in-system-headers.h @@ -0,0 +1,2 @@ +// Header for no-warn-user-defined-literals-in-system-headers.cpp +void operator "" foo (const char *); |

