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 14a7f9895cSLouis Dionne // UNSUPPORTED: no-filesystem 152c6217f2SLouis Dionne 162c6217f2SLouis Dionne // <filesystem> 172c6217f2SLouis Dionne 182c6217f2SLouis Dionne // Test the feature test macros defined by <filesystem> 192c6217f2SLouis Dionne 202c6217f2SLouis Dionne /* Constant Value 21309aed30SNikolas Klauser __cpp_lib_char8_t 201907L [C++20] 222c6217f2SLouis Dionne __cpp_lib_filesystem 201703L [C++17] 23a4bef0caSStephan T. Lavavej __cpp_lib_format_path 202403L [C++26] 242c6217f2SLouis Dionne */ 252c6217f2SLouis Dionne 262c6217f2SLouis Dionne #include <filesystem> 272c6217f2SLouis Dionne #include "test_macros.h" 282c6217f2SLouis Dionne 292c6217f2SLouis Dionne #if TEST_STD_VER < 14 302c6217f2SLouis Dionne 312c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t 322c6217f2SLouis Dionne # error "__cpp_lib_char8_t should not be defined before c++20" 332c6217f2SLouis Dionne # endif 342c6217f2SLouis Dionne 352c6217f2SLouis Dionne # ifdef __cpp_lib_filesystem 362c6217f2SLouis Dionne # error "__cpp_lib_filesystem should not be defined before c++17" 372c6217f2SLouis Dionne # endif 382c6217f2SLouis Dionne 39b699a9baSLouis Dionne # ifdef __cpp_lib_format_path 40a4bef0caSStephan T. Lavavej # error "__cpp_lib_format_path should not be defined before c++26" 41b699a9baSLouis Dionne # endif 42b699a9baSLouis Dionne 432c6217f2SLouis Dionne #elif TEST_STD_VER == 14 442c6217f2SLouis Dionne 452c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t 462c6217f2SLouis Dionne # error "__cpp_lib_char8_t should not be defined before c++20" 472c6217f2SLouis Dionne # endif 482c6217f2SLouis Dionne 492c6217f2SLouis Dionne # ifdef __cpp_lib_filesystem 502c6217f2SLouis Dionne # error "__cpp_lib_filesystem should not be defined before c++17" 512c6217f2SLouis Dionne # endif 522c6217f2SLouis Dionne 53b699a9baSLouis Dionne # ifdef __cpp_lib_format_path 54a4bef0caSStephan T. Lavavej # error "__cpp_lib_format_path should not be defined before c++26" 55b699a9baSLouis Dionne # endif 56b699a9baSLouis Dionne 572c6217f2SLouis Dionne #elif TEST_STD_VER == 17 582c6217f2SLouis Dionne 592c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t 602c6217f2SLouis Dionne # error "__cpp_lib_char8_t should not be defined before c++20" 612c6217f2SLouis Dionne # endif 622c6217f2SLouis Dionne 63*c6f3b7bcSNikolas Klauser # if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY) 642c6217f2SLouis Dionne # ifndef __cpp_lib_filesystem 652c6217f2SLouis Dionne # error "__cpp_lib_filesystem should be defined in c++17" 662c6217f2SLouis Dionne # endif 672c6217f2SLouis Dionne # if __cpp_lib_filesystem != 201703L 682c6217f2SLouis Dionne # error "__cpp_lib_filesystem should have the value 201703L in c++17" 692c6217f2SLouis Dionne # endif 702c6217f2SLouis Dionne # else 712c6217f2SLouis Dionne # ifdef __cpp_lib_filesystem 72*c6f3b7bcSNikolas Klauser # error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!" 732c6217f2SLouis Dionne # endif 742c6217f2SLouis Dionne # endif 752c6217f2SLouis Dionne 76b699a9baSLouis Dionne # ifdef __cpp_lib_format_path 77a4bef0caSStephan T. Lavavej # error "__cpp_lib_format_path should not be defined before c++26" 78b699a9baSLouis Dionne # endif 79b699a9baSLouis Dionne 802c6217f2SLouis Dionne #elif TEST_STD_VER == 20 812c6217f2SLouis Dionne 822c6217f2SLouis Dionne # if defined(__cpp_char8_t) 832c6217f2SLouis Dionne # ifndef __cpp_lib_char8_t 842c6217f2SLouis Dionne # error "__cpp_lib_char8_t should be defined in c++20" 852c6217f2SLouis Dionne # endif 86309aed30SNikolas Klauser # if __cpp_lib_char8_t != 201907L 87309aed30SNikolas Klauser # error "__cpp_lib_char8_t should have the value 201907L in c++20" 882c6217f2SLouis Dionne # endif 892c6217f2SLouis Dionne # else 902c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t 91a72f6b03SMark de Wever # error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!" 922c6217f2SLouis Dionne # endif 932c6217f2SLouis Dionne # endif 942c6217f2SLouis Dionne 95*c6f3b7bcSNikolas Klauser # if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY) 962c6217f2SLouis Dionne # ifndef __cpp_lib_filesystem 972c6217f2SLouis Dionne # error "__cpp_lib_filesystem should be defined in c++20" 982c6217f2SLouis Dionne # endif 992c6217f2SLouis Dionne # if __cpp_lib_filesystem != 201703L 1002c6217f2SLouis Dionne # error "__cpp_lib_filesystem should have the value 201703L in c++20" 1012c6217f2SLouis Dionne # endif 1022c6217f2SLouis Dionne # else 1032c6217f2SLouis Dionne # ifdef __cpp_lib_filesystem 104*c6f3b7bcSNikolas Klauser # error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!" 1052c6217f2SLouis Dionne # endif 1062c6217f2SLouis Dionne # endif 1072c6217f2SLouis Dionne 108b699a9baSLouis Dionne # ifdef __cpp_lib_format_path 109a4bef0caSStephan T. Lavavej # error "__cpp_lib_format_path should not be defined before c++26" 110b699a9baSLouis Dionne # endif 111b699a9baSLouis Dionne 11200c97cbcSMark de Wever #elif TEST_STD_VER == 23 1132c6217f2SLouis Dionne 1142c6217f2SLouis Dionne # if defined(__cpp_char8_t) 1152c6217f2SLouis Dionne # ifndef __cpp_lib_char8_t 11671400505SMark de Wever # error "__cpp_lib_char8_t should be defined in c++23" 1172c6217f2SLouis Dionne # endif 118309aed30SNikolas Klauser # if __cpp_lib_char8_t != 201907L 11971400505SMark de Wever # error "__cpp_lib_char8_t should have the value 201907L in c++23" 1202c6217f2SLouis Dionne # endif 1212c6217f2SLouis Dionne # else 1222c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t 123a72f6b03SMark de Wever # error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!" 1242c6217f2SLouis Dionne # endif 1252c6217f2SLouis Dionne # endif 1262c6217f2SLouis Dionne 127*c6f3b7bcSNikolas Klauser # if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY) 1282c6217f2SLouis Dionne # ifndef __cpp_lib_filesystem 12971400505SMark de Wever # error "__cpp_lib_filesystem should be defined in c++23" 1302c6217f2SLouis Dionne # endif 1312c6217f2SLouis Dionne # if __cpp_lib_filesystem != 201703L 13271400505SMark de Wever # error "__cpp_lib_filesystem should have the value 201703L in c++23" 1332c6217f2SLouis Dionne # endif 1342c6217f2SLouis Dionne # else 1352c6217f2SLouis Dionne # ifdef __cpp_lib_filesystem 136*c6f3b7bcSNikolas Klauser # error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!" 1372c6217f2SLouis Dionne # endif 1382c6217f2SLouis Dionne # endif 1392c6217f2SLouis Dionne 140b699a9baSLouis Dionne # ifdef __cpp_lib_format_path 141a4bef0caSStephan T. Lavavej # error "__cpp_lib_format_path should not be defined before c++26" 142b699a9baSLouis Dionne # endif 143b699a9baSLouis Dionne 14400c97cbcSMark de Wever #elif TEST_STD_VER > 23 14500c97cbcSMark de Wever 14600c97cbcSMark de Wever # if defined(__cpp_char8_t) 14700c97cbcSMark de Wever # ifndef __cpp_lib_char8_t 14800c97cbcSMark de Wever # error "__cpp_lib_char8_t should be defined in c++26" 14900c97cbcSMark de Wever # endif 15000c97cbcSMark de Wever # if __cpp_lib_char8_t != 201907L 15100c97cbcSMark de Wever # error "__cpp_lib_char8_t should have the value 201907L in c++26" 15200c97cbcSMark de Wever # endif 15300c97cbcSMark de Wever # else 15400c97cbcSMark de Wever # ifdef __cpp_lib_char8_t 15500c97cbcSMark de Wever # error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!" 15600c97cbcSMark de Wever # endif 15700c97cbcSMark de Wever # endif 15800c97cbcSMark de Wever 159*c6f3b7bcSNikolas Klauser # if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY) 16000c97cbcSMark de Wever # ifndef __cpp_lib_filesystem 16100c97cbcSMark de Wever # error "__cpp_lib_filesystem should be defined in c++26" 16200c97cbcSMark de Wever # endif 16300c97cbcSMark de Wever # if __cpp_lib_filesystem != 201703L 16400c97cbcSMark de Wever # error "__cpp_lib_filesystem should have the value 201703L in c++26" 16500c97cbcSMark de Wever # endif 16600c97cbcSMark de Wever # else 16700c97cbcSMark de Wever # ifdef __cpp_lib_filesystem 168*c6f3b7bcSNikolas Klauser # error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!" 16900c97cbcSMark de Wever # endif 17000c97cbcSMark de Wever # endif 17100c97cbcSMark de Wever 172b699a9baSLouis Dionne # if !defined(_LIBCPP_VERSION) 173b699a9baSLouis Dionne # ifndef __cpp_lib_format_path 174b699a9baSLouis Dionne # error "__cpp_lib_format_path should be defined in c++26" 175b699a9baSLouis Dionne # endif 176b699a9baSLouis Dionne # if __cpp_lib_format_path != 202403L 177b699a9baSLouis Dionne # error "__cpp_lib_format_path should have the value 202403L in c++26" 178b699a9baSLouis Dionne # endif 179b699a9baSLouis Dionne # else // _LIBCPP_VERSION 180b699a9baSLouis Dionne # ifdef __cpp_lib_format_path 181b699a9baSLouis Dionne # error "__cpp_lib_format_path should not be defined because it is unimplemented in libc++!" 182b699a9baSLouis Dionne # endif 183b699a9baSLouis Dionne # endif 184b699a9baSLouis Dionne 18500c97cbcSMark de Wever #endif // TEST_STD_VER > 23 1862c6217f2SLouis Dionne 187