case opid1(','):
if (blocks[0]) {
- if (!ast_block_add_expr(blocks[0], exprs[1]))
+ if (!ast_block_exprs_add(blocks[0], exprs[1]))
return false;
} else {
blocks[0] = ast_block_new(ctx);
- if (!ast_block_add_expr(blocks[0], exprs[0]) ||
- !ast_block_add_expr(blocks[0], exprs[1]))
+ if (!ast_block_exprs_add(blocks[0], exprs[0]) ||
+ !ast_block_exprs_add(blocks[0], exprs[1]))
{
return false;
}
if (!params) {
/* 1 param */
paramcount = 1;
- if (!ast_call_add_param(call, sy->out[sy->out_count].out)) {
+ if (!ast_call_params_add(call, sy->out[sy->out_count].out)) {
ast_delete(sy->out[sy->out_count].out);
parseerror(parser, "out of memory");
return false;
}
if (!expr)
continue;
- if (!ast_block_add_expr(block, expr)) {
+ if (!ast_block_exprs_add(block, expr)) {
ast_delete(expr);
ast_block_delete(block);
block = NULL;
(void)!parser_t_locals_add(parser, vx);
(void)!parser_t_locals_add(parser, vy);
(void)!parser_t_locals_add(parser, vz);
+ if (!ast_block_locals_add(localblock, var) ||
+ !ast_block_collect(localblock, vx.var) ||
+ !ast_block_collect(localblock, vy.var) ||
+ !ast_block_collect(localblock, vz.var))
+ {
+ parser_pop_local(parser);
+ parser_pop_local(parser);
+ parser_pop_local(parser);
+ parser_pop_local(parser);
+ ast_value_delete(var);
+ return false;
+ }
}
}
else
ast_value_delete(var);
return false;
}
- }
- if (localblock && !ast_block_locals_add(localblock, var))
- {
- parser_pop_local(parser);
- ast_value_delete(var);
- return false;
+ if (localblock && !ast_block_locals_add(localblock, var))
+ {
+ parser_pop_local(parser);
+ ast_value_delete(var);
+ return false;
+ }
}
if (!parser_next(parser)) {
else if (!parser->errors)
parseerror(parser, "parse error\n");
lex_close(parser->lex);
- mem_d(parser);
return false;
}
}