Use names&refs

This commit is contained in:
Aleksey Kladov 2018-07-31 19:55:33 +03:00
parent 63e2ed4e75
commit 3d70aeb412
10 changed files with 56 additions and 32 deletions

View file

@ -35,7 +35,7 @@ fn type_arg(p: &mut Parser) {
m.complete(p, LIFETIME_ARG);
},
IDENT if p.nth(1) == EQ => {
p.bump();
name_ref(p);
p.bump();
types::type_(p);
m.complete(p, ASSOC_TYPE_ARG);

View file

@ -38,7 +38,7 @@ pub(super) fn list(p: &mut Parser) {
fn type_param(p: &mut Parser) {
assert!(p.at(IDENT));
let m = p.start();
p.bump();
name(p);
if p.at(COLON) {
bounds(p);
}

View file

@ -7,7 +7,8 @@ FILE@[0; 21)
TYPE_PARAM_LIST@[11; 15)
L_ANGLE@[11; 12)
TYPE_PARAM@[12; 13)
IDENT@[12; 13) "T"
NAME@[12; 13)
IDENT@[12; 13) "T"
R_ANGLE@[13; 14)
WHITESPACE@[14; 15)
EQ@[15; 16)

View file

@ -7,7 +7,8 @@ FILE@[0; 35)
TYPE_PARAM_LIST@[8; 33)
L_ANGLE@[8; 9)
TYPE_PARAM@[9; 32)
IDENT@[9; 10) "T"
NAME@[9; 10)
IDENT@[9; 10) "T"
COLON@[10; 11)
WHITESPACE@[11; 12)
LIFETIME@[12; 14) "'a"

View file

@ -7,8 +7,9 @@ FILE@[0; 19)
TYPE_PARAM_LIST@[8; 17)
L_ANGLE@[8; 9)
TYPE_PARAM@[9; 16)
IDENT@[9; 10) "T"
WHITESPACE@[10; 11)
NAME@[9; 11)
IDENT@[9; 10) "T"
WHITESPACE@[10; 11)
EQ@[11; 12)
PATH_TYPE@[12; 16)
PATH@[12; 16)

View file

@ -7,7 +7,8 @@ FILE@[0; 42)
TYPE_PARAM_LIST@[7; 10)
L_ANGLE@[7; 8)
TYPE_PARAM@[8; 9)
IDENT@[8; 9) "U"
NAME@[8; 9)
IDENT@[8; 9) "U"
R_ANGLE@[9; 10)
COLON@[10; 11)
PATH@[11; 17)

View file

@ -26,8 +26,9 @@ FILE@[0; 35)
IDENT@[20; 23) "i32"
COMMA@[23; 24)
ASSOC_TYPE_ARG@[24; 33)
WHITESPACE@[24; 25)
IDENT@[25; 29) "Item"
NAME_REF@[24; 29)
WHITESPACE@[24; 25)
IDENT@[25; 29) "Item"
EQ@[29; 30)
PATH_TYPE@[30; 33)
PATH@[30; 33)

View file

@ -7,7 +7,8 @@ FILE@[0; 290)
TYPE_PARAM_LIST@[9; 12)
L_ANGLE@[9; 10)
TYPE_PARAM@[10; 11)
IDENT@[10; 11) "T"
NAME@[10; 11)
IDENT@[10; 11) "T"
R_ANGLE@[11; 12)
SEMI@[12; 13)
WHITESPACE@[13; 14)
@ -19,7 +20,8 @@ FILE@[0; 290)
TYPE_PARAM_LIST@[23; 26)
L_ANGLE@[23; 24)
TYPE_PARAM@[24; 25)
IDENT@[24; 25) "T"
NAME@[24; 25)
IDENT@[24; 25) "T"
R_ANGLE@[25; 26)
L_PAREN@[26; 27)
POS_FIELD@[27; 30)
@ -39,7 +41,8 @@ FILE@[0; 290)
TYPE_PARAM_LIST@[42; 46)
L_ANGLE@[42; 43)
TYPE_PARAM@[43; 44)
IDENT@[43; 44) "T"
NAME@[43; 44)
IDENT@[43; 44) "T"
R_ANGLE@[44; 45)
WHITESPACE@[45; 46)
L_CURLY@[46; 47)
@ -205,7 +208,8 @@ FILE@[0; 290)
TYPE_PARAM_LIST@[245; 248)
L_ANGLE@[245; 246)
TYPE_PARAM@[246; 247)
IDENT@[246; 247) "T"
NAME@[246; 247)
IDENT@[246; 247) "T"
R_ANGLE@[247; 248)
SEMI@[248; 249)
WHITESPACE@[249; 250)
@ -217,11 +221,13 @@ FILE@[0; 290)
TYPE_PARAM_LIST@[260; 266)
L_ANGLE@[260; 261)
TYPE_PARAM@[261; 262)
IDENT@[261; 262) "T"
NAME@[261; 262)
IDENT@[261; 262) "T"
COMMA@[262; 263)
TYPE_PARAM@[263; 265)
WHITESPACE@[263; 264)
IDENT@[264; 265) "U"
NAME@[263; 265)
WHITESPACE@[263; 264)
IDENT@[264; 265) "U"
R_ANGLE@[265; 266)
SEMI@[266; 267)
WHITESPACE@[267; 268)
@ -236,12 +242,14 @@ FILE@[0; 290)
LIFETIME@[279; 281) "'a"
COMMA@[281; 282)
TYPE_PARAM@[282; 284)
WHITESPACE@[282; 283)
IDENT@[283; 284) "T"
NAME@[282; 284)
WHITESPACE@[282; 283)
IDENT@[283; 284) "T"
COMMA@[284; 285)
TYPE_PARAM@[285; 287)
WHITESPACE@[285; 286)
IDENT@[286; 287) "U"
NAME@[285; 287)
WHITESPACE@[285; 286)
IDENT@[286; 287) "U"
R_ANGLE@[287; 288)
SEMI@[288; 289)
WHITESPACE@[289; 290)

View file

@ -17,7 +17,8 @@ FILE@[0; 182)
TYPE_PARAM_LIST@[20; 24)
L_ANGLE@[20; 21)
TYPE_PARAM@[21; 22)
IDENT@[21; 22) "T"
NAME@[21; 22)
IDENT@[21; 22) "T"
R_ANGLE@[22; 23)
WHITESPACE@[23; 24)
L_CURLY@[24; 25)

View file

@ -7,7 +7,8 @@ FILE@[0; 200)
TYPE_PARAM_LIST@[8; 11)
L_ANGLE@[8; 9)
TYPE_PARAM@[9; 10)
IDENT@[9; 10) "T"
NAME@[9; 10)
IDENT@[9; 10) "T"
R_ANGLE@[10; 11)
SEMI@[11; 12)
WHITESPACE@[12; 13)
@ -19,7 +20,8 @@ FILE@[0; 200)
TYPE_PARAM_LIST@[21; 25)
L_ANGLE@[21; 22)
TYPE_PARAM@[22; 24)
IDENT@[22; 23) "T"
NAME@[22; 23)
IDENT@[22; 23) "T"
COLON@[23; 24)
R_ANGLE@[24; 25)
SEMI@[25; 26)
@ -32,7 +34,8 @@ FILE@[0; 200)
TYPE_PARAM_LIST@[35; 42)
L_ANGLE@[35; 36)
TYPE_PARAM@[36; 41)
IDENT@[36; 37) "T"
NAME@[36; 37)
IDENT@[36; 37) "T"
COLON@[37; 38)
WHITESPACE@[38; 39)
LIFETIME@[39; 41) "'a"
@ -47,7 +50,8 @@ FILE@[0; 200)
TYPE_PARAM_LIST@[52; 62)
L_ANGLE@[52; 53)
TYPE_PARAM@[53; 61)
IDENT@[53; 54) "T"
NAME@[53; 54)
IDENT@[53; 54) "T"
COLON@[54; 55)
WHITESPACE@[55; 56)
LIFETIME@[56; 58) "'a"
@ -65,7 +69,8 @@ FILE@[0; 200)
TYPE_PARAM_LIST@[72; 85)
L_ANGLE@[72; 73)
TYPE_PARAM@[73; 84)
IDENT@[73; 74) "T"
NAME@[73; 74)
IDENT@[73; 74) "T"
COLON@[74; 75)
WHITESPACE@[75; 76)
LIFETIME@[76; 78) "'a"
@ -85,7 +90,8 @@ FILE@[0; 200)
TYPE_PARAM_LIST@[95; 115)
L_ANGLE@[95; 96)
TYPE_PARAM@[96; 114)
IDENT@[96; 97) "T"
NAME@[96; 97)
IDENT@[96; 97) "T"
COLON@[97; 98)
WHITESPACE@[98; 99)
LIFETIME@[99; 101) "'a"
@ -111,7 +117,8 @@ FILE@[0; 200)
TYPE_PARAM_LIST@[125; 142)
L_ANGLE@[125; 126)
TYPE_PARAM@[126; 141)
IDENT@[126; 127) "T"
NAME@[126; 127)
IDENT@[126; 127) "T"
COLON@[127; 128)
PATH@[128; 135)
PATH_SEGMENT@[128; 135)
@ -136,7 +143,8 @@ FILE@[0; 200)
TYPE_PARAM_LIST@[152; 179)
L_ANGLE@[152; 153)
TYPE_PARAM@[153; 178)
IDENT@[153; 154) "T"
NAME@[153; 154)
IDENT@[153; 154) "T"
COLON@[154; 155)
PATH@[155; 162)
PATH_SEGMENT@[155; 162)
@ -170,12 +178,14 @@ FILE@[0; 200)
TYPE_PARAM_LIST@[189; 198)
L_ANGLE@[189; 190)
TYPE_PARAM@[190; 192)
IDENT@[190; 191) "T"
NAME@[190; 191)
IDENT@[190; 191) "T"
COLON@[191; 192)
COMMA@[192; 193)
TYPE_PARAM@[193; 196)
WHITESPACE@[193; 194)
IDENT@[194; 195) "U"
NAME@[193; 195)
WHITESPACE@[193; 194)
IDENT@[194; 195) "U"
COLON@[195; 196)
COMMA@[196; 197)
R_ANGLE@[197; 198)