Merge #983
983: support remainder assignment operator r=matklad a=JeanMertz `%=` was returning errors for me, turns out it wasn't added as a valid assignment operation. I'm not sure what the best location would be to add a test for this. Please let me know and I'll add one. Co-authored-by: Jean Mertz <jean@mertz.fm>
This commit is contained in:
commit
91e7a3b6f2
3 changed files with 218 additions and 0 deletions
|
@ -154,6 +154,7 @@ fn current_op(p: &Parser) -> (u8, Op) {
|
|||
(PLUS, EQ) => return (1, Op::Composite(PLUSEQ, 2)),
|
||||
(MINUS, EQ) => return (1, Op::Composite(MINUSEQ, 2)),
|
||||
(STAR, EQ) => return (1, Op::Composite(STAREQ, 2)),
|
||||
(PERCENT, EQ) => return (1, Op::Composite(PERCENTEQ, 2)),
|
||||
(SLASH, EQ) => return (1, Op::Composite(SLASHEQ, 2)),
|
||||
(PIPE, EQ) => return (1, Op::Composite(PIPEEQ, 2)),
|
||||
(AMP, EQ) => return (1, Op::Composite(AMPEQ, 2)),
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// https://github.com/rust-analyzer/rust-analyzer/pull/983
|
||||
|
||||
fn compound_assignment() {
|
||||
let mut a = 0;
|
||||
a += 1;
|
||||
a -= 2;
|
||||
a *= 3;
|
||||
a %= 4;
|
||||
a /= 5;
|
||||
a |= 6;
|
||||
a &= 7;
|
||||
a ^= 8;
|
||||
a <= 9;
|
||||
a >= 10;
|
||||
a >>= 11;
|
||||
a <<= 12;
|
||||
}
|
|
@ -0,0 +1,200 @@
|
|||
SOURCE_FILE@[0; 257)
|
||||
COMMENT@[0; 58)
|
||||
WHITESPACE@[58; 60)
|
||||
FN_DEF@[60; 256)
|
||||
FN_KW@[60; 62)
|
||||
WHITESPACE@[62; 63)
|
||||
NAME@[63; 82)
|
||||
IDENT@[63; 82) "compound_assignment"
|
||||
PARAM_LIST@[82; 84)
|
||||
L_PAREN@[82; 83)
|
||||
R_PAREN@[83; 84)
|
||||
WHITESPACE@[84; 85)
|
||||
BLOCK@[85; 256)
|
||||
L_CURLY@[85; 86)
|
||||
WHITESPACE@[86; 91)
|
||||
LET_STMT@[91; 105)
|
||||
LET_KW@[91; 94)
|
||||
WHITESPACE@[94; 95)
|
||||
BIND_PAT@[95; 100)
|
||||
MUT_KW@[95; 98)
|
||||
WHITESPACE@[98; 99)
|
||||
NAME@[99; 100)
|
||||
IDENT@[99; 100) "a"
|
||||
WHITESPACE@[100; 101)
|
||||
EQ@[101; 102)
|
||||
WHITESPACE@[102; 103)
|
||||
LITERAL@[103; 104)
|
||||
INT_NUMBER@[103; 104) "0"
|
||||
SEMI@[104; 105)
|
||||
WHITESPACE@[105; 110)
|
||||
EXPR_STMT@[110; 117)
|
||||
BIN_EXPR@[110; 116)
|
||||
PATH_EXPR@[110; 111)
|
||||
PATH@[110; 111)
|
||||
PATH_SEGMENT@[110; 111)
|
||||
NAME_REF@[110; 111)
|
||||
IDENT@[110; 111) "a"
|
||||
WHITESPACE@[111; 112)
|
||||
PLUSEQ@[112; 114)
|
||||
WHITESPACE@[114; 115)
|
||||
LITERAL@[115; 116)
|
||||
INT_NUMBER@[115; 116) "1"
|
||||
SEMI@[116; 117)
|
||||
WHITESPACE@[117; 122)
|
||||
EXPR_STMT@[122; 129)
|
||||
BIN_EXPR@[122; 128)
|
||||
PATH_EXPR@[122; 123)
|
||||
PATH@[122; 123)
|
||||
PATH_SEGMENT@[122; 123)
|
||||
NAME_REF@[122; 123)
|
||||
IDENT@[122; 123) "a"
|
||||
WHITESPACE@[123; 124)
|
||||
MINUSEQ@[124; 126)
|
||||
WHITESPACE@[126; 127)
|
||||
LITERAL@[127; 128)
|
||||
INT_NUMBER@[127; 128) "2"
|
||||
SEMI@[128; 129)
|
||||
WHITESPACE@[129; 134)
|
||||
EXPR_STMT@[134; 141)
|
||||
BIN_EXPR@[134; 140)
|
||||
PATH_EXPR@[134; 135)
|
||||
PATH@[134; 135)
|
||||
PATH_SEGMENT@[134; 135)
|
||||
NAME_REF@[134; 135)
|
||||
IDENT@[134; 135) "a"
|
||||
WHITESPACE@[135; 136)
|
||||
STAREQ@[136; 138)
|
||||
WHITESPACE@[138; 139)
|
||||
LITERAL@[139; 140)
|
||||
INT_NUMBER@[139; 140) "3"
|
||||
SEMI@[140; 141)
|
||||
WHITESPACE@[141; 146)
|
||||
EXPR_STMT@[146; 153)
|
||||
BIN_EXPR@[146; 152)
|
||||
PATH_EXPR@[146; 147)
|
||||
PATH@[146; 147)
|
||||
PATH_SEGMENT@[146; 147)
|
||||
NAME_REF@[146; 147)
|
||||
IDENT@[146; 147) "a"
|
||||
WHITESPACE@[147; 148)
|
||||
PERCENTEQ@[148; 150)
|
||||
WHITESPACE@[150; 151)
|
||||
LITERAL@[151; 152)
|
||||
INT_NUMBER@[151; 152) "4"
|
||||
SEMI@[152; 153)
|
||||
WHITESPACE@[153; 158)
|
||||
EXPR_STMT@[158; 165)
|
||||
BIN_EXPR@[158; 164)
|
||||
PATH_EXPR@[158; 159)
|
||||
PATH@[158; 159)
|
||||
PATH_SEGMENT@[158; 159)
|
||||
NAME_REF@[158; 159)
|
||||
IDENT@[158; 159) "a"
|
||||
WHITESPACE@[159; 160)
|
||||
SLASHEQ@[160; 162)
|
||||
WHITESPACE@[162; 163)
|
||||
LITERAL@[163; 164)
|
||||
INT_NUMBER@[163; 164) "5"
|
||||
SEMI@[164; 165)
|
||||
WHITESPACE@[165; 170)
|
||||
EXPR_STMT@[170; 177)
|
||||
BIN_EXPR@[170; 176)
|
||||
PATH_EXPR@[170; 171)
|
||||
PATH@[170; 171)
|
||||
PATH_SEGMENT@[170; 171)
|
||||
NAME_REF@[170; 171)
|
||||
IDENT@[170; 171) "a"
|
||||
WHITESPACE@[171; 172)
|
||||
PIPEEQ@[172; 174)
|
||||
WHITESPACE@[174; 175)
|
||||
LITERAL@[175; 176)
|
||||
INT_NUMBER@[175; 176) "6"
|
||||
SEMI@[176; 177)
|
||||
WHITESPACE@[177; 182)
|
||||
EXPR_STMT@[182; 189)
|
||||
BIN_EXPR@[182; 188)
|
||||
PATH_EXPR@[182; 183)
|
||||
PATH@[182; 183)
|
||||
PATH_SEGMENT@[182; 183)
|
||||
NAME_REF@[182; 183)
|
||||
IDENT@[182; 183) "a"
|
||||
WHITESPACE@[183; 184)
|
||||
AMPEQ@[184; 186)
|
||||
WHITESPACE@[186; 187)
|
||||
LITERAL@[187; 188)
|
||||
INT_NUMBER@[187; 188) "7"
|
||||
SEMI@[188; 189)
|
||||
WHITESPACE@[189; 194)
|
||||
EXPR_STMT@[194; 201)
|
||||
BIN_EXPR@[194; 200)
|
||||
PATH_EXPR@[194; 195)
|
||||
PATH@[194; 195)
|
||||
PATH_SEGMENT@[194; 195)
|
||||
NAME_REF@[194; 195)
|
||||
IDENT@[194; 195) "a"
|
||||
WHITESPACE@[195; 196)
|
||||
CARETEQ@[196; 198)
|
||||
WHITESPACE@[198; 199)
|
||||
LITERAL@[199; 200)
|
||||
INT_NUMBER@[199; 200) "8"
|
||||
SEMI@[200; 201)
|
||||
WHITESPACE@[201; 206)
|
||||
EXPR_STMT@[206; 213)
|
||||
BIN_EXPR@[206; 212)
|
||||
PATH_EXPR@[206; 207)
|
||||
PATH@[206; 207)
|
||||
PATH_SEGMENT@[206; 207)
|
||||
NAME_REF@[206; 207)
|
||||
IDENT@[206; 207) "a"
|
||||
WHITESPACE@[207; 208)
|
||||
LTEQ@[208; 210)
|
||||
WHITESPACE@[210; 211)
|
||||
LITERAL@[211; 212)
|
||||
INT_NUMBER@[211; 212) "9"
|
||||
SEMI@[212; 213)
|
||||
WHITESPACE@[213; 218)
|
||||
EXPR_STMT@[218; 226)
|
||||
BIN_EXPR@[218; 225)
|
||||
PATH_EXPR@[218; 219)
|
||||
PATH@[218; 219)
|
||||
PATH_SEGMENT@[218; 219)
|
||||
NAME_REF@[218; 219)
|
||||
IDENT@[218; 219) "a"
|
||||
WHITESPACE@[219; 220)
|
||||
GTEQ@[220; 222)
|
||||
WHITESPACE@[222; 223)
|
||||
LITERAL@[223; 225)
|
||||
INT_NUMBER@[223; 225) "10"
|
||||
SEMI@[225; 226)
|
||||
WHITESPACE@[226; 231)
|
||||
EXPR_STMT@[231; 240)
|
||||
BIN_EXPR@[231; 239)
|
||||
PATH_EXPR@[231; 232)
|
||||
PATH@[231; 232)
|
||||
PATH_SEGMENT@[231; 232)
|
||||
NAME_REF@[231; 232)
|
||||
IDENT@[231; 232) "a"
|
||||
WHITESPACE@[232; 233)
|
||||
SHREQ@[233; 236)
|
||||
WHITESPACE@[236; 237)
|
||||
LITERAL@[237; 239)
|
||||
INT_NUMBER@[237; 239) "11"
|
||||
SEMI@[239; 240)
|
||||
WHITESPACE@[240; 245)
|
||||
EXPR_STMT@[245; 254)
|
||||
BIN_EXPR@[245; 253)
|
||||
PATH_EXPR@[245; 246)
|
||||
PATH@[245; 246)
|
||||
PATH_SEGMENT@[245; 246)
|
||||
NAME_REF@[245; 246)
|
||||
IDENT@[245; 246) "a"
|
||||
WHITESPACE@[246; 247)
|
||||
SHLEQ@[247; 250)
|
||||
WHITESPACE@[250; 251)
|
||||
LITERAL@[251; 253)
|
||||
INT_NUMBER@[251; 253) "12"
|
||||
SEMI@[253; 254)
|
||||
WHITESPACE@[254; 255)
|
||||
R_CURLY@[255; 256)
|
||||
WHITESPACE@[256; 257)
|
Loading…
Add table
Reference in a new issue