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