diff options
Diffstat (limited to 'src/eval.cpp')
| -rw-r--r-- | src/eval.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/eval.cpp b/src/eval.cpp index 60051234e2..1fa8f4995e 100644 --- a/src/eval.cpp +++ b/src/eval.cpp @@ -1014,6 +1014,7 @@ static bool eval_while_expr(EvalFn *ef, AstNode *node, ConstExprValue *out_val) AstNode *cond_node = node->data.while_expr.condition; AstNode *body_node = node->data.while_expr.body; + AstNode *continue_expr_node = node->data.while_expr.continue_expr; EvalScope *my_scope = allocate<EvalScope>(1); my_scope->block_context = body_node->block_context; @@ -1030,6 +1031,11 @@ static bool eval_while_expr(EvalFn *ef, AstNode *node, ConstExprValue *out_val) ConstExprValue body_val = {0}; if (eval_expr(ef, body_node, &body_val)) return true; + if (continue_expr_node) { + ConstExprValue continue_expr_val = {0}; + if (eval_expr(ef, continue_expr_node, &continue_expr_val)) return true; + } + ef->root->branches_used += 1; } |
