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