X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fimpl.c;h=e9bd39bebec5723c636a5731e10e7043cca91e5e;hb=cffcbdd1df9f6d5dcf78f49a3d1b44cefe21b2f5;hp=e679f1f2add7ae8fa49135a5dc697f837aa26e97;hpb=f15288e185e65bcdfde87c217fb6bd7ff12eb653;p=m6w6%2Fext-psi diff --git a/src/types/impl.c b/src/types/impl.c index e679f1f..e9bd39b 100644 --- a/src/types/impl.c +++ b/src/types/impl.c @@ -176,6 +176,27 @@ void psi_impl_stmt_free(struct psi_token ***abstract_stmt) } } +struct psi_decl_arg *psi_impl_get_decl_arg(struct psi_impl *impl, + struct psi_decl_var *var) +{ + struct psi_return_stmt *ret; + + if (psi_plist_get(impl->stmts.ret, 0, &ret)) { + if (ret->exp->args) { + size_t i = 0; + struct psi_decl_var *arg; + + while (psi_plist_get(ret->exp->args, i++, &arg)) { + if (!strcmp(var->name, arg->name)) { + return var->arg = arg->arg; + } + } + } + } + + return psi_decl_get_arg(impl->decl, var); +} + struct psi_let_stmt *psi_impl_get_let(struct psi_impl *impl, struct psi_decl_var* var) {