// RUN: %clang_cc1 -fsyntax-only -verify %s
struct A {
  virtual ~A();
};

struct B : A {  // expected-error {{no suitable member 'operator delete' in 'B'}}
  B() { }
  void operator delete(void *, int); // expected-note {{'operator delete' declared here}}
}; // expected-note {{implicit default destructor for 'B' first required here}}

struct C : A {  // expected-error {{no suitable member 'operator delete' in 'C'}}
  void operator delete(void *, int); // expected-note {{'operator delete' declared here}}
}; // expected-note {{implicit default destructor for 'C' first required here}}

void f() {
  (void)new B;
  (void)new C;
}

// Make sure that the key-function computation is consistent when the
// first virtual member function of a nested class has an inline body.
struct Outer {
  struct Inner {
    virtual void f() { }
    void g();
  };
};

void Outer::Inner::g() { }
