G: use names in structs

This commit is contained in:
Aleksey Kladov 2018-02-10 14:10:02 +03:00
parent f746fb6a93
commit ca6e93f091
14 changed files with 130 additions and 92 deletions

View file

@ -4,9 +4,7 @@ pub(super) fn struct_item(p: &mut Parser) {
assert!(p.at(STRUCT_KW));
p.bump();
if !p.expect(IDENT) {
return;
}
name(p);
type_params::list(p);
match p.current() {
WHERE_KW => {

View file

@ -1,9 +1,10 @@
FILE@[0; 34)
STRUCT_ITEM@[0; 34)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 26)
WHITESPACE@[10; 15)

View file

@ -9,8 +9,9 @@ FILE@[0; 21)
WHITESPACE@[8; 10)
STRUCT_ITEM@[10; 21)
STRUCT_KW@[10; 16)
WHITESPACE@[16; 17)
IDENT@[17; 18) "S"
WHITESPACE@[18; 19)
NAME@[16; 19)
WHITESPACE@[16; 17)
IDENT@[17; 18) "S"
WHITESPACE@[18; 19)
L_CURLY@[19; 20)
R_CURLY@[20; 21)

View file

@ -1,9 +1,10 @@
FILE@[0; 40)
STRUCT_ITEM@[0; 39)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 21)
WHITESPACE@[10; 15)

View file

@ -1,9 +1,10 @@
FILE@[0; 74)
STRUCT_ITEM@[0; 74)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 21)
WHITESPACE@[10; 15)

View file

@ -5,8 +5,9 @@ FILE@[0; 31)
WHITESPACE@[1; 3)
STRUCT_ITEM@[3; 14)
STRUCT_KW@[3; 9)
WHITESPACE@[9; 10)
IDENT@[10; 11) "S"
NAME@[9; 11)
WHITESPACE@[9; 10)
IDENT@[10; 11) "S"
SEMI@[11; 12)
WHITESPACE@[12; 14)
ERROR@[14; 17)

View file

@ -1,8 +1,9 @@
FILE@[0; 43)
STRUCT_ITEM@[0; 12)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
NAME@[6; 8)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
TYPE_PARAM_LIST@[8; 12)
L_ANGLE@[8; 9)
ERROR@[9; 12)
@ -36,7 +37,8 @@ FILE@[0; 43)
WHITESPACE@[31; 33)
STRUCT_ITEM@[33; 43)
STRUCT_KW@[33; 39)
WHITESPACE@[39; 40)
IDENT@[40; 41) "T"
NAME@[39; 41)
WHITESPACE@[39; 40)
IDENT@[40; 41) "T"
SEMI@[41; 42)
WHITESPACE@[42; 43)

View file

@ -5,7 +5,8 @@ FILE@[0; 19)
err: `expected `fn` or `{``
STRUCT_ITEM@[7; 19)
STRUCT_KW@[7; 13)
WHITESPACE@[13; 14)
IDENT@[14; 17) "Foo"
NAME@[13; 17)
WHITESPACE@[13; 14)
IDENT@[14; 17) "Foo"
SEMI@[17; 18)
WHITESPACE@[18; 19)

View file

@ -1,9 +1,10 @@
FILE@[0; 13)
STRUCT_ITEM@[0; 13)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
WHITESPACE@[10; 12)
R_CURLY@[12; 13)

View file

@ -1,9 +1,10 @@
FILE@[0; 25)
STRUCT_ITEM@[0; 25)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 24)
WHITESPACE@[10; 15)

View file

@ -35,9 +35,10 @@ FILE@[0; 118)
WHITESPACE@[47; 52)
STRUCT_ITEM@[52; 64)
STRUCT_KW@[52; 58)
WHITESPACE@[58; 59)
IDENT@[59; 60) "S"
WHITESPACE@[60; 61)
NAME@[58; 61)
WHITESPACE@[58; 59)
IDENT@[59; 60) "S"
WHITESPACE@[60; 61)
L_CURLY@[61; 62)
R_CURLY@[62; 63)
WHITESPACE@[63; 64)

View file

