blob: a15bdde60c92ec8da536ab0b7a68ca34f6acc89d [file] [log] [blame]
Richard Smith213d70b2012-02-18 04:13:32 +00001// RUN: %clang_cc1 -verify -std=c++11 %s -fcxx-exceptions
2
3class BadDtor {
4 // A private, but nonetheless trivial, destructor.
5 ~BadDtor() = default; // expected-note 9{{here}}
6 friend class K;
7};
8void f() {
9 BadDtor *p = new BadDtor[3]; // expected-error {{private destructor}}
10 delete [] p; // expected-error {{private destructor}}
11 const BadDtor &dd2 = BadDtor(); // expected-error {{private destructor}}
12 BadDtor dd; // expected-error {{private destructor}}
13 throw dd; // expected-error {{private destructor}}
14}
15struct X : BadDtor { // expected-error {{private destructor}}
16 ~X() {}
17};
18struct Y {
19 BadDtor dd; // expected-error {{private destructor}}
20 ~Y() {}
21};
22struct Z : virtual BadDtor { // expected-error {{private destructor}}
23 ~Z() {}
24};
25BadDtor dd; // expected-error {{private destructor}}
26
27class K : BadDtor {
28 void f() {
29 BadDtor *p = new BadDtor[3];
30 delete [] p;
31 const BadDtor &dd2 = BadDtor();
32 BadDtor dd;
33 throw dd;
34
35 {
36 BadDtor x;
37 goto dont_call_dtor;
38 }
39dont_call_dtor:
40 ;
41 }
42 struct Z : virtual BadDtor {
43 ~Z() {}
44 };
45 BadDtor dd;
46 ~K();
47};