1// RUN: %clang_cc1 -fsyntax-only -Woverloaded-virtual -verify %s 2 3struct B1 { 4 virtual void foo(int); // expected-note {{declared here}} 5 virtual void foo(); // expected-note {{declared here}} 6}; 7 8struct S1 : public B1 { 9 void foo(float); // expected-warning {{hides overloaded virtual functions}} 10}; 11 12struct S2 : public B1 { 13 void foo(); // expected-note {{declared here}} 14}; 15 16struct B2 { 17 virtual void foo(void*); // expected-note {{declared here}} 18}; 19 20struct MS1 : public S2, public B2 { 21 virtual void foo(int); // expected-warning {{hides overloaded virtual functions}} 22}; 23 24struct B3 { 25 virtual void foo(int); 26 virtual void foo(); 27}; 28 29struct S3 : public B3 { 30 using B3::foo; 31 void foo(float); 32}; 33 34struct B4 { 35 virtual void foo(); 36}; 37 38struct S4 : public B4 { 39 void foo(float); 40 void foo(); 41}; 42 43namespace PR9182 { 44struct Base { 45 virtual void foo(int); 46}; 47 48void Base::foo(int) { } 49 50struct Derived : public Base { 51 virtual void foo(int); 52 void foo(int, int); 53}; 54} 55 56namespace PR9396 { 57class A { 58public: 59 virtual void f(int) {} 60}; 61 62class B : public A { 63public: 64 static void f() {} 65}; 66} 67