mirror of https://github.com/microsoft/clang.git
Define __has_cpp_attribute(fallthrough) to a more reasonable value. (What year is it?!)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262887 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a84dfe0729
commit
570d62ad3d
|
@ -742,7 +742,7 @@ def ExtVectorType : Attr {
|
|||
}
|
||||
|
||||
def FallThrough : StmtAttr {
|
||||
let Spellings = [CXX11<"", "fallthrough", 201503>,
|
||||
let Spellings = [CXX11<"", "fallthrough", 201603>,
|
||||
CXX11<"clang", "fallthrough">];
|
||||
// let Subjects = [NullStmt];
|
||||
let Documentation = [FallthroughDocs];
|
||||
|
|
|
@ -52,6 +52,16 @@
|
|||
int has_cxx14_deprecated_vers();
|
||||
#endif
|
||||
|
||||
// CHECK: has_cxx1z_nodiscard
|
||||
#if __has_cpp_attribute(nodiscard) == 201603
|
||||
int has_cxx1z_nodiscard();
|
||||
#endif
|
||||
|
||||
// CHECK: has_cxx1z_fallthrough
|
||||
#if __has_cpp_attribute(fallthrough) == 201603
|
||||
int has_cxx1z_fallthrough();
|
||||
#endif
|
||||
|
||||
// CHECK: has_declspec_uuid
|
||||
#if __has_declspec_attribute(uuid)
|
||||
int has_declspec_uuid();
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -std=c++1z -verify -Wc++1z-extensions %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify -DEXT -Wc++1z-extensions %s
|
||||
|
||||
#if !defined(EXT)
|
||||
static_assert(__has_cpp_attribute(nodiscard) == 201603);
|
||||
|
||||
struct [[nodiscard]] S {};
|
||||
S get_s();
|
||||
S& get_s_ref();
|
||||
|
@ -28,6 +25,10 @@ void f() {
|
|||
[[nodiscard nodiscard]] int wrong1(); // expected-error {{attribute 'nodiscard' cannot appear multiple times in an attribute specifier}}
|
||||
|
||||
namespace [[nodiscard]] N {} // expected-warning {{'nodiscard' attribute only applies to functions, methods, enums, and classes}}
|
||||
#else
|
||||
struct [[nodiscard]] S {}; // expected-warning {{use of the 'nodiscard' attribute is a C++1z extension}}
|
||||
#endif // EXT
|
||||
|
||||
#ifdef EXT
|
||||
// expected-warning@4 {{use of the 'nodiscard' attribute is a C++1z extension}}
|
||||
// expected-warning@8 {{use of the 'nodiscard' attribute is a C++1z extension}}
|
||||
// expected-warning@11 {{use of the 'nodiscard' attribute is a C++1z extension}}
|
||||
// expected-warning@25 2{{use of the 'nodiscard' attribute is a C++1z extension}}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue