Richard Trieu | ad00e83 | 2013-08-31 03:50:47 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
| 2 | |
| 3 | void test0() { |
| 4 | char variable = (void)0; |
| 5 | // expected-error@-1{{cannot initialize a variable}} |
| 6 | } |
| 7 | |
| 8 | void test1(int x = (void)0) {} |
| 9 | // expected-error@-1{{cannot initialize a parameter}} |
| 10 | // expected-note@-2{{here}} |
| 11 | |
| 12 | int test2() { |
| 13 | return (void)0; |
| 14 | // expected-error@-1{{cannot initialize return object}} |
| 15 | } |
| 16 | |
| 17 | struct S4 { |
| 18 | S4() : x((void)0) {}; |
| 19 | // expected-error@-1{{cannot initialize a member subobject}} |
| 20 | int x; |
| 21 | }; |
| 22 | |
| 23 | void test5() { |
| 24 | int foo[2] = {1, (void)0}; |
| 25 | // expected-error@-1{{cannot initialize an array element}} |
| 26 | } |
| 27 | |
| 28 | void test6() { |
| 29 | new int((void)0); |
| 30 | // expected-error@-1{{cannot initialize a new value}} |
| 31 | } |
| 32 | |
| 33 | typedef short short2 __attribute__ ((__vector_size__ (2))); |
| 34 | void test10() { |
| 35 | short2 V = { (void)0 }; |
| 36 | // expected-error@-1{{cannot initialize a vector element}} |
| 37 | } |
| 38 | |
| 39 | typedef float float2 __attribute__((ext_vector_type(2))); |
| 40 | typedef float float4 __attribute__((ext_vector_type(4))); |
| 41 | |
| 42 | void test14(const float2 in, const float2 out) { |
| 43 | const float4 V = (float4){ in, out }; |
| 44 | // expected-error@-1{{cannot initialize a compound literal initializer}} |
| 45 | } |
Richard Trieu | 5fe0a42 | 2014-05-20 04:10:24 +0000 | [diff] [blame] | 46 | |
| 47 | namespace template_test { |
| 48 | class S { |
| 49 | public: |
| 50 | void foo(int); |
| 51 | }; |
| 52 | |
| 53 | template <class P> struct S2 { |
| 54 | void (P::*a)(const int &); |
| 55 | }; |
| 56 | |
| 57 | void test_15() { |
| 58 | S2<S> X = {&S::foo}; |
NAKAMURA Takumi | 32d832a | 2014-05-20 15:44:42 +0000 | [diff] [blame] | 59 | // expected-error-re@-1{{cannot initialize a member subobject of type 'void (template_test::S::*)(const int &){{( __attribute__\(\(thiscall\)\))?}}' with an rvalue of type 'void (template_test::S::*)(int){{( __attribute__\(\(thiscall\)\))?}}': type mismatch at 1st parameter ('const int &' vs 'int')}} |
Richard Trieu | 5fe0a42 | 2014-05-20 04:10:24 +0000 | [diff] [blame] | 60 | } |
| 61 | } |