Add test for minus in inner pattern

This commit is contained in:
Michael Chesser 2019-03-14 19:22:37 +10:30
parent 16418c35bc
commit 943d2fb781
2 changed files with 347 additions and 0 deletions

View File

@ -0,0 +1,27 @@
// https://github.com/rust-analyzer/rust-analyzer/issues/972
fn main() {
match Some(-1) {
Some(-1) => (),
_ => (),
}
match Some((-1, -1)) {
Some((-1, -1)) => (),
_ => (),
}
match A::B(-1, -1) {
A::B(-1, -1) => (),
_ => (),
}
if let Some(-1) = Some(-1) {
}
}
enum A {
B(i8, i8)
}
fn foo(-128..=127: i8) {}

View File

@ -0,0 +1,320 @@
SOURCE_FILE@[0; 395)
COMMENT@[0; 60)
WHITESPACE@[60; 62)
FN_DEF@[62; 341)
FN_KW@[62; 64)
WHITESPACE@[64; 65)
NAME@[65; 69)
IDENT@[65; 69) "main"
PARAM_LIST@[69; 71)
L_PAREN@[69; 70)
R_PAREN@[70; 71)
WHITESPACE@[71; 72)
BLOCK@[72; 341)
L_CURLY@[72; 73)
WHITESPACE@[73; 78)
EXPR_STMT@[78; 141)
MATCH_EXPR@[78; 141)
MATCH_KW@[78; 83)
WHITESPACE@[83; 84)
CALL_EXPR@[84; 92)
PATH_EXPR@[84; 88)
PATH@[84; 88)
PATH_SEGMENT@[84; 88)
NAME_REF@[84; 88)
IDENT@[84; 88) "Some"
ARG_LIST@[88; 92)
L_PAREN@[88; 89)
PREFIX_EXPR@[89; 91)
MINUS@[89; 90)
LITERAL@[90; 91)
INT_NUMBER@[90; 91) "1"
R_PAREN@[91; 92)
WHITESPACE@[92; 93)
MATCH_ARM_LIST@[93; 141)
L_CURLY@[93; 94)
WHITESPACE@[94; 103)
MATCH_ARM@[103; 117)
TUPLE_STRUCT_PAT@[103; 111)
PATH@[103; 107)
PATH_SEGMENT@[103; 107)
NAME_REF@[103; 107)
IDENT@[103; 107) "Some"
L_PAREN@[107; 108)
LITERAL_PAT@[108; 110)
MINUS@[108; 109)
LITERAL@[109; 110)
INT_NUMBER@[109; 110) "1"
R_PAREN@[110; 111)
WHITESPACE@[111; 112)
FAT_ARROW@[112; 114)
WHITESPACE@[114; 115)
TUPLE_EXPR@[115; 117)
L_PAREN@[115; 116)
R_PAREN@[116; 117)
COMMA@[117; 118)
WHITESPACE@[118; 127)
MATCH_ARM@[127; 134)
PLACEHOLDER_PAT@[127; 128)
UNDERSCORE@[127; 128)
WHITESPACE@[128; 129)
FAT_ARROW@[129; 131)
WHITESPACE@[131; 132)
TUPLE_EXPR@[132; 134)
L_PAREN@[132; 133)
R_PAREN@[133; 134)
COMMA@[134; 135)
WHITESPACE@[135; 140)
R_CURLY@[140; 141)
WHITESPACE@[141; 147)
EXPR_STMT@[147; 222)
MATCH_EXPR@[147; 222)
MATCH_KW@[147; 152)
WHITESPACE@[152; 153)
CALL_EXPR@[153; 167)
PATH_EXPR@[153; 157)
PATH@[153; 157)
PATH_SEGMENT@[153; 157)
NAME_REF@[153; 157)
IDENT@[153; 157) "Some"
ARG_LIST@[157; 167)
L_PAREN@[157; 158)
TUPLE_EXPR@[158; 166)
L_PAREN@[158; 159)
PREFIX_EXPR@[159; 161)
MINUS@[159; 160)
LITERAL@[160; 161)
INT_NUMBER@[160; 161) "1"
COMMA@[161; 162)
WHITESPACE@[162; 163)
PREFIX_EXPR@[163; 165)
MINUS@[163; 164)
LITERAL@[164; 165)
INT_NUMBER@[164; 165) "1"
R_PAREN@[165; 166)
R_PAREN@[166; 167)
WHITESPACE@[167; 168)
MATCH_ARM_LIST@[168; 222)
L_CURLY@[168; 169)
WHITESPACE@[169; 178)
MATCH_ARM@[178; 198)
TUPLE_STRUCT_PAT@[178; 192)
PATH@[178; 182)
PATH_SEGMENT@[178; 182)
NAME_REF@[178; 182)
IDENT@[178; 182) "Some"
L_PAREN@[182; 183)
TUPLE_PAT@[183; 191)
L_PAREN@[183; 184)
LITERAL_PAT@[184; 186)
MINUS@[184; 185)
LITERAL@[185; 186)
INT_NUMBER@[185; 186) "1"
COMMA@[186; 187)
WHITESPACE@[187; 188)
LITERAL_PAT@[188; 190)
MINUS@[188; 189)
LITERAL@[189; 190)
INT_NUMBER@[189; 190) "1"
R_PAREN@[190; 191)
R_PAREN@[191; 192)
WHITESPACE@[192; 193)
FAT_ARROW@[193; 195)
WHITESPACE@[195; 196)
TUPLE_EXPR@[196; 198)
L_PAREN@[196; 197)
R_PAREN@[197; 198)
COMMA@[198; 199)
WHITESPACE@[199; 208)
MATCH_ARM@[208; 215)
PLACEHOLDER_PAT@[208; 209)
UNDERSCORE@[208; 209)
WHITESPACE@[209; 210)
FAT_ARROW@[210; 212)
WHITESPACE@[212; 213)
TUPLE_EXPR@[213; 215)
L_PAREN@[213; 214)
R_PAREN@[214; 215)
COMMA@[215; 216)
WHITESPACE@[216; 221)
R_CURLY@[221; 222)
WHITESPACE@[222; 228)
EXPR_STMT@[228; 299)
MATCH_EXPR@[228; 299)
MATCH_KW@[228; 233)
WHITESPACE@[233; 234)
CALL_EXPR@[234; 246)
PATH_EXPR@[234; 238)
PATH@[234; 238)
PATH@[234; 235)
PATH_SEGMENT@[234; 235)
NAME_REF@[234; 235)
IDENT@[234; 235) "A"
COLONCOLON@[235; 237)
PATH_SEGMENT@[237; 238)
NAME_REF@[237; 238)
IDENT@[237; 238) "B"
ARG_LIST@[238; 246)
L_PAREN@[238; 239)
PREFIX_EXPR@[239; 241)
MINUS@[239; 240)
LITERAL@[240; 241)
INT_NUMBER@[240; 241) "1"
COMMA@[241; 242)
WHITESPACE@[242; 243)
PREFIX_EXPR@[243; 245)
MINUS@[243; 244)
LITERAL@[244; 245)
INT_NUMBER@[244; 245) "1"
R_PAREN@[245; 246)
WHITESPACE@[246; 247)
MATCH_ARM_LIST@[247; 299)
L_CURLY@[247; 248)
WHITESPACE@[248; 257)
MATCH_ARM@[257; 275)
TUPLE_STRUCT_PAT@[257; 269)
PATH@[257; 261)
PATH@[257; 258)
PATH_SEGMENT@[257; 258)
NAME_REF@[257; 258)
IDENT@[257; 258) "A"
COLONCOLON@[258; 260)
PATH_SEGMENT@[260; 261)
NAME_REF@[260; 261)
IDENT@[260; 261) "B"
L_PAREN@[261; 262)
LITERAL_PAT@[262; 264)
MINUS@[262; 263)
LITERAL@[263; 264)
INT_NUMBER@[263; 264) "1"
COMMA@[264; 265)
WHITESPACE@[265; 266)
LITERAL_PAT@[266; 268)
MINUS@[266; 267)
LITERAL@[267; 268)
INT_NUMBER@[267; 268) "1"
R_PAREN@[268; 269)
WHITESPACE@[269; 270)
FAT_ARROW@[270; 272)
WHITESPACE@[272; 273)
TUPLE_EXPR@[273; 275)
L_PAREN@[273; 274)
R_PAREN@[274; 275)
COMMA@[275; 276)
WHITESPACE@[276; 285)
MATCH_ARM@[285; 292)
PLACEHOLDER_PAT@[285; 286)
UNDERSCORE@[285; 286)
WHITESPACE@[286; 287)
FAT_ARROW@[287; 289)
WHITESPACE@[289; 290)
TUPLE_EXPR@[290; 292)
L_PAREN@[290; 291)
R_PAREN@[291; 292)
COMMA@[292; 293)
WHITESPACE@[293; 298)
R_CURLY@[298; 299)
WHITESPACE@[299; 305)
IF_EXPR@[305; 339)
IF_KW@[305; 307)
WHITESPACE@[307; 308)
CONDITION@[308; 331)
LET_KW@[308; 311)
WHITESPACE@[311; 312)
TUPLE_STRUCT_PAT@[312; 320)
PATH@[312; 316)
PATH_SEGMENT@[312; 316)
NAME_REF@[312; 316)
IDENT@[312; 316) "Some"
L_PAREN@[316; 317)
LITERAL_PAT@[317; 319)
MINUS@[317; 318)
LITERAL@[318; 319)
INT_NUMBER@[318; 319) "1"
R_PAREN@[319; 320)
WHITESPACE@[320; 321)
EQ@[321; 322)
WHITESPACE@[322; 323)
CALL_EXPR@[323; 331)
PATH_EXPR@[323; 327)
PATH@[323; 327)
PATH_SEGMENT@[323; 327)
NAME_REF@[323; 327)
IDENT@[323; 327) "Some"
ARG_LIST@[327; 331)
L_PAREN@[327; 328)
PREFIX_EXPR@[328; 330)
MINUS@[328; 329)
LITERAL@[329; 330)
INT_NUMBER@[329; 330) "1"
R_PAREN@[330; 331)
WHITESPACE@[331; 332)
BLOCK@[332; 339)
L_CURLY@[332; 333)
WHITESPACE@[333; 338)
R_CURLY@[338; 339)
WHITESPACE@[339; 340)
R_CURLY@[340; 341)
WHITESPACE@[341; 343)
ENUM_DEF@[343; 367)
ENUM_KW@[343; 347)
WHITESPACE@[347; 348)
NAME@[348; 349)
IDENT@[348; 349) "A"
WHITESPACE@[349; 350)
ENUM_VARIANT_LIST@[350; 367)
L_CURLY@[350; 351)
WHITESPACE@[351; 356)
ENUM_VARIANT@[356; 365)
NAME@[356; 357)
IDENT@[356; 357) "B"
POS_FIELD_DEF_LIST@[357; 365)
L_PAREN@[357; 358)
POS_FIELD_DEF@[358; 360)
PATH_TYPE@[358; 360)
PATH@[358; 360)
PATH_SEGMENT@[358; 360)
NAME_REF@[358; 360)
IDENT@[358; 360) "i8"
COMMA@[360; 361)
WHITESPACE@[361; 362)
POS_FIELD_DEF@[362; 364)
PATH_TYPE@[362; 364)
PATH@[362; 364)
PATH_SEGMENT@[362; 364)
NAME_REF@[362; 364)
IDENT@[362; 364) "i8"
R_PAREN@[364; 365)
WHITESPACE@[365; 366)
R_CURLY@[366; 367)
WHITESPACE@[367; 369)
FN_DEF@[369; 394)
FN_KW@[369; 371)
WHITESPACE@[371; 372)
NAME@[372; 375)
IDENT@[372; 375) "foo"
PARAM_LIST@[375; 391)
L_PAREN@[375; 376)
PARAM@[376; 390)
RANGE_PAT@[376; 386)
LITERAL_PAT@[376; 380)
MINUS@[376; 377)
LITERAL@[377; 380)
INT_NUMBER@[377; 380) "128"
DOTDOTEQ@[380; 383)
LITERAL_PAT@[383; 386)
LITERAL@[383; 386)
INT_NUMBER@[383; 386) "127"
COLON@[386; 387)
WHITESPACE@[387; 388)
PATH_TYPE@[388; 390)
PATH@[388; 390)
PATH_SEGMENT@[388; 390)
NAME_REF@[388; 390)
IDENT@[388; 390) "i8"
R_PAREN@[390; 391)
WHITESPACE@[391; 392)
BLOCK@[392; 394)
L_CURLY@[392; 393)
R_CURLY@[393; 394)
WHITESPACE@[394; 395)