module XA { header "a.h" } module XB { module B { 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 use XK use XN } module XH { module H { header "h.h" } header "h1.h" header "s.h" use XC use XE } module XJ { header "j.h" } module XK { textual header "k.h" } module XL { textual header "l.h" } module XM { private textual header "m.h" textual header "m2.h" } module XN { module sub { header "sub.h" } } module XS { }