// Expect 8 errors

void no_initializer() { int i = 0; for (     ; i < 1; i++) {} }
void init_not_decl()  { int i;     for (i = 0; i < 1; i++) {} }
void index_no_init()  { for (int i; i < 1; i++) {} }

void bool_index()  { for (bool i = false; i != true; i = !i) {} }
void vec_index()   { for (float2 i = float2(0); i.x < 1; i.x++) {} }
void array_index() { for (int i[2] = int[2](0, 0); i[0] < 1; ++i[0]) {} }

uniform int u;

void uniform_init()    { for (int i = u; i < 1; ++i) {} }
void param_init(int p) { for (int i = p; i < 1; ++i) {} }
