31: Parse enums r=matklad a=matklad
This commit is contained in:
bors[bot] 2018-01-28 20:14:24 +00:00
commit 94caa9d3a2
33 changed files with 377 additions and 171 deletions

View file

@ -74,6 +74,8 @@ Grammar(
nodes: [
"FILE",
"STRUCT_ITEM",
"ENUM_ITEM",
"ENUM_VARIANT",
"NAMED_FIELD",
"POS_FIELD",
"FN_ITEM",

View file

@ -12,3 +12,9 @@ pub(super) fn literal(p: &mut Parser) -> bool {
_ => false,
}
}
pub(super) fn expr(p: &mut Parser) {
if !literal(p) {
p.error().message("expected expression").emit();
}
}

View file

@ -9,8 +9,9 @@ pub(super) fn mod_contents(p: &mut Parser, stop_on_r_curly: bool) {
}
}
pub(super) const ITEM_FIRST: TokenSet =
token_set![EXTERN_KW, MOD_KW, USE_KW, STRUCT_KW, FN_KW, PUB_KW, POUND,];
pub(super) const ITEM_FIRST: TokenSet = token_set![
EXTERN_KW, MOD_KW, USE_KW, STRUCT_KW, ENUM_KW, FN_KW, PUB_KW, POUND
];
fn item(p: &mut Parser) {
let item = p.start();
@ -34,6 +35,10 @@ fn item(p: &mut Parser) {
structs::struct_item(p);
STRUCT_ITEM
}
ENUM_KW => {
structs::enum_item(p);
ENUM_ITEM
}
FN_KW => {
fn_item(p);
FN_ITEM

View file

@ -40,6 +40,40 @@ pub(super) fn struct_item(p: &mut Parser) {
}
}
pub(super) fn enum_item(p: &mut Parser) {
assert!(p.at(ENUM_KW));
p.bump();
p.expect(IDENT);
type_param_list(p);
where_clause(p);
if p.expect(L_CURLY) {
while !p.at(EOF) && !p.at(R_CURLY) {
let var = p.start();
attributes::outer_attributes(p);
if p.at(IDENT) {
p.bump();
match p.current() {
L_CURLY => named_fields(p),
L_PAREN => pos_fields(p),
EQ => {
p.bump();
expressions::expr(p);
}
_ => (),
}
var.complete(p, ENUM_VARIANT);
} else {
var.abandon(p);
p.err_and_bump("expected enum variant");
}
if !p.at(R_CURLY) {
p.expect(COMMA);
}
}
p.expect(R_CURLY);
}
}
fn named_fields(p: &mut Parser) {
assert!(p.at(L_CURLY));
p.bump();

View file

@ -76,6 +76,8 @@ pub enum SyntaxKind {
SHEBANG,
FILE,
STRUCT_ITEM,
ENUM_ITEM,
ENUM_VARIANT,
NAMED_FIELD,
POS_FIELD,
FN_ITEM,
@ -176,6 +178,8 @@ impl SyntaxKind {
SHEBANG => &SyntaxInfo { name: "SHEBANG" },
FILE => &SyntaxInfo { name: "FILE" },
STRUCT_ITEM => &SyntaxInfo { name: "STRUCT_ITEM" },
ENUM_ITEM => &SyntaxInfo { name: "ENUM_ITEM" },
ENUM_VARIANT => &SyntaxInfo { name: "ENUM_VARIANT" },
NAMED_FIELD => &SyntaxInfo { name: "NAMED_FIELD" },
POS_FIELD => &SyntaxInfo { name: "POS_FIELD" },
FN_ITEM => &SyntaxInfo { name: "FN_ITEM" },

View file

@ -106,7 +106,19 @@ impl<'f> Node<'f> {
impl<'f> fmt::Debug for Node<'f> {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
write!(fmt, "{:?}@{:?}", self.kind(), self.range())
write!(fmt, "{:?}@{:?}", self.kind(), self.range())?;
if has_short_text(self.kind()) {
write!(fmt, " \"{}\"", self.text())?;
}
Ok(())
}
}
fn has_short_text(kind: SyntaxKind) -> bool {
use syntax_kinds::*;
match kind {
IDENT | LIFETIME => true,
_ => false,
}
}

View file

@ -2,21 +2,21 @@ FILE@[0; 34)
STRUCT_ITEM@[0; 34)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 26)
WHITESPACE@[10; 15)
IDENT@[15; 16)
IDENT@[15; 16) "a"
COLON@[16; 17)
WHITESPACE@[17; 18)
IDENT@[18; 21)
IDENT@[18; 21) "u32"
WHITESPACE@[21; 26)
err: `expected COMMA`
NAMED_FIELD@[26; 33)
IDENT@[26; 27)
IDENT@[26; 27) "b"
COLON@[27; 28)
WHITESPACE@[28; 29)
IDENT@[29; 32)
IDENT@[29; 32) "u32"
WHITESPACE@[32; 33)
R_CURLY@[33; 34)

View file

@ -1,16 +1,16 @@
FILE@[0; 21)
ERROR@[0; 3)
err: `expected item`
IDENT@[0; 2)
IDENT@[0; 2) "if"
WHITESPACE@[2; 3)
ERROR@[3; 10)
err: `expected item`
IDENT@[3; 8)
IDENT@[3; 8) "match"
WHITESPACE@[8; 10)
STRUCT_ITEM@[10; 21)
STRUCT_KW@[10; 16)
WHITESPACE@[16; 17)
IDENT@[17; 18)
IDENT@[17; 18) "S"
WHITESPACE@[18; 19)
L_CURLY@[19; 20)
R_CURLY@[20; 21)

View file

@ -2,22 +2,22 @@ FILE@[0; 40)
STRUCT_ITEM@[0; 39)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 21)
WHITESPACE@[10; 15)
IDENT@[15; 16)
IDENT@[15; 16) "a"
COLON@[16; 17)
WHITESPACE@[17; 18)
IDENT@[18; 21)
IDENT@[18; 21) "i32"
COMMA@[21; 22)
NAMED_FIELD@[22; 36)
WHITESPACE@[22; 27)
IDENT@[27; 28)
IDENT@[27; 28) "b"
COLON@[28; 29)
WHITESPACE@[29; 30)
IDENT@[30; 36)
IDENT@[30; 36) "String"
COMMA@[36; 37)
WHITESPACE@[37; 38)
R_CURLY@[38; 39)

View file

@ -6,7 +6,7 @@ FILE@[0; 12)
PATH@[3; 7)
PATH_SEGMENT@[3; 7)
WHITESPACE@[3; 4)
IDENT@[4; 7)
IDENT@[4; 7) "foo"
COLONCOLON@[7; 9)
PATH_SEGMENT@[9; 9)
err: `expected identifier`

View file

@ -4,10 +4,10 @@ FILE@[0; 54)
POUND@[0; 1)
L_BRACK@[1; 2)
META_ITEM@[2; 17)
IDENT@[2; 5)
IDENT@[2; 5) "foo"
L_PAREN@[5; 6)
META_ITEM@[6; 9)
IDENT@[6; 9)
IDENT@[6; 9) "foo"
COMMA@[9; 10)
ERROR@[10; 12)
err: `expected attribute`
@ -24,7 +24,7 @@ FILE@[0; 54)
WHITESPACE@[18; 19)
FN_KW@[19; 21)
WHITESPACE@[21; 22)
IDENT@[22; 25)
IDENT@[22; 25) "foo"
L_PAREN@[25; 26)
R_PAREN@[26; 27)
WHITESPACE@[27; 28)
@ -37,14 +37,14 @@ FILE@[0; 54)
POUND@[34; 35)
L_BRACK@[35; 36)
META_ITEM@[36; 41)
IDENT@[36; 39)
IDENT@[36; 39) "foo"
L_PAREN@[39; 40)
err: `expected attribute`
WHITESPACE@[40; 41)
err: `expected R_BRACK`
FN_KW@[41; 43)
WHITESPACE@[43; 44)
IDENT@[44; 47)
IDENT@[44; 47) "foo"
L_PAREN@[47; 48)
R_PAREN@[48; 49)
WHITESPACE@[49; 50)

View file

@ -2,15 +2,15 @@ FILE@[0; 74)
STRUCT_ITEM@[0; 74)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 21)
WHITESPACE@[10; 15)
IDENT@[15; 16)
IDENT@[15; 16) "f"
COLON@[16; 17)
WHITESPACE@[17; 18)
IDENT@[18; 21)
IDENT@[18; 21) "u32"
COMMA@[21; 22)
VISIBILITY@[22; 31)
WHITESPACE@[22; 27)
@ -37,17 +37,17 @@ FILE@[0; 74)
VISIBILITY@[48; 52)
PUB_KW@[48; 51)
WHITESPACE@[51; 52)
IDENT@[52; 53)
IDENT@[52; 53) "x"
COLON@[53; 54)
WHITESPACE@[54; 55)
IDENT@[55; 58)
IDENT@[55; 58) "u32"
COMMA@[58; 59)
NAMED_FIELD@[59; 70)
WHITESPACE@[59; 64)
IDENT@[64; 65)
IDENT@[64; 65) "z"
COLON@[65; 66)
WHITESPACE@[66; 67)
IDENT@[67; 70)
IDENT@[67; 70) "f64"
COMMA@[70; 71)
WHITESPACE@[71; 72)
R_CURLY@[72; 73)

View file

@ -6,7 +6,7 @@ FILE@[0; 31)
STRUCT_ITEM@[3; 14)
STRUCT_KW@[3; 9)
WHITESPACE@[9; 10)
IDENT@[10; 11)
IDENT@[10; 11) "S"
SEMI@[11; 12)
WHITESPACE@[12; 14)
ERROR@[14; 17)
@ -16,7 +16,7 @@ FILE@[0; 31)
FN_ITEM@[17; 29)
FN_KW@[17; 19)
WHITESPACE@[19; 20)
IDENT@[20; 23)
IDENT@[20; 23) "foo"
L_PAREN@[23; 24)
R_PAREN@[24; 25)
L_CURLY@[25; 26)

View file

@ -2,7 +2,7 @@ FILE@[0; 95)
FN_ITEM@[0; 14)
FN_KW@[0; 2)
WHITESPACE@[2; 3)
IDENT@[3; 6)
IDENT@[3; 6) "foo"
L_PAREN@[6; 7)
R_PAREN@[7; 8)
WHITESPACE@[8; 9)
@ -12,7 +12,7 @@ FILE@[0; 95)
WHITESPACE@[12; 14)
ERROR@[14; 17)
err: `expected item`
IDENT@[14; 17)
IDENT@[14; 17) "bar"
ERROR@[17; 18)
err: `expected item`
L_PAREN@[17; 18)
@ -24,7 +24,7 @@ FILE@[0; 95)
err: `expected item`
L_CURLY@[20; 21)
WHITESPACE@[21; 26)
IDENT@[26; 28)
IDENT@[26; 28) "if"
WHITESPACE@[28; 29)
TRUE_KW@[29; 33)
WHITESPACE@[33; 34)
@ -34,7 +34,7 @@ FILE@[0; 95)
WHITESPACE@[45; 50)
R_CURLY@[50; 51)
WHITESPACE@[51; 52)
IDENT@[52; 56)
IDENT@[52; 56) "else"
WHITESPACE@[56; 57)
L_CURLY@[57; 58)
WHITESPACE@[58; 67)
@ -51,7 +51,7 @@ FILE@[0; 95)
FN_ITEM@[82; 95)
FN_KW@[82; 84)
WHITESPACE@[84; 85)
IDENT@[85; 88)
IDENT@[85; 88) "baz"
L_PAREN@[88; 89)
R_PAREN@[89; 90)
WHITESPACE@[90; 91)

View file

@ -2,7 +2,7 @@ FILE@[0; 43)
STRUCT_ITEM@[0; 12)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8)
IDENT@[7; 8) "S"
TYPE_PARAM_LIST@[8; 12)
L_ANGLE@[8; 9)
ERROR@[9; 12)
@ -27,16 +27,16 @@ FILE@[0; 43)
err: `expected item`
L_CURLY@[17; 18)
WHITESPACE@[18; 23)
IDENT@[23; 24)
IDENT@[23; 24) "f"
COLON@[24; 25)
WHITESPACE@[25; 26)
IDENT@[26; 29)
IDENT@[26; 29) "u32"
WHITESPACE@[29; 30)
R_CURLY@[30; 31)
WHITESPACE@[31; 33)
STRUCT_ITEM@[33; 43)
STRUCT_KW@[33; 39)
WHITESPACE@[39; 40)
IDENT@[40; 41)
IDENT@[40; 41) "T"
SEMI@[41; 42)
WHITESPACE@[42; 43)

