File tree Expand file tree Collapse file tree 2 files changed +21
-2
lines changed
Expand file tree Collapse file tree 2 files changed +21
-2
lines changed Original file line number Diff line number Diff line change @@ -3294,11 +3294,12 @@ static zend_always_inline int _zend_update_type_info(
32943294 ZEND_ASSERT (j < 0 && "There should only be one use" );
32953295 }
32963296 }
3297- if ((tmp & MAY_BE_ARRAY ) && (tmp & MAY_BE_ARRAY_KEY_ANY )) {
3297+ if ((( tmp & MAY_BE_ARRAY ) && (tmp & MAY_BE_ARRAY_KEY_ANY )) || opline -> opcode == ZEND_FETCH_DIM_FUNC_ARG ) {
32983298 UPDATE_SSA_TYPE (tmp , ssa_op -> op1_def );
32993299 } else {
33003300 /* invalid key type */
3301- tmp = (tmp & (MAY_BE_RC1 |MAY_BE_RCN )) | (t1 & ~(MAY_BE_RC1 |MAY_BE_RCN ));
3301+ tmp = (tmp & (MAY_BE_RC1 |MAY_BE_RCN |MAY_BE_ARRAY )) |
3302+ (t1 & ~(MAY_BE_RC1 |MAY_BE_RCN |MAY_BE_UNDEF |MAY_BE_NULL |MAY_BE_FALSE ));
33023303 UPDATE_SSA_TYPE (tmp , ssa_op -> op1_def );
33033304 }
33043305 COPY_SSA_OBJ_TYPE (ssa_op -> op1_use , ssa_op -> op1_def );
Original file line number Diff line number Diff line change 1+ --TEST--
2+ Type inference 004: Type narrowing warning during type inference of ZEND_FETCH_DIM_W
3+ --INI--
4+ opcache.enable=1
5+ opcache.enable_cli=1
6+ opcache.optimization_level=-1
7+ --FILE--
8+ <?php
9+ function y () {
10+ for (;;){
11+ $ arr []->y = c;
12+ $ arr = c;
13+ }
14+ }
15+ ?>
16+ DONE
17+ --EXPECT--
18+ DONE
You can’t perform that action at this time.
0 commit comments