diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2019-08-31 01:00:37 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2019-08-31 01:00:37 +0000 |
| commit | ff9bf925e7ac7aa608fef674443a593d96f02a69 (patch) | |
| tree | df82eeeb71ce8001407c69736162c3161efd7e09 /clang/test | |
| parent | d0d931706146bef249a40b875fe4f09bd84e3c31 (diff) | |
| download | bcm5719-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.cpp | 25 |
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 {{}} |

