goto enderrfn;
}
- func->blocks.push_back(block);
+ func->blocks.emplace_back(block);
parser->function = old;
if (!parser_leaveblock(parser))
return false;
}
- func->blocks.push_back(body);
+ func->blocks.emplace_back(body);
*out = fval;
parser->accessors.push_back(fval);
parseerror(parser, "failed to build accessor search tree");
return false;
}
- if (!ast_block_add_expr(array->setter->constval.vfunc->blocks[0], root)) {
+ if (!ast_block_add_expr(array->setter->constval.vfunc->blocks[0].get(), root)) {
ast_delete(root);
return false;
}
}
array->setter = fval;
- return ast_block_add_expr(func->blocks[0], root);
+ return ast_block_add_expr(func->blocks[0].get(), root);
cleanup:
if (entity) ast_delete(entity);
if (index) ast_delete(index);
parseerror(parser, "failed to build accessor search tree");
return false;
}
- if (!ast_block_add_expr(array->getter->constval.vfunc->blocks[0], root)) {
+ if (!ast_block_add_expr(array->getter->constval.vfunc->blocks[0].get(), root)) {
ast_delete(root);
return false;
}
void parser_cleanup(parser_t *parser)
{
parser_remove_ast(parser);
+ parser->~parser_t();
mem_d(parser);
}
if (!func) {
if (OPTS_OPTION_BOOL(OPTION_COVERAGE)) {
con_out("coverage support requested but no coverage() builtin declared\n");
- ir_builder_delete(ir);
+ delete ir;
return false;
}
return true;
char ty[1024];
ast_type_to_string(expr, ty, sizeof(ty));
con_out("invalid type for coverage(): %s\n", ty);
- ir_builder_delete(ir);
+ delete ir;
return false;
}
return false;
}
- ir = ir_builder_new("gmqcc_out");
+ ir = new ir_builder("gmqcc_out");
if (!ir) {
con_out("failed to allocate builder\n");
return false;
field->hasvalue = false;
if (!ast_global_codegen((ast_value*)field, ir, true)) {
con_out("failed to generate field %s\n", field->name);
- ir_builder_delete(ir);
+ delete ir;
return false;
}
if (hasvalue) {
}
if (!ast_global_codegen(asvalue, ir, false)) {
con_out("failed to generate global %s\n", asvalue->name);
- ir_builder_delete(ir);
+ delete ir;
return false;
}
}
f->varargs->count = parser->max_param_count - f->function_type->type_params.size();
if (!parser_create_array_setter_impl(parser, f->varargs)) {
con_out("failed to generate vararg setter for %s\n", f->name);
- ir_builder_delete(ir);
+ delete ir;
return false;
}
if (!parser_create_array_getter_impl(parser, f->varargs)) {
con_out("failed to generate vararg getter for %s\n", f->name);
- ir_builder_delete(ir);
+ delete ir;
return false;
}
} else {
asvalue->name);
}
if (!ast_generate_accessors(asvalue, ir)) {
- ir_builder_delete(ir);
+ delete ir;
return false;
}
}
if (asvalue->vtype != TYPE_ARRAY)
continue;
if (!ast_generate_accessors(asvalue, ir)) {
- ir_builder_delete(ir);
+ delete ir;
return false;
}
}
!ast_global_codegen(parser->reserved_version, ir, false))
{
con_out("failed to generate reserved::version");
- ir_builder_delete(ir);
+ delete ir;
return false;
}
for (auto &f : parser->functions) {
if (!ast_function_codegen(f, ir)) {
con_out("failed to generate function %s\n", f->name);
- ir_builder_delete(ir);
+ delete ir;
return false;
}
}
for (auto &it : parser->functions) {
if (!ir_function_finalize(it->ir_func)) {
con_out("failed to finalize function %s\n", it->name);
- ir_builder_delete(ir);
+ delete ir;
return false;
}
}
if (!ir_builder_generate(ir, output)) {
con_out("*** failed to generate output file\n");
- ir_builder_delete(ir);
+ delete ir;
return false;
}
}
- ir_builder_delete(ir);
+ delete ir;
return retval;
}