1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s 2*67e74705SXin Li 3*67e74705SXin Li struct s; // expected-note 2 {{forward declaration of 'struct s'}} t(struct s z[])4*67e74705SXin Listruct s* t (struct s z[]) { // expected-error {{array has incomplete element type}} 5*67e74705SXin Li return z; 6*67e74705SXin Li } 7*67e74705SXin Li ff()8*67e74705SXin Livoid ff() { 9*67e74705SXin Li struct s v, *p; // expected-error {{variable has incomplete type 'struct s'}} 10*67e74705SXin Li 11*67e74705SXin Li p = &v; 12*67e74705SXin Li } 13*67e74705SXin Li k(void l[2])14*67e74705SXin Livoid *k (void l[2]) { // expected-error {{array has incomplete element type}} 15*67e74705SXin Li return l; 16*67e74705SXin Li } 17*67e74705SXin Li 18*67e74705SXin Li struct vari { 19*67e74705SXin Li int a; 20*67e74705SXin Li int b[]; 21*67e74705SXin Li }; 22*67e74705SXin Li func(struct vari a[])23*67e74705SXin Listruct vari *func(struct vari a[]) { // expected-warning {{'struct vari' may not be used as an array element due to flexible array member}} 24*67e74705SXin Li return a; 25*67e74705SXin Li } 26*67e74705SXin Li 27*67e74705SXin Li int foo[](void); // expected-error {{'foo' declared as array of functions}} 28*67e74705SXin Li int foo2[1](void); // expected-error {{'foo2' declared as array of functions}} 29*67e74705SXin Li 30*67e74705SXin Li typedef int (*pfunc)(void); 31*67e74705SXin Li xx(int f[](void))32*67e74705SXin Lipfunc xx(int f[](void)) { // expected-error {{'f' declared as array of functions}} 33*67e74705SXin Li return f; 34*67e74705SXin Li } 35*67e74705SXin Li check_size()36*67e74705SXin Livoid check_size() { 37*67e74705SXin Li float f; 38*67e74705SXin Li int size_not_int[f]; // expected-error {{size of array has non-integer type 'float'}} 39*67e74705SXin Li int negative_size[1-2]; // expected-error{{array with a negative size}} 40*67e74705SXin Li int zero_size[0]; // expected-warning{{zero size arrays are an extension}} 41*67e74705SXin Li } 42*67e74705SXin Li 43*67e74705SXin Li static int I; 44*67e74705SXin Li typedef int TA[I]; // expected-error {{variable length array declaration not allowed at file scope}} 45*67e74705SXin Li 46*67e74705SXin Li void strFunc(char *); // expected-note{{passing argument to parameter here}} 47*67e74705SXin Li const char staticAry[] = "test"; checkStaticAry()48*67e74705SXin Livoid checkStaticAry() { 49*67e74705SXin Li strFunc(staticAry); // expected-warning{{passing 'const char [5]' to parameter of type 'char *' discards qualifiers}} 50*67e74705SXin Li } 51*67e74705SXin Li 52*67e74705SXin Li 53