1ad00e83aSRichard Trieu // RUN: %clang_cc1 -fsyntax-only -verify %s 2ad00e83aSRichard Trieu test0()3ad00e83aSRichard Trieuvoid test0() { 4ad00e83aSRichard Trieu char variable = (void)0; 5ad00e83aSRichard Trieu // expected-error@-1{{cannot initialize a variable}} 6ad00e83aSRichard Trieu } 7ad00e83aSRichard Trieu test1(int x=(void)0)8ad00e83aSRichard Trieuvoid test1(int x = (void)0) {} 9ad00e83aSRichard Trieu // expected-error@-1{{cannot initialize a parameter}} 10ad00e83aSRichard Trieu // expected-note@-2{{here}} 11ad00e83aSRichard Trieu test2()12ad00e83aSRichard Trieuint test2() { 13ad00e83aSRichard Trieu return (void)0; 14ad00e83aSRichard Trieu // expected-error@-1{{cannot initialize return object}} 15ad00e83aSRichard Trieu } 16ad00e83aSRichard Trieu 17ad00e83aSRichard Trieu struct S4 { S4S418ad00e83aSRichard Trieu S4() : x((void)0) {}; 19ad00e83aSRichard Trieu // expected-error@-1{{cannot initialize a member subobject}} 20ad00e83aSRichard Trieu int x; 21ad00e83aSRichard Trieu }; 22ad00e83aSRichard Trieu test5()23ad00e83aSRichard Trieuvoid test5() { 24ad00e83aSRichard Trieu int foo[2] = {1, (void)0}; 25ad00e83aSRichard Trieu // expected-error@-1{{cannot initialize an array element}} 26ad00e83aSRichard Trieu } 27ad00e83aSRichard Trieu test6()28ad00e83aSRichard Trieuvoid test6() { 29ad00e83aSRichard Trieu new int((void)0); 30ad00e83aSRichard Trieu // expected-error@-1{{cannot initialize a new value}} 31ad00e83aSRichard Trieu } 32ad00e83aSRichard Trieu 33ad00e83aSRichard Trieu typedef short short2 __attribute__ ((__vector_size__ (2))); test10()34ad00e83aSRichard Trieuvoid test10() { 35ad00e83aSRichard Trieu short2 V = { (void)0 }; 36ad00e83aSRichard Trieu // expected-error@-1{{cannot initialize a vector element}} 37ad00e83aSRichard Trieu } 38ad00e83aSRichard Trieu 39ad00e83aSRichard Trieu typedef float float2 __attribute__((ext_vector_type(2))); 40ad00e83aSRichard Trieu typedef float float4 __attribute__((ext_vector_type(4))); 41ad00e83aSRichard Trieu test14(const float2 in,const float2 out)42ad00e83aSRichard Trieuvoid test14(const float2 in, const float2 out) { 43ad00e83aSRichard Trieu const float4 V = (float4){ in, out }; 44ad00e83aSRichard Trieu // expected-error@-1{{cannot initialize a compound literal initializer}} 45ad00e83aSRichard Trieu } 465fe0a42aSRichard Trieu 475fe0a42aSRichard Trieu namespace template_test { 485fe0a42aSRichard Trieu class S { 495fe0a42aSRichard Trieu public: 505fe0a42aSRichard Trieu void foo(int); 515fe0a42aSRichard Trieu }; 525fe0a42aSRichard Trieu 535fe0a42aSRichard Trieu template <class P> struct S2 { 545fe0a42aSRichard Trieu void (P::*a)(const int &); 555fe0a42aSRichard Trieu }; 565fe0a42aSRichard Trieu test_15()575fe0a42aSRichard Trieuvoid test_15() { 585fe0a42aSRichard Trieu S2<S> X = {&S::foo}; 59*32d832afSNAKAMURA Takumi // 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')}} 605fe0a42aSRichard Trieu } 615fe0a42aSRichard Trieu } 62