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;
}
// 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);

View file

@ -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`

View file

@ -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)

View file

@ -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)