xref: /minix3/external/bsd/llvm/dist/clang/test/Lexer/keywords_test.cpp (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -std=c++03 -fsyntax-only %s
2*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -std=c++11 -DCXX11 -fsyntax-only %s
3*0a6a1f1dSLionel Sambuc 
4*0a6a1f1dSLionel Sambuc #define IS_KEYWORD(NAME) _Static_assert(!__is_identifier(NAME), #NAME)
5*0a6a1f1dSLionel Sambuc #define NOT_KEYWORD(NAME) _Static_assert(__is_identifier(NAME), #NAME)
6*0a6a1f1dSLionel Sambuc #define IS_TYPE(NAME) void is_##NAME##_type() { int f(NAME); }
7*0a6a1f1dSLionel Sambuc 
8*0a6a1f1dSLionel Sambuc #ifdef CXX11
9*0a6a1f1dSLionel Sambuc #define CXX11_KEYWORD(NAME)  IS_KEYWORD(NAME)
10*0a6a1f1dSLionel Sambuc #define CXX11_TYPE(NAME)     IS_TYPE(NAME)
11*0a6a1f1dSLionel Sambuc #else
12*0a6a1f1dSLionel Sambuc #define CXX11_KEYWORD(NAME)  NOT_KEYWORD(NAME)
13*0a6a1f1dSLionel Sambuc #define CXX11_TYPE(NAME)
14*0a6a1f1dSLionel Sambuc #endif
15*0a6a1f1dSLionel Sambuc 
16*0a6a1f1dSLionel Sambuc // C++11 keywords
17*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(nullptr);
18*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(decltype);
19*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(alignof);
20*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(alignas);
21*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(char16_t);
22*0a6a1f1dSLionel Sambuc CXX11_TYPE(char16_t);
23*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(char32_t);
24*0a6a1f1dSLionel Sambuc CXX11_TYPE(char32_t);
25*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(constexpr);
26*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(noexcept);
27*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(static_assert);
28*0a6a1f1dSLionel Sambuc CXX11_KEYWORD(thread_local);
29*0a6a1f1dSLionel Sambuc 
30*0a6a1f1dSLionel Sambuc // Clang extension
31*0a6a1f1dSLionel Sambuc IS_KEYWORD(__char16_t);
32*0a6a1f1dSLionel Sambuc IS_TYPE(__char16_t);
33*0a6a1f1dSLionel Sambuc IS_KEYWORD(__char32_t);
34*0a6a1f1dSLionel Sambuc IS_TYPE(__char32_t);
35