diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-02-25 07:33:38 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-02-25 07:33:38 +0000 |
commit | 561fb15801159b7ac0ecb1d10cdcf21f1e058283 (patch) | |
tree | 03a155b5c6ec9500c7575b45961e652201881de0 /clang/test/SemaCXX/defaulted-private-dtor.cpp | |
parent | d489edff7fa1251c3460b38e17c88ef85c98ff62 (diff) | |
download | bcm5719-llvm-561fb15801159b7ac0ecb1d10cdcf21f1e058283.tar.gz bcm5719-llvm-561fb15801159b7ac0ecb1d10cdcf21f1e058283.zip |
Teach CXXRecordDecl::hasIrrelevantDestructor to check the base classes and
data members for deleted or user-provided destructors.
Now it's computed in advance, serialize it, and in passing fix all the other
record DefinitionData flags whose serialization was missing.
llvm-svn: 151441
Diffstat (limited to 'clang/test/SemaCXX/defaulted-private-dtor.cpp')
-rw-r--r-- | clang/test/SemaCXX/defaulted-private-dtor.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/test/SemaCXX/defaulted-private-dtor.cpp b/clang/test/SemaCXX/defaulted-private-dtor.cpp index a15bdde60c9..a4b868c0ad5 100644 --- a/clang/test/SemaCXX/defaulted-private-dtor.cpp +++ b/clang/test/SemaCXX/defaulted-private-dtor.cpp @@ -2,7 +2,7 @@ class BadDtor { // A private, but nonetheless trivial, destructor. - ~BadDtor() = default; // expected-note 9{{here}} + ~BadDtor() = default; // expected-note 11{{here}} friend class K; }; void f() { @@ -12,6 +12,15 @@ void f() { BadDtor dd; // expected-error {{private destructor}} throw dd; // expected-error {{private destructor}} } +struct V { // expected-note {{here}} + V(); + BadDtor bd; // expected-error {{private destructor}} +}; +V v; // expected-error {{deleted function}} expected-note {{required here}} +struct W : BadDtor { // expected-note {{here}} expected-error {{private destructor}} + W(); +}; +W w; // expected-error {{deleted function}} expected-note {{required here}} struct X : BadDtor { // expected-error {{private destructor}} ~X() {} }; |