View file

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

View file

@ -2,14 +2,14 @@ FILE@[0; 25)
STRUCT_ITEM@[0; 25)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 24)
WHITESPACE@[10; 15)
IDENT@[15; 18)
IDENT@[15; 18) "foo"
COLON@[18; 19)
WHITESPACE@[19; 20)
IDENT@[20; 23)
IDENT@[20; 23) "u32"
WHITESPACE@[23; 24)
R_CURLY@[24; 25)

View file

@ -2,7 +2,7 @@ FILE@[0; 13)
FN_ITEM@[0; 13)
FN_KW@[0; 2)
WHITESPACE@[2; 3)
IDENT@[3; 6)
IDENT@[3; 6) "foo"
L_PAREN@[6; 7)
R_PAREN@[7; 8)
WHITESPACE@[8; 9)

View file

@ -4,7 +4,7 @@ FILE@[0; 236)
EXCL@[1; 2)
L_BRACK@[2; 3)
META_ITEM@[3; 7)
IDENT@[3; 7)
IDENT@[3; 7) "attr"
R_BRACK@[7; 8)
WHITESPACE@[8; 9)
ATTR@[9; 24)
@ -12,7 +12,7 @@ FILE@[0; 236)
EXCL@[10; 11)
L_BRACK@[11; 12)
META_ITEM@[12; 22)
IDENT@[12; 16)
IDENT@[12; 16) "attr"
L_PAREN@[16; 17)
LITERAL@[17; 21)
TRUE_KW@[17; 21)
@ -24,10 +24,10 @@ FILE@[0; 236)
EXCL@[25; 26)
L_BRACK@[26; 27)
META_ITEM@[27; 38)
IDENT@[27; 31)
IDENT@[27; 31) "attr"
L_PAREN@[31; 32)
META_ITEM@[32; 37)
IDENT@[32; 37)
IDENT@[32; 37) "ident"
R_PAREN@[37; 38)
R_BRACK@[38; 39)
WHITESPACE@[39; 40)
@ -36,10 +36,10 @@ FILE@[0; 236)
EXCL@[41; 42)
L_BRACK@[42; 43)
META_ITEM@[43; 115)
IDENT@[43; 47)
IDENT@[43; 47) "attr"
L_PAREN@[47; 48)
META_ITEM@[48; 53)
IDENT@[48; 53)
IDENT@[48; 53) "ident"
COMMA@[53; 54)
LITERAL@[54; 58)
WHITESPACE@[54; 55)
@ -55,7 +55,7 @@ FILE@[0; 236)
COMMA@[72; 73)
META_ITEM@[73; 85)
WHITESPACE@[73; 74)
IDENT@[74; 79)
IDENT@[74; 79) "ident"
WHITESPACE@[79; 80)
EQ@[80; 81)
LITERAL@[81; 85)
@ -64,7 +64,7 @@ FILE@[0; 236)
COMMA@[85; 86)
META_ITEM@[86; 102)
WHITESPACE@[86; 87)
IDENT@[87; 92)
IDENT@[87; 92) "ident"
WHITESPACE@[92; 93)
EQ@[93; 94)
LITERAL@[94; 102)
@ -73,7 +73,7 @@ FILE@[0; 236)
COMMA@[102; 103)
META_ITEM@[103; 114)
WHITESPACE@[103; 104)
IDENT@[104; 109)
IDENT@[104; 109) "ident"
L_PAREN@[109; 110)
LITERAL@[110; 113)
INT_NUMBER@[110; 113)
@ -86,7 +86,7 @@ FILE@[0; 236)
EXCL@[118; 119)
L_BRACK@[119; 120)
META_ITEM@[120; 129)
IDENT@[120; 124)
IDENT@[120; 124) "attr"
L_PAREN@[124; 125)
LITERAL@[125; 128)
INT_NUMBER@[125; 128)
@ -98,10 +98,10 @@ FILE@[0; 236)
EXCL@[132; 133)
L_BRACK@[133; 134)
META_ITEM@[134; 154)
IDENT@[134; 138)
IDENT@[134; 138) "attr"
L_PAREN@[138; 139)
META_ITEM@[139; 153)
IDENT@[139; 146)
IDENT@[139; 146) "enabled"
WHITESPACE@[146; 147)
EQ@[147; 148)
LITERAL@[148; 153)
@ -115,7 +115,7 @@ FILE@[0; 236)
EXCL@[157; 158)
L_BRACK@[158; 159)
META_ITEM@[159; 172)
IDENT@[159; 166)
IDENT@[159; 166) "enabled"
L_PAREN@[166; 167)
LITERAL@[167; 171)
TRUE_KW@[167; 171)
@ -127,7 +127,7 @@ FILE@[0; 236)
EXCL@[175; 176)
L_BRACK@[176; 177)
META_ITEM@[177; 190)
IDENT@[177; 181)
IDENT@[177; 181) "attr"
L_PAREN@[181; 182)
LITERAL@[182; 189)
STRING@[182; 189)
@ -139,14 +139,14 @@ FILE@[0; 236)
EXCL@[193; 194)
L_BRACK@[194; 195)
META_ITEM@[195; 213)
IDENT@[195; 199)
IDENT@[195; 199) "repr"
L_PAREN@[199; 200)
META_ITEM@[200; 201)
IDENT@[200; 201)
IDENT@[200; 201) "C"
COMMA@[201; 202)
META_ITEM@[202; 212)
WHITESPACE@[202; 203)
IDENT@[203; 208)
IDENT@[203; 208) "align"
WHITESPACE@[208; 209)
EQ@[209; 210)
LITERAL@[210; 212)
@ -160,14 +160,14 @@ FILE@[0; 236)
EXCL@[216; 217)
L_BRACK@[217; 218)
META_ITEM@[218; 235)
IDENT@[218; 222)
IDENT@[218; 222) "repr"
L_PAREN@[222; 223)
META_ITEM@[223; 224)
IDENT@[223; 224)
IDENT@[223; 224) "C"
COMMA@[224; 225)
META_ITEM@[225; 234)
WHITESPACE@[225; 226)
IDENT@[226; 231)
IDENT@[226; 231) "align"
L_PAREN@[231; 232)
LITERAL@[232; 233)
INT_NUMBER@[232; 233)

