1 // RUN: clang -fsyntax-only -verify %s 2 class A { 3 int m; 4 }; 5 6 class B : public A { 7 public: 8 B() : A(), m(1), n(3.14) { } 9 10 private: 11 int m; 12 float n; 13 }; 14 15 16 class C : public virtual B { 17 public: 18 C() : B() { } 19 }; 20 21 class D : public C { 22 public: 23 D() : B(), C() { } 24 }; 25 26 class E : public D, public B { 27 public: 28 E() : B(), D() { } // expected-error{{base class initializer 'B' names both a direct base class and an inherited virtual base class}} 29 }; 30 31 32 typedef int INT; 33 34 class F : public B { 35 public: 36 int B; 37 38 F() : B(17), 39 m(17), // expected-error{{member initializer 'm' does not name a non-static data member or base class}} 40 INT(17) // expected-error{{constructor initializer 'INT' does not name a class}} 41 { 42 } 43 }; 44 45 class G : A { 46 G() : A(10); // expected-error{{expected '{'}} 47 }; 48