diff --git a/grammar.ron b/grammar.ron index 7c76d595d0..d7fea44fbe 100644 --- a/grammar.ron +++ b/grammar.ron @@ -74,6 +74,8 @@ Grammar( nodes: [ "FILE", "STRUCT_ITEM", + "ENUM_ITEM", + "ENUM_VARIANT", "NAMED_FIELD", "POS_FIELD", "FN_ITEM", diff --git a/src/parser/event_parser/grammar/expressions.rs b/src/parser/event_parser/grammar/expressions.rs index c81dc6c35f..8caaf35538 100644 --- a/src/parser/event_parser/grammar/expressions.rs +++ b/src/parser/event_parser/grammar/expressions.rs @@ -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(); + } +} diff --git a/src/parser/event_parser/grammar/items/mod.rs b/src/parser/event_parser/grammar/items/mod.rs index f10fb230b4..0a50fffc11 100644 --- a/src/parser/event_parser/grammar/items/mod.rs +++ b/src/parser/event_parser/grammar/items/mod.rs @@ -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 diff --git a/src/parser/event_parser/grammar/items/structs.rs b/src/parser/event_parser/grammar/items/structs.rs index 0934f3d284..6e438413b6 100644 --- a/src/parser/event_parser/grammar/items/structs.rs +++ b/src/parser/event_parser/grammar/items/structs.rs @@ -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(); diff --git a/src/syntax_kinds.rs b/src/syntax_kinds.rs index b6c281cd56..519326f48a 100644 --- a/src/syntax_kinds.rs +++ b/src/syntax_kinds.rs @@ -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" }, diff --git a/src/tree/mod.rs b/src/tree/mod.rs index 795f23f429..9ed0504c7f 100644 --- a/src/tree/mod.rs +++ b/src/tree/mod.rs @@ -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, } } diff --git a/tests/data/parser/err/0000_struct_field_missing_comma.txt b/tests/data/parser/err/0000_struct_field_missing_comma.txt index f59205f55c..d94b4fd9e5 100644 --- a/tests/data/parser/err/0000_struct_field_missing_comma.txt +++ b/tests/data/parser/err/0000_struct_field_missing_comma.txt @@ -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) diff --git a/tests/data/parser/err/0001_item_recovery_in_file.txt b/tests/data/parser/err/0001_item_recovery_in_file.txt index 0ac741aa85..ac07606957 100644 --- a/tests/data/parser/err/0001_item_recovery_in_file.txt +++ b/tests/data/parser/err/0001_item_recovery_in_file.txt @@ -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) diff --git a/tests/data/parser/err/0003_C++_semicolon.txt b/tests/data/parser/err/0003_C++_semicolon.txt index 8dd45d2e5c..d77c06378d 100644 --- a/tests/data/parser/err/0003_C++_semicolon.txt +++ b/tests/data/parser/err/0003_C++_semicolon.txt @@ -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) diff --git a/tests/data/parser/err/0004_use_path_bad_segment.txt b/tests/data/parser/err/0004_use_path_bad_segment.txt index adc0496832..7f43611ebd 100644 --- a/tests/data/parser/err/0004_use_path_bad_segment.txt +++ b/tests/data/parser/err/0004_use_path_bad_segment.txt @@ -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` diff --git a/tests/data/parser/err/0005_attribute_recover.txt b/tests/data/parser/err/0005_attribute_recover.txt index 10f7b2da3a..00a534af17 100644 --- a/tests/data/parser/err/0005_attribute_recover.txt +++ b/tests/data/parser/err/0005_attribute_recover.txt @@ -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) diff --git a/tests/data/parser/err/0006_named_field_recovery.txt b/tests/data/parser/err/0006_named_field_recovery.txt index d3815102bf..0437bf2e7d 100644 --- a/tests/data/parser/err/0006_named_field_recovery.txt +++ b/tests/data/parser/err/0006_named_field_recovery.txt @@ -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) diff --git a/tests/data/parser/err/0007_stray_curly_in_file.txt b/tests/data/parser/err/0007_stray_curly_in_file.txt index 04bf17bc77..b4da4464db 100644 --- a/tests/data/parser/err/0007_stray_curly_in_file.txt +++ b/tests/data/parser/err/0007_stray_curly_in_file.txt @@ -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) diff --git a/tests/data/parser/err/0008_item_block_recovery.txt b/tests/data/parser/err/0008_item_block_recovery.txt index 4bb66f56a1..df6a952cd1 100644 --- a/tests/data/parser/err/0008_item_block_recovery.txt +++ b/tests/data/parser/err/0008_item_block_recovery.txt @@ -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) diff --git a/tests/data/parser/err/0009_broken_struct_type_parameter.txt b/tests/data/parser/err/0009_broken_struct_type_parameter.txt index c6b1adb0c4..f329735b66 100644 --- a/tests/data/parser/err/0009_broken_struct_type_parameter.txt +++ b/tests/data/parser/err/0009_broken_struct_type_parameter.txt @@ -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) diff --git a/tests/data/parser/ok/0001_struct_item.txt b/tests/data/parser/ok/0001_struct_item.txt index f599e9d2c5..c280a434fa 100644 --- a/tests/data/parser/ok/0001_struct_item.txt +++ b/tests/data/parser/ok/0001_struct_item.txt @@ -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) diff --git a/tests/data/parser/ok/0002_struct_item_field.txt b/tests/data/parser/ok/0002_struct_item_field.txt index 58042f6a7d..5a7bfbaec5 100644 --- a/tests/data/parser/ok/0002_struct_item_field.txt +++ b/tests/data/parser/ok/0002_struct_item_field.txt @@ -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) diff --git a/tests/data/parser/ok/0005_fn_item.txt b/tests/data/parser/ok/0005_fn_item.txt index e37129ff15..1133593517 100644 --- a/tests/data/parser/ok/0005_fn_item.txt +++ b/tests/data/parser/ok/0005_fn_item.txt @@ -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) diff --git a/tests/data/parser/ok/0006_inner_attributes.txt b/tests/data/parser/ok/0006_inner_attributes.txt index d826fb379a..7d824d1d89 100644 --- a/tests/data/parser/ok/0006_inner_attributes.txt +++ b/tests/data/parser/ok/0006_inner_attributes.txt @@ -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) diff --git a/tests/data/parser/ok/0007_extern_crate.txt b/tests/data/parser/ok/0007_extern_crate.txt index 902c80f7db..aff70131b1 100644 --- a/tests/data/parser/ok/0007_extern_crate.txt +++ b/tests/data/parser/ok/0007_extern_crate.txt @@ -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) diff --git a/tests/data/parser/ok/0008_mod_item.txt b/tests/data/parser/ok/0008_mod_item.txt index 425e3344c7..06e11807d6 100644 --- a/tests/data/parser/ok/0008_mod_item.txt +++ b/tests/data/parser/ok/0008_mod_item.txt @@ -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) diff --git a/tests/data/parser/ok/0009_use_item.txt b/tests/data/parser/ok/0009_use_item.txt index 63274125de..08ae990d9f 100644 --- a/tests/data/parser/ok/0009_use_item.txt +++ b/tests/data/parser/ok/0009_use_item.txt @@ -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) diff --git a/tests/data/parser/ok/0010_use_path_segments.txt b/tests/data/parser/ok/0010_use_path_segments.txt index d0f2033cef..37e3dfdbf0 100644 --- a/tests/data/parser/ok/0010_use_path_segments.txt +++ b/tests/data/parser/ok/0010_use_path_segments.txt @@ -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) diff --git a/tests/data/parser/ok/0011_outer_attribute.txt b/tests/data/parser/ok/0011_outer_attribute.txt index 0f69b1f668..4839d8e671 100644 --- a/tests/data/parser/ok/0011_outer_attribute.txt +++ b/tests/data/parser/ok/0011_outer_attribute.txt @@ -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) diff --git a/tests/data/parser/ok/0012_visibility.txt b/tests/data/parser/ok/0012_visibility.txt index 0e091724da..ed22b265bf 100644 --- a/tests/data/parser/ok/0012_visibility.txt +++ b/tests/data/parser/ok/0012_visibility.txt @@ -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) diff --git a/tests/data/parser/ok/0013_use_path_self_super.txt b/tests/data/parser/ok/0013_use_path_self_super.txt index 2b0934e97b..f3dfaba4bb 100644 --- a/tests/data/parser/ok/0013_use_path_self_super.txt +++ b/tests/data/parser/ok/0013_use_path_self_super.txt @@ -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) diff --git a/tests/data/parser/ok/0014_use_tree.txt b/tests/data/parser/ok/0014_use_tree.txt index ca91e63e19..cddaa54628 100644 --- a/tests/data/parser/ok/0014_use_tree.txt +++ b/tests/data/parser/ok/0014_use_tree.txt @@ -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) diff --git a/tests/data/parser/ok/0015_use_tree.txt b/tests/data/parser/ok/0015_use_tree.txt index c1975f6cb5..10bdef5fe3 100644 --- a/tests/data/parser/ok/0015_use_tree.txt +++ b/tests/data/parser/ok/0015_use_tree.txt @@ -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) diff --git a/tests/data/parser/ok/0016_struct_flavors.txt b/tests/data/parser/ok/0016_struct_flavors.txt index 93b16e1b9c..d5d3a0183b 100644 --- a/tests/data/parser/ok/0016_struct_flavors.txt +++ b/tests/data/parser/ok/0016_struct_flavors.txt @@ -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) diff --git a/tests/data/parser/ok/0017_attr_trailing_comma.txt b/tests/data/parser/ok/0017_attr_trailing_comma.txt index 1b99d7ffdf..304417ed9f 100644 --- a/tests/data/parser/ok/0017_attr_trailing_comma.txt +++ b/tests/data/parser/ok/0017_attr_trailing_comma.txt @@ -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) diff --git a/tests/data/parser/ok/0018_struct_type_params.txt b/tests/data/parser/ok/0018_struct_type_params.txt index b2e7ef9d75..6df786f428 100644 --- a/tests/data/parser/ok/0018_struct_type_params.txt +++ b/tests/data/parser/ok/0018_struct_type_params.txt @@ -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) diff --git a/tests/data/parser/ok/0019_enums.rs b/tests/data/parser/ok/0019_enums.rs new file mode 100644 index 0000000000..7a1afa0e62 --- /dev/null +++ b/tests/data/parser/ok/0019_enums.rs @@ -0,0 +1,25 @@ +enum E1 { +} + +enum E2 { +} + +enum E3 { + X +} + +enum E4 { + X, +} + +enum E5 { + A, + B = 92, + C { + a: u32, + pub b: f64, + }, + F {}, + D(u32,), + E(), +} diff --git a/tests/data/parser/ok/0019_enums.txt b/tests/data/parser/ok/0019_enums.txt new file mode 100644 index 0000000000..dfb8e1f0c3 --- /dev/null +++ b/tests/data/parser/ok/0019_enums.txt @@ -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)