module XA { header "a.h" } module XB { header "b.h" } module XC { header "c.h" use XA // Intentionally doesn't use XB to show that -fdecl-use isn't transitive. } module XD { header "d.h" use XA // Intentionally doesn't use XB to show that -fdecl-use isn't transitive. } module XE { header "e.h" header "unavailable.h" use XA use XB } module XF { header "f.h" header "unavailable.h" use XA use XB } module XG { header "g.h" header "g1.h" use XC use XE use XJ } module XH { header "h.h" header "h1.h" header "s.h" use XC use XE } module XJ { header "j.h" } module XS { }