annotate gcc/testsuite/g++.old-deja/g++.law/visibility19.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do assemble }
kono
parents:
diff changeset
2 // GROUPS passed visibility
kono
parents:
diff changeset
3 // visibility file
kono
parents:
diff changeset
4 // From: mclaugh@tnt.acsys.com (Mark A. McLaughlin)
kono
parents:
diff changeset
5 // Date: Wed, 25 Aug 93 14:30:47 MDT
kono
parents:
diff changeset
6 // Subject: g++ bug
kono
parents:
diff changeset
7 // Message-ID: <9308252030.AA02352@tnt.acsys.com>
kono
parents:
diff changeset
8 class B {
kono
parents:
diff changeset
9 protected:
kono
parents:
diff changeset
10 int i; // { dg-message "" } protected
kono
parents:
diff changeset
11 };
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 class D1 : public B {
kono
parents:
diff changeset
14 };
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 class D2 : public B {
kono
parents:
diff changeset
17 friend void fr(B*,D1*,D2*);
kono
parents:
diff changeset
18 void mem(B*,D1*);
kono
parents:
diff changeset
19 };
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 void fr(B* pb, D1* p1, D2* p2)
kono
parents:
diff changeset
22 {
kono
parents:
diff changeset
23 pb->i = 1; // illegal// { dg-error "" } .*
kono
parents:
diff changeset
24 p1->i = 2; // illegal// { dg-error "" } .*
kono
parents:
diff changeset
25 p2->i = 3; // ok (access through D2)
kono
parents:
diff changeset
26 }
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 void D2::mem(B* pb, D1* p1)
kono
parents:
diff changeset
29 {
kono
parents:
diff changeset
30 pb->i = 1; // illegal// { dg-error "" } .*
kono
parents:
diff changeset
31 p1->i = 2; // illegal// { dg-error "" } .*
kono
parents:
diff changeset
32 i = 3; // ok (access through `this')
kono
parents:
diff changeset
33 }
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 void g(B* pb, D1* p1, D2* p2)
kono
parents:
diff changeset
36 {
kono
parents:
diff changeset
37 pb->i = 1; // illegal// { dg-error "" } .*
kono
parents:
diff changeset
38 p1->i = 2; // illegal// { dg-error "" } .*
kono
parents:
diff changeset
39 p2->i = 3; // illegal// { dg-error "" } .*
kono
parents:
diff changeset
40 }