View file

@ -4,7 +4,7 @@ FILE@[0; 43)
WHITESPACE@[6; 7)
CRATE_KW@[7; 12)
WHITESPACE@[12; 13)
IDENT@[13; 16)
IDENT@[13; 16) "foo"
SEMI@[16; 17)
WHITESPACE@[17; 18)
EXTERN_CRATE_ITEM@[18; 43)
@ -12,11 +12,11 @@ FILE@[0; 43)
WHITESPACE@[24; 25)
CRATE_KW@[25; 30)
WHITESPACE@[30; 31)
IDENT@[31; 34)
IDENT@[31; 34) "foo"
ALIAS@[34; 41)
WHITESPACE@[34; 35)
AS_KW@[35; 37)
WHITESPACE@[37; 38)
IDENT@[38; 41)
IDENT@[38; 41) "bar"
SEMI@[41; 42)
WHITESPACE@[42; 43)

View file

@ -2,13 +2,13 @@ FILE@[0; 118)
MOD_ITEM@[0; 8)
MOD_KW@[0; 3)
WHITESPACE@[3; 4)
IDENT@[4; 5)
IDENT@[4; 5) "a"
SEMI@[5; 6)
WHITESPACE@[6; 8)
MOD_ITEM@[8; 19)
MOD_KW@[8; 11)
WHITESPACE@[11; 12)
IDENT@[12; 13)
IDENT@[12; 13) "b"
WHITESPACE@[13; 14)
L_CURLY@[14; 15)
WHITESPACE@[15; 16)
@ -17,14 +17,14 @@ FILE@[0; 118)
MOD_ITEM@[19; 67)
MOD_KW@[19; 22)
WHITESPACE@[22; 23)
IDENT@[23; 24)
IDENT@[23; 24) "c"
WHITESPACE@[24; 25)
L_CURLY@[25; 26)
FN_ITEM@[26; 52)
WHITESPACE@[26; 31)
FN_KW@[31; 33)
WHITESPACE@[33; 34)
IDENT@[34; 37)
IDENT@[34; 37) "foo"
L_PAREN@[37; 38)
R_PAREN@[38; 39)
WHITESPACE@[39; 40)
@ -35,7 +35,7 @@ FILE@[0; 118)
STRUCT_ITEM@[52; 64)
STRUCT_KW@[52; 58)
WHITESPACE@[58; 59)
IDENT@[59; 60)
IDENT@[59; 60) "S"
WHITESPACE@[60; 61)
L_CURLY@[61; 62)
R_CURLY@[62; 63)
@ -45,7 +45,7 @@ FILE@[0; 118)
MOD_ITEM@[67; 118)
MOD_KW@[67; 70)
WHITESPACE@[70; 71)
IDENT@[71; 72)
IDENT@[71; 72) "d"
WHITESPACE@[72; 73)
L_CURLY@[73; 74)
ATTR@[74; 92)
@ -54,19 +54,19 @@ FILE@[0; 118)
EXCL@[80; 81)
L_BRACK@[81; 82)
META_ITEM@[82; 86)
IDENT@[82; 86)
IDENT@[82; 86) "attr"
R_BRACK@[86; 87)
WHITESPACE@[87; 92)
MOD_ITEM@[92; 103)
MOD_KW@[92; 95)
WHITESPACE@[95; 96)
IDENT@[96; 97)
IDENT@[96; 97) "e"
SEMI@[97; 98)
WHITESPACE@[98; 103)
MOD_ITEM@[103; 117)
MOD_KW@[103; 106)
WHITESPACE@[106; 107)
IDENT@[107; 108)
IDENT@[107; 108) "f"
WHITESPACE@[108; 109)
L_CURLY@[109; 110)
WHITESPACE@[110; 115)

