13f05d044SMark de Wever //===----------------------------------------------------------------------===//
23f05d044SMark de Wever //
33f05d044SMark de Wever // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
43f05d044SMark de Wever // See https://llvm.org/LICENSE.txt for license information.
53f05d044SMark de Wever // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
63f05d044SMark de Wever //
73f05d044SMark de Wever //===----------------------------------------------------------------------===//
83f05d044SMark de Wever //
93f05d044SMark de Wever // WARNING: This test was generated by generate_feature_test_macro_components.py
103f05d044SMark de Wever // and should not be edited manually.
113f05d044SMark de Wever //
123f05d044SMark de Wever // clang-format off
133f05d044SMark de Wever 
143f05d044SMark de Wever // UNSUPPORTED: no-localization
153f05d044SMark de Wever 
163f05d044SMark de Wever // <fstream>
173f05d044SMark de Wever 
183f05d044SMark de Wever // Test the feature test macros defined by <fstream>
193f05d044SMark de Wever 
203f05d044SMark de Wever /*  Constant                           Value
213f05d044SMark de Wever     __cpp_lib_fstream_native_handle    202306L [C++26]
223f05d044SMark de Wever */
233f05d044SMark de Wever 
243f05d044SMark de Wever #include <fstream>
253f05d044SMark de Wever #include "test_macros.h"
263f05d044SMark de Wever 
273f05d044SMark de Wever #if TEST_STD_VER < 14
283f05d044SMark de Wever 
293f05d044SMark de Wever # ifdef __cpp_lib_fstream_native_handle
303f05d044SMark de Wever #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
313f05d044SMark de Wever # endif
323f05d044SMark de Wever 
333f05d044SMark de Wever #elif TEST_STD_VER == 14
343f05d044SMark de Wever 
353f05d044SMark de Wever # ifdef __cpp_lib_fstream_native_handle
363f05d044SMark de Wever #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
373f05d044SMark de Wever # endif
383f05d044SMark de Wever 
393f05d044SMark de Wever #elif TEST_STD_VER == 17
403f05d044SMark de Wever 
413f05d044SMark de Wever # ifdef __cpp_lib_fstream_native_handle
423f05d044SMark de Wever #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
433f05d044SMark de Wever # endif
443f05d044SMark de Wever 
453f05d044SMark de Wever #elif TEST_STD_VER == 20
463f05d044SMark de Wever 
473f05d044SMark de Wever # ifdef __cpp_lib_fstream_native_handle
483f05d044SMark de Wever #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
493f05d044SMark de Wever # endif
503f05d044SMark de Wever 
513f05d044SMark de Wever #elif TEST_STD_VER == 23
523f05d044SMark de Wever 
533f05d044SMark de Wever # ifdef __cpp_lib_fstream_native_handle
543f05d044SMark de Wever #   error "__cpp_lib_fstream_native_handle should not be defined before c++26"
553f05d044SMark de Wever # endif
563f05d044SMark de Wever 
573f05d044SMark de Wever #elif TEST_STD_VER > 23
583f05d044SMark de Wever 
59*c6f3b7bcSNikolas Klauser # if !defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION)
603f05d044SMark de Wever #   ifndef __cpp_lib_fstream_native_handle
613f05d044SMark de Wever #     error "__cpp_lib_fstream_native_handle should be defined in c++26"
623f05d044SMark de Wever #   endif
633f05d044SMark de Wever #   if __cpp_lib_fstream_native_handle != 202306L
643f05d044SMark de Wever #     error "__cpp_lib_fstream_native_handle should have the value 202306L in c++26"
653f05d044SMark de Wever #   endif
66f2c84211SLouis Dionne # else
67f2c84211SLouis Dionne #   ifdef __cpp_lib_fstream_native_handle
68*c6f3b7bcSNikolas Klauser #     error "__cpp_lib_fstream_native_handle should not be defined when the requirement '!defined(_LIBCPP_VERSION) || (_LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION)' is not met!"
69f2c84211SLouis Dionne #   endif
70f2c84211SLouis Dionne # endif
713f05d044SMark de Wever 
723f05d044SMark de Wever #endif // TEST_STD_VER > 23
733f05d044SMark de Wever 
74