summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2019-08-31 01:00:37 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2019-08-31 01:00:37 +0000
commitff9bf925e7ac7aa608fef674443a593d96f02a69 (patch)
treedf82eeeb71ce8001407c69736162c3161efd7e09 /clang/test
parentd0d931706146bef249a40b875fe4f09bd84e3c31 (diff)
downloadbcm5719-llvm-ff9bf925e7ac7aa608fef674443a593d96f02a69.tar.gz
bcm5719-llvm-ff9bf925e7ac7aa608fef674443a593d96f02a69.zip
[c++20] Add support for designated direct-list-initialization syntax.
This completes the implementation of P0329R4. llvm-svn: 370558
Diffstat (limited to 'clang/test')
-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