• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // Test that we don't remove transitive includes of public C++ headers in the library accidentally.
10 // When we remove a transitive public include, clients tend to break because they don't always
11 // properly include what they use. Note that we don't check which system (C) headers are
12 // included transitively, because that is too unstable across platforms, and hence difficult
13 // to test for.
14 //
15 // This is not meant to block libc++ from removing unused transitive includes
16 // forever, however we do try to group removals for a couple of releases
17 // to avoid breaking users at every release.
18 
19 // This test doesn't support being run when some headers are not available, since we
20 // would need to add significant complexity to make that work.
21 // UNSUPPORTED: no-localization, no-threads, no-wide-characters, no-filesystem, libcpp-has-no-incomplete-format
22 
23 // When built with modules, this test doesn't work because --trace-includes doesn't
24 // report the stack of includes correctly.
25 // UNSUPPORTED: modules-build
26 
27 // This test uses --trace-includes, which is not supported by GCC.
28 // UNSUPPORTED: gcc
29 
30 // This test is not supported when we remove the transitive includes provided for backwards
31 // compatibility. When we bulk-remove them, we'll adjust the includes that are expected by
32 // this test instead.
33 // UNSUPPORTED: transitive-includes-disabled
34 
35 // Prevent <ext/hash_map> from generating deprecated warnings for this test.
36 #if defined(__DEPRECATED)
37 #    undef __DEPRECATED
38 #endif
39 
40 /*
41 BEGIN-SCRIPT
42 
43 import re
44 
45 # To re-generate the list of expected headers, temporarily set this to True, re-generate
46 # the file and run this test.
47 # Note that this needs to be done for all supported language versions of libc++:
48 # for std in c++03 c++11 c++14 c++17 c++20 c++2b; do <build>/bin/llvm-lit --param std=$std ${path_to_this_file}; done
49 regenerate_expected_results = False
50 # Used because the sequence of tokens RUN : can't appear anywhere or it'll confuse Lit.
51 RUN = "RUN"
52 
53 print(f"// {RUN}: mkdir %t")
54 
55 for i, header in enumerate(public_headers):
56   if header.endswith('.h'): # Skip C compatibility or detail headers
57     continue
58 
59   normalized_header = re.sub('/', '_', header)
60   print(f"// {RUN}: %{{cxx}} %s %{{flags}} %{{compile_flags}} --trace-includes -fshow-skipped-includes --preprocess -DTEST_{i} 2> %t/header.{normalized_header}")
61   print(f"#if defined(TEST_{i})")
62   print(f"#include <{header}>")
63   print("#endif")
64 
65 if regenerate_expected_results:
66   print(f"// {RUN}: %{{python}} %S/transitive_includes_to_csv.py %t > %S/transitive_includes/%{{cxx_std}}.csv")
67 else:
68   print(f"// {RUN}: %{{python}} %S/transitive_includes_to_csv.py %t > %t/transitive_includes.csv")
69   print(f"// {RUN}: diff -w %S/transitive_includes/%{{cxx_std}}.csv %t/transitive_includes.csv")
70 
71 END-SCRIPT
72 */
73 
74 // DO NOT MANUALLY EDIT ANYTHING BETWEEN THE MARKERS BELOW
75 // GENERATED-MARKER
76 // RUN: mkdir %t
77 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_0 2> %t/header.algorithm
78 #if defined(TEST_0)
79 #include <algorithm>
80 #endif
81 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_1 2> %t/header.any
82 #if defined(TEST_1)
83 #include <any>
84 #endif
85 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_2 2> %t/header.array
86 #if defined(TEST_2)
87 #include <array>
88 #endif
89 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_3 2> %t/header.atomic
90 #if defined(TEST_3)
91 #include <atomic>
92 #endif
93 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_4 2> %t/header.barrier
94 #if defined(TEST_4)
95 #include <barrier>
96 #endif
97 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_5 2> %t/header.bit
98 #if defined(TEST_5)
99 #include <bit>
100 #endif
101 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_6 2> %t/header.bitset
102 #if defined(TEST_6)
103 #include <bitset>
104 #endif
105 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_7 2> %t/header.cassert
106 #if defined(TEST_7)
107 #include <cassert>
108 #endif
109 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_8 2> %t/header.ccomplex
110 #if defined(TEST_8)
111 #include <ccomplex>
112 #endif
113 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_9 2> %t/header.cctype
114 #if defined(TEST_9)
115 #include <cctype>
116 #endif
117 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_10 2> %t/header.cerrno
118 #if defined(TEST_10)
119 #include <cerrno>
120 #endif
121 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_11 2> %t/header.cfenv
122 #if defined(TEST_11)
123 #include <cfenv>
124 #endif
125 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_12 2> %t/header.cfloat
126 #if defined(TEST_12)
127 #include <cfloat>
128 #endif
129 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_13 2> %t/header.charconv
130 #if defined(TEST_13)
131 #include <charconv>
132 #endif
133 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_14 2> %t/header.chrono
134 #if defined(TEST_14)
135 #include <chrono>
136 #endif
137 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_15 2> %t/header.cinttypes
138 #if defined(TEST_15)
139 #include <cinttypes>
140 #endif
141 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_16 2> %t/header.ciso646
142 #if defined(TEST_16)
143 #include <ciso646>
144 #endif
145 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_17 2> %t/header.climits
146 #if defined(TEST_17)
147 #include <climits>
148 #endif
149 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_18 2> %t/header.clocale
150 #if defined(TEST_18)
151 #include <clocale>
152 #endif
153 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_19 2> %t/header.cmath
154 #if defined(TEST_19)
155 #include <cmath>
156 #endif
157 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_20 2> %t/header.codecvt
158 #if defined(TEST_20)
159 #include <codecvt>
160 #endif
161 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_21 2> %t/header.compare
162 #if defined(TEST_21)
163 #include <compare>
164 #endif
165 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_22 2> %t/header.complex
166 #if defined(TEST_22)
167 #include <complex>
168 #endif
169 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_24 2> %t/header.concepts
170 #if defined(TEST_24)
171 #include <concepts>
172 #endif
173 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_25 2> %t/header.condition_variable
174 #if defined(TEST_25)
175 #include <condition_variable>
176 #endif
177 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_26 2> %t/header.coroutine
178 #if defined(TEST_26)
179 #include <coroutine>
180 #endif
181 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_27 2> %t/header.csetjmp
182 #if defined(TEST_27)
183 #include <csetjmp>
184 #endif
185 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_28 2> %t/header.csignal
186 #if defined(TEST_28)
187 #include <csignal>
188 #endif
189 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_29 2> %t/header.cstdarg
190 #if defined(TEST_29)
191 #include <cstdarg>
192 #endif
193 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_30 2> %t/header.cstdbool
194 #if defined(TEST_30)
195 #include <cstdbool>
196 #endif
197 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_31 2> %t/header.cstddef
198 #if defined(TEST_31)
199 #include <cstddef>
200 #endif
201 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_32 2> %t/header.cstdint
202 #if defined(TEST_32)
203 #include <cstdint>
204 #endif
205 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_33 2> %t/header.cstdio
206 #if defined(TEST_33)
207 #include <cstdio>
208 #endif
209 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_34 2> %t/header.cstdlib
210 #if defined(TEST_34)
211 #include <cstdlib>
212 #endif
213 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_35 2> %t/header.cstring
214 #if defined(TEST_35)
215 #include <cstring>
216 #endif
217 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_36 2> %t/header.ctgmath
218 #if defined(TEST_36)
219 #include <ctgmath>
220 #endif
221 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_37 2> %t/header.ctime
222 #if defined(TEST_37)
223 #include <ctime>
224 #endif
225 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_39 2> %t/header.cuchar
226 #if defined(TEST_39)
227 #include <cuchar>
228 #endif
229 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_40 2> %t/header.cwchar
230 #if defined(TEST_40)
231 #include <cwchar>
232 #endif
233 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_41 2> %t/header.cwctype
234 #if defined(TEST_41)
235 #include <cwctype>
236 #endif
237 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_42 2> %t/header.deque
238 #if defined(TEST_42)
239 #include <deque>
240 #endif
241 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_44 2> %t/header.exception
242 #if defined(TEST_44)
243 #include <exception>
244 #endif
245 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_45 2> %t/header.execution
246 #if defined(TEST_45)
247 #include <execution>
248 #endif
249 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_46 2> %t/header.expected
250 #if defined(TEST_46)
251 #include <expected>
252 #endif
253 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_48 2> %t/header.filesystem
254 #if defined(TEST_48)
255 #include <filesystem>
256 #endif
257 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_50 2> %t/header.format
258 #if defined(TEST_50)
259 #include <format>
260 #endif
261 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_51 2> %t/header.forward_list
262 #if defined(TEST_51)
263 #include <forward_list>
264 #endif
265 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_52 2> %t/header.fstream
266 #if defined(TEST_52)
267 #include <fstream>
268 #endif
269 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_53 2> %t/header.functional
270 #if defined(TEST_53)
271 #include <functional>
272 #endif
273 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_54 2> %t/header.future
274 #if defined(TEST_54)
275 #include <future>
276 #endif
277 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_55 2> %t/header.initializer_list
278 #if defined(TEST_55)
279 #include <initializer_list>
280 #endif
281 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_57 2> %t/header.iomanip
282 #if defined(TEST_57)
283 #include <iomanip>
284 #endif
285 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_58 2> %t/header.ios
286 #if defined(TEST_58)
287 #include <ios>
288 #endif
289 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_59 2> %t/header.iosfwd
290 #if defined(TEST_59)
291 #include <iosfwd>
292 #endif
293 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_60 2> %t/header.iostream
294 #if defined(TEST_60)
295 #include <iostream>
296 #endif
297 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_61 2> %t/header.istream
298 #if defined(TEST_61)
299 #include <istream>
300 #endif
301 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_62 2> %t/header.iterator
302 #if defined(TEST_62)
303 #include <iterator>
304 #endif
305 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_63 2> %t/header.latch
306 #if defined(TEST_63)
307 #include <latch>
308 #endif
309 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_64 2> %t/header.limits
310 #if defined(TEST_64)
311 #include <limits>
312 #endif
313 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_66 2> %t/header.list
314 #if defined(TEST_66)
315 #include <list>
316 #endif
317 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_67 2> %t/header.locale
318 #if defined(TEST_67)
319 #include <locale>
320 #endif
321 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_69 2> %t/header.map
322 #if defined(TEST_69)
323 #include <map>
324 #endif
325 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_71 2> %t/header.memory
326 #if defined(TEST_71)
327 #include <memory>
328 #endif
329 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_72 2> %t/header.memory_resource
330 #if defined(TEST_72)
331 #include <memory_resource>
332 #endif
333 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_73 2> %t/header.mutex
334 #if defined(TEST_73)
335 #include <mutex>
336 #endif
337 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_74 2> %t/header.new
338 #if defined(TEST_74)
339 #include <new>
340 #endif
341 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_75 2> %t/header.numbers
342 #if defined(TEST_75)
343 #include <numbers>
344 #endif
345 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_76 2> %t/header.numeric
346 #if defined(TEST_76)
347 #include <numeric>
348 #endif
349 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_77 2> %t/header.optional
350 #if defined(TEST_77)
351 #include <optional>
352 #endif
353 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_78 2> %t/header.ostream
354 #if defined(TEST_78)
355 #include <ostream>
356 #endif
357 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_79 2> %t/header.queue
358 #if defined(TEST_79)
359 #include <queue>
360 #endif
361 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_80 2> %t/header.random
362 #if defined(TEST_80)
363 #include <random>
364 #endif
365 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_81 2> %t/header.ranges
366 #if defined(TEST_81)
367 #include <ranges>
368 #endif
369 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_82 2> %t/header.ratio
370 #if defined(TEST_82)
371 #include <ratio>
372 #endif
373 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_83 2> %t/header.regex
374 #if defined(TEST_83)
375 #include <regex>
376 #endif
377 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_84 2> %t/header.scoped_allocator
378 #if defined(TEST_84)
379 #include <scoped_allocator>
380 #endif
381 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_85 2> %t/header.semaphore
382 #if defined(TEST_85)
383 #include <semaphore>
384 #endif
385 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_86 2> %t/header.set
386 #if defined(TEST_86)
387 #include <set>
388 #endif
389 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_88 2> %t/header.shared_mutex
390 #if defined(TEST_88)
391 #include <shared_mutex>
392 #endif
393 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_89 2> %t/header.source_location
394 #if defined(TEST_89)
395 #include <source_location>
396 #endif
397 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_90 2> %t/header.span
398 #if defined(TEST_90)
399 #include <span>
400 #endif
401 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_91 2> %t/header.sstream
402 #if defined(TEST_91)
403 #include <sstream>
404 #endif
405 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_92 2> %t/header.stack
406 #if defined(TEST_92)
407 #include <stack>
408 #endif
409 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_96 2> %t/header.stdexcept
410 #if defined(TEST_96)
411 #include <stdexcept>
412 #endif
413 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_100 2> %t/header.streambuf
414 #if defined(TEST_100)
415 #include <streambuf>
416 #endif
417 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_101 2> %t/header.string
418 #if defined(TEST_101)
419 #include <string>
420 #endif
421 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_103 2> %t/header.string_view
422 #if defined(TEST_103)
423 #include <string_view>
424 #endif
425 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_104 2> %t/header.strstream
426 #if defined(TEST_104)
427 #include <strstream>
428 #endif
429 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_105 2> %t/header.system_error
430 #if defined(TEST_105)
431 #include <system_error>
432 #endif
433 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_107 2> %t/header.thread
434 #if defined(TEST_107)
435 #include <thread>
436 #endif
437 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_108 2> %t/header.tuple
438 #if defined(TEST_108)
439 #include <tuple>
440 #endif
441 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_109 2> %t/header.type_traits
442 #if defined(TEST_109)
443 #include <type_traits>
444 #endif
445 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_110 2> %t/header.typeindex
446 #if defined(TEST_110)
447 #include <typeindex>
448 #endif
449 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_111 2> %t/header.typeinfo
450 #if defined(TEST_111)
451 #include <typeinfo>
452 #endif
453 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_113 2> %t/header.unordered_map
454 #if defined(TEST_113)
455 #include <unordered_map>
456 #endif
457 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_114 2> %t/header.unordered_set
458 #if defined(TEST_114)
459 #include <unordered_set>
460 #endif
461 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_115 2> %t/header.utility
462 #if defined(TEST_115)
463 #include <utility>
464 #endif
465 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_116 2> %t/header.valarray
466 #if defined(TEST_116)
467 #include <valarray>
468 #endif
469 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_117 2> %t/header.variant
470 #if defined(TEST_117)
471 #include <variant>
472 #endif
473 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_118 2> %t/header.vector
474 #if defined(TEST_118)
475 #include <vector>
476 #endif
477 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_119 2> %t/header.version
478 #if defined(TEST_119)
479 #include <version>
480 #endif
481 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_122 2> %t/header.experimental_deque
482 #if defined(TEST_122)
483 #include <experimental/deque>
484 #endif
485 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_123 2> %t/header.experimental_forward_list
486 #if defined(TEST_123)
487 #include <experimental/forward_list>
488 #endif
489 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_124 2> %t/header.experimental_iterator
490 #if defined(TEST_124)
491 #include <experimental/iterator>
492 #endif
493 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_125 2> %t/header.experimental_list
494 #if defined(TEST_125)
495 #include <experimental/list>
496 #endif
497 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_126 2> %t/header.experimental_map
498 #if defined(TEST_126)
499 #include <experimental/map>
500 #endif
501 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_127 2> %t/header.experimental_memory_resource
502 #if defined(TEST_127)
503 #include <experimental/memory_resource>
504 #endif
505 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_128 2> %t/header.experimental_propagate_const
506 #if defined(TEST_128)
507 #include <experimental/propagate_const>
508 #endif
509 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_129 2> %t/header.experimental_regex
510 #if defined(TEST_129)
511 #include <experimental/regex>
512 #endif
513 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_130 2> %t/header.experimental_set
514 #if defined(TEST_130)
515 #include <experimental/set>
516 #endif
517 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_131 2> %t/header.experimental_simd
518 #if defined(TEST_131)
519 #include <experimental/simd>
520 #endif
521 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_132 2> %t/header.experimental_string
522 #if defined(TEST_132)
523 #include <experimental/string>
524 #endif
525 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_133 2> %t/header.experimental_type_traits
526 #if defined(TEST_133)
527 #include <experimental/type_traits>
528 #endif
529 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_134 2> %t/header.experimental_unordered_map
530 #if defined(TEST_134)
531 #include <experimental/unordered_map>
532 #endif
533 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_135 2> %t/header.experimental_unordered_set
534 #if defined(TEST_135)
535 #include <experimental/unordered_set>
536 #endif
537 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_136 2> %t/header.experimental_utility
538 #if defined(TEST_136)
539 #include <experimental/utility>
540 #endif
541 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_137 2> %t/header.experimental_vector
542 #if defined(TEST_137)
543 #include <experimental/vector>
544 #endif
545 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_138 2> %t/header.ext_hash_map
546 #if defined(TEST_138)
547 #include <ext/hash_map>
548 #endif
549 // RUN: %{cxx} %s %{flags} %{compile_flags} --trace-includes -fshow-skipped-includes --preprocess -DTEST_139 2> %t/header.ext_hash_set
550 #if defined(TEST_139)
551 #include <ext/hash_set>
552 #endif
553 // RUN: %{python} %S/transitive_includes_to_csv.py %t > %t/transitive_includes.csv
554 // RUN: diff -w %S/transitive_includes/%{cxx_std}.csv %t/transitive_includes.csv
555 // GENERATED-MARKER
556