/* Test DWARF namespace support. This test case is based on GDB testsuite test case. */ /* { dg-do compile } */ namespace AAA { char c; int i; int A_xyzq (int); char xyzq (char); class inA { public: int xx; int fum (int); }; }; int AAA::inA::fum (int i) { return 10 + i; } namespace BBB { char c; int i; int B_xyzq (int); char xyzq (char); namespace CCC { char xyzq (char); }; class Class { public: char xyzq (char); int dummy; }; }; int AAA::A_xyzq (int x) { return 2 * x; } char AAA::xyzq (char c) { return 'a'; } int BBB::B_xyzq (int x) { return 3 * x; } char BBB::xyzq (char c) { return 'b'; } char BBB::CCC::xyzq (char c) { return 'z'; } char BBB::Class::xyzq (char c) { return 'o'; } void marker1(void) { return; } namespace { int X = 9; namespace G { int Xg = 10; namespace { int XgX = 11; } } } namespace H { int h = 14; } namespace I = H; namespace J { int j = 15; } using namespace J; namespace K { int k = 16; } namespace L { using namespace K; } namespace O { int o = 18; } namespace P { using namespace O; } namespace Q { using namespace P; } namespace R { int r1 = 19; int r2 = 20; } using R::r1; namespace C { int c = 1; int shadow = 12; class CClass { public: int x; class NestedClass { public: int y; }; }; namespace { int cX = 6; namespace F { int cXf = 7; namespace { int cXfX = 8; } } } namespace C { int cc = 2; } namespace E { int ce = 4; } namespace D { int cd = 3; int shadow = 13; namespace E { int cde = 5; } namespace M { int cdm = 17; } using namespace M; void marker2 (void) { // NOTE: carlton/2003-04-23: I'm listing the expressions that I // plan to have GDB try to print out, just to make sure that the // compiler and I agree which ones should be legal! It's easy // to screw up when testing the boundaries of namespace stuff. c; //cc; C::cc; cd; //C::D::cd; E::cde; shadow; //E::ce; cX; F::cXf; F::cXfX; X; G::Xg; //cXOtherFile; //XOtherFile; G::XgX; I::h; j; L::k; //k; cdm; Q::o; //o; r1; //r2; return; } } } int main () { using AAA::inA; char c1; using namespace BBB; c1 = xyzq ('x'); c1 = AAA::xyzq ('x'); c1 = BBB::CCC::xyzq ('m'); inA ina; ina.xx = 33; int y; y = AAA::A_xyzq (33); y += B_xyzq (44); BBB::Class cl; c1 = cl.xyzq('e'); marker1(); C::D::marker2 (); }