mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-01 20:31:59 +00:00
Merge pull request #19897 from aibaars/patch-2
Produce ClosureBinder node in atom.rs
This commit is contained in:
commit
b9e6671353
6 changed files with 69 additions and 21 deletions
|
|
@ -562,8 +562,12 @@ fn closure_expr(p: &mut Parser<'_>) -> CompletedMarker {
|
|||
|
||||
let m = p.start();
|
||||
|
||||
// test closure_binder
|
||||
// fn main() { for<'a> || (); }
|
||||
if p.at(T![for]) {
|
||||
let b = p.start();
|
||||
types::for_binder(p);
|
||||
b.complete(p, CLOSURE_BINDER);
|
||||
}
|
||||
// test const_closure
|
||||
// fn main() { let cl = const || _ = 0; }
|
||||
|
|
|
|||
|
|
@ -83,6 +83,10 @@ mod ok {
|
|||
#[test]
|
||||
fn cast_expr() { run_and_expect_no_errors("test_data/parser/inline/ok/cast_expr.rs"); }
|
||||
#[test]
|
||||
fn closure_binder() {
|
||||
run_and_expect_no_errors("test_data/parser/inline/ok/closure_binder.rs");
|
||||
}
|
||||
#[test]
|
||||
fn closure_body_underscore_assignment() {
|
||||
run_and_expect_no_errors(
|
||||
"test_data/parser/inline/ok/closure_body_underscore_assignment.rs",
|
||||
|
|
|
|||
|
|
@ -186,13 +186,14 @@ SOURCE_FILE
|
|||
TUPLE_EXPR
|
||||
L_PAREN "("
|
||||
CLOSURE_EXPR
|
||||
FOR_KW "for"
|
||||
GENERIC_PARAM_LIST
|
||||
L_ANGLE "<"
|
||||
LIFETIME_PARAM
|
||||
LIFETIME
|
||||
LIFETIME_IDENT "'a"
|
||||
R_ANGLE ">"
|
||||
CLOSURE_BINDER
|
||||
FOR_KW "for"
|
||||
GENERIC_PARAM_LIST
|
||||
L_ANGLE "<"
|
||||
LIFETIME_PARAM
|
||||
LIFETIME
|
||||
LIFETIME_IDENT "'a"
|
||||
R_ANGLE ">"
|
||||
WHITESPACE " "
|
||||
BIN_EXPR
|
||||
BIN_EXPR
|
||||
|
|
|
|||
36
crates/parser/test_data/parser/inline/ok/closure_binder.rast
Normal file
36
crates/parser/test_data/parser/inline/ok/closure_binder.rast
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
SOURCE_FILE
|
||||
FN
|
||||
FN_KW "fn"
|
||||
WHITESPACE " "
|
||||
NAME
|
||||
IDENT "main"
|
||||
PARAM_LIST
|
||||
L_PAREN "("
|
||||
R_PAREN ")"
|
||||
WHITESPACE " "
|
||||
BLOCK_EXPR
|
||||
STMT_LIST
|
||||
L_CURLY "{"
|
||||
WHITESPACE " "
|
||||
EXPR_STMT
|
||||
CLOSURE_EXPR
|
||||
CLOSURE_BINDER
|
||||
FOR_KW "for"
|
||||
GENERIC_PARAM_LIST
|
||||
L_ANGLE "<"
|
||||
LIFETIME_PARAM
|
||||
LIFETIME
|
||||
LIFETIME_IDENT "'a"
|
||||
R_ANGLE ">"
|
||||
WHITESPACE " "
|
||||
PARAM_LIST
|
||||
PIPE "|"
|
||||
PIPE "|"
|
||||
WHITESPACE " "
|
||||
TUPLE_EXPR
|
||||
L_PAREN "("
|
||||
R_PAREN ")"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE " "
|
||||
R_CURLY "}"
|
||||
WHITESPACE "\n"
|
||||
|
|
@ -0,0 +1 @@
|
|||
fn main() { for<'a> || (); }
|
||||
|
|
@ -202,13 +202,14 @@ SOURCE_FILE
|
|||
WHITESPACE "\n "
|
||||
EXPR_STMT
|
||||
CLOSURE_EXPR
|
||||
FOR_KW "for"
|
||||
GENERIC_PARAM_LIST
|
||||
L_ANGLE "<"
|
||||
LIFETIME_PARAM
|
||||
LIFETIME
|
||||
LIFETIME_IDENT "'a"
|
||||
R_ANGLE ">"
|
||||
CLOSURE_BINDER
|
||||
FOR_KW "for"
|
||||
GENERIC_PARAM_LIST
|
||||
L_ANGLE "<"
|
||||
LIFETIME_PARAM
|
||||
LIFETIME
|
||||
LIFETIME_IDENT "'a"
|
||||
R_ANGLE ">"
|
||||
WHITESPACE " "
|
||||
PARAM_LIST
|
||||
PIPE "|"
|
||||
|
|
@ -222,13 +223,14 @@ SOURCE_FILE
|
|||
WHITESPACE "\n "
|
||||
EXPR_STMT
|
||||
CLOSURE_EXPR
|
||||
FOR_KW "for"
|
||||
GENERIC_PARAM_LIST
|
||||
L_ANGLE "<"
|
||||
LIFETIME_PARAM
|
||||
LIFETIME
|
||||
LIFETIME_IDENT "'a"
|
||||
R_ANGLE ">"
|
||||
CLOSURE_BINDER
|
||||
FOR_KW "for"
|
||||
GENERIC_PARAM_LIST
|
||||
L_ANGLE "<"
|
||||
LIFETIME_PARAM
|
||||
LIFETIME
|
||||
LIFETIME_IDENT "'a"
|
||||
R_ANGLE ">"
|
||||
WHITESPACE " "
|
||||
MOVE_KW "move"
|
||||
WHITESPACE " "
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue