aboutsummaryrefslogtreecommitdiff
path: root/src/ast.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast.c')
-rw-r--r--src/ast.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/ast.c b/src/ast.c
index 7baf08b8..80127cf7 100644
--- a/src/ast.c
+++ b/src/ast.c
@@ -260,6 +260,7 @@ Text_t ast_to_sexp(ast_t *ast) {
T(Skip, "(Skip ", quoted_text(data.target), ")");
T(Stop, "(Stop ", quoted_text(data.target), ")");
T(Pass, "(Pass)");
+ T(Defer, "(Defer ", ast_to_sexp(data.body), ")");
T(Return, "(Return ", ast_to_sexp(data.value), ")");
T(StructDef, "(StructDef \"", data.name, "\" ", arg_defs_to_sexp(data.fields), " ", ast_to_sexp(data.namespace),
")");
@@ -618,6 +619,10 @@ void ast_visit(ast_t *ast, void (*visitor)(ast_t *, void *), void *userdata) {
case Skip:
case Stop:
case Pass: return;
+ case Defer: {
+ ast_visit(Match(ast, Defer)->body, visitor, userdata);
+ return;
+ }
case Return: {
ast_visit(Match(ast, Return)->value, visitor, userdata);
return;