From a706ea6a3f9094b85007f945fecc68cd752aed0b Mon Sep 17 00:00:00 2001 From: r4 Date: Tue, 28 Dec 2021 12:11:04 +0100 Subject: [PATCH] disallow use of declared variable in declaration expression --- parse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parse.c b/parse.c index 5f2d6db..55be65a 100644 --- a/parse.c +++ b/parse.c @@ -582,13 +582,13 @@ static void stmt(IRToks *out_ir, TokList *toks, Map *funcs, Scope *sc, TokListIt t = t->next; if (t->tok.kind == TokDeclare) { size_t addr = sc->mem_addr++; + TRY(expr_into_addr(out_ir, toks, funcs, sc, t->next, addr)); bool replaced = map_insert(&sc->ident_addrs, name, &addr); if (replaced) { mark_err(&start->tok); set_err("'%s' already declared in this scope", name); return; } - TRY(expr_into_addr(out_ir, toks, funcs, sc, t->next, addr)); } else if (t->tok.kind == TokAssign) { size_t addr; TRY(addr = get_ident_addr(sc, name, &start->tok));