// RUN: clang-cc -fsyntax-only -Wreorder -verify %s struct BB {}; struct BB1 {}; class complex : public BB, BB1 { public: complex() : s2(1), // expected-warning {{member 's2' will be initialized after}} s1(1) , // expected-note {{field s1}} s3(3), // expected-warning {{member 's3' will be initialized after}} BB1(), // expected-note {{base 'struct BB1'}} \ // expected-warning {{base class 'struct BB1' will be initialized after}} BB() {} // expected-note {{base 'struct BB'}} int s1; int s2; int s3; }; // testing virtual bases. struct V { V(); }; struct A : public virtual V { A(); }; struct B : public virtual V { B(); }; struct Diamond : public A, public B { Diamond() : A(), B() {} }; struct C : public A, public B, private virtual V { C() { } }; struct D : public A, public B { D() : A(), V() { } // expected-warning {{base class 'struct A' will be initialized after}} \ // expected-note {{base 'struct V'}} }; struct E : public A, public B, private virtual V { E() : A(), V() { } // expected-warning {{base class 'struct A' will be initialized after}} \ // expected-note {{base 'struct V'}} }; struct A1 { A1(); }; struct B1 { B1(); }; struct F : public A1, public B1, private virtual V { F() : A1(), V() { } // expected-warning {{base class 'struct A1' will be initialized after}} \ // expected-note {{base 'struct V'}} }; struct X : public virtual A, virtual V, public virtual B { X(): A(), V(), B() {} // expected-warning {{base class 'struct A' will be initialized after}} \ // expected-note {{base 'struct V'}} }; class Anon { int c; union {int a,b;}; int d; Anon() : c(10), b(1), d(2) {} }; class Anon2 { int c; union {int a,b;}; int d; Anon2() : c(2), d(10), // expected-warning {{member 'd' will be initialized after}} b(1) {} // expected-note {{field b}} }; class Anon3 { union {int a,b;}; Anon3() : b(1) {} };