mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-23 10:07:41 +08:00
Implement feature test macros using a script.
Summary: This patch implements all the feature test macros libc++ currently supports, as specified by the standard or cppreference prior to C++2a. The tests and `<version>` header are generated using a script. The script contains a table of each feature test macro, the headers it should be accessible from, and its values of each dialect of C++. When a new feature test macro is added or needed, the table should be updated and the script re-run. Reviewers: mclow.lists, jfb, serge-sans-paille Reviewed By: mclow.lists Subscribers: arphaman, jfb, ldionne, libcxx-commits Differential Revision: https://reviews.llvm.org/D56750 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@351286 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
@@ -8,26 +7,50 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// <exception> feature macros
|
||||
// WARNING: This test was generated by generate_feature_test_macros_tests.py and
|
||||
// should not be edited manually.
|
||||
|
||||
/* Constant Value
|
||||
__cpp_lib_uncaught_exceptions 201411L
|
||||
// <exception>
|
||||
|
||||
// Test the feature test macros defined by <exception>
|
||||
|
||||
/* Constant Value
|
||||
__cpp_lib_uncaught_exceptions 201411L [C++17]
|
||||
*/
|
||||
|
||||
#include <exception>
|
||||
#include <cassert>
|
||||
#include "test_macros.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
// ensure that the macros that are supposed to be defined in <exception> are defined.
|
||||
#if TEST_STD_VER < 14
|
||||
|
||||
/*
|
||||
#if !defined(__cpp_lib_fooby)
|
||||
# error "__cpp_lib_fooby is not defined"
|
||||
#elif __cpp_lib_fooby < 201606L
|
||||
# error "__cpp_lib_fooby has an invalid value"
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
# ifdef __cpp_lib_uncaught_exceptions
|
||||
# error "__cpp_lib_uncaught_exceptions should not be defined before c++17"
|
||||
# endif
|
||||
|
||||
#elif TEST_STD_VER == 14
|
||||
|
||||
# ifdef __cpp_lib_uncaught_exceptions
|
||||
# error "__cpp_lib_uncaught_exceptions should not be defined before c++17"
|
||||
# endif
|
||||
|
||||
#elif TEST_STD_VER == 17
|
||||
|
||||
# ifndef __cpp_lib_uncaught_exceptions
|
||||
# error "__cpp_lib_uncaught_exceptions should be defined in c++17"
|
||||
# endif
|
||||
# if __cpp_lib_uncaught_exceptions != 201411L
|
||||
# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++17"
|
||||
# endif
|
||||
|
||||
#elif TEST_STD_VER > 17
|
||||
|
||||
# ifndef __cpp_lib_uncaught_exceptions
|
||||
# error "__cpp_lib_uncaught_exceptions should be defined in c++2a"
|
||||
# endif
|
||||
# if __cpp_lib_uncaught_exceptions != 201411L
|
||||
# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++2a"
|
||||
# endif
|
||||
|
||||
#endif // TEST_STD_VER > 17
|
||||
|
||||
int main() {}
|
||||
|
Reference in New Issue
Block a user