[libcxx-commits] [PATCH] D128236: [libc++] Add a test to pin down the set of transitive public includes

Louis Dionne via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Mon Jun 20 17:51:34 PDT 2022


ldionne created this revision.
Herald added subscribers: miyuki, arphaman, arichardson.
Herald added a project: All.
ldionne requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.

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.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D128236

Files:
  libcxx/test/libcxx/transitive_includes.sh.cpp
  libcxx/test/libcxx/transitive_includes/expected.algorithm
  libcxx/test/libcxx/transitive_includes/expected.any
  libcxx/test/libcxx/transitive_includes/expected.array
  libcxx/test/libcxx/transitive_includes/expected.atomic
  libcxx/test/libcxx/transitive_includes/expected.barrier
  libcxx/test/libcxx/transitive_includes/expected.bit
  libcxx/test/libcxx/transitive_includes/expected.bitset
  libcxx/test/libcxx/transitive_includes/expected.cassert
  libcxx/test/libcxx/transitive_includes/expected.ccomplex
  libcxx/test/libcxx/transitive_includes/expected.cctype
  libcxx/test/libcxx/transitive_includes/expected.cerrno
  libcxx/test/libcxx/transitive_includes/expected.cfenv
  libcxx/test/libcxx/transitive_includes/expected.cfloat
  libcxx/test/libcxx/transitive_includes/expected.charconv
  libcxx/test/libcxx/transitive_includes/expected.chrono
  libcxx/test/libcxx/transitive_includes/expected.cinttypes
  libcxx/test/libcxx/transitive_includes/expected.ciso646
  libcxx/test/libcxx/transitive_includes/expected.climits
  libcxx/test/libcxx/transitive_includes/expected.clocale
  libcxx/test/libcxx/transitive_includes/expected.cmath
  libcxx/test/libcxx/transitive_includes/expected.codecvt
  libcxx/test/libcxx/transitive_includes/expected.compare
  libcxx/test/libcxx/transitive_includes/expected.complex
  libcxx/test/libcxx/transitive_includes/expected.complex.h
  libcxx/test/libcxx/transitive_includes/expected.concepts
  libcxx/test/libcxx/transitive_includes/expected.condition_variable
  libcxx/test/libcxx/transitive_includes/expected.coroutine
  libcxx/test/libcxx/transitive_includes/expected.csetjmp
  libcxx/test/libcxx/transitive_includes/expected.csignal
  libcxx/test/libcxx/transitive_includes/expected.cstdarg
  libcxx/test/libcxx/transitive_includes/expected.cstdbool
  libcxx/test/libcxx/transitive_includes/expected.cstddef
  libcxx/test/libcxx/transitive_includes/expected.cstdint
  libcxx/test/libcxx/transitive_includes/expected.cstdio
  libcxx/test/libcxx/transitive_includes/expected.cstdlib
  libcxx/test/libcxx/transitive_includes/expected.cstring
  libcxx/test/libcxx/transitive_includes/expected.ctgmath
  libcxx/test/libcxx/transitive_includes/expected.ctime
  libcxx/test/libcxx/transitive_includes/expected.ctype.h
  libcxx/test/libcxx/transitive_includes/expected.cuchar
  libcxx/test/libcxx/transitive_includes/expected.cwchar
  libcxx/test/libcxx/transitive_includes/expected.cwctype
  libcxx/test/libcxx/transitive_includes/expected.deque
  libcxx/test/libcxx/transitive_includes/expected.errno.h
  libcxx/test/libcxx/transitive_includes/expected.exception
  libcxx/test/libcxx/transitive_includes/expected.execution
  libcxx/test/libcxx/transitive_includes/expected.experimental_algorithm
  libcxx/test/libcxx/transitive_includes/expected.experimental_coroutine
  libcxx/test/libcxx/transitive_includes/expected.experimental_deque
  libcxx/test/libcxx/transitive_includes/expected.experimental_forward_list
  libcxx/test/libcxx/transitive_includes/expected.experimental_functional
  libcxx/test/libcxx/transitive_includes/expected.experimental_iterator
  libcxx/test/libcxx/transitive_includes/expected.experimental_list
  libcxx/test/libcxx/transitive_includes/expected.experimental_map
  libcxx/test/libcxx/transitive_includes/expected.experimental_memory_resource
  libcxx/test/libcxx/transitive_includes/expected.experimental_propagate_const
  libcxx/test/libcxx/transitive_includes/expected.experimental_regex
  libcxx/test/libcxx/transitive_includes/expected.experimental_set
  libcxx/test/libcxx/transitive_includes/expected.experimental_simd
  libcxx/test/libcxx/transitive_includes/expected.experimental_string
  libcxx/test/libcxx/transitive_includes/expected.experimental_type_traits
  libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_map
  libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_set
  libcxx/test/libcxx/transitive_includes/expected.experimental_utility
  libcxx/test/libcxx/transitive_includes/expected.experimental_vector
  libcxx/test/libcxx/transitive_includes/expected.ext_hash_map
  libcxx/test/libcxx/transitive_includes/expected.ext_hash_set
  libcxx/test/libcxx/transitive_includes/expected.fenv.h
  libcxx/test/libcxx/transitive_includes/expected.filesystem
  libcxx/test/libcxx/transitive_includes/expected.float.h
  libcxx/test/libcxx/transitive_includes/expected.format
  libcxx/test/libcxx/transitive_includes/expected.forward_list
  libcxx/test/libcxx/transitive_includes/expected.fstream
  libcxx/test/libcxx/transitive_includes/expected.functional
  libcxx/test/libcxx/transitive_includes/expected.future
  libcxx/test/libcxx/transitive_includes/expected.initializer_list
  libcxx/test/libcxx/transitive_includes/expected.inttypes.h
  libcxx/test/libcxx/transitive_includes/expected.iomanip
  libcxx/test/libcxx/transitive_includes/expected.ios
  libcxx/test/libcxx/transitive_includes/expected.iosfwd
  libcxx/test/libcxx/transitive_includes/expected.iostream
  libcxx/test/libcxx/transitive_includes/expected.istream
  libcxx/test/libcxx/transitive_includes/expected.iterator
  libcxx/test/libcxx/transitive_includes/expected.latch
  libcxx/test/libcxx/transitive_includes/expected.limits
  libcxx/test/libcxx/transitive_includes/expected.limits.h
  libcxx/test/libcxx/transitive_includes/expected.list
  libcxx/test/libcxx/transitive_includes/expected.locale
  libcxx/test/libcxx/transitive_includes/expected.locale.h
  libcxx/test/libcxx/transitive_includes/expected.map
  libcxx/test/libcxx/transitive_includes/expected.math.h
  libcxx/test/libcxx/transitive_includes/expected.memory
  libcxx/test/libcxx/transitive_includes/expected.mutex
  libcxx/test/libcxx/transitive_includes/expected.new
  libcxx/test/libcxx/transitive_includes/expected.numbers
  libcxx/test/libcxx/transitive_includes/expected.numeric
  libcxx/test/libcxx/transitive_includes/expected.optional
  libcxx/test/libcxx/transitive_includes/expected.ostream
  libcxx/test/libcxx/transitive_includes/expected.queue
  libcxx/test/libcxx/transitive_includes/expected.random
  libcxx/test/libcxx/transitive_includes/expected.ranges
  libcxx/test/libcxx/transitive_includes/expected.ratio
  libcxx/test/libcxx/transitive_includes/expected.regex
  libcxx/test/libcxx/transitive_includes/expected.scoped_allocator
  libcxx/test/libcxx/transitive_includes/expected.semaphore
  libcxx/test/libcxx/transitive_includes/expected.set
  libcxx/test/libcxx/transitive_includes/expected.setjmp.h
  libcxx/test/libcxx/transitive_includes/expected.shared_mutex
  libcxx/test/libcxx/transitive_includes/expected.span
  libcxx/test/libcxx/transitive_includes/expected.sstream
  libcxx/test/libcxx/transitive_includes/expected.stack
  libcxx/test/libcxx/transitive_includes/expected.stdatomic.h
  libcxx/test/libcxx/transitive_includes/expected.stdbool.h
  libcxx/test/libcxx/transitive_includes/expected.stddef.h
  libcxx/test/libcxx/transitive_includes/expected.stdexcept
  libcxx/test/libcxx/transitive_includes/expected.stdint.h
  libcxx/test/libcxx/transitive_includes/expected.stdio.h
  libcxx/test/libcxx/transitive_includes/expected.stdlib.h
  libcxx/test/libcxx/transitive_includes/expected.streambuf
  libcxx/test/libcxx/transitive_includes/expected.string
  libcxx/test/libcxx/transitive_includes/expected.string.h
  libcxx/test/libcxx/transitive_includes/expected.string_view
  libcxx/test/libcxx/transitive_includes/expected.strstream
  libcxx/test/libcxx/transitive_includes/expected.system_error
  libcxx/test/libcxx/transitive_includes/expected.tgmath.h
  libcxx/test/libcxx/transitive_includes/expected.thread
  libcxx/test/libcxx/transitive_includes/expected.tuple
  libcxx/test/libcxx/transitive_includes/expected.type_traits
  libcxx/test/libcxx/transitive_includes/expected.typeindex
  libcxx/test/libcxx/transitive_includes/expected.typeinfo
  libcxx/test/libcxx/transitive_includes/expected.uchar.h
  libcxx/test/libcxx/transitive_includes/expected.unordered_map
  libcxx/test/libcxx/transitive_includes/expected.unordered_set
  libcxx/test/libcxx/transitive_includes/expected.utility
  libcxx/test/libcxx/transitive_includes/expected.valarray
  libcxx/test/libcxx/transitive_includes/expected.variant
  libcxx/test/libcxx/transitive_includes/expected.vector
  libcxx/test/libcxx/transitive_includes/expected.version
  libcxx/test/libcxx/transitive_includes/expected.wchar.h
  libcxx/test/libcxx/transitive_includes/expected.wctype.h
  libcxx/utils/generate_header_tests.py

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D128236.438510.patch
Type: text/x-patch
Size: 507741 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220621/92981751/attachment-0001.bin>


More information about the libcxx-commits mailing list