View file

@ -5,7 +5,7 @@ FILE@[0; 19)
PATH@[3; 7)
PATH_SEGMENT@[3; 7)
WHITESPACE@[3; 4)
IDENT@[4; 7)
IDENT@[4; 7) "foo"
SEMI@[7; 8)
WHITESPACE@[8; 9)
USE_ITEM@[9; 19)
@ -15,5 +15,5 @@ FILE@[0; 19)
PATH_SEGMENT@[12; 18)
WHITESPACE@[12; 13)
COLONCOLON@[13; 15)
IDENT@[15; 18)
IDENT@[15; 18) "bar"
SEMI@[18; 19)

View file

@ -8,13 +8,13 @@ FILE@[0; 40)
PATH_SEGMENT@[3; 9)
WHITESPACE@[3; 4)
COLONCOLON@[4; 6)
IDENT@[6; 9)
IDENT@[6; 9) "foo"
COLONCOLON@[9; 11)
PATH_SEGMENT@[11; 14)
IDENT@[11; 14)
IDENT@[11; 14) "bar"
COLONCOLON@[14; 16)
PATH_SEGMENT@[16; 19)
IDENT@[16; 19)
IDENT@[16; 19) "baz"
SEMI@[19; 20)
WHITESPACE@[20; 21)
USE_ITEM@[21; 40)
@ -25,12 +25,12 @@ FILE@[0; 40)
PATH@[24; 28)
PATH_SEGMENT@[24; 28)
WHITESPACE@[24; 25)
IDENT@[25; 28)
IDENT@[25; 28) "foo"
COLONCOLON@[28; 30)
PATH_SEGMENT@[30; 33)
IDENT@[30; 33)
IDENT@[30; 33) "bar"
COLONCOLON@[33; 35)
PATH_SEGMENT@[35; 38)
IDENT@[35; 38)
IDENT@[35; 38) "baz"
SEMI@[38; 39)
WHITESPACE@[39; 40)

View file

@ -4,10 +4,10 @@ FILE@[0; 35)
POUND@[0; 1)
L_BRACK@[1; 2)
META_ITEM@[2; 11)
IDENT@[2; 5)
IDENT@[2; 5) "cfg"
L_PAREN@[5; 6)
META_ITEM@[6; 10)
IDENT@[6; 10)
IDENT@[6; 10) "test"
R_PAREN@[10; 11)
R_BRACK@[11; 12)
WHITESPACE@[12; 13)
@ -15,12 +15,12 @@ FILE@[0; 35)
POUND@[13; 14)
L_BRACK@[14; 15)
META_ITEM@[15; 21)
IDENT@[15; 21)
IDENT@[15; 21) "ignore"
R_BRACK@[21; 22)
WHITESPACE@[22; 23)
FN_KW@[23; 25)
WHITESPACE@[25; 26)
IDENT@[26; 29)
IDENT@[26; 29) "foo"
L_PAREN@[29; 30)
R_PAREN@[30; 31)
WHITESPACE@[31; 32)

