diff options
| author | WormHeamer | 2025-10-21 14:50:53 -0400 |
|---|---|---|
| committer | WormHeamer | 2025-10-21 14:50:53 -0400 |
| commit | 1619e765e3ae2a88765c94a01ec731e8cabd0ff1 (patch) | |
| tree | 3cf8262e4ed4949089c39c1fbd1a8066e6a8f2fc /main.c | |
| parent | 5ea989fc612ce219f29eaeb1d642ba7083b38599 (diff) | |
save & load scratch in parse_stmt instead of reset in parse_proc
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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); |
