13334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gay// RUN: %clang_cc1 -fsyntax-only -verify %s 23334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gayclass Base { 37a614d8380297fcd2bc23986241905d97222948cRichard Smith virtual ~Base(); // expected-note {{implicitly declared private here}} 43334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gay}; 57a614d8380297fcd2bc23986241905d97222948cRichard Smithstruct Foo : public Base { // expected-error {{base class 'Base' has private destructor}} 6d7c56e1114bfe7d461786903bb720d2c6efc05a1Richard Smith const int kBlah = 3; // expected-warning {{is a C++11 extension}} 73334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gay Foo(); 83334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gay}; 93334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gaystruct Bar : public Foo { 106698be8a6930730df5e61c941197e72682196187Richard Smith Bar() { } // expected-note {{implicit destructor for 'Foo' first required here}} 113334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gay}; 123334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gaystruct Baz { 133334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gay Foo f; 143334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gay Baz() { } 153334b0b13ad3bf568a16cda29434b18d084f6dcbMatt Beaumont-Gay}; 16