2013-08-31 11:50:47 +08:00
// RUN: %clang_cc1 -fsyntax-only -verify %s
void test0 ( ) {
char variable = ( void ) 0 ;
// expected-error@-1{{cannot initialize a variable}}
}
void test1 ( int x = ( void ) 0 ) { }
// expected-error@-1{{cannot initialize a parameter}}
// expected-note@-2{{here}}
int test2 ( ) {
return ( void ) 0 ;
// expected-error@-1{{cannot initialize return object}}
}
struct S4 {
S4 ( ) : x ( ( void ) 0 ) { } ;
// expected-error@-1{{cannot initialize a member subobject}}
int x ;
} ;
void test5 ( ) {
int foo [ 2 ] = { 1 , ( void ) 0 } ;
// expected-error@-1{{cannot initialize an array element}}
}
void test6 ( ) {
new int ( ( void ) 0 ) ;
// expected-error@-1{{cannot initialize a new value}}
}
typedef short short2 __attribute__ ( ( __vector_size__ ( 2 ) ) ) ;
void test10 ( ) {
short2 V = { ( void ) 0 } ;
// expected-error@-1{{cannot initialize a vector element}}
}
typedef float float2 __attribute__ ( ( ext_vector_type ( 2 ) ) ) ;
typedef float float4 __attribute__ ( ( ext_vector_type ( 4 ) ) ) ;
void test14 ( const float2 in , const float2 out ) {
const float4 V = ( float4 ) { in , out } ;
// expected-error@-1{{cannot initialize a compound literal initializer}}
}
2014-05-20 12:10:24 +08:00
namespace template_test {
class S {
public :
void foo ( int ) ;
} ;
template < class P > struct S2 {
void ( P : : * a ) ( const int & ) ;
} ;
void test_15 ( ) {
S2 < S > X = { & S : : foo } ;
2014-05-20 23:44:42 +08:00
// 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')}}
2014-05-20 12:10:24 +08:00
}
}