From d42b0c4c6e69fce63cb16289213eab053a602588 Mon Sep 17 00:00:00 2001 From: lemon Date: Thu, 25 Aug 2022 09:06:45 +0200 Subject: eu switch --- src/parse.cff | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/parse.cff') diff --git a/src/parse.cff b/src/parse.cff index 2611906..2ac15ba 100644 --- a/src/parse.cff +++ b/src/parse.cff @@ -2272,8 +2272,9 @@ fn psteuswitch(P *Parser, loc Loc, test Expr) Stmt { ty = mkptrtype(test.ty.konst ? constify(ty) : ty); } pushenv(P, env); + c.captid = P.varid++; putdecl(P, tok.loc, { - c.capt, tok.loc, .u: :Let { c.captty = ty, :None, #f, P.curfn.id, P.varid++ } + c.capt, tok.loc, .u: :Let { c.captty = ty, :None, #f, P.curfn.id, c.captid } }); } lexexpect(P, ';'); @@ -2281,10 +2282,11 @@ fn psteuswitch(P *Parser, loc Loc, test Expr) Stmt { if c.capt { popenv(P); } + cs->push(c); } - return { loc, :EUSwitch { test, cs->move(P.alloc), f }}; + return { loc, :EUSwitch { islvalue(test), test, cs->move(P.alloc), f }}; } fn pstcswitch(P *Parser, loc Loc) Stmt { -- cgit v1.2.3