forked from OSchip/llvm-project
[libc++] Header inclusion tests.
As mandated by the Standard's various synopses, e.g. [iterator.synopsis]. Searching the TeX source for '#include' is a good way to find all of these mandates. The new tests are all autogenerated by utils/generate_header_inclusion_tests.py. I was SHOCKED by how many mandates there are, and how many of them libc++ wasn't conforming with. Differential Revision: https://reviews.llvm.org/D99309
This commit is contained in:
parent
ae318beb35
commit
2d0f1fa472
|
@ -45,9 +45,10 @@ Adding a new header TODO
|
|||
When adding a new header to libc++:
|
||||
|
||||
1. Add a test under ``test/libcxx`` that the new header defines ``_LIBCPP_VERSION``. See ``test/libcxx/algorithms/version.pass.cpp`` for an example.
|
||||
2. Run ``python utils/generate_header_tests.py``, verify and commit the modifications.
|
||||
3. Create a submodule in ``include/module.modulemap`` for the new header.
|
||||
4. Update the ``include/CMakeLists.txt`` file to include the new header.
|
||||
2. Run ``python utils/generate_header_tests.py``; verify and commit the changes.
|
||||
3. Modify ``python utils/generate_header_inclusion_tests.py``; run it; verify and commit the changes.
|
||||
4. Create a submodule in ``include/module.modulemap`` for the new header.
|
||||
5. Update the ``include/CMakeLists.txt`` file to include the new header.
|
||||
|
||||
Exporting new symbols from the library
|
||||
======================================
|
||||
|
|
|
@ -825,6 +825,7 @@ constexpr chrono::year operator ""y(unsigned lo
|
|||
|
||||
#include <__config>
|
||||
#include <__availability>
|
||||
#include <compare>
|
||||
#include <ctime>
|
||||
#include <type_traits>
|
||||
#include <ratio>
|
||||
|
|
|
@ -162,6 +162,7 @@ template <class T, class Allocator, class Predicate>
|
|||
|
||||
#include <__config>
|
||||
#include <__split_buffer>
|
||||
#include <compare>
|
||||
#include <type_traits>
|
||||
#include <initializer_list>
|
||||
#include <iterator>
|
||||
|
|
|
@ -234,6 +234,7 @@
|
|||
#include <cstddef>
|
||||
#include <cstdlib>
|
||||
#include <chrono>
|
||||
#include <compare>
|
||||
#include <iterator>
|
||||
#include <iosfwd>
|
||||
#include <memory>
|
||||
|
|
|
@ -418,6 +418,8 @@ template <class E> constexpr const E* data(initializer_list<E> il) noexcept;
|
|||
#include <iosfwd> // for forward declarations of vector and string.
|
||||
#include <__functional_base>
|
||||
#include <type_traits>
|
||||
#include <compare>
|
||||
#include <concepts>
|
||||
#include <cstddef>
|
||||
#include <initializer_list>
|
||||
#include <__memory/base.h>
|
||||
|
|
|
@ -480,6 +480,8 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred); // C++20
|
|||
#include <__config>
|
||||
#include <__tree>
|
||||
#include <__node_handle>
|
||||
#include <compare>
|
||||
#include <initializer_list>
|
||||
#include <iterator> // __libcpp_erase_if_container
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
|
|
@ -668,6 +668,7 @@ void* align(size_t alignment, size_t size, void*& ptr, size_t& space);
|
|||
#include <__availability>
|
||||
#include <type_traits>
|
||||
#include <typeinfo>
|
||||
#include <compare>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <new>
|
||||
|
|
|
@ -150,6 +150,7 @@ template<class T>
|
|||
#include <__availability>
|
||||
#include <__debug>
|
||||
#include <__functional_base>
|
||||
#include <compare>
|
||||
#include <functional>
|
||||
#include <initializer_list>
|
||||
#include <new>
|
||||
|
|
|
@ -179,6 +179,7 @@ template <class T, class Container, class Compare>
|
|||
*/
|
||||
|
||||
#include <__config>
|
||||
#include <compare>
|
||||
#include <deque>
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
|
|
|
@ -765,6 +765,7 @@ typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
|
|||
#include <__config>
|
||||
#include <stdexcept>
|
||||
#include <__locale>
|
||||
#include <compare>
|
||||
#include <initializer_list>
|
||||
#include <utility>
|
||||
#include <iterator>
|
||||
|
|
|
@ -428,7 +428,9 @@ erase_if(multiset<Key, Compare, Allocator>& c, Predicate pred); // C++20
|
|||
#include <__config>
|
||||
#include <__tree>
|
||||
#include <__node_handle>
|
||||
#include <compare>
|
||||
#include <functional>
|
||||
#include <initializer_list>
|
||||
#include <iterator> // __libcpp_erase_if_container
|
||||
#include <version>
|
||||
|
||||
|
|
|
@ -514,6 +514,7 @@ basic_string<char32_t> operator "" s( const char32_t *str, size_t len ); // C++1
|
|||
*/
|
||||
|
||||
#include <__config>
|
||||
#include <compare>
|
||||
#include <string_view>
|
||||
#include <iosfwd>
|
||||
#include <cstring>
|
||||
|
|
|
@ -182,6 +182,7 @@ namespace std {
|
|||
#include <__string>
|
||||
#include <iosfwd>
|
||||
#include <algorithm>
|
||||
#include <compare>
|
||||
#include <iterator>
|
||||
#include <limits>
|
||||
#include <stdexcept>
|
||||
|
|
|
@ -145,6 +145,7 @@ template <> struct hash<std::error_condition>;
|
|||
#include <__config>
|
||||
#include <__errc>
|
||||
#include <__functional_base> // unary_function
|
||||
#include <compare>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
|
|
|
@ -151,6 +151,7 @@ template <class... Types>
|
|||
|
||||
#include <__config>
|
||||
#include <__tuple>
|
||||
#include <compare>
|
||||
#include <cstddef>
|
||||
#include <type_traits>
|
||||
#include <__functional_base>
|
||||
|
|
|
@ -47,6 +47,7 @@ struct hash<type_index>
|
|||
#include <__config>
|
||||
#include <typeinfo>
|
||||
#include <__functional_base>
|
||||
#include <compare>
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
#pragma GCC system_header
|
||||
|
|
|
@ -434,6 +434,7 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
|
|||
#include <__config>
|
||||
#include <__hash_table>
|
||||
#include <__node_handle>
|
||||
#include <compare>
|
||||
#include <functional>
|
||||
#include <iterator> // __libcpp_erase_if_container
|
||||
#include <stdexcept>
|
||||
|
|
|
@ -389,6 +389,7 @@ template <class Value, class Hash, class Pred, class Alloc>
|
|||
#include <__config>
|
||||
#include <__hash_table>
|
||||
#include <__node_handle>
|
||||
#include <compare>
|
||||
#include <functional>
|
||||
#include <iterator> // __libcpp_erase_if_container
|
||||
#include <version>
|
||||
|
|
|
@ -201,6 +201,7 @@ template <class T>
|
|||
|
||||
#include <__config>
|
||||
#include <__tuple>
|
||||
#include <compare>
|
||||
#include <type_traits>
|
||||
#include <initializer_list>
|
||||
#include <cstddef>
|
||||
|
|
|
@ -203,6 +203,7 @@ namespace std {
|
|||
#include <__availability>
|
||||
#include <__tuple>
|
||||
#include <array>
|
||||
#include <compare>
|
||||
#include <exception>
|
||||
#include <functional>
|
||||
#include <initializer_list>
|
||||
|
|
|
@ -276,6 +276,7 @@ erase_if(vector<T, Allocator>& c, Predicate pred); // C++20
|
|||
#include <__bit_reference>
|
||||
#include <type_traits>
|
||||
#include <climits>
|
||||
#include <compare>
|
||||
#include <limits>
|
||||
#include <initializer_list>
|
||||
#include <memory>
|
||||
|
|
|
@ -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
|
||||
|
||||
// <algorithm>
|
||||
|
||||
// Test that <algorithm> includes all the other headers it's supposed to.
|
||||
|
||||
#include <algorithm>
|
||||
#include "test_macros.h"
|
||||
|
||||
#if !defined(_LIBCPP_ALGORITHM)
|
||||
# error "<algorithm> was expected to define _LIBCPP_ALGORITHM"
|
||||
#endif
|
||||
#if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST)
|
||||
# error "<algorithm> should include <initializer_list> in C++11 and later"
|
||||
#endif
|
|
@ -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
|
||||
|
||||
// <array>
|
||||
|
||||
// Test that <array> includes all the other headers it's supposed to.
|
||||
|
||||
#include <array>
|
||||
#include "test_macros.h"
|
||||
|
||||
#if !defined(_LIBCPP_ARRAY)
|
||||
# error "<array> was expected to define _LIBCPP_ARRAY"
|
||||
#endif
|
||||
#if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE)
|
||||
# error "<array> should include <compare> in C++20 and later"
|
||||
#endif
|
||||
#if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST)
|
||||
# error "<array> should include <initializer_list> in C++11 and later"
|
||||
#endif
|
|
@ -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
|
||||
|
||||
// <bitset>
|
||||
|
||||
// Test that <bitset> includes all the other headers it's supposed to.
|
||||
|
||||
#include <bitset>
|
||||
#include "test_macros.h"
|
||||
|
||||
#if !defined(_LIBCPP_BITSET)
|
||||
# error "<bitset> was expected to define _LIBCPP_BITSET"
|
||||
#endif
|
||||
#if !defined(_LIBCPP_IOSFWD)
|
||||
# error "<bitset> should include <iosfwd> in C++03 and later"
|
||||
#endif
|
||||
#if !defined(_LIBCPP_STRING)
|
||||
# error "<bitset> should include <string> in C++03 and later"
|
||||
#endif
|
|
@ -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
|
||||
|
||||
// <chrono>
|
||||
|
||||
// Test that <chrono> includes all the other headers it's supposed to.
|
||||
|
||||
#include <chrono>
|
||||
#include "test_macros.h"
|
||||
|
||||
#if !defined(_LIBCPP_CHRONO)
|
||||
# error "<chrono> was expected to define _LIBCPP_CHRONO"
|
||||
#endif
|
||||
#if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE)
|
||||
# error "<chrono> should include <compare> in C++20 and later"
|
||||
#endif
|
|
@ -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
|
||||
|
||||
// <cinttypes>
|
||||
|
||||
// Test that <cinttypes> includes all the other headers it's supposed to.
|
||||
|
||||
#include <cinttypes>
|
||||
#include "test_macros.h"
|
||||
|
||||
#if !defined(_LIBCPP_CINTTYPES)
|
||||
# error "<cinttypes> was expected to define _LIBCPP_CINTTYPES"
|
||||
#endif
|
||||
#if !defined(_LIBCPP_CSTDINT)
|
||||
# error "<cinttypes> should include <cstdint> in C++03 and later"
|
||||
#endif
|
|
@ -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
|
||||
|
||||
// <complex.h>
|
||||
|
||||
// Test that <complex.h> includes all the other headers it's supposed to.
|
||||
|
||||
#include <complex.h>
|
||||
#include "test_macros.h"
|
||||
|
||||
#if !defined(_LIBCPP_COMPLEX_H)
|
||||
# error "<complex.h> was expected to define _LIBCPP_COMPLEX_H"
|
||||
#endif
|
||||
#if !defined(_LIBCPP_COMPLEX)
|
||||
# error "<complex.h> should include <complex> in C++03 and later"
|
||||
#endif
|
|
@ -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
|
||||
|
||||
// <deque>
|
||||
|
||||
// Test that <deque> includes all the other headers it's supposed to.
|
||||
|
||||
#include <deque>
|
||||
#include "test_macros.h"
|
||||
|
||||
#if !defined(_LIBCPP_DEQUE)
|
||||
# error "<deque> was expected to define _LIBCPP_DEQUE"
|
||||
#endif
|
||||
#if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE)
|
||||
# error "<deque> should include <compare> in C++20 and later"
|
||||
#endif
|
||||
#if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST)
|
||||
# error "<deque> should include <initializer_list> in C++11 and later"
|
||||
#endif
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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()
|
Loading…
Reference in New Issue