111
|
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
|
|
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
|
|
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
|
|
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 }
|