| // { dg-do assemble } |
| // GROUPS passed visibility |
| // visibility file |
| // From: mclaugh@tnt.acsys.com (Mark A. McLaughlin) |
| // Date: Wed, 25 Aug 93 14:30:47 MDT |
| // Subject: g++ bug |
| // Message-ID: <9308252030.AA02352@tnt.acsys.com> |
| class B { |
| protected: |
| int i; // { dg-error "" } protected |
| }; |
| |
| class D1 : public B { |
| }; |
| |
| class D2 : public B { |
| friend void fr(B*,D1*,D2*); |
| void mem(B*,D1*); |
| }; |
| |
| void fr(B* pb, D1* p1, D2* p2) |
| { |
| pb->i = 1; // illegal// { dg-error "" } .* |
| p1->i = 2; // illegal// { dg-error "" } .* |
| p2->i = 3; // ok (access through D2) |
| } |
| |
| void D2::mem(B* pb, D1* p1) |
| { |
| pb->i = 1; // illegal// { dg-error "" } .* |
| p1->i = 2; // illegal// { dg-error "" } .* |
| i = 3; // ok (access through `this') |
| } |
| |
| void g(B* pb, D1* p1, D2* p2) |
| { |
| pb->i = 1; // illegal// { dg-error "" } .* |
| p1->i = 2; // illegal// { dg-error "" } .* |
| p2->i = 3; // illegal// { dg-error "" } .* |
| } |