Skip to content

Commit a955504

Browse files
committed
Add support for pipe operator
1 parent 869ea5e commit a955504

File tree

4 files changed

+21
-12
lines changed

4 files changed

+21
-12
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@ ast\flags\BINARY_POW
314314
ast\flags\BINARY_SHIFT_LEFT
315315
ast\flags\BINARY_SHIFT_RIGHT
316316
ast\flags\BINARY_COALESCE
317+
ast\flags\BINARY_PIPE
317318
318319
// Used by ast\AST_BINARY_OP (exclusive)
319320
ast\flags\BINARY_BOOL_AND

ast.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
#define AST_BINARY_BOOL_OR 258
8080
#define AST_BINARY_BOOL_AND 259
8181
#define AST_BINARY_COALESCE 260
82+
#define AST_BINARY_PIPE 261
8283

8384
/* Flags for UNARY_OP to use instead of AST_SILENCE, AST_UNARY_PLUS, AST_UNARY_MINUS */
8485
#define AST_SILENCE 260
@@ -236,6 +237,7 @@ static const char *binary_op_flags[] = {
236237
AST_FLAG(BINARY_IS_GREATER),
237238
AST_FLAG(BINARY_IS_GREATER_OR_EQUAL),
238239
AST_FLAG(BINARY_SPACESHIP),
240+
AST_FLAG(BINARY_PIPE),
239241
NULL
240242
};
241243

