diff options
Diffstat (limited to 'gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900121_05.C')
-rw-r--r-- | gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900121_05.C | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900121_05.C b/gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900121_05.C new file mode 100644 index 000000000..62db5b343 --- /dev/null +++ b/gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900121_05.C @@ -0,0 +1,31 @@ +// { dg-do assemble } +// g++ 1.36.1 bug 900121_05 + +// g++ allows unions to have base types (i.e. to be "derived") and it allows +// other types to have unions as base types. Both cases are illegal. + +// g++ curently does not detect such errors. + +// Cfront 2.0 passes this test. + +// keywords: unions, inheritance + +struct s0 { + int s0_member; +}; + +union u0 : public s0 { /* { dg-error "" } union has base class */ + int u0_member_0; + int u0_member_1; +}; + +union u1 { + int u1_member_0; + int u1_member_1; +}; + +struct s1 : public u1 { /* { dg-error "base type" } */ + int s1_member_0; +}; + +int main () { return 0; } |