View file

@ -2,7 +2,7 @@ FILE@[0; 98)
FN_ITEM@[0; 10)
FN_KW@[0; 2)
WHITESPACE@[2; 3)
IDENT@[3; 4)
IDENT@[3; 4) "a"
L_PAREN@[4; 5)
R_PAREN@[5; 6)
WHITESPACE@[6; 7)
@ -15,7 +15,7 @@ FILE@[0; 98)
WHITESPACE@[13; 14)
FN_KW@[14; 16)
WHITESPACE@[16; 17)
IDENT@[17; 18)
IDENT@[17; 18) "b"
L_PAREN@[18; 19)
R_PAREN@[19; 20)
WHITESPACE@[20; 21)
@ -31,7 +31,7 @@ FILE@[0; 98)
WHITESPACE@[34; 35)
FN_KW@[35; 37)
WHITESPACE@[37; 38)
IDENT@[38; 39)
IDENT@[38; 39) "c"
L_PAREN@[39; 40)
R_PAREN@[40; 41)
WHITESPACE@[41; 42)
@ -47,7 +47,7 @@ FILE@[0; 98)
WHITESPACE@[55; 56)
FN_KW@[56; 58)
WHITESPACE@[58; 59)
IDENT@[59; 60)
IDENT@[59; 60) "d"
L_PAREN@[60; 61)
R_PAREN@[61; 62)
WHITESPACE@[62; 63)
@ -64,18 +64,18 @@ FILE@[0; 98)
PATH@[72; 76)
PATH_SEGMENT@[72; 76)
WHITESPACE@[72; 73)
IDENT@[73; 76)
IDENT@[73; 76) "foo"
COLONCOLON@[76; 78)
PATH_SEGMENT@[78; 81)
IDENT@[78; 81)
IDENT@[78; 81) "bar"
COLONCOLON@[81; 83)
PATH_SEGMENT@[83; 86)
IDENT@[83; 86)
IDENT@[83; 86) "baz"
R_PAREN@[86; 87)
WHITESPACE@[87; 88)
FN_KW@[88; 90)
WHITESPACE@[90; 91)
IDENT@[91; 92)
IDENT@[91; 92) "e"
L_PAREN@[92; 93)
R_PAREN@[93; 94)
WHITESPACE@[94; 95)

View file

@ -9,7 +9,7 @@ FILE@[0; 65)
SELF_KW@[4; 8)
COLONCOLON@[8; 10)
PATH_SEGMENT@[10; 13)
IDENT@[10; 13)
IDENT@[10; 13) "foo"
SEMI@[13; 14)
WHITESPACE@[14; 15)
USE_ITEM@[15; 38)
@ -26,7 +26,7 @@ FILE@[0; 65)
SUPER_KW@[26; 31)
COLONCOLON@[31; 33)
PATH_SEGMENT@[33; 36)
IDENT@[33; 36)
IDENT@[33; 36) "bar"
SEMI@[36; 37)
WHITESPACE@[37; 38)
USE_ITEM@[38; 65)
@ -42,12 +42,12 @@ FILE@[0; 65)
SELF_KW@[44; 48)
COLONCOLON@[48; 50)
PATH_SEGMENT@[50; 51)
IDENT@[50; 51)
IDENT@[50; 51) "a"
COLONCOLON@[51; 53)
PATH_SEGMENT@[53; 58)
SUPER_KW@[53; 58)
COLONCOLON@[58; 60)
PATH_SEGMENT@[60; 63)
IDENT@[60; 63)
IDENT@[60; 63) "bar"
SEMI@[63; 64)
WHITESPACE@[64; 65)

View file

@ -37,7 +37,7 @@ FILE@[0; 81)
PATH@[37; 41)
PATH_SEGMENT@[37; 41)
WHITESPACE@[37; 38)
IDENT@[38; 41)
IDENT@[38; 41) "foo"
COLONCOLON@[41; 43)
STAR@[43; 44)
SEMI@[44; 45)
@ -48,7 +48,7 @@ FILE@[0; 81)
PATH@[49; 53)
PATH_SEGMENT@[49; 53)
WHITESPACE@[49; 50)
IDENT@[50; 53)
IDENT@[50; 53) "foo"
COLONCOLON@[53; 55)
L_CURLY@[55; 56)
R_CURLY@[56; 57)
@ -61,25 +61,25 @@ FILE@[0; 81)
PATH_SEGMENT@[62; 68)
WHITESPACE@[62; 63)
COLONCOLON@[63; 65)
IDENT@[65; 68)
IDENT@[65; 68) "foo"
COLONCOLON@[68; 70)
L_CURLY@[70; 71)
USE_TREE@[71; 72)
PATH@[71; 72)
PATH_SEGMENT@[71; 72)
IDENT@[71; 72)
IDENT@[71; 72) "a"
COMMA@[72; 73)
USE_TREE@[73; 75)
PATH@[73; 75)
PATH_SEGMENT@[73; 75)
WHITESPACE@[73; 74)
IDENT@[74; 75)
IDENT@[74; 75) "b"
COMMA@[75; 76)
USE_TREE@[76; 78)
PATH@[76; 78)
PATH_SEGMENT@[76; 78)
WHITESPACE@[76; 77)
IDENT@[77; 78)
IDENT@[77; 78) "c"
R_CURLY@[78; 79)
SEMI@[79; 80)
WHITESPACE@[80; 81)

View file

@ -5,12 +5,12 @@ FILE@[0; 55)
PATH@[3; 8)
PATH_SEGMENT@[3; 8)
WHITESPACE@[3; 4)
IDENT@[4; 7)
IDENT@[4; 7) "foo"
WHITESPACE@[7; 8)
ALIAS@[8; 14)
AS_KW@[8; 10)
WHITESPACE@[10; 11)
IDENT@[11; 14)
IDENT@[11; 14) "bar"
SEMI@[14; 15)
WHITESPACE@[15; 16)
USE_ITEM@[16; 55)
@ -19,18 +19,18 @@ FILE@[0; 55)
PATH@[19; 23)
PATH_SEGMENT@[19; 23)
WHITESPACE@[19; 20)
IDENT@[20; 23)
IDENT@[20; 23) "foo"
COLONCOLON@[23; 25)
L_CURLY@[25; 26)
USE_TREE@[26; 32)
PATH@[26; 28)
PATH_SEGMENT@[26; 28)
IDENT@[26; 27)
IDENT@[26; 27) "a"
WHITESPACE@[27; 28)
ALIAS@[28; 32)
AS_KW@[28; 30)
WHITESPACE@[30; 31)
IDENT@[31; 32)
IDENT@[31; 32) "b"
COMMA@[32; 33)
USE_TREE@[33; 35)
WHITESPACE@[33; 34)
@ -46,12 +46,12 @@ FILE@[0; 55)
PATH_SEGMENT@[41; 48)
WHITESPACE@[41; 42)
COLONCOLON@[42; 44)
IDENT@[44; 47)
IDENT@[44; 47) "foo"
WHITESPACE@[47; 48)
ALIAS@[48; 52)
AS_KW@[48; 50)
WHITESPACE@[50; 51)
IDENT@[51; 52)
IDENT@[51; 52) "x"
R_CURLY@[52; 53)
SEMI@[53; 54)
WHITESPACE@[54; 55)