@ -1,31 +1,35 @@
FILE@[0; 97)
STRUCT_ITEM@[0; 10)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8) "A"
NAME@[6; 8)
WHITESPACE@[6; 7)
IDENT@[7; 8) "A"
SEMI@[8; 9)
WHITESPACE@[9; 10)
STRUCT_ITEM@[10; 22)
STRUCT_KW@[10; 16)
WHITESPACE@[16; 17)
IDENT@[17; 18) "B"
WHITESPACE@[18; 19)
NAME@[16; 19)
WHITESPACE@[16; 17)
IDENT@[17; 18) "B"
WHITESPACE@[18; 19)
L_CURLY@[19; 20)
R_CURLY@[20; 21)
WHITESPACE@[21; 22)
STRUCT_ITEM@[22; 35)
STRUCT_KW@[22; 28)
WHITESPACE@[28; 29)
IDENT@[29; 30) "C"
NAME@[28; 30)
WHITESPACE@[28; 29)
IDENT@[29; 30) "C"
L_PAREN@[30; 31)
R_PAREN@[31; 32)
SEMI@[32; 33)
WHITESPACE@[33; 35)
STRUCT_ITEM@[35; 76)
STRUCT_KW@[35; 41)
WHITESPACE@[41; 42)
IDENT@[42; 43) "D"
WHITESPACE@[43; 44)
NAME@[41; 44)
WHITESPACE@[41; 42)
IDENT@[42; 43) "D"
WHITESPACE@[43; 44)
L_CURLY@[44; 45)
NAMED_FIELD@[45; 56)
WHITESPACE@[45; 50)
@ -48,8 +52,9 @@ FILE@[0; 97)
WHITESPACE@[74; 76)
STRUCT_ITEM@[76; 97)
STRUCT_KW@[76; 82)
WHITESPACE@[82; 83)
IDENT@[83; 84) "E"
NAME@[82; 84)
WHITESPACE@[82; 83)
IDENT@[83; 84) "E"
L_PAREN@[84; 85)
POS_FIELD@[85; 90)
VISIBILITY@[85; 89)

View file

