summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorWormHeamer2025-10-21 14:50:53 -0400
committerWormHeamer2025-10-21 14:50:53 -0400
commit1619e765e3ae2a88765c94a01ec731e8cabd0ff1 (patch)
tree3cf8262e4ed4949089c39c1fbd1a8066e6a8f2fc /main.c
parent5ea989fc612ce219f29eaeb1d642ba7083b38599 (diff)
save & load scratch in parse_stmt instead of reset in parse_proc
Diffstat (limited to 'main.c')
-rw-r--r--main.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/main.c b/main.c
index 9b22751..25469bc 100644
--- a/main.c
+++ b/main.c
@@ -347,8 +347,8 @@ void parse_if(Lexer *l, Proc *p) {
}
void parse_stmt(Lexer *l, Proc *p) {
- /* TODO */
- (void)l;
+ ArenaMark m;
+ arena_save(&p->scratch, &m);
switch (l->tok) {
case TOK_RETURN:
parse_return(l, p);
@@ -369,6 +369,7 @@ void parse_stmt(Lexer *l, Proc *p) {
lex_expected(l, TM_RBRACE);
break;
}
+ arena_load(&p->scratch, &m);
}
void parse_args_list(Lexer *l, Proc *proc) {
@@ -504,7 +505,6 @@ Proc *parse_proc(Lexer *l, Unit *u) {
while (l->tok != TOK_RBRACE) {
lex_expected_not(l, TM_EOF);
parse_stmt(l, proc);
- arena_reset(&proc->scratch);
}
scope_pop(&proc->scope, &proc->graph);
lex_expected(l, TM_RBRACE);