diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.brendan/copy5.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.brendan/copy5.C | 85 |
1 files changed, 1 insertions, 84 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy5.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy5.C index db63d75925b..b5287f33795 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/copy5.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy5.C @@ -1,84 +1 @@ -// GROUPS passed copy-ctors -/* -bad: -sibelius402> a.out -a=5 a.virtMember()=30 -BaseClass::Increm --> {i=5, virtMember()=30} -a=7 a.virtMember()=30 -b=7 b.virtMember()=30 -BaseClass::Increm --> {i=7, virtMember()=999} -b=9 b.virtMember()=30 -sibelius403> - - good: - -sibelius406> a.out -a=5 a.virtMember()=30 -BaseClass::Increm --> {i=5, virtMember()=30} -a=7 a.virtMember()=30 -b=7 b.virtMember()=30 -BaseClass::Increm --> {i=7, virtMember()=30} -b=9 b.virtMember()=30 -*/ - -extern "C" void printf (char *, ...); -extern "C" void exit (int); - -void die () { printf ("FAIL\n"); exit (1); } - -class BaseClass { - - friend int operator != (const BaseClass irv, int x); - - int i; - -public: - - BaseClass( const BaseClass& ir ) : i(ir.i) {}; - BaseClass() : i(5) {}; - - virtual int virtMember() { return( 999 ); }; - - void Increm( int r ); -}; - -void BaseClass::Increm( int r ) -{ - if ((i == 5 && virtMember () == 30) - || (i == 7 && virtMember () == 30)) - i += r; - else - die (); -}; - -class DerivedClass : public BaseClass { -public: - int virtMember() { return( 30 ); }; -}; - -int operator != (const BaseClass irv, int x) { return irv.i != x; } - -main () -{ - DerivedClass a; - - if (a != 5 || a.virtMember () != 30) - die (); - - a.Increm(2); - - if (a != 7 || a.virtMember () != 30) - die (); - - DerivedClass b = a; - - if (b != 7 || a.virtMember () != 30) - die (); - - b.Increm(2); - - if (b != 9 || a.virtMember () != 30) - die (); - - printf ("PASS\n"); -} +int |