summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp
diff options
context:
space:
mode:
authorAlexis Hunt <alercah@gmail.com>2011-05-17 00:19:05 +0000
committerAlexis Hunt <alercah@gmail.com>2011-05-17 00:19:05 +0000
commit8b4551844c1b5114c855b672dd69f61da15f4028 (patch)
treeb03d35141bf3824250b90b576b98bff93776b030 /clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp
parent54459240e3967bf05aeee38e6559c3a7fd724d48 (diff)
downloadbcm5719-llvm-8b4551844c1b5114c855b672dd69f61da15f4028.tar.gz
bcm5719-llvm-8b4551844c1b5114c855b672dd69f61da15f4028.zip
Implement some tests for defaulted constructors. To do this I had to
suppress an error we were previously emitting on valid union code. llvm-svn: 131440
Diffstat (limited to 'clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp')
-rw-r--r--clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp b/clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp
new file mode 100644
index 00000000000..0bf89145302
--- /dev/null
+++ b/clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp
@@ -0,0 +1,49 @@
+// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
+
+struct non_trivial {
+ non_trivial();
+ non_trivial(const non_trivial&);
+ non_trivial& operator = (const non_trivial&);
+ ~non_trivial();
+};
+
+union bad_union { // expected-note {{marked deleted here}}
+ non_trivial nt;
+};
+bad_union u; // expected-error {{call to deleted constructor}}
+union bad_union2 { // expected-note {{marked deleted here}}
+ const int i;
+};
+bad_union2 u2; // expected-error {{call to deleted constructor}}
+
+struct bad_anon { // expected-note {{marked deleted here}}
+ union {
+ non_trivial nt;
+ };
+};
+bad_anon a; // expected-error {{call to deleted constructor}}
+struct bad_anon2 { // expected-note {{marked deleted here}}
+ union {
+ const int i;
+ };
+};
+bad_anon2 a2; // expected-error {{call to deleted constructor}}
+
+// This would be great except that we implement
+union good_union {
+ const int i;
+ float f;
+};
+good_union gu;
+struct good_anon {
+ union {
+ const int i;
+ float f;
+ };
+};
+good_anon ga;
+
+struct good : non_trivial {
+ non_trivial nt;
+};
+good g;
OpenPOWER on IntegriCloud