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 | } |
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}; |
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')}} |
60 | } |
61 | } |
62 | |