X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Flet_stmt.c;h=776d20637c241a41313ce9632aa6c43be22c0575;hb=d4bd55e7d9b1cf63cd6fdc96b70010a0c2aca963;hp=9ada4635e63696a128cbf33ac348fb59852b12cd;hpb=c9384515a81cb64d345b299908b2852f51bb8e6e;p=m6w6%2Fext-psi diff --git a/src/types/let_stmt.c b/src/types/let_stmt.c index 9ada463..776d206 100644 --- a/src/types/let_stmt.c +++ b/src/types/let_stmt.c @@ -28,7 +28,7 @@ struct psi_let_stmt *psi_let_stmt_init(struct psi_let_exp *exp) { - struct psi_let_stmt *let = calloc(1, sizeof(*let)); + struct psi_let_stmt *let = pecalloc(1, sizeof(*let), 1); let->exp = exp; return let; @@ -43,18 +43,16 @@ void psi_let_stmt_free(struct psi_let_stmt **stmt_ptr) if (stmt->exp) { psi_let_exp_free(&stmt->exp); } - if (stmt->token) { - free(stmt->token); - } + psi_token_free(&stmt->token); free(stmt); } } -void psi_let_stmt_dump(int fd, struct psi_let_stmt *let) +void psi_let_stmt_dump(struct psi_dump *dump, struct psi_let_stmt *let) { - dprintf(fd, "\t%s ", let->exp->kind == PSI_LET_TMP ? "temp" : "let"); - psi_let_exp_dump(fd, let->exp, 1, 1); - dprintf(fd, "\n"); + PSI_DUMP(dump, "\t%s ", let->exp->kind == PSI_LET_TMP ? "temp" : "let"); + psi_let_exp_dump(dump, let->exp, 1, 1); + PSI_DUMP(dump, "\n"); } bool psi_let_stmts_validate(struct psi_data *data, struct psi_validate_scope *scope) @@ -77,14 +75,14 @@ bool psi_let_stmts_validate(struct psi_data *data, struct psi_validate_scope *sc if (!let->exp->var) { data->error(data, let->token, PSI_WARNING, "Missing variable in `let` statement for implementation %s", - scope->impl->func->name); + scope->impl->func->name->val); return false; } if (!psi_impl_get_decl_arg(scope->impl, let_var)) { data->error(data, let_var->token, PSI_WARNING, "Unknown variable '%s' in `let` statement of implementation '%s'", - let_var->name, scope->impl->func->name); + let_var->name->val, scope->impl->func->name->val); return false; } switch (let->exp->kind) { @@ -100,7 +98,7 @@ bool psi_let_stmts_validate(struct psi_data *data, struct psi_validate_scope *sc if (let_ivar && !psi_impl_get_arg(scope->impl, let_ivar)) { data->error(data, let_var->token, PSI_WARNING, "Unknown variable '%s' in `let` statement of implementation '%s'", - let_ivar->name, scope->impl->func->name); + let_ivar->name->val, scope->impl->func->name->val); return false; } @@ -120,10 +118,11 @@ bool psi_let_stmts_validate(struct psi_data *data, struct psi_validate_scope *sc data->error(data, scope->impl->func->token, PSI_WARNING, "Missing `let` statement for arg '%s %s%s'" " of declaration '%s' for implementation '%s'", - darg->type->name, + darg->type->name->val, psi_t_indirection(darg->var->pointer_level), - darg->var->name, scope->impl->decl->func->var->name, - scope->impl->func->name); + darg->var->name->val, + scope->impl->decl->func->var->name->val, + scope->impl->func->name->val); return false; } }