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 
14*a7f9895cSLouis Dionne // UNSUPPORTED: no-threads
152c6217f2SLouis Dionne 
162c6217f2SLouis Dionne // <thread>
172c6217f2SLouis Dionne 
182c6217f2SLouis Dionne // Test the feature test macros defined by <thread>
192c6217f2SLouis Dionne 
202c6217f2SLouis Dionne /*  Constant             Value
212c6217f2SLouis Dionne     __cpp_lib_jthread    201911L [C++20]
222c6217f2SLouis Dionne */
232c6217f2SLouis Dionne 
242c6217f2SLouis Dionne #include <thread>
252c6217f2SLouis Dionne #include "test_macros.h"
262c6217f2SLouis Dionne 
272c6217f2SLouis Dionne #if TEST_STD_VER < 14
282c6217f2SLouis Dionne 
292c6217f2SLouis Dionne # ifdef __cpp_lib_jthread
302c6217f2SLouis Dionne #   error "__cpp_lib_jthread should not be defined before c++20"
312c6217f2SLouis Dionne # endif
322c6217f2SLouis Dionne 
332c6217f2SLouis Dionne #elif TEST_STD_VER == 14
342c6217f2SLouis Dionne 
352c6217f2SLouis Dionne # ifdef __cpp_lib_jthread
362c6217f2SLouis Dionne #   error "__cpp_lib_jthread should not be defined before c++20"
372c6217f2SLouis Dionne # endif
382c6217f2SLouis Dionne 
392c6217f2SLouis Dionne #elif TEST_STD_VER == 17
402c6217f2SLouis Dionne 
412c6217f2SLouis Dionne # ifdef __cpp_lib_jthread
422c6217f2SLouis Dionne #   error "__cpp_lib_jthread should not be defined before c++20"
432c6217f2SLouis Dionne # endif
442c6217f2SLouis Dionne 
452c6217f2SLouis Dionne #elif TEST_STD_VER == 20
462c6217f2SLouis Dionne 
472c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION)
482c6217f2SLouis Dionne #   ifndef __cpp_lib_jthread
492c6217f2SLouis Dionne #     error "__cpp_lib_jthread should be defined in c++20"
502c6217f2SLouis Dionne #   endif
512c6217f2SLouis Dionne #   if __cpp_lib_jthread != 201911L
522c6217f2SLouis Dionne #     error "__cpp_lib_jthread should have the value 201911L in c++20"
532c6217f2SLouis Dionne #   endif
542c6217f2SLouis Dionne # else // _LIBCPP_VERSION
552c6217f2SLouis Dionne #   ifdef __cpp_lib_jthread
562c6217f2SLouis Dionne #     error "__cpp_lib_jthread should not be defined because it is unimplemented in libc++!"
572c6217f2SLouis Dionne #   endif
582c6217f2SLouis Dionne # endif
592c6217f2SLouis Dionne 
602c6217f2SLouis Dionne #elif TEST_STD_VER > 20
612c6217f2SLouis Dionne 
622c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION)
632c6217f2SLouis Dionne #   ifndef __cpp_lib_jthread
642c6217f2SLouis Dionne #     error "__cpp_lib_jthread should be defined in c++2b"
652c6217f2SLouis Dionne #   endif
662c6217f2SLouis Dionne #   if __cpp_lib_jthread != 201911L
672c6217f2SLouis Dionne #     error "__cpp_lib_jthread should have the value 201911L in c++2b"
682c6217f2SLouis Dionne #   endif
692c6217f2SLouis Dionne # else // _LIBCPP_VERSION
702c6217f2SLouis Dionne #   ifdef __cpp_lib_jthread
712c6217f2SLouis Dionne #     error "__cpp_lib_jthread should not be defined because it is unimplemented in libc++!"
722c6217f2SLouis Dionne #   endif
732c6217f2SLouis Dionne # endif
742c6217f2SLouis Dionne 
752c6217f2SLouis Dionne #endif // TEST_STD_VER > 20
762c6217f2SLouis Dionne 
77