1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li // RUN: cp %s %t 3*67e74705SXin Li // RUN: not %clang_cc1 -fsyntax-only -fixit -x c++ %t 4*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x c++ %t 5*67e74705SXin Li 6*67e74705SXin Li namespace dcl_fct_default_p10 { 7*67e74705SXin Li struct A { 8*67e74705SXin Li virtual void f(int a = 7); // expected-note{{'A::f' declared here}} 9*67e74705SXin Li }; 10*67e74705SXin Li 11*67e74705SXin Li struct B : public A { 12*67e74705SXin Li void f(int a); 13*67e74705SXin Li }; 14*67e74705SXin Li m()15*67e74705SXin Livoid m() { 16*67e74705SXin Li B* pb = new B; 17*67e74705SXin Li A* pa = pb; 18*67e74705SXin Li pa->f(); // OK, calls pa->B::f(7) 19*67e74705SXin Li pb->f(); // expected-error{{too few arguments to function call, expected 1, have 0; did you mean 'A::f'?}} 20*67e74705SXin Li } 21*67e74705SXin Li } 22*67e74705SXin Li 23*67e74705SXin Li namespace PR18608 { 24*67e74705SXin Li struct A { 25*67e74705SXin Li virtual void f() const; 26*67e74705SXin Li virtual void f(int x) const; // expected-note{{'A::f' declared here}} 27*67e74705SXin Li }; 28*67e74705SXin Li 29*67e74705SXin Li struct B : public A { 30*67e74705SXin Li virtual void f() const; 31*67e74705SXin Li }; 32*67e74705SXin Li test(B b)33*67e74705SXin Livoid test(B b) { 34*67e74705SXin Li b.f(1); // expected-error{{too many arguments to function call, expected 0, have 1; did you mean 'A::f'?}} 35*67e74705SXin Li } 36*67e74705SXin Li } 37*67e74705SXin Li 38*67e74705SXin Li namespace PR20626 { 39*67e74705SXin Li class A { 40*67e74705SXin Li public: Foo()41*67e74705SXin Li void Foo(){}; // expected-note{{'Foo' declared here}} 42*67e74705SXin Li }; 43*67e74705SXin Li class B {}; 44*67e74705SXin Li class C : public A, public B { Run()45*67e74705SXin Li void Run() { 46*67e74705SXin Li B::Foo(); // expected-error{{no member named 'Foo' in 'PR20626::B'; did you mean simply 'Foo'?}} 47*67e74705SXin Li } 48*67e74705SXin Li }; 49*67e74705SXin Li } 50