1 // RUN: %clang_cc1 -fms-extensions -verify %s
2 
3 // rdar://22464808
4 
5 namespace test0 {
6   class A {
7   private:
8     void foo(int*);
9   public:
10     void foo(long*);
11   };
12   class B : public A {
test()13     void test() {
14       __super::foo((long*) 0);
15     }
16   };
17 }
18 
19 namespace test1 {
20   struct A {
21     static void foo(); // expected-note {{member is declared here}}
22   };
23   struct B : private A { // expected-note {{constrained by private inheritance here}}
testtest1::B24     void test() {
25       __super::foo();
26     }
27   };
28   struct C : public B {
testtest1::C29     void test() {
30       __super::foo(); // expected-error {{'foo' is a private member of 'test1::A'}}
31     }
32   };
33 }
34 
35 namespace test2 {
36   struct A {
37     static void foo();
38   };
39   struct B : public A {
testtest2::B40     void test() {
41       __super::foo();
42     }
43   };
44   struct C : private B {
testtest2::C45     void test() {
46       __super::foo();
47     }
48   };
49 }
50