@@ -980,6 +982,12 @@ static void ast_to_zval(zval *zv, zend_ast *ast, ast_state_info_t *state) {
980982
ast->kind = ZEND_AST_BINARY_OP;
981983
ast->attr = AST_BINARY_COALESCE;
982984
break;
985+
#if PHP_VERSION_ID >= 80500
986+
case ZEND_AST_PIPE:
987+
ast->kind = ZEND_AST_BINARY_OP;
988+
ast->attr = AST_BINARY_PIPE;
989+
break;
990+
#endif
983991
case ZEND_AST_SILENCE:
984992
ast->kind = ZEND_AST_UNARY_OP;
985993
ast->attr = AST_SILENCE;
@@ -1560,6 +1568,7 @@ PHP_MINIT_FUNCTION(ast) {
15601568
ast_register_flag_constant("BINARY_IS_GREATER_OR_EQUAL", AST_BINARY_IS_GREATER_OR_EQUAL);
15611569
ast_register_flag_constant("BINARY_SPACESHIP", ZEND_SPACESHIP);
15621570
ast_register_flag_constant("BINARY_COALESCE", AST_BINARY_COALESCE);
1571+
ast_register_flag_constant("BINARY_PIPE", AST_BINARY_PIPE);
15631572

15641573
ast_register_flag_constant("EXEC_EVAL", ZEND_EVAL);
15651574
ast_register_flag_constant("EXEC_INCLUDE", ZEND_INCLUDE);

ast_stub.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
const AST_METHOD = 69;
3838
const AST_ARROW_FUNC = 71;
3939
const AST_CLASS = 70;
40+
const AST_PROPERTY_HOOK = 127;
4041
const AST_MAGIC_CONST = 0;
4142
const AST_TYPE = 1;
4243
const AST_CALLABLE_CONVERT = 3;
@@ -69,6 +70,7 @@
6970
const AST_BREAK = 286;
7071
const AST_CONTINUE = 287;
7172
const AST_CLASS_NAME = 276;
73+
const AST_PROPERTY_HOOK_SHORT_BODY = 510;
7274
const AST_CLASS_CONST_GROUP = 777;
7375
const AST_DIM = 512;
7476
const AST_PROP = 513;
@@ -129,9 +131,6 @@
129131
const MODIFIER_ABSTRACT = 64;
130132
const MODIFIER_FINAL = 32;
131133
const MODIFIER_READONLY = 128;
132-
const MODIFIER_PUBLIC_SET = 1024;
133-
const MODIFIER_PROTECTED_SET = 2048;
134-
const MODIFIER_PRIVATE_SET = 4096;
135134
const PARAM_MODIFIER_PUBLIC = 1;
136135
const PARAM_MODIFIER_PROTECTED = 2;
137136
const PARAM_MODIFIER_PRIVATE = 4;
@@ -202,14 +201,14 @@
202201
const USE_NORMAL = 1;
203202
const USE_FUNCTION = 2;
204203
const USE_CONST = 4;
205-
const MAGIC_LINE = 379;
206-
const MAGIC_FILE = 380;
207-
const MAGIC_DIR = 381;
208-
const MAGIC_NAMESPACE = 386;
209-
const MAGIC_FUNCTION = 385;
210-
const MAGIC_METHOD = 384;
211-
const MAGIC_CLASS = 382;
212-
const MAGIC_TRAIT = 383;
204+
const MAGIC_LINE = 343;
205+
const MAGIC_FILE = 344;
206+
const MAGIC_DIR = 345;
207+
const MAGIC_NAMESPACE = 350;
208+
const MAGIC_FUNCTION = 349;
209+
const MAGIC_METHOD = 348;
210+
const MAGIC_CLASS = 346;
211+
const MAGIC_TRAIT = 347;
213212
const ARRAY_SYNTAX_LIST = 1;
214213
const ARRAY_SYNTAX_LONG = 2;
215214
const ARRAY_SYNTAX_SHORT = 3;

tests/metadata.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ AST_CLASS_CONST: []
100100
AST_ASSIGN: []
101101
AST_ASSIGN_REF: []
102102
AST_ASSIGN_OP: [BINARY_BITWISE_OR, BINARY_BITWISE_AND, BINARY_BITWISE_XOR, BINARY_CONCAT, BINARY_ADD, BINARY_SUB, BINARY_MUL, BINARY_DIV, BINARY_MOD, BINARY_POW, BINARY_SHIFT_LEFT, BINARY_SHIFT_RIGHT, BINARY_COALESCE]
103-
AST_BINARY_OP: [BINARY_BITWISE_OR, BINARY_BITWISE_AND, BINARY_BITWISE_XOR, BINARY_CONCAT, BINARY_ADD, BINARY_SUB, BINARY_MUL, BINARY_DIV, BINARY_MOD, BINARY_POW, BINARY_SHIFT_LEFT, BINARY_SHIFT_RIGHT, BINARY_COALESCE, BINARY_BOOL_AND, BINARY_BOOL_OR, BINARY_BOOL_XOR, BINARY_IS_IDENTICAL, BINARY_IS_NOT_IDENTICAL, BINARY_IS_EQUAL, BINARY_IS_NOT_EQUAL, BINARY_IS_SMALLER, BINARY_IS_SMALLER_OR_EQUAL, BINARY_IS_GREATER, BINARY_IS_GREATER_OR_EQUAL, BINARY_SPACESHIP]
103+
AST_BINARY_OP: [BINARY_BITWISE_OR, BINARY_BITWISE_AND, BINARY_BITWISE_XOR, BINARY_CONCAT, BINARY_ADD, BINARY_SUB, BINARY_MUL, BINARY_DIV, BINARY_MOD, BINARY_POW, BINARY_SHIFT_LEFT, BINARY_SHIFT_RIGHT, BINARY_COALESCE, BINARY_BOOL_AND, BINARY_BOOL_OR, BINARY_BOOL_XOR, BINARY_IS_IDENTICAL, BINARY_IS_NOT_IDENTICAL, BINARY_IS_EQUAL, BINARY_IS_NOT_EQUAL, BINARY_IS_SMALLER, BINARY_IS_SMALLER_OR_EQUAL, BINARY_IS_GREATER, BINARY_IS_GREATER_OR_EQUAL, BINARY_SPACESHIP, BINARY_PIPE]
104104
AST_ARRAY_ELEM: [ARRAY_ELEM_REF]
105105
AST_NEW: []
106106
AST_INSTANCEOF: []

0 commit comments

Comments
 (0)