if (owner->expression.vtype != TYPE_VECTOR &&
owner->expression.vtype != TYPE_FIELD) {
- asterror(ctx, "member-access on an invalid owner of type %s\n", type_name[owner->expression.vtype]);
+ asterror(ctx, "member-access on an invalid owner of type %s", type_name[owner->expression.vtype]);
mem_d(self);
return NULL;
}
* on all the globals.
*/
if (!self->ir_v) {
- asterror(ast_ctx(self), "ast_value used before generated (%s)\n", self->name);
+ asterror(ast_ctx(self), "ast_value used before generated (%s)", self->name);
return false;
}
*out = self->ir_v;
return false;
v->context = ast_ctx(self);
if (self->isconst) {
- asterror(ast_ctx(self), "TODO: constant field pointers with value\n");
+ asterror(ast_ctx(self), "TODO: constant field pointers with value");
goto error;
}
self->ir_v = v;
v = ir_builder_create_global(ir, self->name, self->expression.vtype);
if (!v) {
- asterror(ast_ctx(self), "ir_builder_create_global failed\n");
+ asterror(ast_ctx(self), "ir_builder_create_global failed");
return false;
}
v->context = ast_ctx(self);
goto error;
break;
case TYPE_FUNCTION:
- asterror(ast_ctx(self), "global of type function not properly generated\n");
+ asterror(ast_ctx(self), "global of type function not properly generated");
goto error;
/* Cannot generate an IR value for a function,
* need a pointer pointing to a function rather.
*/
default:
- asterror(ast_ctx(self), "TODO: global constant type %i\n", self->expression.vtype);
+ asterror(ast_ctx(self), "TODO: global constant type %i", self->expression.vtype);
break;
}
}
goto error;
break;
default:
- asterror(ast_ctx(self), "TODO: global constant type %i\n", self->expression.vtype);
+ asterror(ast_ctx(self), "TODO: global constant type %i", self->expression.vtype);
break;
}
}
irf = self->ir_func;
if (!irf) {
- asterror(ast_ctx(self), "ast_function's related ast_value was not generated yet\n");
+ asterror(ast_ctx(self), "ast_function's related ast_value was not generated yet");
return false;
}
}
self->curblock = ir_function_create_block(irf, "entry");
- if (!self->curblock)
+ if (!self->curblock) {
+ asterror(ast_ctx(self), "failed to allocate entry block for `%s`", self->name);
return false;
+ }
for (i = 0; i < self->blocks_count; ++i) {
ast_expression_codegen *gen = self->blocks[i]->expression.codegen;
*/
(void)lvalue;
if (self->expression.outr) {
- asterror(ast_ctx(self), "internal error: ast_return cannot be reused, it bears no result!\n");
+ asterror(ast_ctx(self), "internal error: ast_return cannot be reused, it bears no result!");
return false;
}
self->expression.outr = (ir_value*)1;
(void)lvalue;
if (self->expression.outr) {
- asterror(ast_ctx(self), "internal error: ast_ifthen cannot be reused, it bears no result!\n");
+ asterror(ast_ctx(self), "internal error: ast_ifthen cannot be reused, it bears no result!");
return false;
}
self->expression.outr = (ir_value*)1;
(void)out;
if (self->expression.outr) {
- asterror(ast_ctx(self), "internal error: ast_loop cannot be reused, it bears no result!\n");
+ asterror(ast_ctx(self), "internal error: ast_loop cannot be reused, it bears no result!");
return false;
}
self->expression.outr = (ir_value*)1;