diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-07-04 18:00:01 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-07-04 18:00:01 -0400 |
| commit | 6a105fbd801f10bd6c8cee32fd6d45a279f33e1b (patch) | |
| tree | dc03ec9eec0ac65b40d6cb6053d55475dc132fb2 /environment.h | |
| parent | 78960b1461a8fb184de4ffddf2d2ec4df729fb05 (diff) | |
Add 'defer'
Diffstat (limited to 'environment.h')
| -rw-r--r-- | environment.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/environment.h b/environment.h index 7ecedd6f..a06f3d42 100644 --- a/environment.h +++ b/environment.h @@ -20,9 +20,16 @@ typedef struct { table_t *closed_vars; } fn_ctx_t; +typedef struct deferral_s { + struct deferral_s *next; + struct env_s *defer_env; + ast_t *block; +} deferral_t; + typedef struct loop_ctx_s { struct loop_ctx_s *next; const char *loop_name, *key_name, *value_name; + deferral_t *deferred; CORD skip_label, stop_label; } loop_ctx_t; @@ -37,6 +44,7 @@ typedef struct env_s { compilation_unit_t *code; fn_ctx_t *fn_ctx; loop_ctx_t *loop_ctx; + deferral_t *deferred; CORD *libname; // Pointer to currently compiling library name (if any) namespace_t *namespace; const char *comprehension_var; |
