Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 struct A {
      3   virtual ~A();
      4 };
      5 
      6 struct B : A {  // expected-error {{no suitable member 'operator delete' in 'B'}}
      7   B() { } // expected-note {{implicit destructor for 'B' first required here}}
      8   void operator delete(void *, int); // expected-note {{'operator delete' declared here}}
      9 };
     10 
     11 struct C : A {  // expected-error {{no suitable member 'operator delete' in 'C'}}
     12   void operator delete(void *, int); // expected-note {{'operator delete' declared here}}
     13 };
     14 
     15 void f() {
     16   (void)new B;
     17   (void)new C; // expected-note {{implicit destructor for 'C' first required here}}
     18 }
     19 
     20 // Make sure that the key-function computation is consistent when the
     21 // first virtual member function of a nested class has an inline body.
     22 struct Outer {
     23   struct Inner {
     24     virtual void f() { }
     25     void g();
     26   };
     27 };
     28 
     29 void Outer::Inner::g() { }
     30