summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.law/visibility20.C
blob: 0560523bfa482abb9214917295de29d6e2919263 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// { dg-do assemble  }
// GROUPS passed visibility
// visibility file
// From: doug@foxtrot.ccmrc.ucsb.edu (Douglas Scott)
// Date:     Tue, 10 Aug 93 10:06:33 PDT
// Subject:  G++ 2.4.5 allows access to protected base members
// Message-ID: <9308101706.AA04485@foxtrot.ccmrc.ucsb.edu>

class Base {
protected:
      void protectedBaseFunction() {} // { dg-error "" } protected
public:
    Base() {}
};


class Derived : public Base {
public:
    Derived() {}
    void noticeThisFunction(Base *);
};


void
Derived::noticeThisFunction(Base *b) {
    b->protectedBaseFunction(); // ARM says this is not allowed// { dg-error "" } .*
                                // since it is not called on 'this'
}

int main() {
    Base b;
    Derived d;
    d.noticeThisFunction(&b);
    printf("gpptest run\n");// { dg-error "" } .*
}