diff options
Diffstat (limited to 'gdb/testsuite/gdb.cp/m-data.cc')
-rw-r--r-- | gdb/testsuite/gdb.cp/m-data.cc | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.cp/m-data.cc b/gdb/testsuite/gdb.cp/m-data.cc new file mode 100644 index 0000000..c97e719 --- /dev/null +++ b/gdb/testsuite/gdb.cp/m-data.cc @@ -0,0 +1,64 @@ +// 2002-05-13 + +enum region { oriental, egyptian, greek, etruscan, roman }; + +// Test one. +class gnu_obj_1 +{ +protected: + typedef region antiquities; + const bool test; + const int key1; + long key2; + + antiquities value; + +public: + gnu_obj_1(antiquities a, long l): test(true), key1(5), key2(l), value(a) {} +}; + +// Test two. +template<typename T> +class gnu_obj_2: public virtual gnu_obj_1 +{ +protected: + antiquities value_derived; + +public: + gnu_obj_2(antiquities b): gnu_obj_1(oriental, 7), value_derived(b) { } +}; + +// Test three. +template<typename T> +class gnu_obj_3 +{ +protected: + typedef region antiquities; + gnu_obj_2<int> data; + +public: + gnu_obj_3(antiquities b): data(etruscan) { } +}; + +int shadow = 0; + +class C +{ +public: + C (int x) : shadow (x) {} + void marker () {} +private: + int shadow; +}; + +int main() +{ + gnu_obj_1 test1(egyptian, 4589); + gnu_obj_2<long> test2(roman); + gnu_obj_3<long> test3(greek); + + C theC (1); // breakpoint: first-constructs-done + theC.marker (); + + return 0; +} |