Improve recovery for incomplete lambdas
This commit is contained in:
parent
cb79e30d53
commit
3e2f4e4293
@ -248,7 +248,12 @@ fn lambda_expr(p: &mut Parser) -> CompletedMarker {
|
|||||||
p.error("expected `{`");
|
p.error("expected `{`");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
expr(p);
|
|
||||||
|
if p.at_ts(EXPR_FIRST) {
|
||||||
|
expr(p);
|
||||||
|
} else {
|
||||||
|
p.error("expected expression");
|
||||||
|
}
|
||||||
m.complete(p, LAMBDA_EXPR)
|
m.complete(p, LAMBDA_EXPR)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
fn foo() -> i32 {
|
||||||
|
[1, 2, 3].iter()
|
||||||
|
.map(|it|)
|
||||||
|
.max::<i32>();
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
SOURCE_FILE@[0; 83)
|
||||||
|
FN_DEF@[0; 82)
|
||||||
|
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) " "
|
||||||
|
RET_TYPE@[9; 15)
|
||||||
|
THIN_ARROW@[9; 11) "->"
|
||||||
|
WHITESPACE@[11; 12) " "
|
||||||
|
PATH_TYPE@[12; 15)
|
||||||
|
PATH@[12; 15)
|
||||||
|
PATH_SEGMENT@[12; 15)
|
||||||
|
NAME_REF@[12; 15)
|
||||||
|
IDENT@[12; 15) "i32"
|
||||||
|
WHITESPACE@[15; 16) " "
|
||||||
|
BLOCK_EXPR@[16; 82)
|
||||||
|
BLOCK@[16; 82)
|
||||||
|
L_CURLY@[16; 17) "{"
|
||||||
|
WHITESPACE@[17; 22) "\n "
|
||||||
|
EXPR_STMT@[22; 80)
|
||||||
|
METHOD_CALL_EXPR@[22; 79)
|
||||||
|
METHOD_CALL_EXPR@[22; 57)
|
||||||
|
METHOD_CALL_EXPR@[22; 38)
|
||||||
|
ARRAY_EXPR@[22; 31)
|
||||||
|
L_BRACK@[22; 23) "["
|
||||||
|
LITERAL@[23; 24)
|
||||||
|
INT_NUMBER@[23; 24) "1"
|
||||||
|
COMMA@[24; 25) ","
|
||||||
|
WHITESPACE@[25; 26) " "
|
||||||
|
LITERAL@[26; 27)
|
||||||
|
INT_NUMBER@[26; 27) "2"
|
||||||
|
COMMA@[27; 28) ","
|
||||||
|
WHITESPACE@[28; 29) " "
|
||||||
|
LITERAL@[29; 30)
|
||||||
|
INT_NUMBER@[29; 30) "3"
|
||||||
|
R_BRACK@[30; 31) "]"
|
||||||
|
DOT@[31; 32) "."
|
||||||
|
NAME_REF@[32; 36)
|
||||||
|
IDENT@[32; 36) "iter"
|
||||||
|
ARG_LIST@[36; 38)
|
||||||
|
L_PAREN@[36; 37) "("
|
||||||
|
R_PAREN@[37; 38) ")"
|
||||||
|
WHITESPACE@[38; 47) "\n "
|
||||||
|
DOT@[47; 48) "."
|
||||||
|
NAME_REF@[48; 51)
|
||||||
|
IDENT@[48; 51) "map"
|
||||||
|
ARG_LIST@[51; 57)
|
||||||
|
L_PAREN@[51; 52) "("
|
||||||
|
LAMBDA_EXPR@[52; 56)
|
||||||
|
PARAM_LIST@[52; 56)
|
||||||
|
PIPE@[52; 53) "|"
|
||||||
|
PARAM@[53; 55)
|
||||||
|
BIND_PAT@[53; 55)
|
||||||
|
NAME@[53; 55)
|
||||||
|
IDENT@[53; 55) "it"
|
||||||
|
PIPE@[55; 56) "|"
|
||||||
|
R_PAREN@[56; 57) ")"
|
||||||
|
WHITESPACE@[57; 66) "\n "
|
||||||
|
DOT@[66; 67) "."
|
||||||
|
NAME_REF@[67; 70)
|
||||||
|
IDENT@[67; 70) "max"
|
||||||
|
TYPE_ARG_LIST@[70; 77)
|
||||||
|
COLONCOLON@[70; 72) "::"
|
||||||
|
L_ANGLE@[72; 73) "<"
|
||||||
|
TYPE_ARG@[73; 76)
|
||||||
|
PATH_TYPE@[73; 76)
|
||||||
|
PATH@[73; 76)
|
||||||
|
PATH_SEGMENT@[73; 76)
|
||||||
|
NAME_REF@[73; 76)
|
||||||
|
IDENT@[73; 76) "i32"
|
||||||
|
R_ANGLE@[76; 77) ">"
|
||||||
|
ARG_LIST@[77; 79)
|
||||||
|
L_PAREN@[77; 78) "("
|
||||||
|
R_PAREN@[78; 79) ")"
|
||||||
|
SEMI@[79; 80) ";"
|
||||||
|
WHITESPACE@[80; 81) "\n"
|
||||||
|
R_CURLY@[81; 82) "}"
|
||||||
|
WHITESPACE@[82; 83) "\n"
|
||||||
|
error 56: expected expression
|
Loading…
Reference in New Issue
Block a user