Skip to content

Commit 4f135a9

Browse files
committed
Added support of bitwise-and-assign and bitwise-shiftright-assign operators
1 parent 5fcbd30 commit 4f135a9

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

parser/base.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,8 @@ void xx_parse_program(zval *return_value, char *program, size_t program_length,
127127
state->start_length = (program + program_length - state->start);
128128

129129
switch (token.opcode) {
130-
131130
case XX_T_IGNORE:
132131
break;
133-
134132
case XX_T_NAMESPACE:
135133
xx_(xx_parser, XX_NAMESPACE, NULL, parser_status);
136134
break;
@@ -260,7 +258,6 @@ void xx_parse_program(zval *return_value, char *program, size_t program_length,
260258
case XX_T_CATCH:
261259
xx_(xx_parser, XX_CATCH, NULL, parser_status);
262260
break;
263-
264261
case XX_T_DOTCOMMA:
265262
xx_(xx_parser, XX_DOTCOMMA, NULL, parser_status);
266263
break;
@@ -288,6 +285,9 @@ void xx_parse_program(zval *return_value, char *program, size_t program_length,
288285
case XX_T_ASSIGN_MOD:
289286
xx_(xx_parser, XX_T_ASSIGN_MOD, NULL, parser_status);
290287
break;
288+
case XX_T_ASSIGN_BITWISE_AND:
289+
xx_(xx_parser, XX_ASSIGN_BITWISE_AND, NULL, parser_status);
290+
break;
291291
case XX_T_ASSIGN_BITWISE_OR:
292292
xx_(xx_parser, XX_ASSIGN_BITWISE_OR, NULL, parser_status);
293293
break;
@@ -297,6 +297,9 @@ void xx_parse_program(zval *return_value, char *program, size_t program_length,
297297
case XX_T_ASSIGN_BITWISE_SHIFTLEFT:
298298
xx_(xx_parser, XX_ASSIGN_BITWISE_SHIFTLEFT, NULL, parser_status);
299299
break;
300+
case XX_T_ASSIGN_BITWISE_SHIFTRIGHT:
301+
xx_(xx_parser, XX_ASSIGN_BITWISE_SHIFTRIGHT, NULL, parser_status);
302+
break;
300303
case XX_T_EQUALS:
301304
xx_(xx_parser, XX_EQUALS, NULL, parser_status);
302305
break;

tests/bitwise/001.phpt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ foreach ($ir[0]["statements"] as $statement) {
2020
);
2121
}
2222
--EXPECT--
23-
3
23+
5
24+
variable a bitwise-and-assign variable b
2425
variable a bitwise-or-assign variable b
2526
variable a bitwise-xor-assign variable b
2627
variable a bitwise-shiftleft-assign variable b
28+
variable a bitwise-shiftright-assign variable b

tests/data/bitwise/assign.zep

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
function bitwise() {
2-
// FIXME:
3-
// let a &= b;
2+
let a &= b;
43
let a |= b;
54
let a ^= b;
65
let a <<= b;
7-
// FIXME:
8-
// let a >>= b;
6+
let a >>= b;
97
}

0 commit comments

Comments
 (0)