mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-15 01:17:27 +00:00
fix error of RangeFrom in for-loop
This commit is contained in:
parent
978e3e384b
commit
2bebdf0b37
3 changed files with 130 additions and 1 deletions
|
@ -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());
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
fn foo() {
|
||||
for x in 0 .. {
|
||||
break;
|
||||
};
|
||||
for _x in 0 .. (0 .. {1 + 2}).sum::<u32>() {
|
||||
break;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,105 @@
|
|||
SOURCE_FILE@[0; 118)
|
||||
FN_DEF@[0; 117)
|
||||
FN_KW@[0; 2) "fn"
|
||||
WHITESPACE@[2; 3) " "
|
||||
NAME@[3; 6)
|
||||
IDENT@[3; 6) "foo"
|
||||
PARAM_LIST@[6; 8)
|
||||
L_PAREN@[6; 7) "("
|
||||
R_PAREN@[7; 8) ")"
|
||||
WHITESPACE@[8; 9) " "
|
||||
BLOCK@[9; 117)
|
||||
L_CURLY@[9; 10) "{"
|
||||
WHITESPACE@[10; 14) "\n "
|
||||
EXPR_STMT@[14; 48)
|
||||
FOR_EXPR@[14; 48)
|
||||
FOR_KW@[14; 17) "for"
|
||||
WHITESPACE@[17; 18) " "
|
||||
BIND_PAT@[18; 19)
|
||||
NAME@[18; 19)
|
||||
IDENT@[18; 19) "x"
|
||||
WHITESPACE@[19; 20) " "
|
||||
IN_KW@[20; 22) "in"
|
||||
WHITESPACE@[22; 23) " "
|
||||
RANGE_EXPR@[23; 27)
|
||||
LITERAL@[23; 24)
|
||||
INT_NUMBER@[23; 24) "0"
|
||||
WHITESPACE@[24; 25) " "
|
||||
DOTDOT@[25; 27) ".."
|
||||
WHITESPACE@[27; 28) " "
|
||||
BLOCK@[28; 48)
|
||||
L_CURLY@[28; 29) "{"
|
||||
WHITESPACE@[29; 37) "\n "
|
||||
EXPR_STMT@[37; 43)
|
||||
BREAK_EXPR@[37; 42)
|
||||
BREAK_KW@[37; 42) "break"
|
||||
SEMI@[42; 43) ";"
|
||||
WHITESPACE@[43; 47) "\n "
|
||||
R_CURLY@[47; 48) "}"
|
||||
WHITESPACE@[48; 52) "\n "
|
||||
FOR_EXPR@[52; 115)
|
||||
FOR_KW@[52; 55) "for"
|
||||
WHITESPACE@[55; 56) " "
|
||||
BIND_PAT@[56; 58)
|
||||
NAME@[56; 58)
|
||||
IDENT@[56; 58) "_x"
|
||||
WHITESPACE@[58; 59) " "
|
||||
IN_KW@[59; 61) "in"
|
||||
WHITESPACE@[61; 62) " "
|
||||
RANGE_EXPR@[62; 94)
|
||||
LITERAL@[62; 63)
|
||||
INT_NUMBER@[62; 63) "0"
|
||||
WHITESPACE@[63; 64) " "
|
||||
DOTDOT@[64; 66) ".."
|
||||
WHITESPACE@[66; 67) " "
|
||||
METHOD_CALL_EXPR@[67; 94)
|
||||
PAREN_EXPR@[67; 81)
|
||||
L_PAREN@[67; 68) "("
|
||||
RANGE_EXPR@[68; 80)
|
||||
LITERAL@[68; 69)
|
||||
INT_NUMBER@[68; 69) "0"
|
||||
WHITESPACE@[69; 70) " "
|
||||
DOTDOT@[70; 72) ".."
|
||||
WHITESPACE@[72; 73) " "
|
||||
BLOCK_EXPR@[73; 80)
|
||||
BLOCK@[73; 80)
|
||||
L_CURLY@[73; 74) "{"
|
||||
BIN_EXPR@[74; 79)
|
||||
LITERAL@[74; 75)
|
||||
INT_NUMBER@[74; 75) "1"
|
||||
WHITESPACE@[75; 76) " "
|
||||
PLUS@[76; 77) "+"
|
||||
WHITESPACE@[77; 78) " "
|
||||
LITERAL@[78; 79)
|
||||
INT_NUMBER@[78; 79) "2"
|
||||
R_CURLY@[79; 80) "}"
|
||||
R_PAREN@[80; 81) ")"
|
||||
DOT@[81; 82) "."
|
||||
NAME_REF@[82; 85)
|
||||
IDENT@[82; 85) "sum"
|
||||
TYPE_ARG_LIST@[85; 92)
|
||||
COLONCOLON@[85; 87) "::"
|
||||
L_ANGLE@[87; 88) "<"
|
||||
TYPE_ARG@[88; 91)
|
||||
PATH_TYPE@[88; 91)
|
||||
PATH@[88; 91)
|
||||
PATH_SEGMENT@[88; 91)
|
||||
NAME_REF@[88; 91)
|
||||
IDENT@[88; 91) "u32"
|
||||
R_ANGLE@[91; 92) ">"
|
||||
ARG_LIST@[92; 94)
|
||||
L_PAREN@[92; 93) "("
|
||||
R_PAREN@[93; 94) ")"
|
||||
WHITESPACE@[94; 95) " "
|
||||
BLOCK@[95; 115)
|
||||
L_CURLY@[95; 96) "{"
|
||||
WHITESPACE@[96; 104) "\n "
|
||||
EXPR_STMT@[104; 110)
|
||||
BREAK_EXPR@[104; 109)
|
||||
BREAK_KW@[104; 109) "break"
|
||||
SEMI@[109; 110) ";"
|
||||
WHITESPACE@[110; 114) "\n "
|
||||
R_CURLY@[114; 115) "}"
|
||||
WHITESPACE@[115; 116) "\n"
|
||||
R_CURLY@[116; 117) "}"
|
||||
WHITESPACE@[117; 118) "\n"
|
Loading…
Reference in a new issue