2010-06-16 Mikael Pettersson <mikpe@it.uu.se>
[official-gcc.git] / gcc / testsuite / g++.dg / debug / namespace1.C
blob6629efb9a850dc8c2ba2f50b75e1d4418a10fde8
1 /* Test DWARF namespace support. 
2    This test case is based on GDB testsuite test case.  */
3 /* { dg-do compile } */
5 namespace AAA {
6   char c;
7   int i;
8   int A_xyzq (int);
9   char xyzq (char);
10   class inA {
11   public:
12     int xx;
13     int fum (int);
14   };
17 int AAA::inA::fum (int i)
19   return 10 + i;
22 namespace BBB {
23   char c;
24   int i;
25   int B_xyzq (int);
26   char xyzq (char);
28   namespace CCC {
29     char xyzq (char);
30   };
32   class Klasse {
33   public:
34     char xyzq (char);
35     int dummy;
36   };
39 int AAA::A_xyzq (int x)
41   return 2 * x;
44 char AAA::xyzq (char c)
46   return 'a';
50 int BBB::B_xyzq (int x)
52   return 3 * x;
55 char BBB::xyzq (char c)
57   return 'b';
60 char BBB::CCC::xyzq (char c)
62   return 'z';
65 char BBB::Klasse::xyzq (char c)
67   return 'o';
70 void marker1(void)
72   return;
75 namespace
77   int X = 9;
79   namespace G
80   {
81     int Xg = 10;
83     namespace
84     {
85       int XgX = 11;
86     }
87   }
90 namespace H
92   int h = 14;
95 namespace I = H;
97 namespace J
99   int j = 15;
102 using namespace J;
104 namespace K
106   int k = 16;
109 namespace L
111   using namespace K;
114 namespace O
116   int o = 18;
119 namespace P
121   using namespace O;
124 namespace Q
126   using namespace P;
129 namespace R
131   int r1 = 19;
132   int r2 = 20;
135 using R::r1;
137 namespace C
139   int c = 1;
140   int shadow = 12;
142   class CClass {
143   public:
144     int x;
145     class NestedClass {
146     public:
147       int y;
148     };
149   };
151   namespace
152   {
153     int cX = 6;
154     
155     namespace F
156     {
157       int cXf = 7;
159       namespace
160       {
161         int cXfX = 8;
162       }
163     }
164   }
166   namespace C
167   {
168     int cc = 2;
169   }
171   namespace E
172   {
173     int ce = 4;
174   }
176   namespace D
177   {
178     int cd = 3;
179     int shadow = 13;
181     namespace E
182     {
183       int cde = 5;
184     }
186     namespace M
187     {
188       int cdm = 17;
189     }
191     using namespace M;
193     void marker2 (void)
194     {
195       // NOTE: carlton/2003-04-23: I'm listing the expressions that I
196       // plan to have GDB try to print out, just to make sure that the
197       // compiler and I agree which ones should be legal!  It's easy
198       // to screw up when testing the boundaries of namespace stuff.
199       c;
200       //cc;
201       C::cc;
202       cd;
203       //C::D::cd;
204       E::cde;
205       shadow;
206       //E::ce;
207       cX;
208       F::cXf;
209       F::cXfX;
210       X;
211       G::Xg;
212       //cXOtherFile;
213       //XOtherFile;
214       G::XgX;
215       I::h;
216       j;
217       L::k;
218       //k;
219       cdm;
220       Q::o;
221       //o;
222       r1;
223       //r2;
225       return;
226     }
228   }
231 int main ()
233   using AAA::inA;
234   char c1;
236   using namespace BBB;
237   
238   c1 = xyzq ('x');
239   c1 = AAA::xyzq ('x');
240   c1 = BBB::CCC::xyzq ('m');
241   
242   inA ina;
244   ina.xx = 33;
246   int y;
248   y = AAA::A_xyzq (33);
249   y += B_xyzq (44);
251   BBB::Klasse cl;
253   c1 = cl.xyzq('e');
255   marker1();
256   
257   C::D::marker2 ();