| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: c++03, c++11, c++14 | ||
| // UNSUPPORTED: libcpp-has-no-filesystem-library | ||
|
|
||
| // <filesystem> | ||
|
|
||
| // Test that <filesystem> includes all the other headers it's supposed to. | ||
|
|
||
| #include <filesystem> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_FILESYSTEM) | ||
| # error "<filesystem> was expected to define _LIBCPP_FILESYSTEM" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<filesystem> should include <compare> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <forward_list> | ||
|
|
||
| // Test that <forward_list> includes all the other headers it's supposed to. | ||
|
|
||
| #include <forward_list> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_FORWARD_LIST) | ||
| # error "<forward_list> was expected to define _LIBCPP_FORWARD_LIST" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<forward_list> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<forward_list> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: libcpp-has-no-localization | ||
|
|
||
| // <ios> | ||
|
|
||
| // Test that <ios> includes all the other headers it's supposed to. | ||
|
|
||
| #include <ios> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_IOS) | ||
| # error "<ios> was expected to define _LIBCPP_IOS" | ||
| #endif | ||
| #if !defined(_LIBCPP_IOSFWD) | ||
| # error "<ios> should include <iosfwd> in C++03 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: libcpp-has-no-localization | ||
|
|
||
| // <iostream> | ||
|
|
||
| // Test that <iostream> includes all the other headers it's supposed to. | ||
|
|
||
| #include <iostream> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_IOSTREAM) | ||
| # error "<iostream> was expected to define _LIBCPP_IOSTREAM" | ||
| #endif | ||
| #if !defined(_LIBCPP_IOS) | ||
| # error "<iostream> should include <ios> in C++03 and later" | ||
| #endif | ||
| #if !defined(_LIBCPP_ISTREAM) | ||
| # error "<iostream> should include <istream> in C++03 and later" | ||
| #endif | ||
| #if !defined(_LIBCPP_OSTREAM) | ||
| # error "<iostream> should include <ostream> in C++03 and later" | ||
| #endif | ||
| #if !defined(_LIBCPP_STREAMBUF) | ||
| # error "<iostream> should include <streambuf> in C++03 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <iterator> | ||
|
|
||
| // Test that <iterator> includes all the other headers it's supposed to. | ||
|
|
||
| #include <iterator> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_ITERATOR) | ||
| # error "<iterator> was expected to define _LIBCPP_ITERATOR" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<iterator> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_CONCEPTS) | ||
| # error "<iterator> should include <concepts> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <list> | ||
|
|
||
| // Test that <list> includes all the other headers it's supposed to. | ||
|
|
||
| #include <list> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_LIST) | ||
| # error "<list> was expected to define _LIBCPP_LIST" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<list> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<list> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <map> | ||
|
|
||
| // Test that <map> includes all the other headers it's supposed to. | ||
|
|
||
| #include <map> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_MAP) | ||
| # error "<map> was expected to define _LIBCPP_MAP" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<map> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<map> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <memory> | ||
|
|
||
| // Test that <memory> includes all the other headers it's supposed to. | ||
|
|
||
| #include <memory> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_MEMORY) | ||
| # error "<memory> was expected to define _LIBCPP_MEMORY" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<memory> should include <compare> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: c++03, c++11, c++14 | ||
|
|
||
| // <optional> | ||
|
|
||
| // Test that <optional> includes all the other headers it's supposed to. | ||
|
|
||
| #include <optional> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_OPTIONAL) | ||
| # error "<optional> was expected to define _LIBCPP_OPTIONAL" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<optional> should include <compare> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <queue> | ||
|
|
||
| // Test that <queue> includes all the other headers it's supposed to. | ||
|
|
||
| #include <queue> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_QUEUE) | ||
| # error "<queue> was expected to define _LIBCPP_QUEUE" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<queue> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<queue> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <random> | ||
|
|
||
| // Test that <random> includes all the other headers it's supposed to. | ||
|
|
||
| #include <random> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_RANDOM) | ||
| # error "<random> was expected to define _LIBCPP_RANDOM" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<random> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: libcpp-has-no-localization | ||
|
|
||
| // <regex> | ||
|
|
||
| // Test that <regex> includes all the other headers it's supposed to. | ||
|
|
||
| #include <regex> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_REGEX) | ||
| # error "<regex> was expected to define _LIBCPP_REGEX" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<regex> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<regex> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <set> | ||
|
|
||
| // Test that <set> includes all the other headers it's supposed to. | ||
|
|
||
| #include <set> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_SET) | ||
| # error "<set> was expected to define _LIBCPP_SET" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<set> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<set> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <stack> | ||
|
|
||
| // Test that <stack> includes all the other headers it's supposed to. | ||
|
|
||
| #include <stack> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_STACK) | ||
| # error "<stack> was expected to define _LIBCPP_STACK" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<stack> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<stack> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <string> | ||
|
|
||
| // Test that <string> includes all the other headers it's supposed to. | ||
|
|
||
| #include <string> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_STRING) | ||
| # error "<string> was expected to define _LIBCPP_STRING" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<string> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<string> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: c++03, c++11, c++14 | ||
|
|
||
| // <string_view> | ||
|
|
||
| // Test that <string_view> includes all the other headers it's supposed to. | ||
|
|
||
| #include <string_view> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_STRING_VIEW) | ||
| # error "<string_view> was expected to define _LIBCPP_STRING_VIEW" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<string_view> should include <compare> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: c++03 | ||
|
|
||
| // <system_error> | ||
|
|
||
| // Test that <system_error> includes all the other headers it's supposed to. | ||
|
|
||
| #include <system_error> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_SYSTEM_ERROR) | ||
| # error "<system_error> was expected to define _LIBCPP_SYSTEM_ERROR" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<system_error> should include <compare> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <tgmath.h> | ||
|
|
||
| // Test that <tgmath.h> includes all the other headers it's supposed to. | ||
|
|
||
| #include <tgmath.h> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_TGMATH_H) | ||
| # error "<tgmath.h> was expected to define _LIBCPP_TGMATH_H" | ||
| #endif | ||
| #if !defined(_LIBCPP_CMATH) | ||
| # error "<tgmath.h> should include <cmath> in C++03 and later" | ||
| #endif | ||
| #if !defined(_LIBCPP_COMPLEX) | ||
| # error "<tgmath.h> should include <complex> in C++03 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: c++03 | ||
| // UNSUPPORTED: libcpp-has-no-threads | ||
|
|
||
| // <thread> | ||
|
|
||
| // Test that <thread> includes all the other headers it's supposed to. | ||
|
|
||
| #include <thread> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_THREAD) | ||
| # error "<thread> was expected to define _LIBCPP_THREAD" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<thread> should include <compare> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: c++03 | ||
|
|
||
| // <tuple> | ||
|
|
||
| // Test that <tuple> includes all the other headers it's supposed to. | ||
|
|
||
| #include <tuple> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_TUPLE) | ||
| # error "<tuple> was expected to define _LIBCPP_TUPLE" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<tuple> should include <compare> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <typeindex> | ||
|
|
||
| // Test that <typeindex> includes all the other headers it's supposed to. | ||
|
|
||
| #include <typeindex> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_TYPEINDEX) | ||
| # error "<typeindex> was expected to define _LIBCPP_TYPEINDEX" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<typeindex> should include <compare> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: c++03 | ||
|
|
||
| // <unordered_map> | ||
|
|
||
| // Test that <unordered_map> includes all the other headers it's supposed to. | ||
|
|
||
| #include <unordered_map> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_UNORDERED_MAP) | ||
| # error "<unordered_map> was expected to define _LIBCPP_UNORDERED_MAP" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<unordered_map> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<unordered_map> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: c++03 | ||
|
|
||
| // <unordered_set> | ||
|
|
||
| // Test that <unordered_set> includes all the other headers it's supposed to. | ||
|
|
||
| #include <unordered_set> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_UNORDERED_SET) | ||
| # error "<unordered_set> was expected to define _LIBCPP_UNORDERED_SET" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<unordered_set> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<unordered_set> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <utility> | ||
|
|
||
| // Test that <utility> includes all the other headers it's supposed to. | ||
|
|
||
| #include <utility> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_UTILITY) | ||
| # error "<utility> was expected to define _LIBCPP_UTILITY" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<utility> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<utility> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <valarray> | ||
|
|
||
| // Test that <valarray> includes all the other headers it's supposed to. | ||
|
|
||
| #include <valarray> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_VALARRAY) | ||
| # error "<valarray> was expected to define _LIBCPP_VALARRAY" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<valarray> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // UNSUPPORTED: c++03, c++11, c++14 | ||
|
|
||
| // <variant> | ||
|
|
||
| // Test that <variant> includes all the other headers it's supposed to. | ||
|
|
||
| #include <variant> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_VARIANT) | ||
| # error "<variant> was expected to define _LIBCPP_VARIANT" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<variant> should include <compare> in C++20 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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_header_inclusion_tests.py | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
|
|
||
| // <vector> | ||
|
|
||
| // Test that <vector> includes all the other headers it's supposed to. | ||
|
|
||
| #include <vector> | ||
| #include "test_macros.h" | ||
|
|
||
| #if !defined(_LIBCPP_VECTOR) | ||
| # error "<vector> was expected to define _LIBCPP_VECTOR" | ||
| #endif | ||
| #if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE) | ||
| # error "<vector> should include <compare> in C++20 and later" | ||
| #endif | ||
| #if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST) | ||
| # error "<vector> should include <initializer_list> in C++11 and later" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,203 @@ | ||
| #!/usr/bin/env python | ||
|
|
||
| import os | ||
|
|
||
|
|
||
| def get_libcxx_paths(): | ||
| utils_path = os.path.dirname(os.path.abspath(__file__)) | ||
| script_name = os.path.basename(__file__) | ||
| assert os.path.exists(utils_path) | ||
| src_root = os.path.dirname(utils_path) | ||
| test_path = os.path.join(src_root, 'test', 'libcxx', 'inclusions') | ||
| assert os.path.exists(test_path) | ||
| assert os.path.exists(os.path.join(test_path, 'algorithm.inclusions.compile.pass.cpp')) | ||
| return script_name, src_root, test_path | ||
|
|
||
|
|
||
| script_name, source_root, test_path = get_libcxx_paths() | ||
|
|
||
|
|
||
| # This table was produced manually, by grepping the TeX source of the Standard's | ||
| # library clauses for the string "#include". Each header's synopsis contains | ||
| # explicit "#include" directives for its mandatory inclusions. | ||
| # For example, [algorithm.syn] contains "#include <initializer_list>". | ||
| # | ||
| mandatory_inclusions = { | ||
| "algorithm": ["initializer_list"], | ||
| "array": ["compare", "initializer_list"], | ||
| "bitset": ["iosfwd", "string"], | ||
| "chrono": ["compare"], | ||
| "cinttypes": ["cstdint"], | ||
| "complex.h": ["complex"], | ||
| # TODO "coroutine": ["compare"], | ||
| "deque": ["compare", "initializer_list"], | ||
| "filesystem": ["compare"], | ||
| "forward_list": ["compare", "initializer_list"], | ||
| "ios": ["iosfwd"], | ||
| "iostream": ["ios", "istream", "ostream", "streambuf"], | ||
| "iterator": ["compare", "concepts"], | ||
| "list": ["compare", "initializer_list"], | ||
| "map": ["compare", "initializer_list"], | ||
| "memory": ["compare"], | ||
| "optional": ["compare"], | ||
| "queue": ["compare", "initializer_list"], | ||
| "random": ["initializer_list"], | ||
| # TODO "ranges": ["compare", "initializer_list", "iterator"], | ||
| "regex": ["compare", "initializer_list"], | ||
| "set": ["compare", "initializer_list"], | ||
| "stack": ["compare", "initializer_list"], | ||
| "string": ["compare", "initializer_list"], | ||
| "string_view": ["compare"], | ||
| # TODO "syncstream": ["ostream"], | ||
| "system_error": ["compare"], | ||
| "tgmath.h": ["cmath", "complex"], | ||
| "thread": ["compare"], | ||
| "tuple": ["compare"], | ||
| "typeindex": ["compare"], | ||
| "unordered_map": ["compare", "initializer_list"], | ||
| "unordered_set": ["compare", "initializer_list"], | ||
| "utility": ["compare", "initializer_list"], | ||
| "valarray": ["initializer_list"], | ||
| "variant": ["compare"], | ||
| "vector": ["compare", "initializer_list"], | ||
| } | ||
|
|
||
| new_in_version = { | ||
| "chrono": "11", | ||
| "compare": "20", | ||
| "concepts": "20", | ||
| "coroutine": "20", | ||
| "filesystem": "17", | ||
| "initializer_list": "11", | ||
| "optional": "17", | ||
| "system_error": "11", | ||
| "thread": "11", | ||
| "tuple": "11", | ||
| "unordered_map": "11", | ||
| "unordered_set": "11", | ||
| "string_view": "17", | ||
| "ranges": "20", | ||
| "syncstream": "20", | ||
| "variant": "17", | ||
| } | ||
|
|
||
| assert all(v == sorted(v) for k, v in mandatory_inclusions.items()) | ||
|
|
||
| # Map from each header to the Lit annotations that should be used for | ||
| # tests that include that header. | ||
| # | ||
| # For example, when threads are not supported, any test | ||
| # that includes <thread> should be marked as UNSUPPORTED, because including | ||
| # <thread> is a hard error in that case. | ||
| lit_markup = { | ||
| "atomic": ["UNSUPPORTED: libcpp-has-no-threads"], | ||
| "barrier": ["UNSUPPORTED: libcpp-has-no-threads"], | ||
| "filesystem": ["UNSUPPORTED: libcpp-has-no-filesystem-library"], | ||
| "iomanip": ["UNSUPPORTED: libcpp-has-no-localization"], | ||
| "istream": ["UNSUPPORTED: libcpp-has-no-localization"], | ||
| "ios": ["UNSUPPORTED: libcpp-has-no-localization"], | ||
| "iostream": ["UNSUPPORTED: libcpp-has-no-localization"], | ||
| "latch": ["UNSUPPORTED: libcpp-has-no-threads"], | ||
| "locale": ["UNSUPPORTED: libcpp-has-no-localization"], | ||
| "ostream": ["UNSUPPORTED: libcpp-has-no-localization"], | ||
| "regex": ["UNSUPPORTED: libcpp-has-no-localization"], | ||
| "semaphore": ["UNSUPPORTED: libcpp-has-no-threads"], | ||
| "shared_mutex": ["UNSUPPORTED: libcpp-has-no-threads"], | ||
| "thread": ["UNSUPPORTED: libcpp-has-no-threads"], | ||
| } | ||
|
|
||
|
|
||
| def get_std_ver_test(includee): | ||
| v = new_in_version.get(includee, "03") | ||
| if v == "03": | ||
| return '' | ||
| versions = ["03", "11", "14", "17", "20"] | ||
| return 'TEST_STD_VER > {} && '.format(max(i for i in versions if i < v)) | ||
|
|
||
|
|
||
| def get_unsupported_line(includee): | ||
| v = new_in_version.get(includee, "03") | ||
| return { | ||
| "03": [], | ||
| "11": ['UNSUPPORTED: c++03'], | ||
| "14": ['UNSUPPORTED: c++03, c++11'], | ||
| "17": ['UNSUPPORTED: c++03, c++11, c++14'], | ||
| "20": ['UNSUPPORTED: c++03, c++11, c++14, c++17'], | ||
| "2b": ['UNSUPPORTED: c++03, c++11, c++14, c++17, c++20'], | ||
| }[v] | ||
|
|
||
|
|
||
| def get_libcpp_header_symbol(header_name): | ||
| return '_LIBCPP_' + header_name.upper().replace('.', '_') | ||
|
|
||
|
|
||
| def get_includer_symbol_test(includer): | ||
| symbol = get_libcpp_header_symbol(includer) | ||
| return """ | ||
| #if !defined({symbol}) | ||
| # error "{message}" | ||
| #endif | ||
| """.strip().format( | ||
| symbol=symbol, | ||
| message="<{}> was expected to define {}".format(includer, symbol), | ||
| ) | ||
|
|
||
|
|
||
| def get_ifdef(includer, includee): | ||
| version = max(new_in_version.get(h, "03") for h in [includer, includee]) | ||
| symbol = get_libcpp_header_symbol(includee) | ||
| return """ | ||
| #if {includee_test}!defined({symbol}) | ||
| # error "{message}" | ||
| #endif | ||
| """.strip().format( | ||
| includee_test=get_std_ver_test(includee), | ||
| symbol=symbol, | ||
| message="<{}> should include <{}> in C++{} and later".format(includer, includee, version) | ||
| ) | ||
|
|
||
|
|
||
| test_body_template = """ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // 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 {script_name} | ||
| // and should not be edited manually. | ||
| // | ||
| // clang-format off | ||
| {markup} | ||
| // <{header}> | ||
| // Test that <{header}> includes all the other headers it's supposed to. | ||
| #include <{header}> | ||
| #include "test_macros.h" | ||
| {test_includers_symbol} | ||
| {test_per_includee} | ||
| """.strip() | ||
|
|
||
|
|
||
| def produce_tests(): | ||
| for includer, includees in mandatory_inclusions.items(): | ||
| markup_tags = get_unsupported_line(includer) + lit_markup.get(includer, []) | ||
| test_body = test_body_template.format( | ||
| script_name=script_name, | ||
| header=includer, | ||
| markup=('\n' + '\n'.join('// ' + m for m in markup_tags) + '\n') if markup_tags else '', | ||
| test_includers_symbol=get_includer_symbol_test(includer), | ||
| test_per_includee='\n'.join(get_ifdef(includer, includee) for includee in includees), | ||
| ) | ||
| test_name = "{header}.inclusions.compile.pass.cpp".format(header=includer) | ||
| out_path = os.path.join(test_path, test_name) | ||
| with open(out_path, 'w', newline='\n') as f: | ||
| f.write(test_body + '\n') | ||
|
|
||
|
|
||
| if __name__ == '__main__': | ||
| produce_tests() |