blob: b8c141a30a2610b56fb013f6e9f10b10d54d4a65 [file] [log] [blame]
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=override,reorder -Werror=c99-designator %s
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=override -Wno-reorder-init-list -Werror=initializer-overrides %s
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=reorder -Wno-initializer-overrides -Werror=reorder-init-list %s
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=good -Wno-c99-designator %s
// good-no-diagnostics
// Ensure that -Wc99-designator controls both -Winitializer-overrides and
// -Wreorder-init-list.
struct X {
int a;
int b;
};
void test() {
X x{.a = 0, // override-note {{previous initialization is here}}
.a = 1}; // override-error {{initializer overrides prior initialization of this subobject}}
X y{.b = 0, // reorder-note {{previous initialization for field 'b' is here}}
.a = 1}; // reorder-error {{ISO C++ requires field designators to be specified in declaration order; field 'b' will be initialized after field 'a'}}
}