mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-13 10:42:05 +00:00
[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
This commit is contained in:
parent
6091025b85
commit
45307f1b0d
@ -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?
|
||||
|
47
libcxx/test/libcxx/header_inclusions.gen.py
Normal file
47
libcxx/test/libcxx/header_inclusions.gen.py
Normal file
@ -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}
|
||||
""")
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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()
|
@ -121,6 +121,50 @@ private_headers_still_public_in_modules = [
|
||||
"__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 (
|
||||
|
Loading…
Reference in New Issue
Block a user