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