fix error of RangeFrom in for-loop

This commit is contained in:
bravomikekilo 2019-08-14 11:55:21 +08:00
parent 978e3e384b
commit 2bebdf0b37
3 changed files with 130 additions and 1 deletions

View file

@ -110,7 +110,13 @@ pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<(CompletedMar
p.bump();
block_expr(p, Some(m))
}
T!['{'] => block_expr(p, None),
T!['{'] => {
if r.forbid_structs {
return None;
} else {
block_expr(p, None)
}
}
T![return] => return_expr(p),
T![continue] => continue_expr(p),
T![break] => break_expr(p, r),
@ -307,6 +313,16 @@ fn while_expr(p: &mut Parser, m: Option<Marker>) -> CompletedMarker {
// fn foo() {
// for x in [] {};
// }
// test for_range_block
// fn foo() {
// for x in 0 .. {
// break;
// }
// for _x in 0 .. (0 .. {1 + 2}).sum::<u32>() {
// break;
// }
// }
fn for_expr(p: &mut Parser, m: Option<Marker>) -> CompletedMarker {
assert!(p.at(T![for]));
let m = m.unwrap_or_else(|| p.start());