inner let vals
[m6w6/ext-psi] / src / types / let_func.h
index 526265b9cbf0c9ec44c8e91b59e7f864b1b1d627..850eb84251889b60553e6775066d448081bc56ab 100644 (file)
@@ -3,11 +3,18 @@
 
 typedef impl_val *(*let_func_handler)(impl_val *tmp, decl_type *type, impl_arg *iarg, void **to_free);
 
+struct let_val;
+struct let_vals;
+static inline void free_let_vals(struct let_vals *vals);
+
 typedef struct let_func {
        token_t type;
        char *name;
        impl_var *var;
        let_func_handler handler;
+       struct let_vals *inner;
+       struct let_val *outer;
+       decl_arg *ref;
 } let_func;
 
 static inline let_func *init_let_func(token_t type, const char *name, impl_var *var) {
@@ -21,6 +28,9 @@ static inline let_func *init_let_func(token_t type, const char *name, impl_var *
 static inline void free_let_func(let_func *func) {
        free_impl_var(func->var);
        free(func->name);
+       if (func->inner) {
+               free_let_vals(func->inner);
+       }
        free(func);
 }