aboutsummaryrefslogtreecommitdiff
path: root/environment.h
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-07-04 18:00:01 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-07-04 18:00:01 -0400
commit6a105fbd801f10bd6c8cee32fd6d45a279f33e1b (patch)
treedc03ec9eec0ac65b40d6cb6053d55475dc132fb2 /environment.h
parent78960b1461a8fb184de4ffddf2d2ec4df729fb05 (diff)
Add 'defer'
Diffstat (limited to 'environment.h')
-rw-r--r--environment.h8
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;