module c_library [extern_c] { module inner { header "c-header.h" } } module cxx_library { header "cxx-header.h" requires cplusplus } module c_library_bad [extern_c] { header "c-header-bad.h" } module diamond_top { header "diamond_top.h" } module diamond_left { header "diamond_left.h" export diamond_top } module diamond_right { header "diamond_right.h" export diamond_top } module diamond_bottom { header "diamond_bottom.h" export * } module irgen { header "irgen.h" } module cxx_irgen_top { header "cxx-irgen-top.h" } module cxx_irgen_left { header "cxx-irgen-left.h" } module cxx_irgen_right { header "cxx-irgen-right.h" } module lookup_left_objc { header "lookup_left.h" } module lookup_right_objc { header "lookup_right.h" } module lookup_left_cxx { header "lookup_left.hpp" } module lookup_right_cxx { header "lookup_right.hpp" } module module_private_left { header "module_private_left.h" } module module_private_right { header "module_private_right.h" } module macros_top { header "macros_top.h" explicit module b { header "macros_top_b.h" } explicit module c { header "macros_top_c.h" } } module macros_left { header "macros_left.h" export * } module macros_right { header "macros_right.h" export * explicit module undef { header "macros_right_undef.h" } } module macros_bottom { header "macros_bottom.h" export * } module macros { header "macros.h" } module macros_other { header "macros_other.h" } module category_top { header "category_top.h" } module category_left { header "category_left.h" export category_top explicit module sub { header "category_left_sub.h" } } module category_right { header "category_right.h" export category_top explicit module sub { header "category_right_sub.h" } } module category_bottom { header "category_bottom.h" export category_left export category_right } module category_other { header "category_other.h" } module redeclarations_left { header "redeclarations_left.h" } module redeclarations_right { header "redeclarations_right.h" } module redecl_namespaces_left { header "redecl_namespaces_left.h" } module redecl_namespaces_right { header "redecl_namespaces_right.h" } module redecl_add_after_load_top { header "redecl-add-after-load-top.h" } module redecl_add_after_load_decls { header "redecl-add-after-load-decls.h" } module redecl_add_after_load { header "redecl-add-after-load.h" } module load_failure { header "load_failure.h" } module decldef { explicit module Decl { header "decl.h" } explicit module Decl2 { header "decl2.h" } explicit module Def { header "def.h" } } module redecl_merge_top { header "redecl-merge-top.h" explicit module Explicit { header "redecl-merge-top-explicit.h" } exclude header "nonexistent.h" } module redecl_merge_left { header "redecl-merge-left.h" export * } module redecl_merge_left_left { header "redecl-merge-left-left.h" export * } module redecl_merge_right { header "redecl-merge-right.h" export * } module redecl_merge_bottom { explicit module prefix { header "redecl-merge-bottom-prefix.h" } header "redecl-merge-bottom.h" export * } module namespaces_top { header "namespaces-top.h" export * } module namespaces_left { header "namespaces-left.h" export * } module namespaces_right { header "namespaces-right.h" export * } module templates_top { header "templates-top.h" export * } module templates_left { header "templates-left.h" export * } module templates_right { header "templates-right.h" export * } module MethodPoolA { header "MethodPoolA.h" explicit module Sub2 { header "MethodPoolASub2.h" } explicit module Sub { header "MethodPoolASub.h" } } module MethodPoolB { header "MethodPoolB.h" explicit module Sub2 { header "MethodPoolBSub2.h" } explicit module Sub { header "MethodPoolBSub.h" } } module import_decl { header "import-decl.h" } framework module * { exclude NotAModule } module linkage_merge_left { explicit module sub { header "linkage-merge-sub.h" } } module autolink { header "autolink.h" link "autolink" explicit module sub { header "autolink-sub.h" link "autolink_sub" } explicit module sub2 { header "autolink-sub2.h" link framework "autolink_framework" } explicit module sub3 { header "autolink-sub3.h" link "autolink_from_pch" } } module weird_objc { header "weird_objc.h" } module ignored_macros { header "ignored_macros.h" } module cxx_many_overloads { header "cxx-many-overloads.h" } module cxx_inline_namespace { header "cxx-inline-namespace.h" } module cxx_inline_namespace_b { header "cxx-inline-namespace-b.h" } module cxx_linkage_cache { header "cxx-linkage-cache.h" } module cxx_templates_common { header "cxx-templates-common.h" explicit module unimported { header "cxx-templates-unimported.h" } } module cxx_templates_a { header "cxx-templates-a.h" } module cxx_templates_b_impl { header "cxx-templates-b-impl.h" } module cxx_templates_b { header "cxx-templates-b.h" } module cxx_templates_c { header "cxx-templates-c.h" } module cxx_templates_d { header "cxx-templates-d.h" } module cxx_decls { module unimported { header "cxx-decls-unimported.h" } module imported { header "cxx-decls-imported.h" } } module cxx_decls_premerged { header "cxx-decls-premerged.h" } module cxx_decls_merged { header "cxx-decls-merged.h" } module config { header "config.h" config_macros [exhaustive] WANT_FOO, WANT_BAR } module diag_pragma { header "diag_pragma.h" } module dummy { header "dummy.h" } module builtin { header "builtin.h" explicit module sub { header "builtin_sub.h" } } module linkage_merge { explicit module foo { header "linkage-merge-foo.h" } explicit module bar { header "linkage-merge-bar.h" } } module incomplete_mod { header "incomplete_mod.h" } module warning { header "warning.h" } module warn_unused_local_typedef { header "warn-unused-local-typedef.h" } module using_decl { module a { header "using-decl-a.h" export * } module b { header "using-decl-b.h" export * } } module recursive_visibility_a1 { module inner { header "recursive_visibility_a1_inner.h" } } module recursive_visibility_a2 { module inner { module more_inner { header "recursive_visibility_a2_more_inner.h" } } } module recursive_visibility_b { header "recursive_visibility_b.h" export * } module recursive_visibility_c { header "recursive_visibility_c.h" } module recursive1 { header "recursive1.h" } module recursive2 { header "recursive2.h" } module crash { header "crash.h" } module DebugCXX { header "DebugCXX.h" } module DebugObjC { header "DebugObjC.h" } module ImportNameInDir { header "ImportNameInDir.h" export * } module RequiresWithMissingHeader { module HeaderBefore { header "RequiresWithMissingHeader-Missing1.h" requires missing } module HeaderAfter { requires missing header "RequiresWithMissingHeader-Missing2.h" } } module TargetFeatures { module arm { requires arm module aarch32 { requires aarch32 } module aarch64 { requires aarch64 } } module x86 { requires x86 module x86_32 { requires x86_32 } module x86_64 { requires x86_64 } } } module DebugSubmodules { module DebugSubmoduleA { header "DebugSubmoduleA.h" export * } module DebugSubmoduleB { header "DebugSubmoduleB.h" export * } } module ExtensionTestA { header "ExtensionTestA.h" } module TypedefTag { header "typedef-tag.h" explicit module Hidden { header "typedef-tag-hidden.h" } } module ElaboratedTypeStructs { module Empty {} module Structs { header "elaborated-type-structs.h" } } // We import a module, then declare a method with selector stringValue in // MethodPoolCombined1.h. In MethodPoolCombined2.h, we import another module // that also contains a method for selector stringValue. We make sure that // the method pool entry for stringValue in this module is complete. module MethodPoolCombined { header "MethodPoolCombined1.h" header "MethodPoolCombined2.h" } module MethodPoolString1 { header "MethodPoolString1.h" } module MethodPoolString2 { header "MethodPoolString2.h" } module Empty {} module MacroFabs1 { header "MacroFabs1.h" } module DiagOutOfDate { header "DiagOutOfDate.h" } module DebugNestedA { header "DebugNestedA.h" export * } module DebugNestedB { header "DebugNestedB.h" export * }