Skip to content

Commit b9e6671

Browse files
authored
Merge pull request #19897 from aibaars/patch-2
Produce ClosureBinder node in atom.rs
2 parents 2a388d1 + 55328ba commit b9e6671

File tree

6 files changed

+69
-21
lines changed

6 files changed

+69
-21
lines changed

crates/parser/src/grammar/expressions/atom.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,8 +562,12 @@ fn closure_expr(p: &mut Parser<'_>) -> CompletedMarker {
562562

563563
let m = p.start();
564564

565+
// test closure_binder
566+
// fn main() { for<'a> || (); }
565567
if p.at(T![for]) {
568+
let b = p.start();
566569
types::for_binder(p);
570+
b.complete(p, CLOSURE_BINDER);
567571
}
568572
// test const_closure
569573
// fn main() { let cl = const || _ = 0; }

crates/parser/test_data/generated/runner.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ mod ok {
8383
#[test]
8484
fn cast_expr() { run_and_expect_no_errors("test_data/parser/inline/ok/cast_expr.rs"); }
8585
#[test]
86+
fn closure_binder() {
87+
run_and_expect_no_errors("test_data/parser/inline/ok/closure_binder.rs");
88+
}
89+
#[test]
8690
fn closure_body_underscore_assignment() {
8791
run_and_expect_no_errors(
8892
"test_data/parser/inline/ok/closure_body_underscore_assignment.rs",

crates/parser/test_data/parser/err/0024_many_type_parens.rast

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -186,13 +186,14 @@ SOURCE_FILE
186186
TUPLE_EXPR
187187
L_PAREN "("
188188
CLOSURE_EXPR
189-
FOR_KW "for"
190-
GENERIC_PARAM_LIST
191-
L_ANGLE "<"
192-
LIFETIME_PARAM
193-
LIFETIME
194-
LIFETIME_IDENT "'a"
195-
R_ANGLE ">"
189+
CLOSURE_BINDER
190+
FOR_KW "for"
191+
GENERIC_PARAM_LIST
192+
L_ANGLE "<"
193+
LIFETIME_PARAM
194+
LIFETIME
195+
LIFETIME_IDENT "'a"
196+
R_ANGLE ">"
196197
WHITESPACE " "
197198
BIN_EXPR
198199
BIN_EXPR
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
SOURCE_FILE
2+
FN
3+
FN_KW "fn"
4+
WHITESPACE " "
5+
NAME
6+
IDENT "main"
7+
PARAM_LIST
8+
L_PAREN "("
9+
R_PAREN ")"
10+
WHITESPACE " "
11+
BLOCK_EXPR
12+
STMT_LIST
13+
L_CURLY "{"
14+
WHITESPACE " "
15+
EXPR_STMT
16+
CLOSURE_EXPR
17+
CLOSURE_BINDER
18+
FOR_KW "for"
19+
GENERIC_PARAM_LIST
20+
L_ANGLE "<"
21+
LIFETIME_PARAM
22+
LIFETIME
23+
LIFETIME_IDENT "'a"
24+
R_ANGLE ">"
25+
WHITESPACE " "
26+
PARAM_LIST
27+
PIPE "|"
28+
PIPE "|"
29+
WHITESPACE " "
30+
TUPLE_EXPR
31+
L_PAREN "("
32+
R_PAREN ")"
33+
SEMICOLON ";"
34+
WHITESPACE " "
35+
R_CURLY "}"
36+
WHITESPACE "\n"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn main() { for<'a> || (); }

crates/parser/test_data/parser/inline/ok/lambda_expr.rast

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -202,13 +202,14 @@ SOURCE_FILE
202202
WHITESPACE "\n "
203203
EXPR_STMT
204204
CLOSURE_EXPR
205-
FOR_KW "for"
206-
GENERIC_PARAM_LIST
207-
L_ANGLE "<"
208-
LIFETIME_PARAM
209-
LIFETIME
210-
LIFETIME_IDENT "'a"
211-
R_ANGLE ">"
205+
CLOSURE_BINDER
206+
FOR_KW "for"
207+
GENERIC_PARAM_LIST
208+
L_ANGLE "<"
209+
LIFETIME_PARAM
210+
LIFETIME
211+
LIFETIME_IDENT "'a"
212+
R_ANGLE ">"
212213
WHITESPACE " "
213214
PARAM_LIST
214215
PIPE "|"
@@ -222,13 +223,14 @@ SOURCE_FILE
222223
WHITESPACE "\n "
223224
EXPR_STMT
224225
CLOSURE_EXPR
225-
FOR_KW "for"
226-
GENERIC_PARAM_LIST
227-
L_ANGLE "<"
228-
LIFETIME_PARAM
229-
LIFETIME
230-
LIFETIME_IDENT "'a"
231-
R_ANGLE ">"
226+
CLOSURE_BINDER
227+
FOR_KW "for"
228+
GENERIC_PARAM_LIST
229+
L_ANGLE "<"
230+
LIFETIME_PARAM
231+
LIFETIME
232+
LIFETIME_IDENT "'a"
233+
R_ANGLE ">"
232234
WHITESPACE " "
233235
MOVE_KW "move"
234236
WHITESPACE " "

0 commit comments

Comments
 (0)