View file

@ -2,13 +2,13 @@ FILE@[0; 97)
STRUCT_ITEM@[0; 10)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 8)
IDENT@[7; 8) "A"
SEMI@[8; 9)
WHITESPACE@[9; 10)
STRUCT_ITEM@[10; 22)
STRUCT_KW@[10; 16)
WHITESPACE@[16; 17)
IDENT@[17; 18)
IDENT@[17; 18) "B"
WHITESPACE@[18; 19)
L_CURLY@[19; 20)
R_CURLY@[20; 21)
@ -16,7 +16,7 @@ FILE@[0; 97)
STRUCT_ITEM@[22; 35)
STRUCT_KW@[22; 28)
WHITESPACE@[28; 29)
IDENT@[29; 30)
IDENT@[29; 30) "C"
L_PAREN@[30; 31)
R_PAREN@[31; 32)
SEMI@[32; 33)
@ -24,42 +24,42 @@ FILE@[0; 97)
STRUCT_ITEM@[35; 76)
STRUCT_KW@[35; 41)
WHITESPACE@[41; 42)
IDENT@[42; 43)
IDENT@[42; 43) "D"
WHITESPACE@[43; 44)
L_CURLY@[44; 45)
NAMED_FIELD@[45; 56)
WHITESPACE@[45; 50)
IDENT@[50; 51)
IDENT@[50; 51) "a"
COLON@[51; 52)
WHITESPACE@[52; 53)
IDENT@[53; 56)
IDENT@[53; 56) "u32"
COMMA@[56; 57)
NAMED_FIELD@[57; 73)
VISIBILITY@[57; 66)
WHITESPACE@[57; 62)
PUB_KW@[62; 65)
WHITESPACE@[65; 66)
IDENT@[66; 67)
IDENT@[66; 67) "b"
COLON@[67; 68)
WHITESPACE@[68; 69)
IDENT@[69; 72)
IDENT@[69; 72) "u32"
WHITESPACE@[72; 73)
R_CURLY@[73; 74)
WHITESPACE@[74; 76)
STRUCT_ITEM@[76; 97)
STRUCT_KW@[76; 82)
WHITESPACE@[82; 83)
IDENT@[83; 84)
IDENT@[83; 84) "E"
L_PAREN@[84; 85)
POS_FIELD@[85; 90)
VISIBILITY@[85; 89)
PUB_KW@[85; 88)
WHITESPACE@[88; 89)
IDENT@[89; 90)
IDENT@[89; 90) "x"
COMMA@[90; 91)
POS_FIELD@[91; 93)
WHITESPACE@[91; 92)
IDENT@[92; 93)
IDENT@[92; 93) "y"
COMMA@[93; 94)
R_PAREN@[94; 95)
SEMI@[95; 96)

View file

@ -4,17 +4,17 @@ FILE@[0; 23)
POUND@[0; 1)
L_BRACK@[1; 2)
META_ITEM@[2; 9)
IDENT@[2; 5)
IDENT@[2; 5) "foo"
L_PAREN@[5; 6)
META_ITEM@[6; 7)
IDENT@[6; 7)
IDENT@[6; 7) "a"
COMMA@[7; 8)
R_PAREN@[8; 9)
R_BRACK@[9; 10)
WHITESPACE@[10; 11)
FN_KW@[11; 13)
WHITESPACE@[13; 14)
IDENT@[14; 17)
IDENT@[14; 17) "foo"
L_PAREN@[17; 18)
R_PAREN@[18; 19)
WHITESPACE@[19; 20)

View file

