// RUN: %clang_cc1 -verify -std=c++11 %s -fcxx-exceptions class BadDtor { // A private, but nonetheless trivial, destructor. ~BadDtor() = default; // expected-note 9{{here}} friend class K; }; void f() { BadDtor *p = new BadDtor[3]; // expected-error {{private destructor}} delete [] p; // expected-error {{private destructor}} const BadDtor &dd2 = BadDtor(); // expected-error {{private destructor}} BadDtor dd; // expected-error {{private destructor}} throw dd; // expected-error {{private destructor}} } struct V { V(); BadDtor bd; // expected-note {{inaccessible destructor}} }; V v; // expected-error {{deleted function}} struct W : BadDtor { // expected-note {{inaccessible destructor}} W(); }; W w; // expected-error {{deleted function}} struct X : BadDtor { // expected-error {{private destructor}} ~X() {} }; struct Y { BadDtor dd; // expected-error {{private destructor}} ~Y() {} }; struct Z : virtual BadDtor { // expected-error {{private destructor}} ~Z() {} }; BadDtor dd; // expected-error {{private destructor}} class K : BadDtor { void f() { BadDtor *p = new BadDtor[3]; delete [] p; const BadDtor &dd2 = BadDtor(); BadDtor dd; throw dd; { BadDtor x; goto dont_call_dtor; } dont_call_dtor: ; } struct Z : virtual BadDtor { ~Z() {} }; BadDtor dd; ~K(); };