Bug #33996 (No information given for fatal error on passing invalid value to typed argument)
--INI--
error_reporting=4095
error_reporting=8191
--FILE--
<?php
class Foo
@ -26,4 +26,5 @@ FooTest(new Foo());
--EXPECTF--
Warning: Missing argument 1 for NormalTest(), called in %sbug33996.php on line 17 and defined in %sbug33996.php on line 12
Hi!
Catchable fatal error: Argument 1 must be an object of class Foo, called in %sbug33996.php on line 18 and defined in %sbug33996.php on line 7
Catchable fatal error: Argument 1 passed to FooTest() must be an object of class Foo, called in %sbug33996.php on line 18 and defined in %sbug33996.php on line 7
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must be an object of class %v, called in %s on line %d and defined",arg_num,fclass,fsep,fname,cur_arg_info->class_name,ptr->op_array->filename,ptr->opline->lineno);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must be an object of class %v, called in %s on line %d and defined",arg_num,fclass,fsep,fname,cur_arg_info->class_name,ptr->op_array->filename,ptr->opline->lineno);
}else{
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must be an object of class %v",arg_num,fclass,fsep,fname,cur_arg_info->class_name);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must be an object of class %v",arg_num,fclass,fsep,fname,cur_arg_info->class_name);
}
}
switch(Z_TYPE_P(arg)){
caseIS_NULL:
if(!cur_arg_info->allow_null){
if(ptr&&ptr->op_array){
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must not be null, called in %s on line %d and defined",arg_num,fclass,fsep,fname,ptr->op_array->filename,ptr->opline->lineno);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must not be null, called in %s on line %d and defined",arg_num,fclass,fsep,fname,ptr->op_array->filename,ptr->opline->lineno);
}else{
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must not be null",arg_num,fclass,fsep,fname);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must not be null",arg_num,fclass,fsep,fname);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must %s %v, called in %s on line %d and defined",arg_num,fclass,fsep,fname,error_msg,ce->name,ptr->op_array->filename,ptr->opline->lineno);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must %s %v, called in %s on line %d and defined",arg_num,fclass,fsep,fname,error_msg,ce->name,ptr->op_array->filename,ptr->opline->lineno);
}else{
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must %s %v",arg_num,fclass,fsep,fname,error_msg,ce->name);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must %s %v",arg_num,fclass,fsep,fname,error_msg,ce->name);
}
}
}
break;
default:
if(ptr&&ptr->op_array){
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must be an object of class %v, called in %s on line %d and defined",arg_num,fclass,fsep,fname,cur_arg_info->class_name,ptr->op_array->filename,ptr->opline->lineno);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must be an object of class %v, called in %s on line %d and defined",arg_num,fclass,fsep,fname,cur_arg_info->class_name,ptr->op_array->filename,ptr->opline->lineno);
}else{
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must be an object of class %v",arg_num,fclass,fsep,fname,cur_arg_info->class_name);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must be an object of class %v",arg_num,fclass,fsep,fname,cur_arg_info->class_name);
}
break;
}
}elseif(cur_arg_info->array_type_hint){
if(!arg){
if(ptr&&ptr->op_array){
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must be an array, called in %s on line %d and defined",arg_num,fclass,fsep,fname,ptr->op_array->filename,ptr->opline->lineno);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must be an array, called in %s on line %d and defined",arg_num,fclass,fsep,fname,ptr->op_array->filename,ptr->opline->lineno);
}else{
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must be an array",arg_num,fclass,fsep,fname);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must be an array",arg_num,fclass,fsep,fname);
}
}
switch(Z_TYPE_P(arg)){
caseIS_NULL:
if(!cur_arg_info->allow_null){
if(ptr&&ptr->op_array){
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must not be null, called in %s on line %d and defined",arg_num,fclass,fsep,fname,ptr->op_array->filename,ptr->opline->lineno);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must not be null, called in %s on line %d and defined",arg_num,fclass,fsep,fname,ptr->op_array->filename,ptr->opline->lineno);
}else{
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must not be null",arg_num,fclass,fsep,fname);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must not be null",arg_num,fclass,fsep,fname);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must be an array, called in %s on line %d and defined",arg_num,fclass,fsep,fname,ptr->op_array->filename,ptr->opline->lineno);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must be an array, called in %s on line %d and defined",arg_num,fclass,fsep,fname,ptr->op_array->filename,ptr->opline->lineno);
}else{
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %s%s%s() must be an array",arg_num,fclass,fsep,fname);
zend_error(E_RECOVERABLE_ERROR,"Argument %d passed to %v%s%v() must be an array",arg_num,fclass,fsep,fname);