File tree Expand file tree Collapse file tree 1 file changed +9
-0
lines changed Expand file tree Collapse file tree 1 file changed +9
-0
lines changed Original file line number Diff line number Diff line change @@ -2996,6 +2996,7 @@ static zend_always_inline int _zend_update_type_info(
2996
2996
break ;
2997
2997
case ZEND_RECV :
2998
2998
case ZEND_RECV_INIT :
2999
+ case ZEND_RECV_VARIADIC :
2999
3000
{
3000
3001
/* Typehinting */
3001
3002
zend_arg_info * arg_info = & op_array -> arg_info [opline -> op1 .num - 1 ];
@@ -3006,6 +3007,14 @@ static zend_always_inline int _zend_update_type_info(
3006
3007
tmp |= MAY_BE_REF ;
3007
3008
}
3008
3009
3010
+ if (opline -> opcode == ZEND_RECV_VARIADIC ) {
3011
+ uint32_t elem_type = tmp & MAY_BE_REF
3012
+ ? MAY_BE_ARRAY_OF_ANY |MAY_BE_ARRAY_OF_REF
3013
+ : (tmp & MAY_BE_ANY ) << MAY_BE_ARRAY_SHIFT ;
3014
+ tmp = MAY_BE_RC1 |MAY_BE_RCN |MAY_BE_ARRAY |MAY_BE_ARRAY_KEY_ANY |elem_type ;
3015
+ ce = NULL ;
3016
+ }
3017
+
3009
3018
UPDATE_SSA_TYPE (tmp , ssa_op -> result_def );
3010
3019
if (ce ) {
3011
3020
UPDATE_SSA_OBJ_TYPE (ce , 1 , ssa_op -> result_def );
You can’t perform that action at this time.
0 commit comments