1namespace AAA {
2  char c;
3  int i;
4  int A_xyzq (int);
5  char xyzq (char);
6  class inA {
7  public:
8    int xx;
9    int fum (int);
10  };
11};
12
13int AAA::inA::fum (int i)
14{
15  return 10 + i;
16}
17
18namespace BBB {
19  char c;
20  int i;
21  int B_xyzq (int);
22  char xyzq (char);
23
24  namespace CCC {
25    char xyzq (char);
26  };
27
28  class Class {
29  public:
30    char xyzq (char);
31    int dummy;
32  };
33};
34
35int AAA::A_xyzq (int x)
36{
37  return 2 * x;
38}
39
40char AAA::xyzq (char c)
41{
42  return 'a';
43}
44
45
46int BBB::B_xyzq (int x)
47{
48  return 3 * x;
49}
50
51char BBB::xyzq (char c)
52{
53  return 'b';
54}
55
56char BBB::CCC::xyzq (char c)
57{
58  return 'z';
59}
60
61char BBB::Class::xyzq (char c)
62{
63  return 'o';
64}
65
66void marker1(void)
67{
68  return;
69}
70
71namespace
72{
73  int X = 9;
74
75  namespace G
76  {
77    int Xg = 10;
78
79    namespace
80    {
81      int XgX = 11;
82    }
83  }
84}
85
86namespace C
87{
88  int c = 1;
89  int shadow = 12;
90
91  class CClass {
92  public:
93    int x;
94    class NestedClass {
95    public:
96      int y;
97    };
98  };
99
100  void ensureRefs () {
101    // NOTE (2004-04-23, carlton): This function is here only to make
102    // sure that GCC 3.4 outputs debug info for these classes.
103    static CClass *c = new CClass();
104    static CClass::NestedClass *n = new CClass::NestedClass();
105  }
106
107  namespace
108  {
109    int cX = 6;
110
111    namespace F
112    {
113      int cXf = 7;
114
115      namespace
116      {
117	int cXfX = 8;
118      }
119    }
120  }
121
122  namespace C
123  {
124    int cc = 2;
125  }
126
127  namespace E
128  {
129    int ce = 4;
130  }
131
132  namespace D
133  {
134    int cd = 3;
135    int shadow = 13;
136
137    namespace E
138    {
139      int cde = 5;
140    }
141
142    void marker2 (void)
143    {
144      // NOTE: carlton/2003-04-23: I'm listing the expressions that I
145      // plan to have GDB try to print out, just to make sure that the
146      // compiler and I agree which ones should be legal!  It's easy
147      // to screw up when testing the boundaries of namespace stuff.
148      c;
149      //cc;
150      C::cc;
151      cd;
152      //C::D::cd;
153      E::cde;
154      shadow;
155      //E::ce;
156      cX;
157      F::cXf;
158      F::cXfX;
159      X;
160      G::Xg;
161      //cXOtherFile;
162      //XOtherFile;
163      G::XgX;
164
165      return;
166    }
167
168  }
169}
170
171int main ()
172{
173  using AAA::inA;
174  char c1;
175
176  using namespace BBB;
177
178  c1 = xyzq ('x');
179  c1 = AAA::xyzq ('x');
180  c1 = BBB::CCC::xyzq ('m');
181
182  inA ina;
183
184  ina.xx = 33;
185
186  int y;
187
188  y = AAA::A_xyzq (33);
189  y += B_xyzq (44);
190
191  BBB::Class cl;
192
193  c1 = cl.xyzq('e');
194
195  marker1();
196
197  C::D::marker2 ();
198}
199