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 @@ -3355,11 +3355,12 @@ static zend_always_inline zend_result _zend_update_type_info(
3355
3355
ZEND_ASSERT (j < 0 && "There should only be one use" );
3356
3356
}
3357
3357
}
3358
- if ((tmp & MAY_BE_ARRAY ) && (tmp & MAY_BE_ARRAY_KEY_ANY )) {
3358
+ if ((( tmp & MAY_BE_ARRAY ) && (tmp & MAY_BE_ARRAY_KEY_ANY )) || opline -> opcode == ZEND_FETCH_DIM_FUNC_ARG ) {
3359
3359
UPDATE_SSA_TYPE (tmp , ssa_op -> op1_def );
3360
3360
} else {
3361
3361
/* invalid key type */
3362
- tmp = (tmp & (MAY_BE_RC1 |MAY_BE_RCN )) | (t1 & ~(MAY_BE_RC1 |MAY_BE_RCN ));
3362
+ tmp = (tmp & (MAY_BE_RC1 |MAY_BE_RCN |MAY_BE_ARRAY )) |
3363
+ (t1 & ~(MAY_BE_RC1 |MAY_BE_RCN |MAY_BE_UNDEF |MAY_BE_NULL |MAY_BE_FALSE ));
3363
3364
UPDATE_SSA_TYPE (tmp , ssa_op -> op1_def );
3364
3365
}
3365
3366
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