@ -2,53 +2,53 @@ FILE@[0; 290)
STRUCT_ITEM@[0; 14)
STRUCT_KW@[0; 6)
WHITESPACE@[6; 7)
IDENT@[7; 9)
IDENT@[7; 9) "S1"
TYPE_PARAM_LIST@[9; 12)
L_ANGLE@[9; 10)
TYPE_PARAM@[10; 11)
IDENT@[10; 11)
IDENT@[10; 11) "T"
R_ANGLE@[11; 12)
SEMI@[12; 13)
WHITESPACE@[13; 14)
STRUCT_ITEM@[14; 33)
STRUCT_KW@[14; 20)
WHITESPACE@[20; 21)
IDENT@[21; 23)
IDENT@[21; 23) "S2"
TYPE_PARAM_LIST@[23; 26)
L_ANGLE@[23; 24)
TYPE_PARAM@[24; 25)
IDENT@[24; 25)
IDENT@[24; 25) "T"
R_ANGLE@[25; 26)
L_PAREN@[26; 27)
POS_FIELD@[27; 30)
IDENT@[27; 30)
IDENT@[27; 30) "u32"
R_PAREN@[30; 31)
SEMI@[31; 32)
WHITESPACE@[32; 33)
STRUCT_ITEM@[33; 58)
STRUCT_KW@[33; 39)
WHITESPACE@[39; 40)
IDENT@[40; 42)
IDENT@[40; 42) "S3"
TYPE_PARAM_LIST@[42; 46)
L_ANGLE@[42; 43)
TYPE_PARAM@[43; 44)
IDENT@[43; 44)
IDENT@[43; 44) "T"
R_ANGLE@[44; 45)
WHITESPACE@[45; 46)
L_CURLY@[46; 47)
NAMED_FIELD@[47; 55)
WHITESPACE@[47; 48)
IDENT@[48; 49)
IDENT@[48; 49) "u"
COLON@[49; 50)
WHITESPACE@[50; 51)
IDENT@[51; 54)
IDENT@[51; 54) "u32"
WHITESPACE@[54; 55)
R_CURLY@[55; 56)
WHITESPACE@[56; 58)
STRUCT_ITEM@[58; 71)
STRUCT_KW@[58; 64)
WHITESPACE@[64; 65)
IDENT@[65; 67)
IDENT@[65; 67) "S4"
TYPE_PARAM_LIST@[67; 69)
L_ANGLE@[67; 68)
R_ANGLE@[68; 69)
@ -57,22 +57,22 @@ FILE@[0; 290)
STRUCT_ITEM@[71; 86)
STRUCT_KW@[71; 77)
WHITESPACE@[77; 78)
IDENT@[78; 80)
IDENT@[78; 80) "S5"
TYPE_PARAM_LIST@[80; 84)
L_ANGLE@[80; 81)
LIFETIME_PARAM@[81; 83)
LIFETIME@[81; 83)
LIFETIME@[81; 83) "'a"
R_ANGLE@[83; 84)
SEMI@[84; 85)
WHITESPACE@[85; 86)
STRUCT_ITEM@[86; 102)
STRUCT_KW@[86; 92)
WHITESPACE@[92; 93)
IDENT@[93; 95)
IDENT@[93; 95) "S6"
TYPE_PARAM_LIST@[95; 100)
L_ANGLE@[95; 96)
LIFETIME_PARAM@[96; 99)
LIFETIME@[96; 98)
LIFETIME@[96; 98) "'a"
COLON@[98; 99)
R_ANGLE@[99; 100)
SEMI@[100; 101)
@ -80,28 +80,28 @@ FILE@[0; 290)
STRUCT_ITEM@[102; 121)
STRUCT_KW@[102; 108)
WHITESPACE@[108; 109)
IDENT@[109; 111)
IDENT@[109; 111) "S7"
TYPE_PARAM_LIST@[111; 119)
L_ANGLE@[111; 112)
LIFETIME_PARAM@[112; 118)
LIFETIME@[112; 114)
LIFETIME@[112; 114) "'a"
COLON@[114; 115)
WHITESPACE@[115; 116)
LIFETIME@[116; 118)
LIFETIME@[116; 118) "'b"
R_ANGLE@[118; 119)
SEMI@[119; 120)
WHITESPACE@[120; 121)
STRUCT_ITEM@[121; 143)
STRUCT_KW@[121; 127)
WHITESPACE@[127; 128)
IDENT@[128; 130)
IDENT@[128; 130) "S8"
TYPE_PARAM_LIST@[130; 141)
L_ANGLE@[130; 131)
LIFETIME_PARAM@[131; 140)
LIFETIME@[131; 133)
LIFETIME@[131; 133) "'a"
COLON@[133; 134)
WHITESPACE@[134; 135)
LIFETIME@[135; 137)
LIFETIME@[135; 137) "'b"
WHITESPACE@[137; 138)
PLUS@[138; 139)
WHITESPACE@[139; 140)
@ -111,29 +111,29 @@ FILE@[0; 290)
STRUCT_ITEM@[143; 167)
STRUCT_KW@[143; 149)
WHITESPACE@[149; 150)
IDENT@[150; 152)
IDENT@[150; 152) "S9"
TYPE_PARAM_LIST@[152; 165)
L_ANGLE@[152; 153)
LIFETIME_PARAM@[153; 164)
LIFETIME@[153; 155)
LIFETIME@[153; 155) "'a"
COLON@[155; 156)
WHITESPACE@[156; 157)
LIFETIME@[157; 159)
LIFETIME@[157; 159) "'b"
WHITESPACE@[159; 160)
PLUS@[160; 161)
WHITESPACE@[161; 162)
LIFETIME@[162; 164)
LIFETIME@[162; 164) "'c"
R_ANGLE@[164; 165)
SEMI@[165; 166)
WHITESPACE@[166; 167)
STRUCT_ITEM@[167; 184)
STRUCT_KW@[167; 173)
WHITESPACE@[173; 174)
IDENT@[174; 177)
IDENT@[174; 177) "S10"
TYPE_PARAM_LIST@[177; 182)
L_ANGLE@[177; 178)
LIFETIME_PARAM@[178; 180)
LIFETIME@[178; 180)
LIFETIME@[178; 180) "'a"
COMMA@[180; 181)
R_ANGLE@[181; 182)
SEMI@[182; 183)
@ -141,37 +141,37 @@ FILE@[0; 290)
STRUCT_ITEM@[184; 204)
STRUCT_KW@[184; 190)
WHITESPACE@[190; 191)
IDENT@[191; 194)
IDENT@[191; 194) "S11"
TYPE_PARAM_LIST@[194; 202)
L_ANGLE@[194; 195)
LIFETIME_PARAM@[195; 197)
LIFETIME@[195; 197)
LIFETIME@[195; 197) "'a"
COMMA@[197; 198)
LIFETIME_PARAM@[198; 201)
WHITESPACE@[198; 199)
LIFETIME@[199; 201)
LIFETIME@[199; 201) "'b"
R_ANGLE@[201; 202)
SEMI@[202; 203)
WHITESPACE@[203; 204)
STRUCT_ITEM@[204; 235)
STRUCT_KW@[204; 210)
WHITESPACE@[210; 211)
IDENT@[211; 214)
IDENT@[211; 214) "S12"
TYPE_PARAM_LIST@[214; 232)
L_ANGLE@[214; 215)
LIFETIME_PARAM@[215; 222)
LIFETIME@[215; 217)
LIFETIME@[215; 217) "'a"
COLON@[217; 218)
WHITESPACE@[218; 219)
LIFETIME@[219; 221)
LIFETIME@[219; 221) "'b"
PLUS@[221; 222)
COMMA@[222; 223)
LIFETIME_PARAM@[223; 230)
WHITESPACE@[223; 224)
LIFETIME@[224; 226)
LIFETIME@[224; 226) "'b"
COLON@[226; 227)
WHITESPACE@[227; 228)
LIFETIME@[228; 230)
LIFETIME@[228; 230) "'c"
COMMA@[230; 231)
R_ANGLE@[231; 232)
SEMI@[232; 233)
@ -179,45 +179,45 @@ FILE@[0; 290)
STRUCT_ITEM@[235; 250)
STRUCT_KW@[235; 241)
WHITESPACE@[241; 242)
IDENT@[242; 245)
IDENT@[242; 245) "S13"
TYPE_PARAM_LIST@[245; 248)
L_ANGLE@[245; 246)
TYPE_PARAM@[246; 247)
IDENT@[246; 247)
IDENT@[246; 247) "T"
R_ANGLE@[247; 248)
SEMI@[248; 249)
WHITESPACE@[249; 250)
STRUCT_ITEM@[250; 268)
STRUCT_KW@[250; 256)
WHITESPACE@[256; 257)
IDENT@[257; 260)
IDENT@[257; 260) "S14"
TYPE_PARAM_LIST@[260; 266)
L_ANGLE@[260; 261)
TYPE_PARAM@[261; 262)
IDENT@[261; 262)
IDENT@[261; 262) "T"
COMMA@[262; 263)
TYPE_PARAM@[263; 265)
WHITESPACE@[263; 264)
IDENT@[264; 265)
IDENT@[264; 265) "U"
R_ANGLE@[265; 266)
SEMI@[266; 267)
WHITESPACE@[267; 268)
STRUCT_ITEM@[268; 290)
STRUCT_KW@[268; 274)
WHITESPACE@[274; 275)
IDENT@[275; 278)
IDENT@[275; 278) "S15"
TYPE_PARAM_LIST@[278; 288)
L_ANGLE@[278; 279)
LIFETIME_PARAM@[279; 281)
LIFETIME@[279; 281)
LIFETIME@[279; 281) "'a"
COMMA@[281; 282)
TYPE_PARAM@[282; 284)
WHITESPACE@[282; 283)
IDENT@[283; 284)
IDENT@[283; 284) "T"
COMMA@[284; 285)
TYPE_PARAM@[285; 287)
WHITESPACE@[285; 286)
IDENT@[286; 287)
IDENT@[286; 287) "U"
R_ANGLE@[287; 288)
SEMI@[288; 289)
WHITESPACE@[289; 290)

