//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// WARNING: This test was generated by generate_feature_test_macro_components.py
// and should not be edited manually.
//
// clang-format off

// <source_location>

// Test the feature test macros defined by <source_location>

/*  Constant                     Value
    __cpp_lib_source_location    201907L [C++20]
*/

#include <source_location>
#include "test_macros.h"

#if TEST_STD_VER < 14

# ifdef __cpp_lib_source_location
#   error "__cpp_lib_source_location should not be defined before c++20"
# endif

#elif TEST_STD_VER == 14

# ifdef __cpp_lib_source_location
#   error "__cpp_lib_source_location should not be defined before c++20"
# endif

#elif TEST_STD_VER == 17

# ifdef __cpp_lib_source_location
#   error "__cpp_lib_source_location should not be defined before c++20"
# endif

#elif TEST_STD_VER == 20

# if __has_builtin(__builtin_source_location)
#   ifndef __cpp_lib_source_location
#     error "__cpp_lib_source_location should be defined in c++20"
#   endif
#   if __cpp_lib_source_location != 201907L
#     error "__cpp_lib_source_location should have the value 201907L in c++20"
#   endif
# else
#   ifdef __cpp_lib_source_location
#     error "__cpp_lib_source_location should not be defined when __has_builtin(__builtin_source_location) is not defined!"
#   endif
# endif

#elif TEST_STD_VER > 20

# if __has_builtin(__builtin_source_location)
#   ifndef __cpp_lib_source_location
#     error "__cpp_lib_source_location should be defined in c++2b"
#   endif
#   if __cpp_lib_source_location != 201907L
#     error "__cpp_lib_source_location should have the value 201907L in c++2b"
#   endif
# else
#   ifdef __cpp_lib_source_location
#     error "__cpp_lib_source_location should not be defined when __has_builtin(__builtin_source_location) is not defined!"
#   endif
# endif

#endif // TEST_STD_VER > 20

int main(int, char**) { return 0; }
