deduct variable names from implementation
[m6w6/ext-psi] / src / types / free_exp.c
index 19c7a60abf60e499d146168de2265e57008e2aba..57ede26295cc969d460516362bc9a9ebe0726597 100644 (file)
@@ -102,8 +102,7 @@ bool psi_free_exp_validate(struct psi_data *data, struct psi_free_exp *exp,
        /* now check for known vars */
        exp->let = calloc(psi_plist_count(exp->vars), sizeof(*exp->let));
        for (i = 0; psi_plist_get(exp->vars, i, &free_var); ++i) {
-               if (!psi_decl_arg_get_by_var(free_var, impl->decl->args,
-                               impl->decl->func)) {
+               if (!psi_impl_get_decl_arg(impl, free_var)) {
                        data->error(data, free_var->token, PSI_WARNING,
                                        "Unknown variable '%s' of `free` statement"
                                        " of implementation '%s'",
@@ -124,8 +123,9 @@ void psi_free_exp_exec(struct psi_free_exp *f, struct psi_call_frame *frame)
        void **args;
        struct psi_decl_var *dvar;
        struct psi_call_frame *free_call;
+       struct psi_context *ctx = psi_call_frame_get_context(frame);
 
-       free_call = psi_call_frame_init(frame->context, f->decl, NULL);
+       free_call = psi_call_frame_init(ctx, f->decl, NULL);
        psi_call_frame_enter(free_call);
 
        args = psi_call_frame_get_arg_pointers(free_call);