1// { dg-do assemble } 2// GROUPS passed visibility 3// visibility file 4// From: mclaugh@tnt.acsys.com (Mark A. McLaughlin) 5// Date: Wed, 25 Aug 93 14:30:47 MDT 6// Subject: g++ bug 7// Message-ID: <9308252030.AA02352@tnt.acsys.com> 8class B { 9protected: 10 int i; // { dg-error "" } protected 11}; 12 13class D1 : public B { 14}; 15 16class D2 : public B { 17 friend void fr(B*,D1*,D2*); 18 void mem(B*,D1*); 19}; 20 21void fr(B* pb, D1* p1, D2* p2) 22{ 23 pb->i = 1; // illegal// { dg-error "" } .* 24 p1->i = 2; // illegal// { dg-error "" } .* 25 p2->i = 3; // ok (access through D2) 26} 27 28void D2::mem(B* pb, D1* p1) 29{ 30 pb->i = 1; // illegal// { dg-error "" } .* 31 p1->i = 2; // illegal// { dg-error "" } .* 32 i = 3; // ok (access through `this') 33} 34 35void g(B* pb, D1* p1, D2* p2) 36{ 37 pb->i = 1; // illegal// { dg-error "" } .* 38 p1->i = 2; // illegal// { dg-error "" } .* 39 p2->i = 3; // illegal// { dg-error "" } .* 40} 41