View file

@ -0,0 +1,25 @@
enum E1 {
}
enum E2<T> {
}
enum E3 {
X
}
enum E4 {
X,
}
enum E5 {
A,
B = 92,
C {
a: u32,
pub b: f64,
},
F {},
D(u32,),
E(),
}

View file

@ -0,0 +1,118 @@
FILE@[0; 182)
ENUM_ITEM@[0; 13)
ENUM_KW@[0; 4)
WHITESPACE@[4; 5)
IDENT@[5; 7) "E1"
WHITESPACE@[7; 8)
L_CURLY@[8; 9)
WHITESPACE@[9; 10)
R_CURLY@[10; 11)
WHITESPACE@[11; 13)
ENUM_ITEM@[13; 29)
ENUM_KW@[13; 17)
WHITESPACE@[17; 18)
IDENT@[18; 20) "E2"
TYPE_PARAM_LIST@[20; 24)
L_ANGLE@[20; 21)
TYPE_PARAM@[21; 22)
IDENT@[21; 22) "T"
R_ANGLE@[22; 23)
WHITESPACE@[23; 24)
L_CURLY@[24; 25)
WHITESPACE@[25; 26)
R_CURLY@[26; 27)
WHITESPACE@[27; 29)
ENUM_ITEM@[29; 48)
ENUM_KW@[29; 33)
WHITESPACE@[33; 34)
IDENT@[34; 36) "E3"
WHITESPACE@[36; 37)
L_CURLY@[37; 38)
ENUM_VARIANT@[38; 45)
WHITESPACE@[38; 43)
IDENT@[43; 44) "X"
WHITESPACE@[44; 45)
R_CURLY@[45; 46)
WHITESPACE@[46; 48)
ENUM_ITEM@[48; 68)
ENUM_KW@[48; 52)
WHITESPACE@[52; 53)
IDENT@[53; 55) "E4"
WHITESPACE@[55; 56)
L_CURLY@[56; 57)
ENUM_VARIANT@[57; 63)
WHITESPACE@[57; 62)
IDENT@[62; 63) "X"
COMMA@[63; 64)
WHITESPACE@[64; 65)
R_CURLY@[65; 66)
WHITESPACE@[66; 68)
ENUM_ITEM@[68; 182)
ENUM_KW@[68; 72)
WHITESPACE@[72; 73)
IDENT@[73; 75) "E5"
WHITESPACE@[75; 76)
L_CURLY@[76; 77)
ENUM_VARIANT@[77; 83)
WHITESPACE@[77; 82)
IDENT@[82; 83) "A"
COMMA@[83; 84)
ENUM_VARIANT@[84; 95)
WHITESPACE@[84; 89)
IDENT@[89; 90) "B"
WHITESPACE@[90; 91)
EQ@[91; 92)
LITERAL@[92; 95)
WHITESPACE@[92; 93)
INT_NUMBER@[93; 95)
COMMA@[95; 96)
ENUM_VARIANT@[96; 146)
WHITESPACE@[96; 101)
IDENT@[101; 102) "C"
WHITESPACE@[102; 103)
L_CURLY@[103; 104)
NAMED_FIELD@[104; 119)
WHITESPACE@[104; 113)
IDENT@[113; 114) "a"
COLON@[114; 115)
WHITESPACE@[115; 116)
IDENT@[116; 119) "u32"
COMMA@[119; 120)
NAMED_FIELD@[120; 139)
VISIBILITY@[120; 133)
WHITESPACE@[120; 129)
PUB_KW@[129; 132)
WHITESPACE@[132; 133)
IDENT@[133; 134) "b"
COLON@[134; 135)
WHITESPACE@[135; 136)
IDENT@[136; 139) "f64"
COMMA@[139; 140)
WHITESPACE@[140; 145)
R_CURLY@[145; 146)
COMMA@[146; 147)
ENUM_VARIANT@[147; 156)
WHITESPACE@[147; 152)
IDENT@[152; 153) "F"
WHITESPACE@[153; 154)
L_CURLY@[154; 155)
R_CURLY@[155; 156)
COMMA@[156; 157)
ENUM_VARIANT@[157; 169)
WHITESPACE@[157; 162)
IDENT@[162; 163) "D"
L_PAREN@[163; 164)
POS_FIELD@[164; 167)
IDENT@[164; 167) "u32"
COMMA@[167; 168)
R_PAREN@[168; 169)
COMMA@[169; 170)
ENUM_VARIANT@[170; 178)
WHITESPACE@[170; 175)
IDENT@[175; 176) "E"
L_PAREN@[176; 177)
R_PAREN@[177; 178)
COMMA@[178; 179)
WHITESPACE@[179; 180)
R_CURLY@[180; 181)
WHITESPACE@[181; 182)