diff options
| author | 2022-08-25 09:06:45 +0200 | |
|---|---|---|
| committer | 2022-08-25 09:06:45 +0200 | |
| commit | d42b0c4c6e69fce63cb16289213eab053a602588 (patch) | |
| tree | 5dabb5594106061ba3fe626996c5392b1052f59a /src/parse.cff | |
| parent | a39378db8ce05f8ab45b5ae0f3252c0a5322fd70 (diff) | |
eu switch
Diffstat (limited to 'src/parse.cff')
| -rw-r--r-- | src/parse.cff | 6 |
1 files changed, 4 insertions, 2 deletions
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 { |