aboutsummaryrefslogtreecommitdiff
path: root/src/parse.cff
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse.cff')
-rw-r--r--src/parse.cff6
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 {