forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
 | 
						|
 | 
						|
struct s;  // expected-note 2 {{forward declaration of 'struct s'}}
 | 
						|
struct s* t (struct s z[]) {   // expected-error {{array has incomplete element type}}
 | 
						|
  return z;
 | 
						|
}
 | 
						|
 | 
						|
void ff() { 
 | 
						|
  struct s v, *p; // expected-error {{variable has incomplete type 'struct s'}}
 | 
						|
 | 
						|
  p = &v;
 | 
						|
}
 | 
						|
 | 
						|
void *k (void l[2]) {          // expected-error {{array has incomplete element type}}
 | 
						|
  return l; 
 | 
						|
}
 | 
						|
 | 
						|
struct vari {
 | 
						|
  int a;
 | 
						|
  int b[];
 | 
						|
};
 | 
						|
 | 
						|
struct vari *func(struct vari a[]) { // expected-warning {{'struct vari' may not be used as an array element due to flexible array member}}
 | 
						|
  return a;
 | 
						|
}
 | 
						|
 | 
						|
int foo[](void);  // expected-error {{'foo' declared as array of functions}}
 | 
						|
int foo2[1](void);  // expected-error {{'foo2' declared as array of functions}}
 | 
						|
 | 
						|
typedef int (*pfunc)(void);
 | 
						|
 | 
						|
pfunc xx(int f[](void)) { // expected-error {{'f' declared as array of functions}}
 | 
						|
  return f;
 | 
						|
}
 | 
						|
 | 
						|
void check_size() {
 | 
						|
  float f;
 | 
						|
  int size_not_int[f]; // expected-error {{size of array has non-integer type 'float'}}
 | 
						|
  int negative_size[1-2]; // expected-error{{array with a negative size}}
 | 
						|
  int zero_size[0]; // expected-warning{{zero size arrays are an extension}}
 | 
						|
}
 | 
						|
 | 
						|
static int I;
 | 
						|
typedef int TA[I]; // expected-error {{variable length array declaration not allowed at file scope}}
 | 
						|
 | 
						|
void strFunc(char *); // expected-note{{passing argument to parameter here}}
 | 
						|
const char staticAry[] = "test";
 | 
						|
void checkStaticAry() { 
 | 
						|
  strFunc(staticAry); // expected-warning{{passing 'const char [5]' to parameter of type 'char *' discards qualifiers}}
 | 
						|
}
 | 
						|
 | 
						|
 |