cxx0x_keyword_as_cxx98.cpp revision 0c91cce098fcf9081157c0a0d8b2282573926879
1877649045da2bb56ac52a536dbedf5ca7fa13faeDouglas Gregor// RUN: %clang_cc1 %s -verify -fsyntax-only 298d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith 30c91cce098fcf9081157c0a0d8b2282573926879Richard Smith#define constexpr const 40c91cce098fcf9081157c0a0d8b2282573926879Richard Smithconstexpr int x = 0; 50c91cce098fcf9081157c0a0d8b2282573926879Richard Smith#undef constexpr 698d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith 798d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithnamespace lib { 898d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith struct nullptr_t; 998d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith typedef nullptr_t nullptr; // expected-warning {{'nullptr' is a keyword in C++11}} 1098d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith} 1198d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith 1298d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith#define CONCAT(X,Y) CONCAT2(X,Y) 1398d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith#define CONCAT2(X,Y) X ## Y 1498d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint CONCAT(constexpr,ession); 1598d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith 1698d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith#define ID(X) X 1798d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithextern int ID(decltype); // expected-warning {{'decltype' is a keyword in C++11}} 1898d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith 1998d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithextern int CONCAT(align,of); // expected-warning {{'alignof' is a keyword in C++11}} 2098d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith 2198d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith#define static_assert(b, s) int CONCAT(check, __LINE__)[(b) ? 1 : 0]; 2298d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithstatic_assert(1 > 0, "hello"); // ok 2398d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith 2498d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith#define IF_CXX11(CXX11, CXX03) CXX03 2598d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithtypedef IF_CXX11(char16_t, wchar_t) my_wide_char_t; // ok 2698d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smith 2798d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint alignas; // expected-warning {{'alignas' is a keyword in C++11}} 2898d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint alignof; // already diagnosed in this TU 2998d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint char16_t; // expected-warning {{'char16_t' is a keyword in C++11}} 3098d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint char32_t; // expected-warning {{'char32_t' is a keyword in C++11}} 3198d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint constexpr; // expected-warning {{'constexpr' is a keyword in C++11}} 3298d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint decltype; // already diagnosed in this TU 3398d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint noexcept; // expected-warning {{'noexcept' is a keyword in C++11}} 3498d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint nullptr; // already diagnosed in this TU 3598d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint static_assert; // expected-warning {{'static_assert' is a keyword in C++11}} 3698d86b98b3fd0bd9c546123b16fd9995509aaae1Richard Smithint thread_local; // expected-warning {{'thread_local' is a keyword in C++11}} 37