[libc++] Add a test to pin down the set of transitive public includes
authorLouis Dionne <ldionne.2@gmail.com>
Mon, 20 Jun 2022 21:10:53 +0000 (17:10 -0400)
committerLouis Dionne <ldionne.2@gmail.com>
Thu, 23 Jun 2022 20:23:34 +0000 (16:23 -0400)
commit23d6cde14de352e05c66ae34cd237e3a7a8955d1
tree47c3162a630ad262a70d1a1a9e0bfdca5a4a00bc
parent517bbc64dbe493644eff8d55fd9566435e930520
[libc++] Add a test to pin down the set of transitive public includes

A situation that happens fairly often in libc++ is that we remove some
transitive includes in a header (either purposefully or not) and that
ends up breaking users. Of course, we want to be able to remove our
transitive includes, however it's also good to have a grip on that
to know which commit changed what and when. Furthermore, it's good
to accumulate include removals for a couple of releases to avoid
breaking users at every release for this reason.

This commit adds a test that should break whenever we remove an
include. Hence, it should allow us to track which headers include
which other headers transitively, giving us a traceable way to
remove headers.

Differential Revision: https://reviews.llvm.org/D128236
126 files changed:
libcxx/include/__debug
libcxx/include/locale
libcxx/test/libcxx/lit.local.cfg [moved from libcxx/test/libcxx/lint/lit.local.cfg with 100% similarity]
libcxx/test/libcxx/selftest/dsl/lit.local.cfg
libcxx/test/libcxx/transitive_includes.sanitize.py [new file with mode: 0755]
libcxx/test/libcxx/transitive_includes.sh.cpp [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.algorithm [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.any [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.array [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.atomic [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.barrier [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.bit [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.bitset [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cassert [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ccomplex [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cctype [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cerrno [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cfenv [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cfloat [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.charconv [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.chrono [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cinttypes [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ciso646 [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.climits [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.clocale [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cmath [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.codecvt [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.compare [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.complex [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.concepts [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.condition_variable [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.coroutine [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.csetjmp [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.csignal [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cstdarg [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cstdbool [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cstddef [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cstdint [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cstdio [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cstdlib [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cstring [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ctgmath [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ctime [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cuchar [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cwchar [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.cwctype [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.deque [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.exception [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.execution [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_algorithm [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_coroutine [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_deque [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_forward_list [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_functional [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_iterator [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_list [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_map [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_memory_resource [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_propagate_const [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_regex [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_set [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_simd [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_string [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_type_traits [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_map [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_set [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_utility [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.experimental_vector [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ext_hash_map [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ext_hash_set [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.filesystem [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.format [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.forward_list [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.fstream [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.functional [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.future [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.initializer_list [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.iomanip [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ios [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.iosfwd [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.iostream [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.istream [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.iterator [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.latch [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.limits [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.list [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.locale [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.map [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.memory [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.mutex [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.new [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.numbers [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.numeric [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.optional [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ostream [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.queue [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.random [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ranges [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.ratio [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.regex [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.scoped_allocator [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.semaphore [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.set [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.shared_mutex [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.span [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.sstream [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.stack [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.stdexcept [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.streambuf [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.string [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.string_view [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.strstream [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.system_error [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.thread [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.tuple [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.type_traits [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.typeindex [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.typeinfo [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.unordered_map [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.unordered_set [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.utility [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.valarray [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.variant [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.vector [new file with mode: 0644]
libcxx/test/libcxx/transitive_includes/expected.version [new file with mode: 0644]
libcxx/utils/generate_header_tests.py