111 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s2 3class S {4public:5 S ();6};7 8struct D : S {9 D() :10 b1(0), // expected-note {{previous initialization is here}}11 b2(1),12 b1(0), // expected-error {{multiple initializations given for non-static member 'b1'}}13 S(), // expected-note {{previous initialization is here}}14 S() // expected-error {{multiple initializations given for base 'S'}}15 {}16 int b1;17 int b2;18};19 20struct A {21 struct {22 int a;23 int b;24 };25 A();26};27 28A::A() : a(10), b(20) { }29 30namespace Test1 {31 template<typename T> struct A {};32 template<typename T> struct B : A<T> {33 34 B() : A<T>(), // expected-note {{previous initialization is here}}35 A<T>() { } // expected-error {{multiple initializations given for base 'A<T>'}}36 };37}38 39namespace Test2 {40 template<typename T> struct A : T {41 A() : T(), // expected-note {{previous initialization is here}}42 T() { } // expected-error {{multiple initializations given for base 'T'}}43 };44}45 46namespace Test3 {47 template<typename T> struct A {48 T t;49 50 A() : t(1), // expected-note {{previous initialization is here}}51 t(2) { } // expected-error {{multiple initializations given for non-static member 't'}}52 };53}54 55namespace test4 {56 class A {57 union {58 struct {59 int a;60 int b;61 };62 63 int c;64 65 union {66 int d;67 int e;68 };69 };70 71 A(char _) : a(0), b(0) {}72 A(short _) : a(0), c(0) {} // expected-error {{initializing multiple members of union}} expected-note {{previous initialization is here}}73 A(int _) : d(0), e(0) {} // expected-error {{initializing multiple members of union}} expected-note {{previous initialization is here}}74 A(long _) : a(0), d(0) {} // expected-error {{initializing multiple members of union}} expected-note {{previous initialization is here}}75 };76}77 78namespace test5 {79 struct Base {80 Base(int);81 };82 struct A : Base {83 A() : decltype(Base(1))(3) {84 }85 A(int) : Base(3), // expected-note {{previous initialization is here}}86 decltype(Base(1))(2), // expected-error {{multiple initializations given for base 'decltype(Base(1))' (aka 'Base')}}87 decltype(int())() { // expected-error {{constructor initializer 'decltype(int())' (aka 'int') does not name a class}}88 }89 A(float) : decltype(A())(3) {90 }91 };92}93 94namespace rdar13185264 {95 class X {96 X() : a(), // expected-note{{previous initialization is here}}97 a() { } // expected-error{{multiple initializations given for non-static member 'a'}}98 union { void *a; };99 };100}101 102namespace PR16596 {103 class A { public: virtual ~A(); };104 typedef const A Foo;105 void Apply(Foo processor);106 struct Bar : public Foo {};107 void Fetch() {108 Apply(Bar());109 }110}111