aboutsummaryrefslogtreecommitdiff
path: root/src/environment.h
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-09-24 21:20:44 -0400
committerBruce Hill <bruce@bruce-hill.com>2025-09-24 21:20:44 -0400
commit0cfae753aa131f949253f3fba1e3a36c2bde6ac0 (patch)
treed1403a97d7e86f547f8e6ca9994095f31c37d2a2 /src/environment.h
parent76f80f80ff1788af96ae87fa909c130336d5399b (diff)
Revert "Deprecate `defer`"
This reverts commit 7e3e245f6809946ea06ef1998bcabb7e0902fbd7.
Diffstat (limited to 'src/environment.h')
-rw-r--r--src/environment.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/environment.h b/src/environment.h
index ecb6fb4c..c726508d 100644
--- a/src/environment.h
+++ b/src/environment.h
@@ -14,10 +14,17 @@ typedef struct {
Text_t variable_initializers;
} compilation_unit_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;
ast_list_t *loop_vars;
+ deferral_t *deferred;
Text_t skip_label, stop_label;
} loop_ctx_t;
@@ -38,6 +45,7 @@ typedef struct env_s {
compilation_unit_t *code;
ast_t *fn;
loop_ctx_t *loop_ctx;
+ deferral_t *deferred;
Closure_t *comprehension_action;
bool do_source_mapping : 1;
type_t *current_type;