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 objc_type_param {
  header "objc_type_param.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_flags {
  header "diag_flags.h"
}

module diag_pragma {
  header "diag_pragma.h"
}

module pragma_pack {
  module set { header "pragma_pack_set.h" }
  module empty { header "empty.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 DebugObjCImport {
  module SubModule {
    header "DebugObjCImport.h"
  }
}

module DebugDwoId {
  header "DebugDwoId.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 riscv {
    requires riscv
    module riscv32 { requires riscv32 }
    module riscv64 { requires riscv64 }
  }
}

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 *
}

module objcAtKeywordMissingEnd {
  header "objcAtKeywordMissingEnd.h"
}

module innerstructredef {
  module one {
    header "empty.h"
  }
  module two {
   header "innerstructredef.h"
  }
}

module template_nontrivial0 {
  header "template-nontrivial0.h"
  export *
}

module template_nontrivial1 {
  header "template-nontrivial1.h"
  export *
}
