[libcxx-commits] [libcxx] 45307f1 - [libc++] Refactor the mandatory header inclusion tests to .gen.py
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jun 1 19:56:47 PDT 2023
Author: Louis Dionne
Date: 2023-06-01T19:56:30-07:00
New Revision: 45307f1b0d27831206b2e8d9bb95d0cd64f3a922
URL: https://github.com/llvm/llvm-project/commit/45307f1b0d27831206b2e8d9bb95d0cd64f3a922
DIFF: https://github.com/llvm/llvm-project/commit/45307f1b0d27831206b2e8d9bb95d0cd64f3a922.diff
LOG: [libc++] Refactor the mandatory header inclusion tests to .gen.py
This allows removing a bunch of boilerplate from the test suite and
reducing the amount of manual stuff contributors have to do when they
add a new public header.
Differential Revision: https://reviews.llvm.org/D151830
Added:
libcxx/test/libcxx/header_inclusions.gen.py
Modified:
libcxx/docs/Contributing.rst
libcxx/utils/CMakeLists.txt
libcxx/utils/libcxx/test/header_information.py
Removed:
libcxx/test/libcxx/inclusions/algorithm.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/array.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/bitset.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/chrono.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/cinttypes.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/complex.h.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/coroutine.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/deque.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/filesystem.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/forward_list.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/ios.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/iostream.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/iterator.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/list.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/map.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/memory.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/optional.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/queue.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/random.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/ranges.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/regex.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/set.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/stack.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/string.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/string_view.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/system_error.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/tgmath.h.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/thread.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/tuple.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/typeindex.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/unordered_map.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/unordered_set.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/utility.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/valarray.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/variant.inclusions.compile.pass.cpp
libcxx/test/libcxx/inclusions/vector.inclusions.compile.pass.cpp
libcxx/utils/generate_header_inclusion_tests.py
################################################################################
diff --git a/libcxx/docs/Contributing.rst b/libcxx/docs/Contributing.rst
index 159fa924b3b1f..5e7f2aaa9b075 100644
--- a/libcxx/docs/Contributing.rst
+++ b/libcxx/docs/Contributing.rst
@@ -48,7 +48,7 @@ sure you don't forget anything:
- Did you add it to ``include/module.modulemap.in``?
- Did you add it to ``include/CMakeLists.txt``?
- - If it's a public header, did you update ``utils/generate_header_inclusion_tests.py``?
+ - If it's a public header, did you update ``utils/libcxx/test/header_information.py``?
- Did you add the relevant feature test macro(s) for your feature? Did you update the ``generate_feature_test_macro_components.py`` script with it?
- Did you run the ``libcxx-generate-files`` target and verify its output?
diff --git a/libcxx/test/libcxx/header_inclusions.gen.py b/libcxx/test/libcxx/header_inclusions.gen.py
new file mode 100644
index 0000000000000..3273f013ea3b3
--- /dev/null
+++ b/libcxx/test/libcxx/header_inclusions.gen.py
@@ -0,0 +1,47 @@
+#===----------------------------------------------------------------------===##
+#
+# 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
+#
+#===----------------------------------------------------------------------===##
+
+# Test that all headers include all the other headers they're supposed to, as
+# prescribed by the Standard.
+
+# RUN: %{python} %s %{libcxx}/utils
+
+import sys
+sys.path.append(sys.argv[1])
+from libcxx.test.header_information import header_restrictions, public_headers, mandatory_inclusions
+
+for header in public_headers:
+ test_condition_begin = '#if ' + header_restrictions[header] if header in header_restrictions else ''
+ test_condition_end = '#endif' if header in header_restrictions else ''
+
+ header_guard = lambda h: f"_LIBCPP_{h.upper().replace('.', '_').replace('/', '_')}"
+
+ # <cassert> has no header guards
+ if header == 'cassert':
+ checks = ''
+ else:
+ checks = f'''
+#ifndef {header_guard(header)}
+# error <{header}> was expected to define a header guard {header_guard(header)}
+#endif
+'''
+ for includee in mandatory_inclusions.get(header, []):
+ checks += f'''
+#ifndef {header_guard(includee)}
+# error <{header}> was expected to include <{includee}>
+#endif
+'''
+
+ print(f"""\
+//--- {header}.compile.pass.cpp
+#include <__config>
+{test_condition_begin}
+#include <{header}>
+{checks}
+{test_condition_end}
+""")
diff --git a/libcxx/test/libcxx/inclusions/algorithm.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/algorithm.inclusions.compile.pass.cpp
deleted file mode 100644
index d2fde39d33128..0000000000000
--- a/libcxx/test/libcxx/inclusions/algorithm.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/array.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/array.inclusions.compile.pass.cpp
deleted file mode 100644
index 7ec19fb0e23ea..0000000000000
--- a/libcxx/test/libcxx/inclusions/array.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/bitset.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/bitset.inclusions.compile.pass.cpp
deleted file mode 100644
index c8d413c1d57f7..0000000000000
--- a/libcxx/test/libcxx/inclusions/bitset.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/chrono.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/chrono.inclusions.compile.pass.cpp
deleted file mode 100644
index ffcaeed4e728f..0000000000000
--- a/libcxx/test/libcxx/inclusions/chrono.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/cinttypes.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/cinttypes.inclusions.compile.pass.cpp
deleted file mode 100644
index 61c0797a8074a..0000000000000
--- a/libcxx/test/libcxx/inclusions/cinttypes.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/complex.h.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/complex.h.inclusions.compile.pass.cpp
deleted file mode 100644
index 5d2e943e6285a..0000000000000
--- a/libcxx/test/libcxx/inclusions/complex.h.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/coroutine.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/coroutine.inclusions.compile.pass.cpp
deleted file mode 100644
index d1ac6f3933a59..0000000000000
--- a/libcxx/test/libcxx/inclusions/coroutine.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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, c++17
-
-// <coroutine>
-
-// Test that <coroutine> includes all the other headers it's supposed to.
-
-#include <coroutine>
-#include "test_macros.h"
-
-#if !defined(_LIBCPP_COROUTINE)
- # error "<coroutine> was expected to define _LIBCPP_COROUTINE"
-#endif
-#if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE)
- # error "<coroutine> should include <compare> in C++20 and later"
-#endif
diff --git a/libcxx/test/libcxx/inclusions/deque.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/deque.inclusions.compile.pass.cpp
deleted file mode 100644
index d1563de00e05e..0000000000000
--- a/libcxx/test/libcxx/inclusions/deque.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/filesystem.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/filesystem.inclusions.compile.pass.cpp
deleted file mode 100644
index a726f3a5d5f33..0000000000000
--- a/libcxx/test/libcxx/inclusions/filesystem.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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: no-filesystem
-
-// <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
diff --git a/libcxx/test/libcxx/inclusions/forward_list.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/forward_list.inclusions.compile.pass.cpp
deleted file mode 100644
index 62ea06ef7d4e2..0000000000000
--- a/libcxx/test/libcxx/inclusions/forward_list.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/ios.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/ios.inclusions.compile.pass.cpp
deleted file mode 100644
index 560c819b67260..0000000000000
--- a/libcxx/test/libcxx/inclusions/ios.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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: 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
diff --git a/libcxx/test/libcxx/inclusions/iostream.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/iostream.inclusions.compile.pass.cpp
deleted file mode 100644
index a8f223a507e40..0000000000000
--- a/libcxx/test/libcxx/inclusions/iostream.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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: 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
diff --git a/libcxx/test/libcxx/inclusions/iterator.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/iterator.inclusions.compile.pass.cpp
deleted file mode 100644
index 11dfb74e45981..0000000000000
--- a/libcxx/test/libcxx/inclusions/iterator.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/list.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/list.inclusions.compile.pass.cpp
deleted file mode 100644
index 76cb06d78132d..0000000000000
--- a/libcxx/test/libcxx/inclusions/list.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/map.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/map.inclusions.compile.pass.cpp
deleted file mode 100644
index 319ee462a41b2..0000000000000
--- a/libcxx/test/libcxx/inclusions/map.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/memory.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/memory.inclusions.compile.pass.cpp
deleted file mode 100644
index 6b1cd84b19b25..0000000000000
--- a/libcxx/test/libcxx/inclusions/memory.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/optional.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/optional.inclusions.compile.pass.cpp
deleted file mode 100644
index 7a6ff343e0b5e..0000000000000
--- a/libcxx/test/libcxx/inclusions/optional.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/queue.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/queue.inclusions.compile.pass.cpp
deleted file mode 100644
index f0bf7fb649831..0000000000000
--- a/libcxx/test/libcxx/inclusions/queue.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/random.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/random.inclusions.compile.pass.cpp
deleted file mode 100644
index 68da450ca86b4..0000000000000
--- a/libcxx/test/libcxx/inclusions/random.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/ranges.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/ranges.inclusions.compile.pass.cpp
deleted file mode 100644
index 316d141041589..0000000000000
--- a/libcxx/test/libcxx/inclusions/ranges.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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, c++17
-
-// <ranges>
-
-// Test that <ranges> includes all the other headers it's supposed to.
-
-#include <ranges>
-#include "test_macros.h"
-
-#if !defined(_LIBCPP_RANGES)
- # error "<ranges> was expected to define _LIBCPP_RANGES"
-#endif
-#if TEST_STD_VER > 17 && !defined(_LIBCPP_COMPARE)
- # error "<ranges> should include <compare> in C++20 and later"
-#endif
-#if TEST_STD_VER > 03 && !defined(_LIBCPP_INITIALIZER_LIST)
- # error "<ranges> should include <initializer_list> in C++20 and later"
-#endif
-#if !defined(_LIBCPP_ITERATOR)
- # error "<ranges> should include <iterator> in C++20 and later"
-#endif
diff --git a/libcxx/test/libcxx/inclusions/regex.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/regex.inclusions.compile.pass.cpp
deleted file mode 100644
index f7cf8b9a751be..0000000000000
--- a/libcxx/test/libcxx/inclusions/regex.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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: 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
diff --git a/libcxx/test/libcxx/inclusions/set.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/set.inclusions.compile.pass.cpp
deleted file mode 100644
index 68350f5369a9f..0000000000000
--- a/libcxx/test/libcxx/inclusions/set.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/stack.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/stack.inclusions.compile.pass.cpp
deleted file mode 100644
index 323abc2f63a0c..0000000000000
--- a/libcxx/test/libcxx/inclusions/stack.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/string.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/string.inclusions.compile.pass.cpp
deleted file mode 100644
index d77ee0ecffa55..0000000000000
--- a/libcxx/test/libcxx/inclusions/string.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/string_view.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/string_view.inclusions.compile.pass.cpp
deleted file mode 100644
index a4b999e2c680a..0000000000000
--- a/libcxx/test/libcxx/inclusions/string_view.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/system_error.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/system_error.inclusions.compile.pass.cpp
deleted file mode 100644
index 5c7f485219975..0000000000000
--- a/libcxx/test/libcxx/inclusions/system_error.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/tgmath.h.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/tgmath.h.inclusions.compile.pass.cpp
deleted file mode 100644
index 25bc00de39576..0000000000000
--- a/libcxx/test/libcxx/inclusions/tgmath.h.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/thread.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/thread.inclusions.compile.pass.cpp
deleted file mode 100644
index 5e5ad7e605d78..0000000000000
--- a/libcxx/test/libcxx/inclusions/thread.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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: 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
diff --git a/libcxx/test/libcxx/inclusions/tuple.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/tuple.inclusions.compile.pass.cpp
deleted file mode 100644
index 58f05b1b9ece0..0000000000000
--- a/libcxx/test/libcxx/inclusions/tuple.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/typeindex.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/typeindex.inclusions.compile.pass.cpp
deleted file mode 100644
index 1cecb54101490..0000000000000
--- a/libcxx/test/libcxx/inclusions/typeindex.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/unordered_map.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/unordered_map.inclusions.compile.pass.cpp
deleted file mode 100644
index 2abddcfcf13c7..0000000000000
--- a/libcxx/test/libcxx/inclusions/unordered_map.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/unordered_set.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/unordered_set.inclusions.compile.pass.cpp
deleted file mode 100644
index 58bf21507993f..0000000000000
--- a/libcxx/test/libcxx/inclusions/unordered_set.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/utility.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/utility.inclusions.compile.pass.cpp
deleted file mode 100644
index b0e2163bcf365..0000000000000
--- a/libcxx/test/libcxx/inclusions/utility.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/valarray.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/valarray.inclusions.compile.pass.cpp
deleted file mode 100644
index 3d3bf9187db53..0000000000000
--- a/libcxx/test/libcxx/inclusions/valarray.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/variant.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/variant.inclusions.compile.pass.cpp
deleted file mode 100644
index 96adb1907746d..0000000000000
--- a/libcxx/test/libcxx/inclusions/variant.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/test/libcxx/inclusions/vector.inclusions.compile.pass.cpp b/libcxx/test/libcxx/inclusions/vector.inclusions.compile.pass.cpp
deleted file mode 100644
index 2e6b36ea4f607..0000000000000
--- a/libcxx/test/libcxx/inclusions/vector.inclusions.compile.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
diff --git a/libcxx/utils/CMakeLists.txt b/libcxx/utils/CMakeLists.txt
index a00924586f9d5..6c24d2be22e99 100644
--- a/libcxx/utils/CMakeLists.txt
+++ b/libcxx/utils/CMakeLists.txt
@@ -1,8 +1,3 @@
-
-add_custom_target(libcxx-generate-public-header-transitive-inclusion-tests
- COMMAND "${Python3_EXECUTABLE}" "${LIBCXX_SOURCE_DIR}/utils/generate_header_inclusion_tests.py"
- COMMENT "Generate tests checking for mandated transitive includes in public headers.")
-
add_custom_target(libcxx-generate-public-header-tests
COMMAND "${Python3_EXECUTABLE}" "${LIBCXX_SOURCE_DIR}/utils/generate_header_tests.py"
COMMENT "Generate tests for including public headers.")
@@ -46,8 +41,7 @@ add_custom_target(libcxx-generate-iwyu-mapping
COMMENT "Generate the mapping file for include-what-you-use")
add_custom_target(libcxx-generate-files
- DEPENDS libcxx-generate-public-header-transitive-inclusion-tests
- libcxx-generate-public-header-tests
+ DEPENDS libcxx-generate-public-header-tests
libcxx-generate-feature-test-macros
libcxx-generate-extended-grapheme-cluster-tables
libcxx-generate-extended-grapheme-cluster-tests
diff --git a/libcxx/utils/generate_header_inclusion_tests.py b/libcxx/utils/generate_header_inclusion_tests.py
deleted file mode 100755
index c5797c4f3029a..0000000000000
--- a/libcxx/utils/generate_header_inclusion_tests.py
+++ /dev/null
@@ -1,215 +0,0 @@
-#!/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"],
- "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"],
- "ranges": ["compare", "initializer_list", "iterator"],
- "regex": ["compare", "initializer_list"],
- "set": ["compare", "initializer_list"],
- "stack": ["compare", "initializer_list"],
- "string_view": ["compare"],
- "string": ["compare", "initializer_list"],
- # 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",
- "cuchar": "11",
- "expected": "23",
- "filesystem": "17",
- "initializer_list": "11",
- "optional": "17",
- "ranges": "20",
- "string_view": "17",
- "syncstream": "20",
- "system_error": "11",
- "thread": "11",
- "tuple": "11",
- "uchar.h": "11",
- "unordered_map": "11",
- "unordered_set": "11",
- "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 = {
- "barrier": ["UNSUPPORTED: no-threads"],
- "filesystem": ["UNSUPPORTED: no-filesystem"],
- "iomanip": ["UNSUPPORTED: no-localization"],
- "ios": ["UNSUPPORTED: no-localization"],
- "iostream": ["UNSUPPORTED: no-localization"],
- "istream": ["UNSUPPORTED: no-localization"],
- "latch": ["UNSUPPORTED: no-threads"],
- "locale": ["UNSUPPORTED: no-localization"],
- "mutex": ["UNSUPPORTED: no-threads"],
- "ostream": ["UNSUPPORTED: no-localization"],
- "regex": ["UNSUPPORTED: no-localization"],
- "semaphore": ["UNSUPPORTED: no-threads"],
- "shared_mutex": ["UNSUPPORTED: no-threads"],
- "thread": ["UNSUPPORTED: 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"],
- "23": ["UNSUPPORTED: c++03, c++11, c++14, c++17, c++20"],
- "26": ["UNSUPPORTED: c++03, c++11, c++14, c++17, c++20, c++23"],
- }[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()
diff --git a/libcxx/utils/libcxx/test/header_information.py b/libcxx/utils/libcxx/test/header_information.py
index db4cf72543d55..026ec6a4e1d4c 100644
--- a/libcxx/utils/libcxx/test/header_information.py
+++ b/libcxx/utils/libcxx/test/header_information.py
@@ -121,6 +121,50 @@
"__verbose_abort",
]
+# 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"],
+ "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"],
+ "ranges": ["compare", "initializer_list", "iterator"],
+ "regex": ["compare", "initializer_list"],
+ "set": ["compare", "initializer_list"],
+ "stack": ["compare", "initializer_list"],
+ "string_view": ["compare"],
+ "string": ["compare", "initializer_list"],
+ # 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"],
+}
+
def is_header(file):
"""Returns whether the given file is a header (i.e. not a directory or the modulemap file)."""
return (
More information about the libcxx-commits
mailing list