+ case opid1('['):
+ if (exprs[0]->expression.vtype != TYPE_ARRAY &&
+ !(exprs[0]->expression.vtype == TYPE_FIELD &&
+ exprs[0]->expression.next->expression.vtype == TYPE_ARRAY))
+ {
+ ast_type_to_string(exprs[0], ty1, sizeof(ty1));
+ parseerror(parser, "cannot index value of type %s", ty1);
+ return false;
+ }
+ if (exprs[1]->expression.vtype != TYPE_FLOAT) {
+ ast_type_to_string(exprs[0], ty1, sizeof(ty1));
+ parseerror(parser, "index must be of type float, not %s", ty1);
+ return false;
+ }
+ out = (ast_expression*)ast_array_index_new(ctx, exprs[0], exprs[1]);
+ if (rotate_entfield_array_index_nodes(&out))
+ {
+ if (opts_standard != COMPILER_GMQCC) {
+ /* this error doesn't need to make us bail out */
+ (void)!parsewarning(parser, WARN_EXTENSIONS,
+ "accessing array-field members of an entity without parenthesis\n"
+ " -> this is an extension from -std=gmqcc");
+ }
+ }
+ break;
+