@ -1,8 +1,9 @@
FILE@[0; 290)
STRUCT_ITEM@[0; 14)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 9) "S1"
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 9) "S1"
TYPE_PARAM_LIST@[9; 12)
L_ANGLE@[9; 10)
TYPE_PARAM@[10; 11)
@ -12,8 +13,9 @@ FILE@[0; 290)
WHITESPACE@[13; 14)
STRUCT_ITEM@[14; 33)
STRUCT_KW@[14; 20)
WHITESPACE@[20; 21)
IDENT@[21; 23) "S2"
NAME@[20; 23)
WHITESPACE@[20; 21)
IDENT@[21; 23) "S2"
TYPE_PARAM_LIST@[23; 26)
L_ANGLE@[23; 24)
TYPE_PARAM@[24; 25)
@ -27,8 +29,9 @@ FILE@[0; 290)
WHITESPACE@[32; 33)
STRUCT_ITEM@[33; 58)
STRUCT_KW@[33; 39)
WHITESPACE@[39; 40)
IDENT@[40; 42) "S3"
NAME@[39; 42)
WHITESPACE@[39; 40)
IDENT@[40; 42) "S3"
TYPE_PARAM_LIST@[42; 46)
L_ANGLE@[42; 43)
TYPE_PARAM@[43; 44)
@ -47,8 +50,9 @@ FILE@[0; 290)
WHITESPACE@[56; 58)
STRUCT_ITEM@[58; 71)
STRUCT_KW@[58; 64)
WHITESPACE@[64; 65)
IDENT@[65; 67) "S4"
NAME@[64; 67)
WHITESPACE@[64; 65)
IDENT@[65; 67) "S4"
TYPE_PARAM_LIST@[67; 69)
L_ANGLE@[67; 68)
R_ANGLE@[68; 69)
@ -56,8 +60,9 @@ FILE@[0; 290)
WHITESPACE@[70; 71)
STRUCT_ITEM@[71; 86)
STRUCT_KW@[71; 77)
WHITESPACE@[77; 78)
IDENT@[78; 80) "S5"
NAME@[77; 80)
WHITESPACE@[77; 78)
IDENT@[78; 80) "S5"
TYPE_PARAM_LIST@[80; 84)
L_ANGLE@[80; 81)
LIFETIME_PARAM@[81; 83)
@ -67,8 +72,9 @@ FILE@[0; 290)
WHITESPACE@[85; 86)
STRUCT_ITEM@[86; 102)
STRUCT_KW@[86; 92)
WHITESPACE@[92; 93)
IDENT@[93; 95) "S6"
NAME@[92; 95)
WHITESPACE@[92; 93)
IDENT@[93; 95) "S6"
TYPE_PARAM_LIST@[95; 100)
L_ANGLE@[95; 96)
LIFETIME_PARAM@[96; 99)
@ -79,8 +85,9 @@ FILE@[0; 290)
WHITESPACE@[101; 102)
STRUCT_ITEM@[102; 121)
STRUCT_KW@[102; 108)
WHITESPACE@[108; 109)
IDENT@[109; 111) "S7"
NAME@[108; 111)
WHITESPACE@[108; 109)
IDENT@[109; 111) "S7"
TYPE_PARAM_LIST@[111; 119)
L_ANGLE@[111; 112)
LIFETIME_PARAM@[112; 118)
@ -93,8 +100,9 @@ FILE@[0; 290)
WHITESPACE@[120; 121)
STRUCT_ITEM@[121; 143)
STRUCT_KW@[121; 127)
WHITESPACE@[127; 128)
IDENT@[128; 130) "S8"
NAME@[127; 130)
WHITESPACE@[127; 128)
IDENT@[128; 130) "S8"
TYPE_PARAM_LIST@[130; 141)
L_ANGLE@[130; 131)
LIFETIME_PARAM@[131; 140)
@ -110,8 +118,9 @@ FILE@[0; 290)
WHITESPACE@[142; 143)
STRUCT_ITEM@[143; 167)
STRUCT_KW@[143; 149)
WHITESPACE@[149; 150)
IDENT@[150; 152) "S9"
NAME@[149; 152)
WHITESPACE@[149; 150)
IDENT@[150; 152) "S9"
TYPE_PARAM_LIST@[152; 165)
L_ANGLE@[152; 153)
LIFETIME_PARAM@[153; 164)
@ -128,8 +137,9 @@ FILE@[0; 290)
WHITESPACE@[166; 167)
STRUCT_ITEM@[167; 184)
STRUCT_KW@[167; 173)
WHITESPACE@[173; 174)
IDENT@[174; 177) "S10"
NAME@[173; 177)
WHITESPACE@[173; 174)
IDENT@[174; 177) "S10"
TYPE_PARAM_LIST@[177; 182)
L_ANGLE@[177; 178)
LIFETIME_PARAM@[178; 180)
@ -140,8 +150,9 @@ FILE@[0; 290)
WHITESPACE@[183; 184)
STRUCT_ITEM@[184; 204)
STRUCT_KW@[184; 190)
WHITESPACE@[190; 191)
IDENT@[191; 194) "S11"
NAME@[190; 194)
WHITESPACE@[190; 191)
IDENT@[191; 194) "S11"
TYPE_PARAM_LIST@[194; 202)
L_ANGLE@[194; 195)
LIFETIME_PARAM@[195; 197)
@ -155,8 +166,9 @@ FILE@[0; 290)
WHITESPACE@[203; 204)
STRUCT_ITEM@[204; 235)
STRUCT_KW@[204; 210)
WHITESPACE@[210; 211)
IDENT@[211; 214) "S12"
NAME@[210; 214)
WHITESPACE@[210; 211)
IDENT@[211; 214) "S12"
TYPE_PARAM_LIST@[214; 232)
L_ANGLE@[214; 215)
LIFETIME_PARAM@[215; 222)
@ -178,8 +190,9 @@ FILE@[0; 290)
WHITESPACE@[233; 235)
STRUCT_ITEM@[235; 250)
STRUCT_KW@[235; 241)
WHITESPACE@[241; 242)
IDENT@[242; 245) "S13"
NAME@[241; 245)
WHITESPACE@[241; 242)
IDENT@[242; 245) "S13"
TYPE_PARAM_LIST@[245; 248)
L_ANGLE@[245; 246)
TYPE_PARAM@[246; 247)
@ -189,8 +202,9 @@ FILE@[0; 290)
WHITESPACE@[249; 250)
STRUCT_ITEM@[250; 268)
STRUCT_KW@[250; 256)
WHITESPACE@[256; 257)
IDENT@[257; 260) "S14"
NAME@[256; 260)
WHITESPACE@[256; 257)
IDENT@[257; 260) "S14"
TYPE_PARAM_LIST@[260; 266)
L_ANGLE@[260; 261)
TYPE_PARAM@[261; 262)
@ -204,8 +218,9 @@ FILE@[0; 290)
WHITESPACE@[267; 268)
STRUCT_ITEM@[268; 290)
STRUCT_KW@[268; 274)
WHITESPACE@[274; 275)
IDENT@[275; 278) "S15"
NAME@[274; 278)
WHITESPACE@[274; 275)
IDENT@[275; 278) "S15"
TYPE_PARAM_LIST@[278; 288)
L_ANGLE@[278; 279)
LIFETIME_PARAM@[279; 281)

