summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authorLeo Tenenbaum <pommicket@gmail.com>2020-05-01 13:38:59 -0400
committerLeo Tenenbaum <pommicket@gmail.com>2020-05-01 13:38:59 -0400
commit24495b0419cb43daa6a0adcccfde63853d5bd2dd (patch)
treefa2c09a48b95a824ae0c47a39cf671e04a840b74 /eval.c
parent58a57d7d4602833e8bfd5af61b3707587a7a5cb8 (diff)
#if no longer creates a block
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/eval.c b/eval.c
index 0ade240..cda97da 100644
--- a/eval.c
+++ b/eval.c
@@ -1641,7 +1641,7 @@ static void eval_exit_stmts(Statement *stmts, Statement *last_reached) {
Declaration *d = s->decl;
decl_remove_val(d);
}
- /* STMT_INCLUDEs are handled by eval_stmt; don't worry */
+ /* inline blocks are handled by eval_stmt; don't worry */
}
}
}
@@ -1675,19 +1675,6 @@ static Status eval_stmt(Evaluator *ev, Statement *stmt) {
ev->returning = stmt->referring_to;
ev->is_break = false;
break;
- case STMT_INCLUDE: {
- Include *i = stmt->inc;
- Statement *last_reached = arr_last_ptr(i->stmts);
- arr_foreach(i->stmts, Statement, sub) {
- if (!eval_stmt(ev, sub))
- return false;
- if (ev->returning) {
- last_reached = sub;
- break;
- }
- }
- eval_exit_stmts(i->stmts, last_reached);
- } break;
case STMT_MESSAGE:
break;
case STMT_DEFER:
@@ -1695,6 +1682,22 @@ static Status eval_stmt(Evaluator *ev, Statement *stmt) {
break;
case STMT_USE:
break;
+ case STMT_INLINE_BLOCK: {
+ Statement *stmts = stmt->inline_block;
+ Statement *last_reached = arr_last_ptr(stmts);
+ arr_foreach(stmts, Statement, s) {
+ if (!eval_stmt(ev, s))
+ return false;
+ if (ev->returning) {
+ last_reached = s;
+ break;
+ }
+ }
+ eval_exit_stmts(stmts, last_reached);
+ } break;
+ case STMT_INCLUDE:
+ assert(0);
+ break;
}
return true;
}