1module c_library [extern_c] { module inner { header "c-header.h" } } 2module cxx_library { header "cxx-header.h" requires cplusplus } 3module c_library_bad [extern_c] { header "c-header-bad.h" } 4module diamond_top { header "diamond_top.h" } 5module diamond_left { 6 header "diamond_left.h" 7 export diamond_top 8} 9module diamond_right { 10 header "diamond_right.h" 11 export diamond_top 12} 13module diamond_bottom { 14 header "diamond_bottom.h" 15 export * 16} 17module irgen { header "irgen.h" } 18module cxx_irgen_top { header "cxx-irgen-top.h" } 19module cxx_irgen_left { header "cxx-irgen-left.h" } 20module cxx_irgen_right { header "cxx-irgen-right.h" } 21module lookup_left_objc { header "lookup_left.h" } 22module lookup_right_objc { header "lookup_right.h" } 23module lookup_left_cxx { header "lookup_left.hpp" } 24module lookup_right_cxx { header "lookup_right.hpp" } 25module module_private_left { header "module_private_left.h" } 26module module_private_right { header "module_private_right.h" } 27module macros_top { 28 header "macros_top.h" 29 explicit module b { header "macros_top_b.h" } 30 explicit module c { header "macros_top_c.h" } 31} 32module macros_left { 33 header "macros_left.h" 34 export * 35} 36module macros_right { 37 header "macros_right.h" 38 export * 39 explicit module undef { 40 header "macros_right_undef.h" 41 } 42} 43module macros_bottom { 44 header "macros_bottom.h" 45 export * 46} 47module macros { header "macros.h" } 48module macros_other { header "macros_other.h" } 49module category_top { header "category_top.h" } 50module category_left { 51 header "category_left.h" 52 export category_top 53 54 explicit module sub { 55 header "category_left_sub.h" 56 } 57} 58module category_right { 59 header "category_right.h" 60 export category_top 61 62 explicit module sub { 63 header "category_right_sub.h" 64 } 65} 66module category_bottom { 67 header "category_bottom.h" 68 export category_left 69 export category_right 70} 71module category_other { header "category_other.h" } 72module redeclarations_left { header "redeclarations_left.h" } 73module redeclarations_right { header "redeclarations_right.h" } 74module redecl_namespaces_left { header "redecl_namespaces_left.h" } 75module redecl_namespaces_right { header "redecl_namespaces_right.h" } 76module redecl_add_after_load_top { header "redecl-add-after-load-top.h" } 77module redecl_add_after_load_decls { header "redecl-add-after-load-decls.h" } 78module redecl_add_after_load { header "redecl-add-after-load.h" } 79module load_failure { header "load_failure.h" } 80 81module decldef { 82 explicit module Decl { header "decl.h" } 83 explicit module Decl2 { header "decl2.h" } 84 explicit module Def { header "def.h" } 85} 86 87module redecl_merge_top { 88 header "redecl-merge-top.h" 89 explicit module Explicit { header "redecl-merge-top-explicit.h" } 90 exclude header "nonexistent.h" 91} 92module redecl_merge_left { 93 header "redecl-merge-left.h" 94 export * 95} 96module redecl_merge_left_left { 97 header "redecl-merge-left-left.h" 98 export * 99} 100module redecl_merge_right { 101 header "redecl-merge-right.h" 102 export * 103} 104module redecl_merge_bottom { 105 explicit module prefix { 106 header "redecl-merge-bottom-prefix.h" 107 } 108 109 header "redecl-merge-bottom.h" 110 export * 111} 112module namespaces_top { 113 header "namespaces-top.h" 114 export * 115} 116module namespaces_left { 117 header "namespaces-left.h" 118 export * 119} 120module namespaces_right { 121 header "namespaces-right.h" 122 export * 123} 124module templates_top { 125 header "templates-top.h" 126 export * 127} 128module templates_left { 129 header "templates-left.h" 130 export * 131} 132module templates_right { 133 header "templates-right.h" 134 export * 135} 136module MethodPoolA { 137 header "MethodPoolA.h" 138 139 explicit module Sub2 { 140 header "MethodPoolASub2.h" 141 } 142 143 explicit module Sub { 144 header "MethodPoolASub.h" 145 } 146} 147module MethodPoolB { 148 header "MethodPoolB.h" 149 150 explicit module Sub2 { 151 header "MethodPoolBSub2.h" 152 } 153 154 explicit module Sub { 155 header "MethodPoolBSub.h" 156 } 157} 158module import_decl { 159 header "import-decl.h" 160} 161 162framework module * { 163 exclude NotAModule 164} 165 166module linkage_merge_left { 167 explicit module sub { 168 header "linkage-merge-sub.h" 169 } 170} 171 172module autolink { 173 header "autolink.h" 174 link "autolink" 175 176 explicit module sub { 177 header "autolink-sub.h" 178 link "autolink_sub" 179 } 180 181 explicit module sub2 { 182 header "autolink-sub2.h" 183 link framework "autolink_framework" 184 } 185 186 explicit module sub3 { 187 header "autolink-sub3.h" 188 link "autolink_from_pch" 189 } 190} 191 192module weird_objc { 193 header "weird_objc.h" 194} 195 196module objc_type_param { 197 header "objc_type_param.h" 198} 199 200module ignored_macros { 201 header "ignored_macros.h" 202} 203 204module cxx_many_overloads { 205 header "cxx-many-overloads.h" 206} 207 208module cxx_inline_namespace { 209 header "cxx-inline-namespace.h" 210} 211 212module cxx_inline_namespace_b { 213 header "cxx-inline-namespace-b.h" 214} 215 216module cxx_linkage_cache { 217 header "cxx-linkage-cache.h" 218} 219 220module cxx_templates_common { 221 header "cxx-templates-common.h" 222 223 explicit module unimported { header "cxx-templates-unimported.h" } 224} 225 226module cxx_templates_a { 227 header "cxx-templates-a.h" 228} 229 230module cxx_templates_b_impl { 231 header "cxx-templates-b-impl.h" 232} 233 234module cxx_templates_b { 235 header "cxx-templates-b.h" 236} 237 238module cxx_templates_c { 239 header "cxx-templates-c.h" 240} 241 242module cxx_templates_d { 243 header "cxx-templates-d.h" 244} 245 246module cxx_decls { 247 module unimported { 248 header "cxx-decls-unimported.h" 249 } 250 module imported { 251 header "cxx-decls-imported.h" 252 } 253} 254 255module cxx_decls_premerged { 256 header "cxx-decls-premerged.h" 257} 258 259module cxx_decls_merged { 260 header "cxx-decls-merged.h" 261} 262 263module config { 264 header "config.h" 265 config_macros [exhaustive] WANT_FOO, WANT_BAR 266} 267 268module diag_flags { 269 header "diag_flags.h" 270} 271 272module diag_pragma { 273 header "diag_pragma.h" 274} 275 276module pragma_pack { 277 module set { header "pragma_pack_set.h" } 278 module empty { header "empty.h" } 279} 280 281module dummy { 282 header "dummy.h" 283} 284 285module builtin { 286 header "builtin.h" 287 explicit module sub { 288 header "builtin_sub.h" 289 } 290} 291 292module linkage_merge { 293 explicit module foo { 294 header "linkage-merge-foo.h" 295 } 296 explicit module bar { 297 header "linkage-merge-bar.h" 298 } 299 300} 301 302module incomplete_mod { 303 header "incomplete_mod.h" 304} 305 306module warning { 307 header "warning.h" 308} 309 310module warn_unused_local_typedef { 311 header "warn-unused-local-typedef.h" 312} 313 314module using_decl { 315 module a { header "using-decl-a.h" export * } 316 module b { header "using-decl-b.h" export * } 317} 318 319module recursive_visibility_a1 { 320 module inner { header "recursive_visibility_a1_inner.h" } 321} 322module recursive_visibility_a2 { 323 module inner { 324 module more_inner { 325 header "recursive_visibility_a2_more_inner.h" 326 } 327 } 328} 329module recursive_visibility_b { 330 header "recursive_visibility_b.h" 331 export * 332} 333module recursive_visibility_c { 334 header "recursive_visibility_c.h" 335} 336module recursive1 { 337 header "recursive1.h" 338} 339module recursive2 { 340 header "recursive2.h" 341} 342module crash { 343 header "crash.h" 344} 345 346module DebugCXX { 347 header "DebugCXX.h" 348} 349 350module DebugObjC { 351 header "DebugObjC.h" 352} 353 354module DebugObjCImport { 355 module SubModule { 356 header "DebugObjCImport.h" 357 } 358} 359 360module DebugDwoId { 361 header "DebugDwoId.h" 362} 363 364module ImportNameInDir { 365 header "ImportNameInDir.h" 366 export * 367} 368 369module RequiresWithMissingHeader { 370 module HeaderBefore { 371 header "RequiresWithMissingHeader-Missing1.h" 372 requires missing 373 } 374 module HeaderAfter { 375 requires missing 376 header "RequiresWithMissingHeader-Missing2.h" 377 } 378} 379 380module TargetFeatures { 381 module arm { 382 requires arm 383 module aarch32 { requires aarch32 } 384 module aarch64 { requires aarch64 } 385 } 386 module x86 { 387 requires x86 388 module x86_32 { requires x86_32 } 389 module x86_64 { requires x86_64 } 390 } 391 module riscv { 392 requires riscv 393 module riscv32 { requires riscv32 } 394 module riscv64 { requires riscv64 } 395 } 396} 397 398module DebugSubmodules { 399 module DebugSubmoduleA { 400 header "DebugSubmoduleA.h" 401 export * 402 } 403 module DebugSubmoduleB { 404 header "DebugSubmoduleB.h" 405 export * 406 } 407} 408 409module ExtensionTestA { 410 header "ExtensionTestA.h" 411} 412 413module TypedefTag { 414 header "typedef-tag.h" 415 explicit module Hidden { 416 header "typedef-tag-hidden.h" 417 } 418} 419 420module ElaboratedTypeStructs { 421 module Empty {} 422 module Structs { 423 header "elaborated-type-structs.h" 424 } 425} 426 427// We import a module, then declare a method with selector stringValue in 428// MethodPoolCombined1.h. In MethodPoolCombined2.h, we import another module 429// that also contains a method for selector stringValue. We make sure that 430// the method pool entry for stringValue in this module is complete. 431module MethodPoolCombined { 432 header "MethodPoolCombined1.h" 433 header "MethodPoolCombined2.h" 434} 435 436module MethodPoolString1 { 437 header "MethodPoolString1.h" 438} 439 440module MethodPoolString2 { 441 header "MethodPoolString2.h" 442} 443 444module Empty {} 445 446module MacroFabs1 { 447 header "MacroFabs1.h" 448} 449 450module DiagOutOfDate { 451 header "DiagOutOfDate.h" 452} 453 454module DebugNestedA { 455 header "DebugNestedA.h" 456 export * 457} 458 459module DebugNestedB { 460 header "DebugNestedB.h" 461 export * 462} 463 464module objcAtKeywordMissingEnd { 465 header "objcAtKeywordMissingEnd.h" 466} 467 468module innerstructredef { 469 module one { 470 header "empty.h" 471 } 472 module two { 473 header "innerstructredef.h" 474 } 475} 476 477module template_nontrivial0 { 478 header "template-nontrivial0.h" 479 export * 480} 481 482module template_nontrivial1 { 483 header "template-nontrivial1.h" 484 export * 485} 486