From a67fe4ea7e623ef31228295aedafb3bd18f4a23d Mon Sep 17 00:00:00 2001 From: pcpthm Date: Sun, 17 Mar 2019 20:57:27 +0900 Subject: Fix parse tree of attribute on match arm --- crates/ra_parser/src/grammar/expressions/atom.rs | 30 ++-- .../parser/err/0032_match_arms_inner_attrs.txt | 52 +++---- .../parser/err/0033_match_arms_outer_attrs.txt | 28 ++-- .../inline/ok/0121_match_arms_outer_attributes.txt | 156 ++++++++++----------- 4 files changed, 133 insertions(+), 133 deletions(-) (limited to 'crates') diff --git a/crates/ra_parser/src/grammar/expressions/atom.rs b/crates/ra_parser/src/grammar/expressions/atom.rs index 53bb26c5f..d933288cd 100644 --- a/crates/ra_parser/src/grammar/expressions/atom.rs +++ b/crates/ra_parser/src/grammar/expressions/atom.rs @@ -342,21 +342,6 @@ pub(crate) fn match_arm_list(p: &mut Parser) { continue; } - // test match_arms_outer_attributes - // fn foo() { - // match () { - // #[cfg(feature = "some")] - // _ => (), - // #[cfg(feature = "other")] - // _ => (), - // #[cfg(feature = "many")] - // #[cfg(feature = "attributes")] - // #[cfg(feature = "before")] - // _ => (), - // } - // } - attributes::outer_attributes(p); - // test match_arms_commas // fn foo() { // match () { @@ -387,6 +372,21 @@ pub(crate) fn match_arm_list(p: &mut Parser) { // } fn match_arm(p: &mut Parser) -> BlockLike { let m = p.start(); + // test match_arms_outer_attributes + // fn foo() { + // match () { + // #[cfg(feature = "some")] + // _ => (), + // #[cfg(feature = "other")] + // _ => (), + // #[cfg(feature = "many")] + // #[cfg(feature = "attributes")] + // #[cfg(feature = "before")] + // _ => (), + // } + // } + attributes::outer_attributes(p); + patterns::pattern_list_r(p, TokenSet::empty()); if p.at(IF_KW) { match_guard(p); diff --git a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt index b7543abc9..ed5735a63 100644 --- a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt +++ b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt @@ -33,11 +33,11 @@ SOURCE_FILE@[0; 293) R_PAREN@[40; 41) COMMA@[41; 42) WHITESPACE@[42; 51) - ATTR@[51; 52) - POUND@[51; 52) - err: `expected `[`` - err: `expected pattern` - MATCH_ARM@[52; 78) + MATCH_ARM@[51; 78) + ATTR@[51; 52) + POUND@[51; 52) + err: `expected `[`` + err: `expected pattern` ERROR@[52; 53) EXCL@[52; 53) err: `expected FAT_ARROW` @@ -103,11 +103,11 @@ SOURCE_FILE@[0; 293) R_PAREN@[149; 150) COMMA@[150; 151) WHITESPACE@[151; 160) - ATTR@[160; 161) - POUND@[160; 161) - err: `expected `[`` - err: `expected pattern` - MATCH_ARM@[161; 179) + MATCH_ARM@[160; 179) + ATTR@[160; 161) + POUND@[160; 161) + err: `expected `[`` + err: `expected pattern` ERROR@[161; 162) EXCL@[161; 162) err: `expected FAT_ARROW` @@ -138,22 +138,22 @@ SOURCE_FILE@[0; 293) MATCH_ARM_LIST@[200; 290) L_CURLY@[200; 201) WHITESPACE@[201; 210) - ATTR@[210; 222) - POUND@[210; 211) - TOKEN_TREE@[211; 222) - L_BRACK@[211; 212) - IDENT@[212; 215) "cfg" - TOKEN_TREE@[215; 221) - L_PAREN@[215; 216) - IDENT@[216; 220) "test" - R_PAREN@[220; 221) - R_BRACK@[221; 222) - WHITESPACE@[222; 231) - ATTR@[231; 232) - POUND@[231; 232) - err: `expected `[`` - err: `expected pattern` - MATCH_ARM@[232; 250) + MATCH_ARM@[210; 250) + ATTR@[210; 222) + POUND@[210; 211) + TOKEN_TREE@[211; 222) + L_BRACK@[211; 212) + IDENT@[212; 215) "cfg" + TOKEN_TREE@[215; 221) + L_PAREN@[215; 216) + IDENT@[216; 220) "test" + R_PAREN@[220; 221) + R_BRACK@[221; 222) + WHITESPACE@[222; 231) + ATTR@[231; 232) + POUND@[231; 232) + err: `expected `[`` + err: `expected pattern` ERROR@[232; 233) EXCL@[232; 233) err: `expected FAT_ARROW` diff --git a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt index 7f8767001..f540409bc 100644 --- a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt +++ b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt @@ -43,21 +43,21 @@ SOURCE_FILE@[0; 89) R_PAREN@[57; 58) COMMA@[58; 59) WHITESPACE@[59; 68) - ATTR@[68; 80) - POUND@[68; 69) - TOKEN_TREE@[69; 80) - L_BRACK@[69; 70) - IDENT@[70; 73) "cfg" - TOKEN_TREE@[73; 79) - L_PAREN@[73; 74) - IDENT@[74; 78) "test" - R_PAREN@[78; 79) - R_BRACK@[79; 80) + MATCH_ARM@[68; 80) + ATTR@[68; 80) + POUND@[68; 69) + TOKEN_TREE@[69; 80) + L_BRACK@[69; 70) + IDENT@[70; 73) "cfg" + TOKEN_TREE@[73; 79) + L_PAREN@[73; 74) + IDENT@[74; 78) "test" + R_PAREN@[78; 79) + R_BRACK@[79; 80) + err: `expected pattern` + err: `expected FAT_ARROW` + err: `expected expression` WHITESPACE@[80; 85) - err: `expected pattern` - err: `expected FAT_ARROW` - err: `expected expression` - MATCH_ARM@[85; 85) R_CURLY@[85; 86) WHITESPACE@[86; 87) R_CURLY@[87; 88) diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt index c888fb8f0..e52a290bf 100644 --- a/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt @@ -21,22 +21,22 @@ SOURCE_FILE@[0; 259) MATCH_ARM_LIST@[24; 256) L_CURLY@[24; 25) WHITESPACE@[25; 34) - ATTR@[34; 58) - POUND@[34; 35) - TOKEN_TREE@[35; 58) - L_BRACK@[35; 36) - IDENT@[36; 39) "cfg" - TOKEN_TREE@[39; 57) - L_PAREN@[39; 40) - IDENT@[40; 47) "feature" - WHITESPACE@[47; 48) - EQ@[48; 49) - WHITESPACE@[49; 50) - STRING@[50; 56) - R_PAREN@[56; 57) - R_BRACK@[57; 58) - WHITESPACE@[58; 67) - MATCH_ARM@[67; 74) + MATCH_ARM@[34; 74) + ATTR@[34; 58) + POUND@[34; 35) + TOKEN_TREE@[35; 58) + L_BRACK@[35; 36) + IDENT@[36; 39) "cfg" + TOKEN_TREE@[39; 57) + L_PAREN@[39; 40) + IDENT@[40; 47) "feature" + WHITESPACE@[47; 48) + EQ@[48; 49) + WHITESPACE@[49; 50) + STRING@[50; 56) + R_PAREN@[56; 57) + R_BRACK@[57; 58) + WHITESPACE@[58; 67) PLACEHOLDER_PAT@[67; 68) UNDERSCORE@[67; 68) WHITESPACE@[68; 69) @@ -47,22 +47,22 @@ SOURCE_FILE@[0; 259) R_PAREN@[73; 74) COMMA@[74; 75) WHITESPACE@[75; 84) - ATTR@[84; 109) - POUND@[84; 85) - TOKEN_TREE@[85; 109) - L_BRACK@[85; 86) - IDENT@[86; 89) "cfg" - TOKEN_TREE@[89; 108) - L_PAREN@[89; 90) - IDENT@[90; 97) "feature" - WHITESPACE@[97; 98) - EQ@[98; 99) - WHITESPACE@[99; 100) - STRING@[100; 107) - R_PAREN@[107; 108) - R_BRACK@[108; 109) - WHITESPACE@[109; 118) - MATCH_ARM@[118; 125) + MATCH_ARM@[84; 125) + ATTR@[84; 109) + POUND@[84; 85) + TOKEN_TREE@[85; 109) + L_BRACK@[85; 86) + IDENT@[86; 89) "cfg" + TOKEN_TREE@[89; 108) + L_PAREN@[89; 90) + IDENT@[90; 97) "feature" + WHITESPACE@[97; 98) + EQ@[98; 99) + WHITESPACE@[99; 100) + STRING@[100; 107) + R_PAREN@[107; 108) + R_BRACK@[108; 109) + WHITESPACE@[109; 118) PLACEHOLDER_PAT@[118; 119) UNDERSCORE@[118; 119) WHITESPACE@[119; 120) @@ -73,52 +73,52 @@ SOURCE_FILE@[0; 259) R_PAREN@[124; 125) COMMA@[125; 126) WHITESPACE@[126; 135) - ATTR@[135; 159) - POUND@[135; 136) - TOKEN_TREE@[136; 159) - L_BRACK@[136; 137) - IDENT@[137; 140) "cfg" - TOKEN_TREE@[140; 158) - L_PAREN@[140; 141) - IDENT@[141; 148) "feature" - WHITESPACE@[148; 149) - EQ@[149; 150) - WHITESPACE@[150; 151) - STRING@[151; 157) - R_PAREN@[157; 158) - R_BRACK@[158; 159) - WHITESPACE@[159; 168) - ATTR@[168; 198) - POUND@[168; 169) - TOKEN_TREE@[169; 198) - L_BRACK@[169; 170) - IDENT@[170; 173) "cfg" - TOKEN_TREE@[173; 197) - L_PAREN@[173; 174) - IDENT@[174; 181) "feature" - WHITESPACE@[181; 182) - EQ@[182; 183) - WHITESPACE@[183; 184) - STRING@[184; 196) - R_PAREN@[196; 197) - R_BRACK@[197; 198) - WHITESPACE@[198; 207) - ATTR@[207; 233) - POUND@[207; 208) - TOKEN_TREE@[208; 233) - L_BRACK@[208; 209) - IDENT@[209; 212) "cfg" - TOKEN_TREE@[212; 232) - L_PAREN@[212; 213) - IDENT@[213; 220) "feature" - WHITESPACE@[220; 221) - EQ@[221; 222) - WHITESPACE@[222; 223) - STRING@[223; 231) - R_PAREN@[231; 232) - R_BRACK@[232; 233) - WHITESPACE@[233; 242) - MATCH_ARM@[242; 249) + MATCH_ARM@[135; 249) + ATTR@[135; 159) + POUND@[135; 136) + TOKEN_TREE@[136; 159) + L_BRACK@[136; 137) + IDENT@[137; 140) "cfg" + TOKEN_TREE@[140; 158) + L_PAREN@[140; 141) + IDENT@[141; 148) "feature" + WHITESPACE@[148; 149) + EQ@[149; 150) + WHITESPACE@[150; 151) + STRING@[151; 157) + R_PAREN@[157; 158) + R_BRACK@[158; 159) + WHITESPACE@[159; 168) + ATTR@[168; 198) + POUND@[168; 169) + TOKEN_TREE@[169; 198) + L_BRACK@[169; 170) + IDENT@[170; 173) "cfg" + TOKEN_TREE@[173; 197) + L_PAREN@[173; 174) + IDENT@[174; 181) "feature" + WHITESPACE@[181; 182) + EQ@[182; 183) + WHITESPACE@[183; 184) + STRING@[184; 196) + R_PAREN@[196; 197) + R_BRACK@[197; 198) + WHITESPACE@[198; 207) + ATTR@[207; 233) + POUND@[207; 208) + TOKEN_TREE@[208; 233) + L_BRACK@[208; 209) + IDENT@[209; 212) "cfg" + TOKEN_TREE@[212; 232) + L_PAREN@[212; 213) + IDENT@[213; 220) "feature" + WHITESPACE@[220; 221) + EQ@[221; 222) + WHITESPACE@[222; 223) + STRING@[223; 231) + R_PAREN@[231; 232) + R_BRACK@[232; 233) + WHITESPACE@[233; 242) PLACEHOLDER_PAT@[242; 243) UNDERSCORE@[242; 243) WHITESPACE@[243; 244) -- cgit v1.2.3