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