summaryrefslogtreecommitdiffstats
path: root/clang/test/Parser/cxx2a-designated-init.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Parser/cxx2a-designated-init.cpp')
-rw-r--r--clang/test/Parser/cxx2a-designated-init.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/test/Parser/cxx2a-designated-init.cpp b/clang/test/Parser/cxx2a-designated-init.cpp
new file mode 100644
index 00000000000..974214137ae
--- /dev/null
+++ b/clang/test/Parser/cxx2a-designated-init.cpp
@@ -0,0 +1,25 @@
+// RUN: %clang_cc1 -std=c++98 -verify=cxx98 %s
+// RUN: %clang_cc1 -std=c++11 -verify %s -Wno-c++2a-extensions
+// RUN: %clang_cc1 -std=c++2a -verify %s
+
+struct A {
+ explicit A(int, int); // expected-note {{here}}
+};
+
+struct B {
+ A a;
+};
+
+B b1 = {.a = {1, 2}}; // cxx98-error {{non-aggregate type 'A' cannot be initialized with an initializer list}}
+// expected-error@-1 {{chosen constructor is explicit in copy-initialization}}
+B b2 = {.a{1, 2}}; // cxx98-error {{expected '='}}
+
+struct C {
+ char x, y;
+};
+struct D {
+ C c;
+};
+
+D d1 = {.c = {1, 2000}}; // cxx98-warning {{changes value}} expected-error {{narrow}} expected-warning {{changes value}} expected-note {{}}
+D d2 = {.c{1, 2000}}; // cxx98-error {{expected '='}} expected-error {{narrow}} expected-warning {{changes value}} expected-note {{}}
OpenPOWER on IntegriCloud