diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.jason/access23.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.jason/access23.C | 90 |
1 files changed, 11 insertions, 79 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/access23.C b/gcc/testsuite/g++.old-deja/g++.jason/access23.C index 57331687b7a..7975de2d8b5 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/access23.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/access23.C @@ -1,79 +1,11 @@ -// PRMS Id: 9127 -// Bug: members of anonymous unions are not access-controlled. - -#include <stdio.h> - -struct Foo { -public: - union { - long A; - void *pX; - }; - union X { - long A; - void *pX; - } PUB ; - int PUB_A; -protected: - union { - long B; - void *pY; - } ; - union Y { - long B; - void *pY; - } PRT; - int PRT_A; -private: - union { - long C; - void *pZ; - }; - union Z { - long C; - void *pZ; - } PRV; - int PRV_A; -}; - -struct Bar : public Foo { -public: - DoSomething() { - PUB_A = 0; - Foo::A = 0; - printf("%x\n",pX); - Foo::PUB.A = 0; - printf("%x\n",PUB.pX); - B = 0; - printf("%x\n",Foo::pY); - PRT_A = 0; - PRT.B = 0; - printf("%x\n",Foo::PRT.pY); - PRV_A = 0; // ERROR - - Foo::C = 0; // ERROR - - printf("%x\n",pZ); // ERROR - - Foo::PRV.C = 0; // ERROR - - printf("%x\n",PRV.pZ); // ERROR - - } -}; - -main() -{ - Foo a; - - a.PUB_A = 0; - a.A = 0; - printf("%x\n",a.pX); - a.PRT_A = 0; // ERROR - - a.B = 0; // ERROR - - printf("%x\n",a.pY); // ERROR - - a.PRV_A = 0; // ERROR - - a.C = 0; // ERROR - - printf("%x\n",a.pZ); // ERROR - - a.PUB.A = 0; - printf("%x\n",a.PUB.pX); - a.PRT.B = 0; // ERROR - - printf("%x\n",a.PRT.pY); // ERROR - - a.PRV.C = 0; // ERROR - - printf("%x\n",a.PRV.pZ); // ERROR - -} + long B; // ERROR - protected + void *pY; // ERROR - protected + } PRT; // ERROR - protected + int PRT_A; // ERROR - protected + long C; // ERROR - private + void *pZ; // ERROR - private + long C; + } PRV; // ERROR - private + int PRV_A; // ERROR - private + void DoSomething() { +int main() |