@@ -287,7 +287,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
287287%type <ast> enum_declaration_statement enum_backing_type enum_case enum_case_expr
288288%type <ast> function_name non_empty_member_modifiers
289289%type <ast> property_hook property_hook_list optional_property_hook_list hooked_property property_hook_body
290- %type <ast> optional_parameter_list clone_argument_list non_empty_clone_argument_list
290+ %type <ast> optional_parameter_list clone_argument_list non_empty_clone_argument_list non_empty_array_function_argument_list array_function_argument
291291
292292%type <num> returns_ref function fn is_reference is_variadic property_modifiers property_hook_modifiers
293293%type <num> method_modifiers class_const_modifiers member_modifier optional_cpp_modifiers
@@ -1494,11 +1494,33 @@ ctor_arguments:
14941494
14951495dereferenceable_scalar :
14961496 T_ARRAY ' (' array_pair_list ' )' { $$ = $3 ; $$ ->attr = ZEND_ARRAY_SYNTAX_LONG; }
1497+ | T_ARRAY ' (' non_empty_array_function_argument_list possible_comma ' )'
1498+ {
1499+ zend_ast *name = zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_ARRAY));
1500+ name->attr = ZEND_NAME_FQ;
1501+ $$ = zend_ast_create(ZEND_AST_CALL, name, $3 );
1502+ }
14971503 | ' [' array_pair_list ' ]' { $$ = $2 ; $$ ->attr = ZEND_ARRAY_SYNTAX_SHORT; }
14981504 | T_CONSTANT_ENCAPSED_STRING { $$ = $1 ; }
14991505 | ' "' encaps_list ' "' { $$ = $2 ; }
15001506;
15011507
1508+ non_empty_array_function_argument_list :
1509+ array_function_argument
1510+ { $$ = zend_ast_create_arg_list(1 , ZEND_AST_ARG_LIST, $1 ); }
1511+ | non_empty_array_function_argument_list ' ,' array_function_argument
1512+ { $$ = zend_ast_arg_list_add($1 , $3 ); }
1513+ ;
1514+
1515+ array_function_argument :
1516+ identifier ' :' expr
1517+ { $$ = zend_ast_create(ZEND_AST_NAMED_ARG, $1 , $3 ); }
1518+ | T_ELLIPSIS
1519+ { $$ = zend_ast_create_ex(ZEND_AST_PLACEHOLDER_ARG, ZEND_PLACEHOLDER_VARIADIC); }
1520+ | identifier ' :' ' ?'
1521+ { $$ = zend_ast_create(ZEND_AST_NAMED_ARG, $1 , zend_ast_create(ZEND_AST_PLACEHOLDER_ARG)); }
1522+ ;
1523+
15021524scalar :
15031525 T_LNUMBER { $$ = $1 ; }
15041526 | T_DNUMBER { $$ = $1 ; }
0 commit comments