1 // RUN: clang -parse-ast-check -pedantic %s 2 3 struct s; 4 struct s* t (struct s z[]) { // expected-error {{array has incomplete element type}} 5 return z; 6 } 7 8 void ff() { 9 struct s v, *p; // expected-error {{variable has incomplete type 'struct s'}} 10 11 p = &v; 12 } 13 14 void *k (void l[2]) { // expected-error {{array has incomplete element type}} 15 return l; 16 } 17 18 struct vari { 19 int a; 20 int b[]; 21 }; 22 23 struct vari *func(struct vari a[]) { // expected-error {{'struct vari' may not be used as an array element due to flexible array member}} 24 return a; 25 } 26 27 int foo[](void); // expected-error {{'foo' declared as array of functions}} 28 29 typedef int (*pfunc)(void); 30 31 pfunc xx(int f[](void)) { // expected-error {{'f' declared as array of functions}} 32 return f; 33 } 34 35 void check_size() { 36 float f; 37 int size_not_int[f]; // expected-error {{size of array has non-integer type 'float'}} 38 int negative_size[1-2]; // expected-error{{array size is negative}} 39 int zero_size[0]; // expected-warning{{zero size arrays are an extension}} 40 } 41 42