986: Fix parse tree of attribute on match arm r=matklad a=pcpthm

```rust
match () {
    #[attr]
    () => (),
}
```
Incorrect parse tree: `MatchArmList(Attr(..), MatchArm(..))`.
Fixed: `MatchArmList(MatchArm(Attr(..), ...))`.

Co-authored-by: pcpthm <pcpthm@gmail.com>
This commit is contained in:
bors[bot] 2019-03-17 12:14:36 +00:00
commit 290a3d0a6b
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)
ATTR@[51; 52) MATCH_ARM@[51; 78)
POUND@[51; 52) ATTR@[51; 52)
err: `expected `[`` POUND@[51; 52)
err: `expected pattern` err: `expected `[``
MATCH_ARM@[52; 78) err: `expected pattern`
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)
ATTR@[160; 161) MATCH_ARM@[160; 179)
POUND@[160; 161) ATTR@[160; 161)
err: `expected `[`` POUND@[160; 161)
err: `expected pattern` err: `expected `[``
MATCH_ARM@[161; 179) err: `expected pattern`
ERROR@[161; 162) ERROR@[161; 162)
EXCL@[161; 162) EXCL@[161; 162)
err: `expected FAT_ARROW` err: `expected FAT_ARROW`
@ -138,22 +138,22 @@ 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)
ATTR@[210; 222) MATCH_ARM@[210; 250)
POUND@[210; 211) ATTR@[210; 222)
TOKEN_TREE@[211; 222) POUND@[210; 211)
L_BRACK@[211; 212) TOKEN_TREE@[211; 222)
IDENT@[212; 215) "cfg" L_BRACK@[211; 212)
TOKEN_TREE@[215; 221) IDENT@[212; 215) "cfg"
L_PAREN@[215; 216) TOKEN_TREE@[215; 221)
IDENT@[216; 220) "test" L_PAREN@[215; 216)
R_PAREN@[220; 221) IDENT@[216; 220) "test"
R_BRACK@[221; 222) R_PAREN@[220; 221)
WHITESPACE@[222; 231) R_BRACK@[221; 222)
ATTR@[231; 232) WHITESPACE@[222; 231)
POUND@[231; 232) ATTR@[231; 232)
err: `expected `[`` POUND@[231; 232)
err: `expected pattern` err: `expected `[``
MATCH_ARM@[232; 250) err: `expected pattern`
ERROR@[232; 233) ERROR@[232; 233)
EXCL@[232; 233) EXCL@[232; 233)
err: `expected FAT_ARROW` err: `expected FAT_ARROW`

View file

@ -43,21 +43,21 @@ SOURCE_FILE@[0; 89)
R_PAREN@[57; 58) R_PAREN@[57; 58)
COMMA@[58; 59) COMMA@[58; 59)
WHITESPACE@[59; 68) WHITESPACE@[59; 68)
ATTR@[68; 80) MATCH_ARM@[68; 80)
POUND@[68; 69) ATTR@[68; 80)
TOKEN_TREE@[69; 80) POUND@[68; 69)
L_BRACK@[69; 70) TOKEN_TREE@[69; 80)
IDENT@[70; 73) "cfg" L_BRACK@[69; 70)
TOKEN_TREE@[73; 79) IDENT@[70; 73) "cfg"
L_PAREN@[73; 74) TOKEN_TREE@[73; 79)
IDENT@[74; 78) "test" L_PAREN@[73; 74)
R_PAREN@[78; 79) IDENT@[74; 78) "test"
R_BRACK@[79; 80) R_PAREN@[78; 79)
R_BRACK@[79; 80)
err: `expected pattern`
err: `expected FAT_ARROW`
err: `expected expression`
WHITESPACE@[80; 85) WHITESPACE@[80; 85)
err: `expected pattern`
err: `expected FAT_ARROW`
err: `expected expression`
MATCH_ARM@[85; 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,22 +21,22 @@ 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)
ATTR@[34; 58) MATCH_ARM@[34; 74)
POUND@[34; 35) ATTR@[34; 58)
TOKEN_TREE@[35; 58) POUND@[34; 35)
L_BRACK@[35; 36) TOKEN_TREE@[35; 58)
IDENT@[36; 39) "cfg" L_BRACK@[35; 36)
TOKEN_TREE@[39; 57) IDENT@[36; 39) "cfg"
L_PAREN@[39; 40) TOKEN_TREE@[39; 57)
IDENT@[40; 47) "feature" L_PAREN@[39; 40)
WHITESPACE@[47; 48) IDENT@[40; 47) "feature"
EQ@[48; 49) WHITESPACE@[47; 48)
WHITESPACE@[49; 50) EQ@[48; 49)
STRING@[50; 56) WHITESPACE@[49; 50)
R_PAREN@[56; 57) STRING@[50; 56)
R_BRACK@[57; 58) R_PAREN@[56; 57)
WHITESPACE@[58; 67) R_BRACK@[57; 58)
MATCH_ARM@[67; 74) WHITESPACE@[58; 67)
PLACEHOLDER_PAT@[67; 68) PLACEHOLDER_PAT@[67; 68)
UNDERSCORE@[67; 68) UNDERSCORE@[67; 68)
WHITESPACE@[68; 69) WHITESPACE@[68; 69)
@ -47,22 +47,22 @@ SOURCE_FILE@[0; 259)
R_PAREN@[73; 74) R_PAREN@[73; 74)
COMMA@[74; 75) COMMA@[74; 75)
WHITESPACE@[75; 84) WHITESPACE@[75; 84)
ATTR@[84; 109) MATCH_ARM@[84; 125)
POUND@[84; 85) ATTR@[84; 109)
TOKEN_TREE@[85; 109) POUND@[84; 85)
L_BRACK@[85; 86) TOKEN_TREE@[85; 109)
IDENT@[86; 89) "cfg" L_BRACK@[85; 86)
TOKEN_TREE@[89; 108) IDENT@[86; 89) "cfg"
L_PAREN@[89; 90) TOKEN_TREE@[89; 108)
IDENT@[90; 97) "feature" L_PAREN@[89; 90)
WHITESPACE@[97; 98) IDENT@[90; 97) "feature"
EQ@[98; 99) WHITESPACE@[97; 98)
WHITESPACE@[99; 100) EQ@[98; 99)
STRING@[100; 107) WHITESPACE@[99; 100)
R_PAREN@[107; 108) STRING@[100; 107)
R_BRACK@[108; 109) R_PAREN@[107; 108)
WHITESPACE@[109; 118) R_BRACK@[108; 109)
MATCH_ARM@[118; 125) WHITESPACE@[109; 118)
PLACEHOLDER_PAT@[118; 119) PLACEHOLDER_PAT@[118; 119)
UNDERSCORE@[118; 119) UNDERSCORE@[118; 119)
WHITESPACE@[119; 120) WHITESPACE@[119; 120)
@ -73,52 +73,52 @@ SOURCE_FILE@[0; 259)
R_PAREN@[124; 125) R_PAREN@[124; 125)
COMMA@[125; 126) COMMA@[125; 126)
WHITESPACE@[126; 135) WHITESPACE@[126; 135)
ATTR@[135; 159) MATCH_ARM@[135; 249)
POUND@[135; 136) ATTR@[135; 159)
TOKEN_TREE@[136; 159) POUND@[135; 136)
L_BRACK@[136; 137) TOKEN_TREE@[136; 159)
IDENT@[137; 140) "cfg" L_BRACK@[136; 137)
TOKEN_TREE@[140; 158) IDENT@[137; 140) "cfg"
L_PAREN@[140; 141) TOKEN_TREE@[140; 158)
IDENT@[141; 148) "feature" L_PAREN@[140; 141)
WHITESPACE@[148; 149) IDENT@[141; 148) "feature"
EQ@[149; 150) WHITESPACE@[148; 149)
WHITESPACE@[150; 151) EQ@[149; 150)
STRING@[151; 157) WHITESPACE@[150; 151)
R_PAREN@[157; 158) STRING@[151; 157)
R_BRACK@[158; 159) R_PAREN@[157; 158)
WHITESPACE@[159; 168) R_BRACK@[158; 159)
ATTR@[168; 198) WHITESPACE@[159; 168)
POUND@[168; 169) ATTR@[168; 198)
TOKEN_TREE@[169; 198) POUND@[168; 169)
L_BRACK@[169; 170) TOKEN_TREE@[169; 198)
IDENT@[170; 173) "cfg" L_BRACK@[169; 170)
TOKEN_TREE@[173; 197) IDENT@[170; 173) "cfg"
L_PAREN@[173; 174) TOKEN_TREE@[173; 197)
IDENT@[174; 181) "feature" L_PAREN@[173; 174)
WHITESPACE@[181; 182) IDENT@[174; 181) "feature"
EQ@[182; 183) WHITESPACE@[181; 182)
WHITESPACE@[183; 184) EQ@[182; 183)
STRING@[184; 196) WHITESPACE@[183; 184)
R_PAREN@[196; 197) STRING@[184; 196)
R_BRACK@[197; 198) R_PAREN@[196; 197)
WHITESPACE@[198; 207) R_BRACK@[197; 198)
ATTR@[207; 233) WHITESPACE@[198; 207)
POUND@[207; 208) ATTR@[207; 233)
TOKEN_TREE@[208; 233) POUND@[207; 208)
L_BRACK@[208; 209) TOKEN_TREE@[208; 233)
IDENT@[209; 212) "cfg" L_BRACK@[208; 209)
TOKEN_TREE@[212; 232) IDENT@[209; 212) "cfg"
L_PAREN@[212; 213) TOKEN_TREE@[212; 232)
IDENT@[213; 220) "feature" L_PAREN@[212; 213)
WHITESPACE@[220; 221) IDENT@[213; 220) "feature"
EQ@[221; 222) WHITESPACE@[220; 221)
WHITESPACE@[222; 223) EQ@[221; 222)
STRING@[223; 231) WHITESPACE@[222; 223)
R_PAREN@[231; 232) STRING@[223; 231)
R_BRACK@[232; 233) R_PAREN@[231; 232)
WHITESPACE@[233; 242) R_BRACK@[232; 233)
MATCH_ARM@[242; 249) WHITESPACE@[233; 242)
PLACEHOLDER_PAT@[242; 243) PLACEHOLDER_PAT@[242; 243)
UNDERSCORE@[242; 243) UNDERSCORE@[242; 243)
WHITESPACE@[243; 244) WHITESPACE@[243; 244)