diff options
Diffstat (limited to 'test/SemaCXX/cxx0x-deleted-default-ctor.cpp')
-rw-r--r-- | test/SemaCXX/cxx0x-deleted-default-ctor.cpp | 75 |
1 files changed, 37 insertions, 38 deletions
diff --git a/test/SemaCXX/cxx0x-deleted-default-ctor.cpp b/test/SemaCXX/cxx0x-deleted-default-ctor.cpp index 16c5664..0cebc10 100644 --- a/test/SemaCXX/cxx0x-deleted-default-ctor.cpp +++ b/test/SemaCXX/cxx0x-deleted-default-ctor.cpp @@ -7,27 +7,27 @@ struct non_trivial { ~non_trivial(); }; -union bad_union { // expected-note {{marked deleted here}} - non_trivial nt; +union bad_union { + non_trivial nt; // expected-note {{non-trivial default constructor}} }; -bad_union u; // expected-error {{call to deleted constructor}} -union bad_union2 { // expected-note {{marked deleted here}} +bad_union u; // expected-error {{call to implicitly-deleted default constructor}} +union bad_union2 { // expected-note {{all data members are const-qualified}} const int i; }; -bad_union2 u2; // expected-error {{call to deleted constructor}} +bad_union2 u2; // expected-error {{call to implicitly-deleted default constructor}} -struct bad_anon { // expected-note {{marked deleted here}} +struct bad_anon { union { - non_trivial nt; + non_trivial nt; // expected-note {{non-trivial default constructor}} }; }; -bad_anon a; // expected-error {{call to deleted constructor}} -struct bad_anon2 { // expected-note {{marked deleted here}} - union { +bad_anon a; // expected-error {{call to implicitly-deleted default constructor}} +struct bad_anon2 { + union { // expected-note {{all data members of an anonymous union member are const-qualified}} const int i; }; }; -bad_anon2 a2; // expected-error {{call to deleted constructor}} +bad_anon2 a2; // expected-error {{call to implicitly-deleted default constructor}} // This would be great except that we implement union good_union { @@ -48,10 +48,10 @@ struct good : non_trivial { }; good g; -struct bad_const { // expected-note {{marked deleted here}} - const good g; +struct bad_const { + const good g; // expected-note {{field 'g' of const-qualified type 'const good' would not be initialized}} }; -bad_const bc; // expected-error {{call to deleted constructor}} +bad_const bc; // expected-error {{call to implicitly-deleted default constructor}} struct good_const { const non_trivial nt; @@ -59,44 +59,44 @@ struct good_const { good_const gc; struct no_default { - no_default() = delete; + no_default() = delete; // expected-note 3{{deleted here}} }; struct no_dtor { - ~no_dtor() = delete; + ~no_dtor() = delete; // expected-note 2{{deleted here}} }; -struct bad_field_default { // expected-note {{marked deleted here}} - no_default nd; +struct bad_field_default { + no_default nd; // expected-note {{field 'nd' has a deleted default constructor}} }; -bad_field_default bfd; // expected-error {{call to deleted constructor}} -struct bad_base_default : no_default { // expected-note {{marked deleted here}} +bad_field_default bfd; // expected-error {{call to implicitly-deleted default constructor}} +struct bad_base_default : no_default { // expected-note {{base class 'no_default' has a deleted default constructor}} }; -bad_base_default bbd; // expected-error {{call to deleted constructor}} +bad_base_default bbd; // expected-error {{call to implicitly-deleted default constructor}} -struct bad_field_dtor { // expected-note {{marked deleted here}} - no_dtor nd; +struct bad_field_dtor { + no_dtor nd; // expected-note {{field 'nd' has a deleted destructor}} }; -bad_field_dtor bfx; // expected-error {{call to deleted constructor}} -struct bad_base_dtor : no_dtor { // expected-note {{marked deleted here}} +bad_field_dtor bfx; // expected-error {{call to implicitly-deleted default constructor}} +struct bad_base_dtor : no_dtor { // expected-note {{base class 'no_dtor' has a deleted destructor}} }; -bad_base_dtor bbx; // expected-error {{call to deleted constructor}} +bad_base_dtor bbx; // expected-error {{call to implicitly-deleted default constructor}} struct ambiguous_default { ambiguous_default(); ambiguous_default(int = 2); }; -struct has_amb_field { // expected-note {{marked deleted here}} - ambiguous_default ad; +struct has_amb_field { + ambiguous_default ad; // expected-note {{field 'ad' has multiple default constructors}} }; -has_amb_field haf; // expected-error {{call to deleted constructor}} +has_amb_field haf; // expected-error {{call to implicitly-deleted default constructor}} class inaccessible_default { inaccessible_default(); }; -struct has_inacc_field { // expected-note {{marked deleted here}} - inaccessible_default id; +struct has_inacc_field { + inaccessible_default id; // expected-note {{field 'id' has an inaccessible default constructor}} }; -has_inacc_field hif; // expected-error {{call to deleted constructor}} +has_inacc_field hif; // expected-error {{call to implicitly-deleted default constructor}} class friend_default { friend struct has_friend; @@ -108,10 +108,10 @@ struct has_friend { has_friend hf; struct defaulted_delete { - no_default nd; - defaulted_delete() = default; // expected-note {{marked deleted here}} + no_default nd; // expected-note {{because field 'nd' has a deleted default constructor}} + defaulted_delete() = default; // expected-note{{implicitly deleted here}} }; -defaulted_delete dd; // expected-error {{call to deleted constructor}} +defaulted_delete dd; // expected-error {{call to implicitly-deleted default constructor}} struct late_delete { no_default nd; @@ -121,12 +121,11 @@ late_delete::late_delete() = default; // expected-error {{would delete it}} // See also rdar://problem/8125400. namespace empty { - static union {}; // expected-error {{deleted constructor}} expected-note {{here}} + static union {}; static union { union {}; }; static union { struct {}; }; static union { union { union {}; }; }; static union { union { struct {}; }; }; - static union { struct { union {}; }; }; // expected-error {{deleted constructor}} expected-note {{here}} + static union { struct { union {}; }; }; static union { struct { struct {}; }; }; } - |