1e356f681SHui Xie //===----------------------------------------------------------------------===// 2e356f681SHui Xie // 3e356f681SHui Xie // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4e356f681SHui Xie // See https://llvm.org/LICENSE.txt for license information. 5e356f681SHui Xie // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6e356f681SHui Xie // 7e356f681SHui Xie //===----------------------------------------------------------------------===// 8e356f681SHui Xie // 9e356f681SHui Xie // WARNING: This test was generated by generate_feature_test_macro_components.py 10e356f681SHui Xie // and should not be edited manually. 11e356f681SHui Xie // 12e356f681SHui Xie // clang-format off 13e356f681SHui Xie 14e356f681SHui Xie // <expected> 15e356f681SHui Xie 16e356f681SHui Xie // Test the feature test macros defined by <expected> 17e356f681SHui Xie 18e356f681SHui Xie /* Constant Value 1971400505SMark de Wever __cpp_lib_expected 202211L [C++23] 20*f49ccca8SMark de Wever __cpp_lib_freestanding_expected 202311L [C++26] 21e356f681SHui Xie */ 22e356f681SHui Xie 23e356f681SHui Xie #include <expected> 24e356f681SHui Xie #include "test_macros.h" 25e356f681SHui Xie 26e356f681SHui Xie #if TEST_STD_VER < 14 27e356f681SHui Xie 28e356f681SHui Xie # ifdef __cpp_lib_expected 2971400505SMark de Wever # error "__cpp_lib_expected should not be defined before c++23" 30e356f681SHui Xie # endif 31e356f681SHui Xie 32*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_expected 33*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_expected should not be defined before c++26" 34*f49ccca8SMark de Wever # endif 35*f49ccca8SMark de Wever 36e356f681SHui Xie #elif TEST_STD_VER == 14 37e356f681SHui Xie 38e356f681SHui Xie # ifdef __cpp_lib_expected 3971400505SMark de Wever # error "__cpp_lib_expected should not be defined before c++23" 40e356f681SHui Xie # endif 41e356f681SHui Xie 42*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_expected 43*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_expected should not be defined before c++26" 44*f49ccca8SMark de Wever # endif 45*f49ccca8SMark de Wever 46e356f681SHui Xie #elif TEST_STD_VER == 17 47e356f681SHui Xie 48e356f681SHui Xie # ifdef __cpp_lib_expected 4971400505SMark de Wever # error "__cpp_lib_expected should not be defined before c++23" 50e356f681SHui Xie # endif 51e356f681SHui Xie 52*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_expected 53*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_expected should not be defined before c++26" 54*f49ccca8SMark de Wever # endif 55*f49ccca8SMark de Wever 56e356f681SHui Xie #elif TEST_STD_VER == 20 57e356f681SHui Xie 58e356f681SHui Xie # ifdef __cpp_lib_expected 5971400505SMark de Wever # error "__cpp_lib_expected should not be defined before c++23" 60e356f681SHui Xie # endif 61e356f681SHui Xie 62*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_expected 63*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_expected should not be defined before c++26" 64*f49ccca8SMark de Wever # endif 65*f49ccca8SMark de Wever 6600c97cbcSMark de Wever #elif TEST_STD_VER == 23 67e356f681SHui Xie 68e356f681SHui Xie # ifndef __cpp_lib_expected 6971400505SMark de Wever # error "__cpp_lib_expected should be defined in c++23" 70e356f681SHui Xie # endif 71acce2a31Syronglin # if __cpp_lib_expected != 202211L 7271400505SMark de Wever # error "__cpp_lib_expected should have the value 202211L in c++23" 73e356f681SHui Xie # endif 74e356f681SHui Xie 75*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_expected 76*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_expected should not be defined before c++26" 77*f49ccca8SMark de Wever # endif 78*f49ccca8SMark de Wever 7900c97cbcSMark de Wever #elif TEST_STD_VER > 23 8000c97cbcSMark de Wever 8100c97cbcSMark de Wever # ifndef __cpp_lib_expected 8200c97cbcSMark de Wever # error "__cpp_lib_expected should be defined in c++26" 8300c97cbcSMark de Wever # endif 8400c97cbcSMark de Wever # if __cpp_lib_expected != 202211L 8500c97cbcSMark de Wever # error "__cpp_lib_expected should have the value 202211L in c++26" 8600c97cbcSMark de Wever # endif 8700c97cbcSMark de Wever 88*f49ccca8SMark de Wever # if !defined(_LIBCPP_VERSION) 89*f49ccca8SMark de Wever # ifndef __cpp_lib_freestanding_expected 90*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_expected should be defined in c++26" 91*f49ccca8SMark de Wever # endif 92*f49ccca8SMark de Wever # if __cpp_lib_freestanding_expected != 202311L 93*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_expected should have the value 202311L in c++26" 94*f49ccca8SMark de Wever # endif 95*f49ccca8SMark de Wever # else // _LIBCPP_VERSION 96*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_expected 97*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_expected should not be defined because it is unimplemented in libc++!" 98*f49ccca8SMark de Wever # endif 99*f49ccca8SMark de Wever # endif 100*f49ccca8SMark de Wever 10100c97cbcSMark de Wever #endif // TEST_STD_VER > 23 102e356f681SHui Xie 103