X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Flet_stmt.c;h=5474ae2875762fc7c5ebc06e8768d37e01f71848;hb=5e240548ba570610ce0dbc248a2b7654a0e080fa;hp=db24d10c3a840e8a4a87ee94b3d2e10a50f46fb8;hpb=2f5af21b263403997e154658635d6b6e6eaab453;p=m6w6%2Fext-psi diff --git a/src/types/let_stmt.c b/src/types/let_stmt.c index db24d10..5474ae2 100644 --- a/src/types/let_stmt.c +++ b/src/types/let_stmt.c @@ -34,30 +34,26 @@ #include "data.h" -let_stmt *init_let_stmt(decl_var *var, let_val *val) { +let_stmt *init_let_stmt(let_val *val) { let_stmt *let = calloc(1, sizeof(*let)); - let->var = var; let->val = val; + return let; } void free_let_stmt(let_stmt *stmt) { if (stmt->val) { - if (stmt->val->kind == PSI_LET_TMP && stmt->var->arg) { - free_decl_arg(stmt->var->arg); - } free_let_val(stmt->val); } - free_decl_var(stmt->var); + if (stmt->token) { + free(stmt->token); + } free(stmt); } void dump_let_stmt(int fd, let_stmt *let) { - dprintf(fd, "\tlet %s", let->var->name); - if (let->val) { - dprintf(fd, " = "); - dump_let_val(fd, let->val, 1, 1); - } + dprintf(fd, "\t%s ", let->val->kind == PSI_LET_TMP ? "temp" : "let"); + dump_let_val(fd, let->val, 1, 1); } int validate_let_stmts(struct psi_data *data, impl *impl) { @@ -73,7 +69,7 @@ int validate_let_stmts(struct psi_data *data, impl *impl) { if (let->val && let->val->kind == PSI_LET_TMP) { let_var = let->val->data.var; } else { - let_var = let->var; + let_var = let->val->var; } if (!locate_decl_var_arg(let_var, impl->decl->args, impl->decl->func)) { @@ -97,7 +93,7 @@ int validate_let_stmts(struct psi_data *data, impl *impl) { return 0; } - if (!validate_let_val(data, let->val, let->var, impl)) { + if (!validate_let_val(data, let->val, let->val->var, impl)) { return 0; } } @@ -109,7 +105,7 @@ int validate_let_stmts(struct psi_data *data, impl *impl) { for (j = 0; j < impl->stmts->let.count; ++j) { let_stmt *let = impl->stmts->let.list[j]; - if (!strcmp(let->var->name, darg->var->name)) { + if (!strcmp(let->val->var->name, darg->var->name)) { check = 1; break; }