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