View file

@ -1,8 +1,9 @@
FILE@[0; 200)
STRUCT_ITEM@[0; 13)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8) "A"
NAME@[6; 8)
WHITESPACE@[6; 7)
IDENT@[7; 8) "A"
TYPE_PARAM_LIST@[8; 11)
L_ANGLE@[8; 9)
TYPE_PARAM@[9; 10)
@ -12,8 +13,9 @@ FILE@[0; 200)
WHITESPACE@[12; 13)
STRUCT_ITEM@[13; 27)
STRUCT_KW@[13; 19)
WHITESPACE@[19; 20)
IDENT@[20; 21) "B"
NAME@[19; 21)
WHITESPACE@[19; 20)
IDENT@[20; 21) "B"
TYPE_PARAM_LIST@[21; 25)
L_ANGLE@[21; 22)
TYPE_PARAM@[22; 24)
@ -24,8 +26,9 @@ FILE@[0; 200)
WHITESPACE@[26; 27)
STRUCT_ITEM@[27; 44)
STRUCT_KW@[27; 33)
WHITESPACE@[33; 34)
IDENT@[34; 35) "C"
NAME@[33; 35)
WHITESPACE@[33; 34)
IDENT@[34; 35) "C"
TYPE_PARAM_LIST@[35; 42)
L_ANGLE@[35; 36)
TYPE_PARAM@[36; 41)
@ -38,8 +41,9 @@ FILE@[0; 200)
WHITESPACE@[43; 44)
STRUCT_ITEM@[44; 64)
STRUCT_KW@[44; 50)
WHITESPACE@[50; 51)
IDENT@[51; 52) "D"
NAME@[50; 52)
WHITESPACE@[50; 51)
IDENT@[51; 52) "D"
TYPE_PARAM_LIST@[52; 62)
L_ANGLE@[52; 53)
TYPE_PARAM@[53; 61)
@ -55,8 +59,9 @@ FILE@[0; 200)
WHITESPACE@[63; 64)
STRUCT_ITEM@[64; 87)
STRUCT_KW@[64; 70)
WHITESPACE@[70; 71)
IDENT@[71; 72) "E"
NAME@[70; 72)
WHITESPACE@[70; 71)
IDENT@[71; 72) "E"
TYPE_PARAM_LIST@[72; 85)
L_ANGLE@[72; 73)
TYPE_PARAM@[73; 84)
@ -74,8 +79,9 @@ FILE@[0; 200)
WHITESPACE@[86; 87)
STRUCT_ITEM@[87; 117)
STRUCT_KW@[87; 93)
WHITESPACE@[93; 94)
IDENT@[94; 95) "F"
NAME@[93; 95)
WHITESPACE@[93; 94)
IDENT@[94; 95) "F"
TYPE_PARAM_LIST@[95; 115)
L_ANGLE@[95; 96)
TYPE_PARAM@[96; 114)
@ -98,8 +104,9 @@ FILE@[0; 200)
WHITESPACE@[116; 117)
STRUCT_ITEM@[117; 144)
STRUCT_KW@[117; 123)
WHITESPACE@[123; 124)
IDENT@[124; 125) "G"
NAME@[123; 125)
WHITESPACE@[123; 124)
IDENT@[124; 125) "G"
TYPE_PARAM_LIST@[125; 142)
L_ANGLE@[125; 126)
TYPE_PARAM@[126; 141)
@ -120,8 +127,9 @@ FILE@[0; 200)
WHITESPACE@[143; 144)
STRUCT_ITEM@[144; 181)
STRUCT_KW@[144; 150)
WHITESPACE@[150; 151)
IDENT@[151; 152) "H"
NAME@[150; 152)
WHITESPACE@[150; 151)
IDENT@[151; 152) "H"
TYPE_PARAM_LIST@[152; 179)
L_ANGLE@[152; 153)
TYPE_PARAM@[153; 178)
@ -151,8 +159,9 @@ FILE@[0; 200)
WHITESPACE@[180; 181)
STRUCT_ITEM@[181; 200)
STRUCT_KW@[181; 187)
WHITESPACE@[187; 188)
IDENT@[188; 189) "I"
NAME@[187; 189)
WHITESPACE@[187; 188)
IDENT@[188; 189) "I"
TYPE_PARAM_LIST@[189; 198)
L_ANGLE@[189; 190)
TYPE_PARAM@[190; 192)