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

source code of libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp