File tree 7 files changed +92
-2
lines changed
test_data/parser/inline/ok
7 files changed +92
-2
lines changed Original file line number Diff line number Diff line change @@ -157,6 +157,16 @@ fn type_bound(p: &mut Parser<'_>) -> bool {
157
157
p. bump_any ( ) ;
158
158
p. expect ( T ! [ const ] ) ;
159
159
}
160
+ // test const_trait_bound
161
+ // const fn foo(_: impl const Trait) {}
162
+ T ! [ const ] => {
163
+ p. bump_any ( ) ;
164
+ }
165
+ // test async_trait_bound
166
+ // fn async_foo(_: impl async Fn(&i32)) {}
167
+ T ! [ async ] => {
168
+ p. bump_any ( ) ;
169
+ }
160
170
_ => ( ) ,
161
171
}
162
172
if paths:: is_use_path_start ( p) {
Original file line number Diff line number Diff line change
1
+ SOURCE_FILE
2
+ FN
3
+ FN_KW "fn"
4
+ WHITESPACE " "
5
+ NAME
6
+ IDENT "async_foo"
7
+ PARAM_LIST
8
+ L_PAREN "("
9
+ PARAM
10
+ WILDCARD_PAT
11
+ UNDERSCORE "_"
12
+ COLON ":"
13
+ WHITESPACE " "
14
+ IMPL_TRAIT_TYPE
15
+ IMPL_KW "impl"
16
+ WHITESPACE " "
17
+ TYPE_BOUND_LIST
18
+ TYPE_BOUND
19
+ ASYNC_KW "async"
20
+ WHITESPACE " "
21
+ PATH_TYPE
22
+ PATH
23
+ PATH_SEGMENT
24
+ NAME_REF
25
+ IDENT "Fn"
26
+ PARAM_LIST
27
+ L_PAREN "("
28
+ PARAM
29
+ REF_TYPE
30
+ AMP "&"
31
+ PATH_TYPE
32
+ PATH
33
+ PATH_SEGMENT
34
+ NAME_REF
35
+ IDENT "i32"
36
+ R_PAREN ")"
37
+ R_PAREN ")"
38
+ WHITESPACE " "
39
+ BLOCK_EXPR
40
+ STMT_LIST
41
+ L_CURLY "{"
42
+ R_CURLY "}"
43
+ WHITESPACE "\n"
Original file line number Diff line number Diff line change
1
+ fn async_foo ( _: impl async Fn ( & i32 ) ) { }
Original file line number Diff line number Diff line change
1
+ SOURCE_FILE
2
+ FN
3
+ CONST_KW "const"
4
+ WHITESPACE " "
5
+ FN_KW "fn"
6
+ WHITESPACE " "
7
+ NAME
8
+ IDENT "foo"
9
+ PARAM_LIST
10
+ L_PAREN "("
11
+ PARAM
12
+ WILDCARD_PAT
13
+ UNDERSCORE "_"
14
+ COLON ":"
15
+ WHITESPACE " "
16
+ IMPL_TRAIT_TYPE
17
+ IMPL_KW "impl"
18
+ WHITESPACE " "
19
+ TYPE_BOUND_LIST
20
+ TYPE_BOUND
21
+ CONST_KW "const"
22
+ WHITESPACE " "
23
+ PATH_TYPE
24
+ PATH
25
+ PATH_SEGMENT
26
+ NAME_REF
27
+ IDENT "Trait"
28
+ R_PAREN ")"
29
+ WHITESPACE " "
30
+ BLOCK_EXPR
31
+ STMT_LIST
32
+ L_CURLY "{"
33
+ R_CURLY "}"
34
+ WHITESPACE "\n"
Original file line number Diff line number Diff line change
1
+ const fn foo ( _: impl const Trait ) { }
Original file line number Diff line number Diff line change @@ -614,7 +614,7 @@ TypeBoundList =
614
614
615
615
TypeBound =
616
616
Lifetime
617
- | ('?' | '~' 'const')? Type
617
+ | ('~' 'const' | 'const')? 'async'? '?' ? Type
618
618
619
619
//************************//
620
620
// Patterns //
Original file line number Diff line number Diff line change @@ -1410,9 +1410,10 @@ pub struct TypeBound {
1410
1410
}
1411
1411
impl TypeBound {
1412
1412
pub fn lifetime ( & self ) -> Option < Lifetime > { support:: child ( & self . syntax ) }
1413
- pub fn question_mark_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ ?] ) }
1414
1413
pub fn tilde_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ ~] ) }
1415
1414
pub fn const_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ const ] ) }
1415
+ pub fn async_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ async ] ) }
1416
+ pub fn question_mark_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ ?] ) }
1416
1417
pub fn ty ( & self ) -> Option < Type > { support:: child ( & self . syntax ) }
1417
1418
}
1418
1419
You can’t perform that action at this time.
0 commit comments