12c6217f2SLouis Dionne //===----------------------------------------------------------------------===//
22c6217f2SLouis Dionne //
32c6217f2SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42c6217f2SLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
52c6217f2SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
62c6217f2SLouis Dionne //
72c6217f2SLouis Dionne //===----------------------------------------------------------------------===//
82c6217f2SLouis Dionne //
92c6217f2SLouis Dionne // WARNING: This test was generated by generate_feature_test_macro_components.py
102c6217f2SLouis Dionne // and should not be edited manually.
112c6217f2SLouis Dionne //
122c6217f2SLouis Dionne // clang-format off
132c6217f2SLouis Dionne 
142c6217f2SLouis Dionne // <limits>
152c6217f2SLouis Dionne 
162c6217f2SLouis Dionne // Test the feature test macros defined by <limits>
172c6217f2SLouis Dionne 
182c6217f2SLouis Dionne /*  Constant             Value
19309aed30SNikolas Klauser     __cpp_lib_char8_t    201907L [C++20]
202c6217f2SLouis Dionne */
212c6217f2SLouis Dionne 
222c6217f2SLouis Dionne #include <limits>
232c6217f2SLouis Dionne #include "test_macros.h"
242c6217f2SLouis Dionne 
252c6217f2SLouis Dionne #if TEST_STD_VER < 14
262c6217f2SLouis Dionne 
272c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t
282c6217f2SLouis Dionne #   error "__cpp_lib_char8_t should not be defined before c++20"
292c6217f2SLouis Dionne # endif
302c6217f2SLouis Dionne 
312c6217f2SLouis Dionne #elif TEST_STD_VER == 14
322c6217f2SLouis Dionne 
332c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t
342c6217f2SLouis Dionne #   error "__cpp_lib_char8_t should not be defined before c++20"
352c6217f2SLouis Dionne # endif
362c6217f2SLouis Dionne 
372c6217f2SLouis Dionne #elif TEST_STD_VER == 17
382c6217f2SLouis Dionne 
392c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t
402c6217f2SLouis Dionne #   error "__cpp_lib_char8_t should not be defined before c++20"
412c6217f2SLouis Dionne # endif
422c6217f2SLouis Dionne 
432c6217f2SLouis Dionne #elif TEST_STD_VER == 20
442c6217f2SLouis Dionne 
452c6217f2SLouis Dionne # if defined(__cpp_char8_t)
462c6217f2SLouis Dionne #   ifndef __cpp_lib_char8_t
472c6217f2SLouis Dionne #     error "__cpp_lib_char8_t should be defined in c++20"
482c6217f2SLouis Dionne #   endif
49309aed30SNikolas Klauser #   if __cpp_lib_char8_t != 201907L
50309aed30SNikolas Klauser #     error "__cpp_lib_char8_t should have the value 201907L in c++20"
512c6217f2SLouis Dionne #   endif
522c6217f2SLouis Dionne # else
532c6217f2SLouis Dionne #   ifdef __cpp_lib_char8_t
54a72f6b03SMark de Wever #     error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
552c6217f2SLouis Dionne #   endif
562c6217f2SLouis Dionne # endif
572c6217f2SLouis Dionne 
58*00c97cbcSMark de Wever #elif TEST_STD_VER == 23
592c6217f2SLouis Dionne 
602c6217f2SLouis Dionne # if defined(__cpp_char8_t)
612c6217f2SLouis Dionne #   ifndef __cpp_lib_char8_t
6271400505SMark de Wever #     error "__cpp_lib_char8_t should be defined in c++23"
632c6217f2SLouis Dionne #   endif
64309aed30SNikolas Klauser #   if __cpp_lib_char8_t != 201907L
6571400505SMark de Wever #     error "__cpp_lib_char8_t should have the value 201907L in c++23"
662c6217f2SLouis Dionne #   endif
672c6217f2SLouis Dionne # else
682c6217f2SLouis Dionne #   ifdef __cpp_lib_char8_t
69a72f6b03SMark de Wever #     error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
702c6217f2SLouis Dionne #   endif
712c6217f2SLouis Dionne # endif
722c6217f2SLouis Dionne 
73*00c97cbcSMark de Wever #elif TEST_STD_VER > 23
74*00c97cbcSMark de Wever 
75*00c97cbcSMark de Wever # if defined(__cpp_char8_t)
76*00c97cbcSMark de Wever #   ifndef __cpp_lib_char8_t
77*00c97cbcSMark de Wever #     error "__cpp_lib_char8_t should be defined in c++26"
78*00c97cbcSMark de Wever #   endif
79*00c97cbcSMark de Wever #   if __cpp_lib_char8_t != 201907L
80*00c97cbcSMark de Wever #     error "__cpp_lib_char8_t should have the value 201907L in c++26"
81*00c97cbcSMark de Wever #   endif
82*00c97cbcSMark de Wever # else
83*00c97cbcSMark de Wever #   ifdef __cpp_lib_char8_t
84*00c97cbcSMark de Wever #     error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!"
85*00c97cbcSMark de Wever #   endif
86*00c97cbcSMark de Wever # endif
87*00c97cbcSMark de Wever 
88*00c97cbcSMark de Wever #endif // TEST_STD_VER > 23
892c6217f2SLouis Dionne 
90