1 | //===----------------------------------------------------------------------===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | // |
9 | // WARNING: This test was generated by generate_feature_test_macro_components.py |
10 | // and should not be edited manually. |
11 | // |
12 | // clang-format off |
13 | |
14 | // UNSUPPORTED: no-filesystem |
15 | |
16 | // <filesystem> |
17 | |
18 | // Test the feature test macros defined by <filesystem> |
19 | |
20 | /* Constant Value |
21 | __cpp_lib_char8_t 201907L [C++20] |
22 | __cpp_lib_filesystem 201703L [C++17] |
23 | __cpp_lib_format_path 202403L [C++23] |
24 | */ |
25 | |
26 | #include <filesystem> |
27 | #include "test_macros.h" |
28 | |
29 | #if TEST_STD_VER < 14 |
30 | |
31 | # ifdef __cpp_lib_char8_t |
32 | # error "__cpp_lib_char8_t should not be defined before c++20" |
33 | # endif |
34 | |
35 | # ifdef __cpp_lib_filesystem |
36 | # error "__cpp_lib_filesystem should not be defined before c++17" |
37 | # endif |
38 | |
39 | # ifdef __cpp_lib_format_path |
40 | # error "__cpp_lib_format_path should not be defined before c++23" |
41 | # endif |
42 | |
43 | #elif TEST_STD_VER == 14 |
44 | |
45 | # ifdef __cpp_lib_char8_t |
46 | # error "__cpp_lib_char8_t should not be defined before c++20" |
47 | # endif |
48 | |
49 | # ifdef __cpp_lib_filesystem |
50 | # error "__cpp_lib_filesystem should not be defined before c++17" |
51 | # endif |
52 | |
53 | # ifdef __cpp_lib_format_path |
54 | # error "__cpp_lib_format_path should not be defined before c++23" |
55 | # endif |
56 | |
57 | #elif TEST_STD_VER == 17 |
58 | |
59 | # ifdef __cpp_lib_char8_t |
60 | # error "__cpp_lib_char8_t should not be defined before c++20" |
61 | # endif |
62 | |
63 | # if !defined(_LIBCPP_VERSION) || (!defined(_LIBCPP_HAS_NO_FILESYSTEM) && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY) |
64 | # ifndef __cpp_lib_filesystem |
65 | # error "__cpp_lib_filesystem should be defined in c++17" |
66 | # endif |
67 | # if __cpp_lib_filesystem != 201703L |
68 | # error "__cpp_lib_filesystem should have the value 201703L in c++17" |
69 | # endif |
70 | # else |
71 | # ifdef __cpp_lib_filesystem |
72 | # error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (!defined(_LIBCPP_HAS_NO_FILESYSTEM) && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!" |
73 | # endif |
74 | # endif |
75 | |
76 | # ifdef __cpp_lib_format_path |
77 | # error "__cpp_lib_format_path should not be defined before c++23" |
78 | # endif |
79 | |
80 | #elif TEST_STD_VER == 20 |
81 | |
82 | # if defined(__cpp_char8_t) |
83 | # ifndef __cpp_lib_char8_t |
84 | # error "__cpp_lib_char8_t should be defined in c++20" |
85 | # endif |
86 | # if __cpp_lib_char8_t != 201907L |
87 | # error "__cpp_lib_char8_t should have the value 201907L in c++20" |
88 | # endif |
89 | # else |
90 | # ifdef __cpp_lib_char8_t |
91 | # error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!" |
92 | # endif |
93 | # endif |
94 | |
95 | # if !defined(_LIBCPP_VERSION) || (!defined(_LIBCPP_HAS_NO_FILESYSTEM) && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY) |
96 | # ifndef __cpp_lib_filesystem |
97 | # error "__cpp_lib_filesystem should be defined in c++20" |
98 | # endif |
99 | # if __cpp_lib_filesystem != 201703L |
100 | # error "__cpp_lib_filesystem should have the value 201703L in c++20" |
101 | # endif |
102 | # else |
103 | # ifdef __cpp_lib_filesystem |
104 | # error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (!defined(_LIBCPP_HAS_NO_FILESYSTEM) && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!" |
105 | # endif |
106 | # endif |
107 | |
108 | # ifdef __cpp_lib_format_path |
109 | # error "__cpp_lib_format_path should not be defined before c++23" |
110 | # endif |
111 | |
112 | #elif TEST_STD_VER == 23 |
113 | |
114 | # if defined(__cpp_char8_t) |
115 | # ifndef __cpp_lib_char8_t |
116 | # error "__cpp_lib_char8_t should be defined in c++23" |
117 | # endif |
118 | # if __cpp_lib_char8_t != 201907L |
119 | # error "__cpp_lib_char8_t should have the value 201907L in c++23" |
120 | # endif |
121 | # else |
122 | # ifdef __cpp_lib_char8_t |
123 | # error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!" |
124 | # endif |
125 | # endif |
126 | |
127 | # if !defined(_LIBCPP_VERSION) || (!defined(_LIBCPP_HAS_NO_FILESYSTEM) && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY) |
128 | # ifndef __cpp_lib_filesystem |
129 | # error "__cpp_lib_filesystem should be defined in c++23" |
130 | # endif |
131 | # if __cpp_lib_filesystem != 201703L |
132 | # error "__cpp_lib_filesystem should have the value 201703L in c++23" |
133 | # endif |
134 | # else |
135 | # ifdef __cpp_lib_filesystem |
136 | # error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (!defined(_LIBCPP_HAS_NO_FILESYSTEM) && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!" |
137 | # endif |
138 | # endif |
139 | |
140 | # if !defined(_LIBCPP_VERSION) |
141 | # ifndef __cpp_lib_format_path |
142 | # error "__cpp_lib_format_path should be defined in c++23" |
143 | # endif |
144 | # if __cpp_lib_format_path != 202403L |
145 | # error "__cpp_lib_format_path should have the value 202403L in c++23" |
146 | # endif |
147 | # else // _LIBCPP_VERSION |
148 | # ifdef __cpp_lib_format_path |
149 | # error "__cpp_lib_format_path should not be defined because it is unimplemented in libc++!" |
150 | # endif |
151 | # endif |
152 | |
153 | #elif TEST_STD_VER > 23 |
154 | |
155 | # if defined(__cpp_char8_t) |
156 | # ifndef __cpp_lib_char8_t |
157 | # error "__cpp_lib_char8_t should be defined in c++26" |
158 | # endif |
159 | # if __cpp_lib_char8_t != 201907L |
160 | # error "__cpp_lib_char8_t should have the value 201907L in c++26" |
161 | # endif |
162 | # else |
163 | # ifdef __cpp_lib_char8_t |
164 | # error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!" |
165 | # endif |
166 | # endif |
167 | |
168 | # if !defined(_LIBCPP_VERSION) || (!defined(_LIBCPP_HAS_NO_FILESYSTEM) && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY) |
169 | # ifndef __cpp_lib_filesystem |
170 | # error "__cpp_lib_filesystem should be defined in c++26" |
171 | # endif |
172 | # if __cpp_lib_filesystem != 201703L |
173 | # error "__cpp_lib_filesystem should have the value 201703L in c++26" |
174 | # endif |
175 | # else |
176 | # ifdef __cpp_lib_filesystem |
177 | # error "__cpp_lib_filesystem should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (!defined(_LIBCPP_HAS_NO_FILESYSTEM) && _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY)' is not met!" |
178 | # endif |
179 | # endif |
180 | |
181 | # if !defined(_LIBCPP_VERSION) |
182 | # ifndef __cpp_lib_format_path |
183 | # error "__cpp_lib_format_path should be defined in c++26" |
184 | # endif |
185 | # if __cpp_lib_format_path != 202403L |
186 | # error "__cpp_lib_format_path should have the value 202403L in c++26" |
187 | # endif |
188 | # else // _LIBCPP_VERSION |
189 | # ifdef __cpp_lib_format_path |
190 | # error "__cpp_lib_format_path should not be defined because it is unimplemented in libc++!" |
191 | # endif |
192 | # endif |
193 | |
194 | #endif // TEST_STD_VER > 23 |
195 | |
196 | |