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