Fix parse tree of attribute on match arm

This commit is contained in:
pcpthm 2019-03-17 20:57:27 +09:00
parent aea9c98f53
commit a67fe4ea7e
4 changed files with 133 additions and 133 deletions

View file

@ -342,21 +342,6 @@ pub(crate) fn match_arm_list(p: &mut Parser) {
continue; 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 // test match_arms_commas
// fn foo() { // fn foo() {
// match () { // match () {
@ -387,6 +372,21 @@ pub(crate) fn match_arm_list(p: &mut Parser) {
// } // }
fn match_arm(p: &mut Parser) -> BlockLike { fn match_arm(p: &mut Parser) -> BlockLike {
let m = p.start(); 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()); patterns::pattern_list_r(p, TokenSet::empty());
if p.at(IF_KW) { if p.at(IF_KW) {
match_guard(p); match_guard(p);

View file

@ -33,11 +33,11 @@ SOURCE_FILE@[0; 293)
R_PAREN@[40; 41) R_PAREN@[40; 41)
COMMA@[41; 42) COMMA@[41; 42)
WHITESPACE@[42; 51) WHITESPACE@[42; 51)
MATCH_ARM@[51; 78)
ATTR@[51; 52) ATTR@[51; 52)
POUND@[51; 52) POUND@[51; 52)
err: `expected `[`` err: `expected `[``
err: `expected pattern` err: `expected pattern`
MATCH_ARM@[52; 78)
ERROR@[52; 53) ERROR@[52; 53)
EXCL@[52; 53) EXCL@[52; 53)
err: `expected FAT_ARROW` err: `expected FAT_ARROW`
@ -103,11 +103,11 @@ SOURCE_FILE@[0; 293)
R_PAREN@[149; 150) R_PAREN@[149; 150)
COMMA@[150; 151) COMMA@[150; 151)
WHITESPACE@[151; 160) WHITESPACE@[151; 160)
MATCH_ARM@[160; 179)
ATTR@[160; 161) ATTR@[160; 161)
POUND@[160; 161) POUND@[160; 161)
err: `expected `[`` err: `expected `[``
err: `expected pattern` err: `expected pattern`
MATCH_ARM@[161; 179)
ERROR@[161; 162) ERROR@[161; 162)
EXCL@[161; 162) EXCL@[161; 162)
err: `expected FAT_ARROW` err: `expected FAT_ARROW`
@ -138,6 +138,7 @@ SOURCE_FILE@[0; 293)
MATCH_ARM_LIST@[200; 290) MATCH_ARM_LIST@[200; 290)
L_CURLY@[200; 201) L_CURLY@[200; 201)
WHITESPACE@[201; 210) WHITESPACE@[201; 210)
MATCH_ARM@[210; 250)
ATTR@[210; 222) ATTR@[210; 222)
POUND@[210; 211) POUND@[210; 211)
TOKEN_TREE@[211; 222) TOKEN_TREE@[211; 222)
@ -153,7 +154,6 @@ SOURCE_FILE@[0; 293)
POUND@[231; 232) POUND@[231; 232)
err: `expected `[`` err: `expected `[``
err: `expected pattern` err: `expected pattern`
MATCH_ARM@[232; 250)
ERROR@[232; 233) ERROR@[232; 233)
EXCL@[232; 233) EXCL@[232; 233)
err: `expected FAT_ARROW` err: `expected FAT_ARROW`

View file

@ -43,6 +43,7 @@ SOURCE_FILE@[0; 89)
R_PAREN@[57; 58) R_PAREN@[57; 58)
COMMA@[58; 59) COMMA@[58; 59)
WHITESPACE@[59; 68) WHITESPACE@[59; 68)
MATCH_ARM@[68; 80)
ATTR@[68; 80) ATTR@[68; 80)
POUND@[68; 69) POUND@[68; 69)
TOKEN_TREE@[69; 80) TOKEN_TREE@[69; 80)
@ -53,11 +54,10 @@ SOURCE_FILE@[0; 89)
IDENT@[74; 78) "test" IDENT@[74; 78) "test"
R_PAREN@[78; 79) R_PAREN@[78; 79)
R_BRACK@[79; 80) R_BRACK@[79; 80)
WHITESPACE@[80; 85)
err: `expected pattern` err: `expected pattern`
err: `expected FAT_ARROW` err: `expected FAT_ARROW`
err: `expected expression` err: `expected expression`
MATCH_ARM@[85; 85) WHITESPACE@[80; 85)
R_CURLY@[85; 86) R_CURLY@[85; 86)
WHITESPACE@[86; 87) WHITESPACE@[86; 87)
R_CURLY@[87; 88) R_CURLY@[87; 88)

View file

@ -21,6 +21,7 @@ SOURCE_FILE@[0; 259)
MATCH_ARM_LIST@[24; 256) MATCH_ARM_LIST@[24; 256)
L_CURLY@[24; 25) L_CURLY@[24; 25)
WHITESPACE@[25; 34) WHITESPACE@[25; 34)
MATCH_ARM@[34; 74)
ATTR@[34; 58) ATTR@[34; 58)
POUND@[34; 35) POUND@[34; 35)
TOKEN_TREE@[35; 58) TOKEN_TREE@[35; 58)
@ -36,7 +37,6 @@ SOURCE_FILE@[0; 259)
R_PAREN@[56; 57) R_PAREN@[56; 57)
R_BRACK@[57; 58) R_BRACK@[57; 58)
WHITESPACE@[58; 67) WHITESPACE@[58; 67)
MATCH_ARM@[67; 74)
PLACEHOLDER_PAT@[67; 68) PLACEHOLDER_PAT@[67; 68)
UNDERSCORE@[67; 68) UNDERSCORE@[67; 68)
WHITESPACE@[68; 69) WHITESPACE@[68; 69)
@ -47,6 +47,7 @@ SOURCE_FILE@[0; 259)
R_PAREN@[73; 74) R_PAREN@[73; 74)
COMMA@[74; 75) COMMA@[74; 75)
WHITESPACE@[75; 84) WHITESPACE@[75; 84)
MATCH_ARM@[84; 125)
ATTR@[84; 109) ATTR@[84; 109)
POUND@[84; 85) POUND@[84; 85)
TOKEN_TREE@[85; 109) TOKEN_TREE@[85; 109)
@ -62,7 +63,6 @@ SOURCE_FILE@[0; 259)
R_PAREN@[107; 108) R_PAREN@[107; 108)
R_BRACK@[108; 109) R_BRACK@[108; 109)
WHITESPACE@[109; 118) WHITESPACE@[109; 118)
MATCH_ARM@[118; 125)
PLACEHOLDER_PAT@[118; 119) PLACEHOLDER_PAT@[118; 119)
UNDERSCORE@[118; 119) UNDERSCORE@[118; 119)
WHITESPACE@[119; 120) WHITESPACE@[119; 120)
@ -73,6 +73,7 @@ SOURCE_FILE@[0; 259)
R_PAREN@[124; 125) R_PAREN@[124; 125)
COMMA@[125; 126) COMMA@[125; 126)
WHITESPACE@[126; 135) WHITESPACE@[126; 135)
MATCH_ARM@[135; 249)
ATTR@[135; 159) ATTR@[135; 159)
POUND@[135; 136) POUND@[135; 136)
TOKEN_TREE@[136; 159) TOKEN_TREE@[136; 159)
@ -118,7 +119,6 @@ SOURCE_FILE@[0; 259)
R_PAREN@[231; 232) R_PAREN@[231; 232)
R_BRACK@[232; 233) R_BRACK@[232; 233)
WHITESPACE@[233; 242) WHITESPACE@[233; 242)
MATCH_ARM@[242; 249)
PLACEHOLDER_PAT@[242; 243) PLACEHOLDER_PAT@[242; 243)
UNDERSCORE@[242; 243) UNDERSCORE@[242; 243)
WHITESPACE@[243; 244) WHITESPACE@[243; 244)