| /* 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 Klasse { |
| 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::Klasse::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::Klasse cl; |
| |
| c1 = cl.xyzq('e'); |
| |
| marker1(); |
| |
| C::D::marker2 (); |
| } |