1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 3 namespace PR5909 { 4 struct Foo { 5 int x : 20; 6 }; 7 8 bool Test(const int& foo); 9 10 const Foo f = { 0 }; // It compiles without the 'const'. 11 bool z = Test(f.x); 12 } 13 14 namespace PR6264 { 15 typedef int (&T)[3]; 16 struct S 17 { 18 operator T (); 19 }; 20 void f() 21 { 22 T bar = S(); 23 } 24 } 25 26 namespace PR6066 { 27 struct B { }; 28 struct A : B { 29 operator B*(); 30 operator B&(); // expected-warning{{conversion function converting 'PR6066::A' to its base class 'PR6066::B' will never be used}} 31 }; 32 33 void f(B&); // no rvalues accepted 34 void f(B*); 35 36 int g() { 37 f(A()); // calls f(B*) 38 return 0; 39 } 40 } 41 42 namespace test3 { 43 struct A { 44 unsigned bitX : 4; // expected-note 4 {{bit-field is declared here}} 45 unsigned bitY : 4; // expected-note {{bit-field is declared here}} 46 unsigned var; 47 48 void foo(); 49 }; 50 51 void test(A *a) { 52 unsigned &t0 = a->bitX; // expected-error {{non-const reference cannot bind to bit-field 'bitX'}} 53 unsigned &t1 = (unsigned&) a->bitX; // expected-error {{non-const reference cannot bind to bit-field 'bitX'}} 54 unsigned &t2 = const_cast<unsigned&>(a->bitX); // expected-error {{const_cast from bit-field lvalue to reference type 'unsigned int &'}} 55 unsigned &t3 = (a->foo(), a->bitX); // expected-error {{non-const reference cannot bind to bit-field 'bitX'}} 56 unsigned &t4 = (a->var ? a->bitX : a->bitY); // expected-error {{non-const reference cannot bind to bit-field}} 57 unsigned &t5 = (a->var ? a->bitX : a->bitX); // expected-error {{non-const reference cannot bind to bit-field}} 58 unsigned &t6 = (a->var ? a->bitX : a->var); // expected-error {{non-const reference cannot bind to bit-field}} 59 unsigned &t7 = (a->var ? a->var : a->bitY); // expected-error {{non-const reference cannot bind to bit-field}} 60 unsigned &t8 = (a->bitX = 3); // expected-error {{non-const reference cannot bind to bit-field 'bitX'}} 61 unsigned &t9 = (a->bitY += 3); // expected-error {{non-const reference cannot bind to bit-field 'bitY'}} 62 } 63 } 64