| // RUN: %clang_cc1 -fms-extensions -verify %s |
| |
| // rdar://22464808 |
| |
| namespace test0 { |
| class A { |
| private: |
| void foo(int*); |
| public: |
| void foo(long*); |
| }; |
| class B : public A { |
| void test() { |
| __super::foo((long*) 0); |
| } |
| }; |
| } |
| |
| namespace test1 { |
| struct A { |
| static void foo(); // expected-note {{member is declared here}} |
| }; |
| struct B : private A { // expected-note {{constrained by private inheritance here}} |
| void test() { |
| __super::foo(); |
| } |
| }; |
| struct C : public B { |
| void test() { |
| __super::foo(); // expected-error {{'foo' is a private member of 'test1::A'}} |
| } |
| }; |
| } |
| |
| namespace test2 { |
| struct A { |
| static void foo(); |
| }; |
| struct B : public A { |
| void test() { |
| __super::foo(); |
| } |
| }; |
| struct C : private B { |
| void test() { |
| __super::foo(); |
| } |
| }; |
| } |