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