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>
8 class B {
9 protected:
10 int i; // { dg-message "" } protected
11 };
12
13 class D1 : public B {
14 };
15
16 class D2 : public B {
17 friend void fr(B*,D1*,D2*);
18 void mem(B*,D1*);
19 };
20
fr(B * pb,D1 * p1,D2 * p2)21 void 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
mem(B * pb,D1 * p1)28 void 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
g(B * pb,D1 * p1,D2 * p2)35 void 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