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