Improve error message of foreach

Closes GH-5240
This commit is contained in:
Máté Kocsis 2020-03-05 16:56:42 +01:00
parent c5f091e47f
commit f44dd16b7a
No known key found for this signature in database
GPG key ID: FD055E41728BF310
9 changed files with 24 additions and 24 deletions

View file

@ -10,5 +10,5 @@ echo "Done\n";
--EXPECTF--
Warning: Undefined variable: a in %s on line %d
Warning: Invalid argument supplied for foreach() in %s on line %d
Warning: foreach() argument must be of type array|object, null given in %s on line %d
Done

View file

@ -6188,7 +6188,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET_R, CONST|TMP|VAR|CV, JMP_ADDR)
}
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array_ptr)));
ZVAL_UNDEF(EX_VAR(opline->result.var));
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
FREE_OP1();
@ -6277,7 +6277,7 @@ ZEND_VM_COLD_CONST_HANDLER(125, ZEND_FE_RESET_RW, CONST|TMP|VAR|CV, JMP_ADDR)
}
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array_ptr)));
ZVAL_UNDEF(EX_VAR(opline->result.var));
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
if (OP1_TYPE == IS_VAR) {
@ -6587,7 +6587,7 @@ ZEND_VM_HANDLER(126, ZEND_FE_FETCH_RW, VAR, ANY, JMP_ADDR)
value_type = Z_TYPE_INFO_P(value);
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array)));
if (UNEXPECTED(EG(exception))) {
UNDEF_RESULT();
HANDLE_EXCEPTION();

View file

@ -4175,7 +4175,7 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_
}
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array_ptr)));
ZVAL_UNDEF(EX_VAR(opline->result.var));
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
if (IS_CONST == IS_VAR) {
@ -17685,7 +17685,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_TMP_HANDLER(ZE
}
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array_ptr)));
ZVAL_UNDEF(EX_VAR(opline->result.var));
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
@ -17773,7 +17773,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_TMP_HANDLER(Z
}
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array_ptr)));
ZVAL_UNDEF(EX_VAR(opline->result.var));
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
if (IS_TMP_VAR == IS_VAR) {
@ -20345,7 +20345,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_VAR_HANDLER(ZE
}
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array_ptr)));
ZVAL_UNDEF(EX_VAR(opline->result.var));
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
@ -20434,7 +20434,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_VAR_HANDLER(Z
}
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array_ptr)));
ZVAL_UNDEF(EX_VAR(opline->result.var));
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
if (IS_VAR == IS_VAR) {
@ -20744,7 +20744,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER(Z
value_type = Z_TYPE_INFO_P(value);
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array)));
if (UNEXPECTED(EG(exception))) {
UNDEF_RESULT();
HANDLE_EXCEPTION();
@ -36334,7 +36334,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CV_HANDLER(ZEN
}
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array_ptr)));
ZVAL_UNDEF(EX_VAR(opline->result.var));
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
@ -36422,7 +36422,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_CV_HANDLER(ZE
}
}
} else {
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_get_type_by_const(Z_TYPE_P(array_ptr)));
ZVAL_UNDEF(EX_VAR(opline->result.var));
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
if (IS_CV == IS_VAR) {

View file

@ -24,5 +24,5 @@ SimpleXMLElement Object
(
)
Warning: Invalid argument supplied for foreach() in %sbug38347.php on line 6
Warning: foreach() argument must be of type array|object, null given in %sbug38347.php on line 6
Done

View file

@ -58,7 +58,7 @@ for ($sxe->rewind(); $sxe->valid(); $sxe->next()) {
?>
--EXPECTF--
Warning: Invalid argument supplied for foreach() in %ssxe_003.php on line %d
Warning: foreach() argument must be of type array|object, null given in %ssxe_003.php on line %d
===RESET===
bool(true)
string(5) "elem1"

View file

@ -13,5 +13,5 @@ echo 'OK';
--EXPECTF--
Warning: Undefined property: foo::$x in %s on line %d
Warning: Invalid argument supplied for foreach() in %sbug27468.php on line 4
Warning: foreach() argument must be of type array|object, null given in %sbug27468.php on line 4
OK

View file

@ -67,10 +67,10 @@ echo "===DONE===";
123
Warning: Undefined property: test::$foobar in %s on line %d
Warning: Invalid argument supplied for foreach() in %s on line %d
Warning: foreach() argument must be of type array|object, null given in %s on line %d
Warning: Invalid argument supplied for foreach() in %s on line %d
Warning: foreach() argument must be of type array|object, string given in %s on line %d
Warning: Invalid argument supplied for foreach() in %s on line %d
Warning: foreach() argument must be of type array|object, string given in %s on line %d
123
===DONE===

View file

@ -13,4 +13,4 @@ foreach($var['nosuchkey'] as $v) {
--EXPECTF--
Warning: Illegal string offset 'nosuchkey' in %sbug29566.php on line %d
Warning: Invalid argument supplied for foreach() in %sbug29566.php on line %d
Warning: foreach() argument must be of type array|object, string given in %sbug29566.php on line %d

View file

@ -33,13 +33,13 @@ echo "done.\n";
--EXPECTF--
Not an array.
Warning: Invalid argument supplied for foreach() in %s on line 4
Warning: foreach() argument must be of type array|object, bool given in %s on line 4
Warning: Invalid argument supplied for foreach() in %s on line 9
Warning: foreach() argument must be of type array|object, null given in %s on line 9
Warning: Invalid argument supplied for foreach() in %s on line 14
Warning: foreach() argument must be of type array|object, int given in %s on line 14
Warning: Invalid argument supplied for foreach() in %s on line 19
Warning: foreach() argument must be of type array|object, float given in %s on line 19
Warning: Invalid argument supplied for foreach() in %s on line 24
Warning: foreach() argument must be of type array|object, string given in %s on line 24
done.