1module XA {
2  header "a.h"
3}
4
5module XB {
6  module B { header "b.h" }
7}
8
9module XC {
10  header "c.h"
11  use XA
12  // Intentionally doesn't use XB to show that -fdecl-use isn't transitive.
13}
14
15module XD {
16  header "d.h"
17  use XA
18  // Intentionally doesn't use XB to show that -fdecl-use isn't transitive.
19}
20
21module XE {
22  header "e.h"
23  header "unavailable.h"
24  use XA
25  use XB
26}
27
28module XF {
29  header "f.h"
30  header "unavailable.h"
31  use XA
32  use XB
33}
34
35module XG {
36  header "g.h"
37  header "g1.h"
38  use XC
39  use XE
40  use XJ
41  use XK
42  use XN
43}
44
45module XH {
46  module H { header "h.h" }
47  header "h1.h"
48  header "s.h"
49  use XC
50  use XE
51}
52
53module XJ {
54  header "j.h"
55}
56
57module XK {
58  textual header "k.h"
59}
60
61module XL {
62  textual header "l.h"
63}
64
65module XM {
66  private textual header "m.h"
67  textual header "m2.h"
68}
69
70module XN {
71  module sub {
72    header "sub.h"
73  }
74}
75
76module XS {
77}
78