diff options
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 { |