Fn-style type params
This commit is contained in:
parent
678882d4f8
commit
bfb90dc4f1
3 changed files with 56 additions and 1 deletions
|
@ -71,7 +71,16 @@ fn path_segment(p: &mut Parser, mode: Mode, first: bool) {
|
|||
fn path_generic_args(p: &mut Parser, mode: Mode) {
|
||||
match mode {
|
||||
Mode::Use => return,
|
||||
Mode::Type => type_args::type_arg_list(p, false),
|
||||
Mode::Type => {
|
||||
// test path_fn_trait_args
|
||||
// type F = Box<Fn(x: i32) -> ()>;
|
||||
if p.at(L_PAREN) {
|
||||
params::param_list(p);
|
||||
fn_ret_type(p);
|
||||
} else {
|
||||
type_args::type_arg_list(p, false)
|
||||
}
|
||||
},
|
||||
Mode::Expr => type_args::type_arg_list(p, true),
|
||||
}
|
||||
}
|
||||
|
|
1
tests/data/parser/inline/0093_path_fn_trait_args.rs
Normal file
1
tests/data/parser/inline/0093_path_fn_trait_args.rs
Normal file
|
@ -0,0 +1 @@
|
|||
type F = Box<Fn(x: i32) -> ()>;
|
45
tests/data/parser/inline/0093_path_fn_trait_args.txt
Normal file
45
tests/data/parser/inline/0093_path_fn_trait_args.txt
Normal file
|
@ -0,0 +1,45 @@
|
|||
FILE@[0; 32)
|
||||
TYPE_ITEM@[0; 31)
|
||||
TYPE_KW@[0; 4)
|
||||
WHITESPACE@[4; 5)
|
||||
NAME@[5; 6)
|
||||
IDENT@[5; 6) "F"
|
||||
WHITESPACE@[6; 7)
|
||||
EQ@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
PATH_TYPE@[9; 30)
|
||||
PATH@[9; 30)
|
||||
PATH_SEGMENT@[9; 30)
|
||||
NAME_REF@[9; 12)
|
||||
IDENT@[9; 12) "Box"
|
||||
TYPE_ARG_LIST@[12; 30)
|
||||
L_ANGLE@[12; 13)
|
||||
TYPE_ARG@[13; 29)
|
||||
PATH_TYPE@[13; 29)
|
||||
PATH@[13; 29)
|
||||
PATH_SEGMENT@[13; 29)
|
||||
NAME_REF@[13; 15)
|
||||
IDENT@[13; 15) "Fn"
|
||||
PARAM_LIST@[15; 23)
|
||||
L_PAREN@[15; 16)
|
||||
PARAM@[16; 22)
|
||||
BIND_PAT@[16; 17)
|
||||
NAME@[16; 17)
|
||||
IDENT@[16; 17) "x"
|
||||
COLON@[17; 18)
|
||||
WHITESPACE@[18; 19)
|
||||
PATH_TYPE@[19; 22)
|
||||
PATH@[19; 22)
|
||||
PATH_SEGMENT@[19; 22)
|
||||
NAME_REF@[19; 22)
|
||||
IDENT@[19; 22) "i32"
|
||||
R_PAREN@[22; 23)
|
||||
WHITESPACE@[23; 24)
|
||||
THIN_ARROW@[24; 26)
|
||||
WHITESPACE@[26; 27)
|
||||
TUPLE_TYPE@[27; 29)
|
||||
L_PAREN@[27; 28)
|
||||
R_PAREN@[28; 29)
|
||||
R_ANGLE@[29; 30)
|
||||
SEMI@[30; 31)
|
||||
WHITESPACE@[31; 32)
|
Loading…
Reference in a new issue