projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
inner let vals
[m6w6/ext-psi]
/
src
/
types
/
let_func.h
diff --git
a/src/types/let_func.h
b/src/types/let_func.h
index 526265b9cbf0c9ec44c8e91b59e7f864b1b1d627..850eb84251889b60553e6775066d448081bc56ab 100644
(file)
--- a/
src/types/let_func.h
+++ b/
src/types/let_func.h
@@
-3,11
+3,18
@@
typedef impl_val *(*let_func_handler)(impl_val *tmp, decl_type *type, impl_arg *iarg, void **to_free);
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;
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) {
} 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);
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);
}
free(func);
}