Improve type error messages when an object is given

From now on, we always display the given object's type instead of just reporting "object".
Additionally, make the format of return type errors match the format of argument errors.

Closes GH-5625
This commit is contained in:
Máté Kocsis 2020-05-25 19:28:15 +02:00
parent 38c85efe83
commit fbe30592d6
No known key found for this signature in database
GPG key ID: FD055E41728BF310
134 changed files with 751 additions and 750 deletions

View file

@ -20,9 +20,9 @@ var_dump($c);
echo "Done\n";
?>
--EXPECTF--
Exception: Unsupported operand types: array + object
Exception: Unsupported operand types: array + stdClass
Fatal error: Uncaught TypeError: Unsupported operand types: array + object in %s:%d
Fatal error: Uncaught TypeError: Unsupported operand types: array + stdClass in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d

View file

@ -20,9 +20,9 @@ var_dump($c);
echo "Done\n";
?>
--EXPECTF--
Exception: Unsupported operand types: object + array
Exception: Unsupported operand types: stdClass + array
Fatal error: Uncaught TypeError: Unsupported operand types: object + array in %s:%d
Fatal error: Uncaught TypeError: Unsupported operand types: stdClass + array in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d

View file

@ -64,6 +64,6 @@ try {
--EXPECT--
Hello World!
===NONE===
Return value of NoneTest::__toString() must be of type string, none returned
NoneTest::__toString(): Return value must be of type string, none returned
===THROW===
This is an error!

View file

@ -16,4 +16,4 @@ try {
}
?>
--EXPECT--
Cannot increment object
Cannot increment ReflectionMethod

View file

@ -56,7 +56,7 @@ float(1.5)
NULL
bool(true)
bool(false)
Cannot decrement object
Cannot decrement stdClass
object(stdClass)#%d (0) {
}
Cannot decrement array

View file

@ -56,7 +56,7 @@ float(1.5)
NULL
bool(true)
bool(false)
Cannot decrement object
Cannot decrement stdClass
object(stdClass)#1 (0) {
}
Cannot decrement array

View file

@ -8,7 +8,7 @@ throw new Hello(new stdClass);
?>
--EXPECTF--
Fatal error: Uncaught TypeError: Exception::__construct(): Argument #1 ($message) must be of type string, object given in %s:%d
Fatal error: Uncaught TypeError: Exception::__construct(): Argument #1 ($message) must be of type string, stdClass given in %s:%d
Stack trace:
#0 %sexception_018.php(%d): Exception->__construct(Object(stdClass))
#1 {main}

View file

@ -7,7 +7,7 @@ throw new Exception(new stdClass);
?>
--EXPECTF--
Fatal error: Uncaught TypeError: Exception::__construct(): Argument #1 ($message) must be of type string, object given in %s:%d
Fatal error: Uncaught TypeError: Exception::__construct(): Argument #1 ($message) must be of type string, stdClass given in %s:%d
Stack trace:
#0 %sexception_019.php(%d): Exception->__construct(Object(stdClass))
#1 {main}

View file

@ -8,7 +8,7 @@ throw new MyErrorException(new stdClass);
?>
--EXPECTF--
Fatal error: Uncaught TypeError: ErrorException::__construct(): Argument #1 ($message) must be of type string, object given in %s:%d
Fatal error: Uncaught TypeError: ErrorException::__construct(): Argument #1 ($message) must be of type string, stdClass given in %s:%d
Stack trace:
#0 %sexception_020.php(%d): ErrorException->__construct(Object(stdClass))
#1 {main}

View file

@ -8,7 +8,7 @@ throw new Hello(new stdClass);
?>
--EXPECTF--
Fatal error: Uncaught TypeError: Error::__construct(): Argument #1 ($message) must be of type string, object given in %s:%d
Fatal error: Uncaught TypeError: Error::__construct(): Argument #1 ($message) must be of type string, stdClass given in %s:%d
Stack trace:
#0 %sexception_021.php(%d): Error->__construct(Object(stdClass))
#1 {main}

View file

@ -7,7 +7,7 @@ throw new Error(new stdClass);
?>
--EXPECTF--
Fatal error: Uncaught TypeError: Error::__construct(): Argument #1 ($message) must be of type string, object given in %s:%d
Fatal error: Uncaught TypeError: Error::__construct(): Argument #1 ($message) must be of type string, stdClass given in %s:%d
Stack trace:
#0 %sexception_022.php(%d): Error->__construct(Object(stdClass))
#1 {main}

View file

@ -12,7 +12,7 @@ $gen->throw(new stdClass);
?>
--EXPECTF--
Fatal error: Uncaught TypeError: Generator::throw(): Argument #1 ($exception) must be of type Throwable, object given in %s:%d
Fatal error: Uncaught TypeError: Generator::throw(): Argument #1 ($exception) must be of type Throwable, stdClass given in %s:%d
Stack trace:
#0 %s(%d): Generator->throw(Object(stdClass))
#1 {main}

View file

@ -56,7 +56,7 @@ float(3.5)
int(1)
bool(true)
bool(false)
Cannot increment object
Cannot increment stdClass
object(stdClass)#%d (0) {
}
Cannot increment array

View file

@ -18,7 +18,7 @@ new bar(new \stdclass);
--EXPECTF--
NULL
Fatal error: Uncaught TypeError: foo\bar::__construct(): Argument #1 ($x) must be of type ?array, object given, called in %s:%d
Fatal error: Uncaught TypeError: foo\bar::__construct(): Argument #1 ($x) must be of type ?array, stdClass given, called in %s:%d
Stack trace:
#0 %s(%d): foo\bar->__construct(Object(stdClass))
#1 {main}

View file

@ -18,7 +18,7 @@ $three = new class extends Two {
};
$three->a();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of Two@anonymous::a() must be of type object, int returned in %s:%d
Fatal error: Uncaught TypeError: Two@anonymous::a(): Return value must be of type object, int returned in %s:%d
Stack trace:
#0 %s(%d): Two@anonymous->a()
#1 {main}

View file

@ -8,7 +8,7 @@ function a() : object {
}
a();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of a() must be of type object, int returned in %s:4
Fatal error: Uncaught TypeError: a(): Return value must be of type object, int returned in %s:%d
Stack trace:
#0 %s(6): a()
#1 {main}

View file

@ -18,7 +18,7 @@ $three = new class extends Two {
};
$three->a();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of Two@anonymous::a() must be of type object, int returned in %s:%d
Fatal error: Uncaught TypeError: Two@anonymous::a(): Return value must be of type object, int returned in %s:%d
Stack trace:
#0 %s(%d): Two@anonymous->a()
#1 {main}

View file

@ -18,7 +18,7 @@ $three = new class implements Two {
};
$three->a();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of Two@anonymous::a() must be of type object, int returned in %s:%d
Fatal error: Uncaught TypeError: Two@anonymous::a(): Return value must be of type object, int returned in %s:%d
Stack trace:
#0 %s(%d): Two@anonymous->a()
#1 {main}

File diff suppressed because it is too large Load diff

View file

@ -7,7 +7,7 @@ function test1() : array {
test1();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of test1() must be of type array, none returned in %s:%d
Fatal error: Uncaught TypeError: test1(): Return value must be of type array, none returned in %s:%d
Stack trace:
#0 %s(%d): test1()
#1 {main}

View file

@ -8,7 +8,7 @@ function test1() : array {
test1();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of test1() must be of type array, null returned in %s:%d
Fatal error: Uncaught TypeError: test1(): Return value must be of type array, null returned in %s:%d
Stack trace:
#0 %s(%d): test1()
#1 {main}

View file

@ -7,7 +7,7 @@ function test1() : array {
}
test1();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of test1() must be of type array, int returned in %s:%d
Fatal error: Uncaught TypeError: test1(): Return value must be of type array, int returned in %s:%d
Stack trace:
#0 %s(%d): test1()
#1 {main}

View file

@ -8,7 +8,7 @@ function test1() : array {
test1();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of test1() must be of type array, string returned in %s:%d
Fatal error: Uncaught TypeError: test1(): Return value must be of type array, string returned in %s:%d
Stack trace:
#0 %s(%d): test1()
#1 {main}

View file

@ -13,7 +13,7 @@ class qux {
$qux = new qux();
$qux->foo();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of qux::foo() must be of type foo, qux returned in %s:%d
Fatal error: Uncaught TypeError: qux::foo(): Return value must be of type foo, qux returned in %s:%d
Stack trace:
#0 %s(%d): qux->foo()
#1 {main}

View file

@ -9,7 +9,7 @@ function &foo(array &$in) : array {
$array = [1, 2, 3];
var_dump(foo($array));
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of foo() must be of type array, null returned in %s:%d
Fatal error: Uncaught TypeError: foo(): Return value must be of type array, null returned in %s:%d
Stack trace:
#0 %s(%d): foo(Array)
#1 {main}

View file

@ -14,7 +14,7 @@ class foo {
$baz = new foo();
var_dump($func=$baz->bar(), $func());
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of foo::{closure}() must be of type array, null returned in %s:%d
Fatal error: Uncaught TypeError: foo::{closure}(): Return value must be of type array, null returned in %s:%d
Stack trace:
#0 %s(%d): foo->{closure}()
#1 {main}

View file

@ -17,4 +17,4 @@ try {
?>
--EXPECTF--
Return value of foo() must be of type stdClass, array returned in %s on line %d
foo(): Return value must be of type stdClass, array returned in %s on line %d

View file

@ -21,7 +21,7 @@ Stack trace:
#0 %s(%d): foo()
#1 {main}
Next TypeError: Return value of foo() must be of type array, null returned in %s29.php:%d
Next TypeError: foo(): Return value must be of type array, null returned in %s:%d
Stack trace:
#0 %s(%d): foo()
#1 {main}

View file

@ -16,7 +16,7 @@ foo(0);
ok
ok
Fatal error: Uncaught TypeError: Return value of foo() must be of type ?array, int returned in %s030.php:3
Fatal error: Uncaught TypeError: foo(): Return value must be of type ?array, int returned in %s:%d
Stack trace:
#0 %s030.php(10): foo(0)
#1 {main}

View file

@ -16,4 +16,4 @@ try {
}
?>
--EXPECT--
string(64) "Return value of getNumber() must be of type int, string returned"
string(62) "getNumber(): Return value must be of type int, string returned"

View file

@ -16,7 +16,7 @@ function boom(): array {
boom();
?>
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of boom() must be of type array, null returned in %sbug71092.php:%d
Fatal error: Uncaught TypeError: boom(): Return value must be of type array, null returned in %s:%d
Stack trace:
#0 %s(%d): boom()
#1 {main}

View file

@ -10,5 +10,5 @@ if (!PHP_DEBUG) die('skip requires debug build');
<?php
zend_test_array_return();
?>
--EXPECTF--
Fatal error: Return value of zend_test_array_return() must be of type array, null returned in %s on line %d
--EXPECT--
Fatal error: zend_test_array_return(): Return value must be of type array, null returned in Unknown on line 0

View file

@ -9,7 +9,7 @@ function get_config(): array {
get_config();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of get_config() must be of type array, int returned in %s:%d
Fatal error: Uncaught TypeError: get_config(): Return value must be of type array, int returned in %s:%d
Stack trace:
#0 %s(%d): get_config()
#1 {main}

View file

@ -8,7 +8,7 @@ function foo(): DateTime {
foo();
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of foo() must be of type DateTime, null returned in %s:%d
Fatal error: Uncaught TypeError: foo(): Return value must be of type DateTime, null returned in %s:%d
Stack trace:
#0 %s(%d): foo()
#1 {main}

View file

@ -167,7 +167,7 @@ string(3) "bar"
string(11) "exception 1"
bool(true)
string(20) "false ? true : throw"
string(39) "Unsupported operand types: object + int"
string(42) "Unsupported operand types: Exception + int"
string(35) "throw $exception = new Exception();"
string(37) "throw $exception ??= new Exception();"
string(30) "throw null ?? new Exception();"

View file

@ -38,6 +38,6 @@ try {
?>
--EXPECTF--
Return value of C::test1() must be of type int, string returned
C::test1(): Return value must be of type int, string returned
C::test2(): Argument #1 ($arg) must be of type int, string given, called in %s on line %d
C::test3(): Argument #1 ($arg) must be of type int, string given, called in %s on line %d

View file

@ -29,4 +29,4 @@ array(0) {
}
object(Generator)#2 (0) {
}
Return value of baz() must be of type iterable, int returned
baz(): Return value must be of type iterable, int returned

View file

@ -15,6 +15,5 @@ try {
}
?>
--EXPECTF--
Return value of foo() must be of type mixed, none returned
--EXPECT--
foo(): Return value must be of type mixed, none returned

View file

@ -15,4 +15,4 @@ try {
?>
--EXPECT--
Return value of foo() must be of type mixed, none returned
foo(): Return value must be of type mixed, none returned

View file

@ -104,11 +104,11 @@ int(0)
*** Trying object(stdClass)#%s (0) {
}
*** Caught {closure}(): Argument #1 ($i) must be of type int, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($i) must be of type int, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#%s (0) {
}
*** Caught {closure}(): Argument #1 ($i) must be of type int, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($i) must be of type int, StringCapable given, called in %s on line %d
*** Trying resource(%d) of type (stream)
*** Caught {closure}(): Argument #1 ($i) must be of type int, resource given, called in %s on line %d
@ -158,11 +158,11 @@ float(0)
*** Trying object(stdClass)#%s (0) {
}
*** Caught {closure}(): Argument #1 ($f) must be of type float, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($f) must be of type float, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#%s (0) {
}
*** Caught {closure}(): Argument #1 ($f) must be of type float, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($f) must be of type float, StringCapable given, called in %s on line %d
*** Trying resource(%d) of type (stream)
*** Caught {closure}(): Argument #1 ($f) must be of type float, resource given, called in %s on line %d
@ -211,7 +211,7 @@ string(0) ""
*** Trying object(stdClass)#%s (0) {
}
*** Caught {closure}(): Argument #1 ($s) must be of type string, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($s) must be of type string, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#%s (0) {
}
@ -264,11 +264,11 @@ bool(false)
*** Trying object(stdClass)#%s (0) {
}
*** Caught {closure}(): Argument #1 ($b) must be of type bool, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($b) must be of type bool, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#%s (0) {
}
*** Caught {closure}(): Argument #1 ($b) must be of type bool, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($b) must be of type bool, StringCapable given, called in %s on line %d
*** Trying resource(%d) of type (stream)
*** Caught {closure}(): Argument #1 ($b) must be of type bool, resource given, called in %s on line %d

View file

@ -75,30 +75,30 @@ int(1)
E_NOTICE: A non well formed numeric value encountered on line %d
int(1)
*** Trying string(1) "a"
*** Caught Return value of {closure}() must be of type int, string returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, string returned in %s on line %d
*** Trying string(0) ""
*** Caught Return value of {closure}() must be of type int, string returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, string returned in %s on line %d
*** Trying int(2147483647)
int(2147483647)
*** Trying float(NAN)
*** Caught Return value of {closure}() must be of type int, float returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, float returned in %s on line %d
*** Trying bool(true)
int(1)
*** Trying bool(false)
int(0)
*** Trying NULL
*** Caught Return value of {closure}() must be of type int, null returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, null returned in %s on line %d
*** Trying array(0) {
}
*** Caught Return value of {closure}() must be of type int, array returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, array returned in %s on line %d
*** Trying object(stdClass)#6 (0) {
}
*** Caught Return value of {closure}() must be of type int, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, stdClass returned in %s on line %d
*** Trying object(StringCapable)#7 (0) {
}
*** Caught Return value of {closure}() must be of type int, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, StringCapable returned in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught Return value of {closure}() must be of type int, resource returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, resource returned in %s on line %d
Testing 'float' type:
*** Trying int(1)
@ -113,9 +113,9 @@ float(1.5)
E_NOTICE: A non well formed numeric value encountered on line %d
float(1)
*** Trying string(1) "a"
*** Caught Return value of {closure}() must be of type float, string returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, string returned in %s on line %d
*** Trying string(0) ""
*** Caught Return value of {closure}() must be of type float, string returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, string returned in %s on line %d
*** Trying int(2147483647)
float(2147483647)
*** Trying float(NAN)
@ -125,18 +125,18 @@ float(1)
*** Trying bool(false)
float(0)
*** Trying NULL
*** Caught Return value of {closure}() must be of type float, null returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, null returned in %s on line %d
*** Trying array(0) {
}
*** Caught Return value of {closure}() must be of type float, array returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, array returned in %s on line %d
*** Trying object(stdClass)#6 (0) {
}
*** Caught Return value of {closure}() must be of type float, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, stdClass returned in %s on line %d
*** Trying object(StringCapable)#7 (0) {
}
*** Caught Return value of {closure}() must be of type float, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, StringCapable returned in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught Return value of {closure}() must be of type float, resource returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, resource returned in %s on line %d
Testing 'string' type:
*** Trying int(1)
@ -162,18 +162,18 @@ string(1) "1"
*** Trying bool(false)
string(0) ""
*** Trying NULL
*** Caught Return value of {closure}() must be of type string, null returned in %s on line %d
*** Caught {closure}(): Return value must be of type string, null returned in %s on line %d
*** Trying array(0) {
}
*** Caught Return value of {closure}() must be of type string, array returned in %s on line %d
*** Caught {closure}(): Return value must be of type string, array returned in %s on line %d
*** Trying object(stdClass)#6 (0) {
}
*** Caught Return value of {closure}() must be of type string, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type string, stdClass returned in %s on line %d
*** Trying object(StringCapable)#7 (0) {
}
string(6) "foobar"
*** Trying resource(5) of type (stream)
*** Caught Return value of {closure}() must be of type string, resource returned in %s on line %d
*** Caught {closure}(): Return value must be of type string, resource returned in %s on line %d
Testing 'bool' type:
*** Trying int(1)
@ -199,17 +199,17 @@ bool(true)
*** Trying bool(false)
bool(false)
*** Trying NULL
*** Caught Return value of {closure}() must be of type bool, null returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, null returned in %s on line %d
*** Trying array(0) {
}
*** Caught Return value of {closure}() must be of type bool, array returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, array returned in %s on line %d
*** Trying object(stdClass)#6 (0) {
}
*** Caught Return value of {closure}() must be of type bool, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, stdClass returned in %s on line %d
*** Trying object(StringCapable)#7 (0) {
}
*** Caught Return value of {closure}() must be of type bool, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, StringCapable returned in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught Return value of {closure}() must be of type bool, resource returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, resource returned in %s on line %d
Done

View file

@ -75,30 +75,30 @@ int(1)
E_NOTICE: A non well formed numeric value encountered on line %d
int(1)
*** Trying string(1) "a"
*** Caught Return value of {closure}() must be of type int, string returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, string returned in %s on line %d
*** Trying string(0) ""
*** Caught Return value of {closure}() must be of type int, string returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, string returned in %s on line %d
*** Trying int(9223372036854775807)
int(9223372036854775807)
*** Trying float(NAN)
*** Caught Return value of {closure}() must be of type int, float returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, float returned in %s on line %d
*** Trying bool(true)
int(1)
*** Trying bool(false)
int(0)
*** Trying NULL
*** Caught Return value of {closure}() must be of type int, null returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, null returned in %s on line %d
*** Trying array(0) {
}
*** Caught Return value of {closure}() must be of type int, array returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, array returned in %s on line %d
*** Trying object(stdClass)#6 (0) {
}
*** Caught Return value of {closure}() must be of type int, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, stdClass returned in %s on line %d
*** Trying object(StringCapable)#7 (0) {
}
*** Caught Return value of {closure}() must be of type int, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, StringCapable returned in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught Return value of {closure}() must be of type int, resource returned in %s on line %d
*** Caught {closure}(): Return value must be of type int, resource returned in %s on line %d
Testing 'float' type:
*** Trying int(1)
@ -113,9 +113,9 @@ float(1.5)
E_NOTICE: A non well formed numeric value encountered on line %d
float(1)
*** Trying string(1) "a"
*** Caught Return value of {closure}() must be of type float, string returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, string returned in %s on line %d
*** Trying string(0) ""
*** Caught Return value of {closure}() must be of type float, string returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, string returned in %s on line %d
*** Trying int(9223372036854775807)
float(9.223372036854776E+18)
*** Trying float(NAN)
@ -125,18 +125,18 @@ float(1)
*** Trying bool(false)
float(0)
*** Trying NULL
*** Caught Return value of {closure}() must be of type float, null returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, null returned in %s on line %d
*** Trying array(0) {
}
*** Caught Return value of {closure}() must be of type float, array returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, array returned in %s on line %d
*** Trying object(stdClass)#6 (0) {
}
*** Caught Return value of {closure}() must be of type float, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, stdClass returned in %s on line %d
*** Trying object(StringCapable)#7 (0) {
}
*** Caught Return value of {closure}() must be of type float, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, StringCapable returned in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught Return value of {closure}() must be of type float, resource returned in %s on line %d
*** Caught {closure}(): Return value must be of type float, resource returned in %s on line %d
Testing 'string' type:
*** Trying int(1)
@ -162,18 +162,18 @@ string(1) "1"
*** Trying bool(false)
string(0) ""
*** Trying NULL
*** Caught Return value of {closure}() must be of type string, null returned in %s on line %d
*** Caught {closure}(): Return value must be of type string, null returned in %s on line %d
*** Trying array(0) {
}
*** Caught Return value of {closure}() must be of type string, array returned in %s on line %d
*** Caught {closure}(): Return value must be of type string, array returned in %s on line %d
*** Trying object(stdClass)#6 (0) {
}
*** Caught Return value of {closure}() must be of type string, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type string, stdClass returned in %s on line %d
*** Trying object(StringCapable)#7 (0) {
}
string(6) "foobar"
*** Trying resource(5) of type (stream)
*** Caught Return value of {closure}() must be of type string, resource returned in %s on line %d
*** Caught {closure}(): Return value must be of type string, resource returned in %s on line %d
Testing 'bool' type:
*** Trying int(1)
@ -199,17 +199,17 @@ bool(true)
*** Trying bool(false)
bool(false)
*** Trying NULL
*** Caught Return value of {closure}() must be of type bool, null returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, null returned in %s on line %d
*** Trying array(0) {
}
*** Caught Return value of {closure}() must be of type bool, array returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, array returned in %s on line %d
*** Trying object(stdClass)#6 (0) {
}
*** Caught Return value of {closure}() must be of type bool, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, stdClass returned in %s on line %d
*** Trying object(StringCapable)#7 (0) {
}
*** Caught Return value of {closure}() must be of type bool, object returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, StringCapable returned in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught Return value of {closure}() must be of type bool, resource returned in %s on line %d
*** Caught {closure}(): Return value must be of type bool, resource returned in %s on line %d
Done

View file

@ -98,11 +98,11 @@ int(2147483647)
*** Trying object(stdClass)#5 (0) {
}
*** Caught {closure}(): Argument #1 ($i) must be of type int, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($i) must be of type int, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#6 (0) {
}
*** Caught {closure}(): Argument #1 ($i) must be of type int, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($i) must be of type int, StringCapable given, called in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($i) must be of type int, resource given, called in %s on line %d
@ -151,11 +151,11 @@ float(NAN)
*** Trying object(stdClass)#5 (0) {
}
*** Caught {closure}(): Argument #1 ($f) must be of type float, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($f) must be of type float, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#6 (0) {
}
*** Caught {closure}(): Argument #1 ($f) must be of type float, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($f) must be of type float, StringCapable given, called in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($f) must be of type float, resource given, called in %s on line %d
@ -204,11 +204,11 @@ string(0) ""
*** Trying object(stdClass)#5 (0) {
}
*** Caught {closure}(): Argument #1 ($s) must be of type string, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($s) must be of type string, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#6 (0) {
}
*** Caught {closure}(): Argument #1 ($s) must be of type string, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($s) must be of type string, StringCapable given, called in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($s) must be of type string, resource given, called in %s on line %d
@ -257,11 +257,11 @@ bool(false)
*** Trying object(stdClass)#5 (0) {
}
*** Caught {closure}(): Argument #1 ($b) must be of type bool, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($b) must be of type bool, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#6 (0) {
}
*** Caught {closure}(): Argument #1 ($b) must be of type bool, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($b) must be of type bool, StringCapable given, called in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($b) must be of type bool, resource given, called in %s on line %d

View file

@ -98,11 +98,11 @@ int(9223372036854775807)
*** Trying object(stdClass)#5 (0) {
}
*** Caught {closure}(): Argument #1 ($i) must be of type int, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($i) must be of type int, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#6 (0) {
}
*** Caught {closure}(): Argument #1 ($i) must be of type int, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($i) must be of type int, StringCapable given, called in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($i) must be of type int, resource given, called in %s on line %d
@ -151,11 +151,11 @@ float(NAN)
*** Trying object(stdClass)#5 (0) {
}
*** Caught {closure}(): Argument #1 ($f) must be of type float, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($f) must be of type float, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#6 (0) {
}
*** Caught {closure}(): Argument #1 ($f) must be of type float, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($f) must be of type float, StringCapable given, called in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($f) must be of type float, resource given, called in %s on line %d
@ -204,11 +204,11 @@ string(0) ""
*** Trying object(stdClass)#5 (0) {
}
*** Caught {closure}(): Argument #1 ($s) must be of type string, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($s) must be of type string, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#6 (0) {
}
*** Caught {closure}(): Argument #1 ($s) must be of type string, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($s) must be of type string, StringCapable given, called in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($s) must be of type string, resource given, called in %s on line %d
@ -257,11 +257,11 @@ bool(false)
*** Trying object(stdClass)#5 (0) {
}
*** Caught {closure}(): Argument #1 ($b) must be of type bool, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($b) must be of type bool, stdClass given, called in %s on line %d
*** Trying object(StringCapable)#6 (0) {
}
*** Caught {closure}(): Argument #1 ($b) must be of type bool, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($b) must be of type bool, StringCapable given, called in %s on line %d
*** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($b) must be of type bool, resource given, called in %s on line %d

View file

@ -75,7 +75,7 @@ int(1)
*** Caught {closure}(): Argument #1 ($i) must be of type int, array given, called in %s on line %d
*** Trying object value
*** Caught {closure}(): Argument #1 ($i) must be of type int, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($i) must be of type int, stdClass given, called in %s on line %d
*** Trying resource value
*** Caught {closure}(): Argument #1 ($i) must be of type int, resource given, called in %s on line %d
@ -104,7 +104,7 @@ float(1)
*** Caught {closure}(): Argument #1 ($f) must be of type float, array given, called in %s on line %d
*** Trying object value
*** Caught {closure}(): Argument #1 ($f) must be of type float, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($f) must be of type float, stdClass given, called in %s on line %d
*** Trying resource value
*** Caught {closure}(): Argument #1 ($f) must be of type float, resource given, called in %s on line %d
@ -133,7 +133,7 @@ string(1) "1"
*** Caught {closure}(): Argument #1 ($s) must be of type string, array given, called in %s on line %d
*** Trying object value
*** Caught {closure}(): Argument #1 ($s) must be of type string, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($s) must be of type string, stdClass given, called in %s on line %d
*** Trying resource value
*** Caught {closure}(): Argument #1 ($s) must be of type string, resource given, called in %s on line %d
@ -162,7 +162,7 @@ bool(false)
*** Caught {closure}(): Argument #1 ($b) must be of type bool, array given, called in %s on line %d
*** Trying object value
*** Caught {closure}(): Argument #1 ($b) must be of type bool, object given, called in %s on line %d
*** Caught {closure}(): Argument #1 ($b) must be of type bool, stdClass given, called in %s on line %d
*** Trying resource value
*** Caught {closure}(): Argument #1 ($b) must be of type bool, resource given, called in %s on line %d

View file

@ -75,7 +75,7 @@ object(B)#3 (0) {
object(A)#3 (0) {
}
Return value of A::test2() must be of type B, A returned
A::test2(): Return value must be of type B, A returned
object(A)#3 (0) {
}
@ -84,8 +84,8 @@ object(C)#3 (0) {
object(A)#3 (0) {
}
Return value of A::test4() must be of type B|array, A returned
A::test4(): Return value must be of type B|array, A returned
Return value of {closure}() must be of type static, stdClass returned
{closure}(): Return value must be of type static, stdClass returned
object(A)#1 (0) {
}

View file

@ -31,7 +31,7 @@ object(P)#2 (0) {
object(P)#2 (0) {
}
Fatal error: Uncaught TypeError: Return value of C::test() must be of type P, C returned in %s:%d
Fatal error: Uncaught TypeError: C::test(): Return value must be of type P, C returned in %s:%d
Stack trace:
#0 %s(%d): C->test(Object(C))
#1 {main}

View file

@ -79,8 +79,8 @@ true => Argument ... must be of type int|float, bool given
false => Argument ... must be of type int|float, bool given
null => Argument ... must be of type int|float, null given
[] => Argument ... must be of type int|float, array given
new stdClass => Argument ... must be of type int|float, object given
new WithToString => Argument ... must be of type int|float, object given
new stdClass => Argument ... must be of type int|float, stdClass given
new WithToString => Argument ... must be of type int|float, WithToString given
Type int|float|false:
42 => 42
@ -95,8 +95,8 @@ true => Argument ... must be of type int|float|false, bool given
false => false
null => Argument ... must be of type int|float|false, null given
[] => Argument ... must be of type int|float|false, array given
new stdClass => Argument ... must be of type int|float|false, object given
new WithToString => Argument ... must be of type int|float|false, object given
new stdClass => Argument ... must be of type int|float|false, stdClass given
new WithToString => Argument ... must be of type int|float|false, WithToString given
Type int|float|bool:
42 => 42
@ -111,8 +111,8 @@ true => true
false => false
null => Argument ... must be of type int|float|bool, null given
[] => Argument ... must be of type int|float|bool, array given
new stdClass => Argument ... must be of type int|float|bool, object given
new WithToString => Argument ... must be of type int|float|bool, object given
new stdClass => Argument ... must be of type int|float|bool, stdClass given
new WithToString => Argument ... must be of type int|float|bool, WithToString given
Type int|bool:
42 => 42
@ -127,8 +127,8 @@ true => true
false => false
null => Argument ... must be of type int|bool, null given
[] => Argument ... must be of type int|bool, array given
new stdClass => Argument ... must be of type int|bool, object given
new WithToString => Argument ... must be of type int|bool, object given
new stdClass => Argument ... must be of type int|bool, stdClass given
new WithToString => Argument ... must be of type int|bool, WithToString given
Type int|string|null:
42 => 42
@ -143,8 +143,8 @@ true => Argument ... must be of type string|int|null, bool given
false => Argument ... must be of type string|int|null, bool given
null => null
[] => Argument ... must be of type string|int|null, array given
new stdClass => Argument ... must be of type string|int|null, object given
new WithToString => Argument ... must be of type string|int|null, object given
new stdClass => Argument ... must be of type string|int|null, stdClass given
new WithToString => Argument ... must be of type string|int|null, WithToString given
Type string|bool:
42 => Argument ... must be of type string|bool, int given
@ -159,8 +159,8 @@ true => true
false => false
null => Argument ... must be of type string|bool, null given
[] => Argument ... must be of type string|bool, array given
new stdClass => Argument ... must be of type string|bool, object given
new WithToString => Argument ... must be of type string|bool, object given
new stdClass => Argument ... must be of type string|bool, stdClass given
new WithToString => Argument ... must be of type string|bool, WithToString given
Type float|array:
42 => 42.0
@ -175,8 +175,8 @@ true => Argument ... must be of type array|float, bool given
false => Argument ... must be of type array|float, bool given
null => Argument ... must be of type array|float, null given
[] => []
new stdClass => Argument ... must be of type array|float, object given
new WithToString => Argument ... must be of type array|float, object given
new stdClass => Argument ... must be of type array|float, stdClass given
new WithToString => Argument ... must be of type array|float, WithToString given
Type string|array:
42 => Argument ... must be of type array|string, int given
@ -191,8 +191,8 @@ true => Argument ... must be of type array|string, bool given
false => Argument ... must be of type array|string, bool given
null => Argument ... must be of type array|string, null given
[] => []
new stdClass => Argument ... must be of type array|string, object given
new WithToString => Argument ... must be of type array|string, object given
new stdClass => Argument ... must be of type array|string, stdClass given
new WithToString => Argument ... must be of type array|string, WithToString given
Type bool|array:
42 => Argument ... must be of type array|bool, int given
@ -207,5 +207,5 @@ true => true
false => false
null => Argument ... must be of type array|bool, null given
[] => []
new stdClass => Argument ... must be of type array|bool, object given
new WithToString => Argument ... must be of type array|bool, object given
new stdClass => Argument ... must be of type array|bool, stdClass given
new WithToString => Argument ... must be of type array|bool, WithToString given

View file

@ -77,8 +77,8 @@ true => 1
false => 0
null => Argument ... must be of type int|float, null given
[] => Argument ... must be of type int|float, array given
new stdClass => Argument ... must be of type int|float, object given
new WithToString => Argument ... must be of type int|float, object given
new stdClass => Argument ... must be of type int|float, stdClass given
new WithToString => Argument ... must be of type int|float, WithToString given
Type int|float|false:
42 => 42
@ -93,8 +93,8 @@ true => 1
false => false
null => Argument ... must be of type int|float|false, null given
[] => Argument ... must be of type int|float|false, array given
new stdClass => Argument ... must be of type int|float|false, object given
new WithToString => Argument ... must be of type int|float|false, object given
new stdClass => Argument ... must be of type int|float|false, stdClass given
new WithToString => Argument ... must be of type int|float|false, WithToString given
Type int|float|bool:
42 => 42
@ -109,8 +109,8 @@ true => true
false => false
null => Argument ... must be of type int|float|bool, null given
[] => Argument ... must be of type int|float|bool, array given
new stdClass => Argument ... must be of type int|float|bool, object given
new WithToString => Argument ... must be of type int|float|bool, object given
new stdClass => Argument ... must be of type int|float|bool, stdClass given
new WithToString => Argument ... must be of type int|float|bool, WithToString given
Type int|bool:
42 => 42
@ -125,8 +125,8 @@ true => true
false => false
null => Argument ... must be of type int|bool, null given
[] => Argument ... must be of type int|bool, array given
new stdClass => Argument ... must be of type int|bool, object given
new WithToString => Argument ... must be of type int|bool, object given
new stdClass => Argument ... must be of type int|bool, stdClass given
new WithToString => Argument ... must be of type int|bool, WithToString given
Type int|string|null:
42 => 42
@ -141,7 +141,7 @@ true => 1
false => 0
null => null
[] => Argument ... must be of type string|int|null, array given
new stdClass => Argument ... must be of type string|int|null, object given
new stdClass => Argument ... must be of type string|int|null, stdClass given
new WithToString => "__toString()"
Type string|bool:
@ -157,7 +157,7 @@ true => true
false => false
null => Argument ... must be of type string|bool, null given
[] => Argument ... must be of type string|bool, array given
new stdClass => Argument ... must be of type string|bool, object given
new stdClass => Argument ... must be of type string|bool, stdClass given
new WithToString => "__toString()"
Type float|array:
@ -173,8 +173,8 @@ true => 1.0
false => 0.0
null => Argument ... must be of type array|float, null given
[] => []
new stdClass => Argument ... must be of type array|float, object given
new WithToString => Argument ... must be of type array|float, object given
new stdClass => Argument ... must be of type array|float, stdClass given
new WithToString => Argument ... must be of type array|float, WithToString given
Type string|array:
42 => "42"
@ -189,7 +189,7 @@ true => "1"
false => ""
null => Argument ... must be of type array|string, null given
[] => []
new stdClass => Argument ... must be of type array|string, object given
new stdClass => Argument ... must be of type array|string, stdClass given
new WithToString => "__toString()"
Type bool|array:
@ -205,5 +205,5 @@ true => true
false => false
null => Argument ... must be of type array|bool, null given
[] => []
new stdClass => Argument ... must be of type array|bool, object given
new WithToString => Argument ... must be of type array|bool, object given
new stdClass => Argument ... must be of type array|bool, stdClass given
new WithToString => Argument ... must be of type array|bool, WithToString given

View file

@ -251,67 +251,67 @@ TypeError: iterableF(): Argument #1 ($param) must be of type ?iterable, int give
Stack trace:
#0 %s(60): iterableF(1)
#1 {main}
TypeError: intF(): Argument #1 ($param) must be of type ?int, object given, called in %s:%d
TypeError: intF(): Argument #1 ($param) must be of type ?int, stdClass given, called in %s:%d
Stack trace:
#0 %s(68): intF(Object(stdClass))
#1 {main}
TypeError: Return value of returnUnloadedClass() must be of type ?I\Dont\Exist, stdClass returned in %s:74
TypeError: returnUnloadedClass(): Return value must be of type ?I\Dont\Exist, stdClass returned in %s:%d
Stack trace:
#0 %s(78): returnUnloadedClass()
#1 {main}
TypeError: Return value of returnLoadedClass() must be of type ?RealClass, stdClass returned in %s:84
TypeError: returnLoadedClass(): Return value must be of type ?RealClass, stdClass returned in %s:%d
Stack trace:
#0 %s(88): returnLoadedClass()
#1 {main}
TypeError: Return value of returnLoadedInterface() must be of type ?RealInterface, stdClass returned in %s:94
TypeError: returnLoadedInterface(): Return value must be of type ?RealInterface, stdClass returned in %s:%d
Stack trace:
#0 %s(98): returnLoadedInterface()
#1 {main}
TypeError: Return value of returnUnloadedClassScalar() must be of type ?I\Dont\Exist, int returned in %s:104
TypeError: returnUnloadedClassScalar(): Return value must be of type ?I\Dont\Exist, int returned in %s:%d
Stack trace:
#0 %s(108): returnUnloadedClassScalar()
#1 {main}
TypeError: Return value of returnLoadedClassScalar() must be of type ?RealClass, int returned in %s:114
TypeError: returnLoadedClassScalar(): Return value must be of type ?RealClass, int returned in %s:%d
Stack trace:
#0 %s(118): returnLoadedClassScalar()
#1 {main}
TypeError: Return value of returnLoadedInterfaceScalar() must be of type ?RealInterface, int returned in %s:124
TypeError: returnLoadedInterfaceScalar(): Return value must be of type ?RealInterface, int returned in %s:%d
Stack trace:
#0 %s(128): returnLoadedInterfaceScalar()
#1 {main}
TypeError: Return value of returnCallable() must be of type ?callable, int returned in %s:134
TypeError: returnCallable(): Return value must be of type ?callable, int returned in %s:%d
Stack trace:
#0 %s(138): returnCallable()
#1 {main}
TypeError: Return value of returnIterable() must be of type ?iterable, int returned in %s:144
TypeError: returnIterable(): Return value must be of type ?iterable, int returned in %s:%d
Stack trace:
#0 %s(148): returnIterable()
#1 {main}
TypeError: Return value of returnInt() must be of type ?int, object returned in %s:154
TypeError: returnInt(): Return value must be of type ?int, stdClass returned in %s:%d
Stack trace:
#0 %s(158): returnInt()
#1 {main}
TypeError: Return value of returnMissingUnloadedClass() must be of type ?I\Dont\Exist, none returned in %s:164
TypeError: returnMissingUnloadedClass(): Return value must be of type ?I\Dont\Exist, none returned in %s:%d
Stack trace:
#0 %s(167): returnMissingUnloadedClass()
#1 {main}
TypeError: Return value of returnMissingLoadedClass() must be of type ?RealClass, none returned in %s:173
TypeError: returnMissingLoadedClass(): Return value must be of type ?RealClass, none returned in %s:%d
Stack trace:
#0 %s(176): returnMissingLoadedClass()
#1 {main}
TypeError: Return value of returnMissingLoadedInterface() must be of type ?RealInterface, none returned in %s:182
TypeError: returnMissingLoadedInterface(): Return value must be of type ?RealInterface, none returned in %s:%d
Stack trace:
#0 %s(185): returnMissingLoadedInterface()
#1 {main}
TypeError: Return value of returnMissingCallable() must be of type ?callable, none returned in %s:191
TypeError: returnMissingCallable(): Return value must be of type ?callable, none returned in %s:%d
Stack trace:
#0 %s(194): returnMissingCallable()
#1 {main}
TypeError: Return value of returnMissingIterable() must be of type ?iterable, none returned in %s:200
TypeError: returnMissingIterable(): Return value must be of type ?iterable, none returned in %s:%d
Stack trace:
#0 %s(203): returnMissingIterable()
#1 {main}
TypeError: Return value of returnMissingInt() must be of type ?int, none returned in %s:209
TypeError: returnMissingInt(): Return value must be of type ?int, none returned in %s:%d
Stack trace:
#0 %s(212): returnMissingInt()
#1 {main}

View file

@ -136,7 +136,15 @@ ZEND_API const char *zend_zval_type_name(const zval *arg) /* {{{ */
{
ZVAL_DEREF(arg);
return Z_ISUNDEF_P(arg) ? "null" : zend_get_type_by_const(Z_TYPE_P(arg));
if (Z_ISUNDEF_P(arg)) {
return "null";
}
if (Z_TYPE_P(arg) == IS_OBJECT) {
return ZSTR_VAL(Z_OBJCE_P(arg)->name);
}
return zend_get_type_by_const(Z_TYPE_P(arg));
}
/* }}} */

View file

@ -663,13 +663,7 @@ static ZEND_COLD void zend_verify_type_error_common(
*need_msg = zend_type_to_string_resolved(arg_info->type, zf->common.scope);
if (value) {
zend_bool has_class = ZEND_TYPE_HAS_CLASS(arg_info->type)
|| (ZEND_TYPE_FULL_MASK(arg_info->type) & MAY_BE_STATIC);
if (has_class && Z_TYPE_P(value) == IS_OBJECT) {
*given_kind = ZSTR_VAL(Z_OBJCE_P(value)->name);
} else {
*given_kind = zend_zval_type_name(value);
}
*given_kind = zend_zval_type_name(value);
} else {
*given_kind = "none";
}
@ -849,7 +843,7 @@ ZEND_COLD zend_never_inline void zend_verify_property_type_error(zend_property_i
type_str = zend_type_to_string(info->type);
zend_type_error("Cannot assign %s to property %s::$%s of type %s",
Z_TYPE_P(property) == IS_OBJECT ? ZSTR_VAL(Z_OBJCE_P(property)->name) : zend_zval_type_name(property),
zend_zval_type_name(property),
ZSTR_VAL(info->ce->name),
zend_get_unmangled_property_name(info->name),
ZSTR_VAL(type_str));
@ -1187,7 +1181,7 @@ ZEND_API ZEND_COLD void zend_verify_return_error(
zf, arg_info, cache_slot, value,
&fname, &fsep, &fclass, &need_msg, &given_msg);
zend_type_error("Return value of %s%s%s() must be of type %s, %s returned",
zend_type_error("%s%s%s(): Return value must be of type %s, %s returned",
fclass, fsep, fname, ZSTR_VAL(need_msg), given_msg);
zend_string_release(need_msg);
@ -1206,7 +1200,7 @@ static ZEND_COLD void zend_verify_internal_return_error(
zf, arg_info, cache_slot, value,
&fname, &fsep, &fclass, &need_msg, &given_msg);
zend_error_noreturn(E_CORE_ERROR, "Return value of %s%s%s() must be of type %s, %s returned",
zend_error_noreturn(E_CORE_ERROR, "%s%s%s(): Return value must be of type %s, %s returned",
fclass, fsep, fname, ZSTR_VAL(need_msg), given_msg);
}
@ -2952,7 +2946,7 @@ ZEND_API ZEND_COLD void zend_throw_ref_type_error_type(zend_property_info *prop1
zend_string *type1_str = zend_type_to_string(prop1->type);
zend_string *type2_str = zend_type_to_string(prop2->type);
zend_type_error("Reference with value of type %s held by property %s::$%s of type %s is not compatible with property %s::$%s of type %s",
Z_TYPE_P(zv) == IS_OBJECT ? ZSTR_VAL(Z_OBJCE_P(zv)->name) : zend_zval_type_name(zv),
zend_zval_type_name(zv),
ZSTR_VAL(prop1->ce->name),
zend_get_unmangled_property_name(prop1->name),
ZSTR_VAL(type1_str),
@ -2967,7 +2961,7 @@ ZEND_API ZEND_COLD void zend_throw_ref_type_error_type(zend_property_info *prop1
ZEND_API ZEND_COLD void zend_throw_ref_type_error_zval(zend_property_info *prop, zval *zv) {
zend_string *type_str = zend_type_to_string(prop->type);
zend_type_error("Cannot assign %s to reference held by property %s::$%s of type %s",
Z_TYPE_P(zv) == IS_OBJECT ? ZSTR_VAL(Z_OBJCE_P(zv)->name) : zend_zval_type_name(zv),
zend_zval_type_name(zv),
ZSTR_VAL(prop->ce->name),
zend_get_unmangled_property_name(prop->name),
ZSTR_VAL(type_str)
@ -2979,7 +2973,7 @@ ZEND_API ZEND_COLD void zend_throw_conflicting_coercion_error(zend_property_info
zend_string *type1_str = zend_type_to_string(prop1->type);
zend_string *type2_str = zend_type_to_string(prop2->type);
zend_type_error("Cannot assign %s to reference held by property %s::$%s of type %s and property %s::$%s of type %s, as this would result in an inconsistent type conversion",
Z_TYPE_P(zv) == IS_OBJECT ? ZSTR_VAL(Z_OBJCE_P(zv)->name) : zend_zval_type_name(zv),
zend_zval_type_name(zv),
ZSTR_VAL(prop1->ce->name),
zend_get_unmangled_property_name(prop1->name),
ZSTR_VAL(type1_str),

View file

@ -33,7 +33,7 @@ object(DateTimeZone)#%d (2) {
}
int(0)
Fatal error: Uncaught TypeError: timezone_offset_get(): Argument #1 ($object) must be of type DateTimeZone, object given in %s:%d
Fatal error: Uncaught TypeError: timezone_offset_get(): Argument #1 ($object) must be of type DateTimeZone, DateTime given in %s:%d
Stack trace:
#0 %s(%d): timezone_offset_get(Object(DateTime), Object(DateTimeZone))
#1 {main}

View file

@ -24,4 +24,4 @@ object(DateTimeImmutable)#%d (3) {
["timezone"]=>
string(13) "Europe/London"
}
DateTimeImmutable::createFromMutable(): Argument #1 ($object) must be of type DateTime, object given
DateTimeImmutable::createFromMutable(): Argument #1 ($object) must be of type DateTime, DateTimeImmutable given

View file

@ -30,4 +30,4 @@ object(DateTime)#%d (3) {
string(13) "Europe/London"
}
bool(true)
DateTime::createFromImmutable(): Argument #1 ($object) must be of type DateTimeImmutable, object given
DateTime::createFromImmutable(): Argument #1 ($object) must be of type DateTimeImmutable, DateTime given

View file

@ -10,4 +10,4 @@ try {
}
?>
--EXPECT--
strtotime(): Argument #2 ($now) must be of type ?int, object given
strtotime(): Argument #2 ($now) must be of type ?int, DateTime given

View file

@ -51,7 +51,7 @@ microtime(): Argument #1 ($get_as_float) must be of type bool, array given
--> bad arg: object(stdClass)#%d (0) {
}
microtime(): Argument #1 ($get_as_float) must be of type bool, object given
microtime(): Argument #1 ($get_as_float) must be of type bool, stdClass given
--> bad arg: int(1)
float(%s)

View file

@ -65,7 +65,7 @@ try {
*** Testing timezone_offset_get() : error conditions ***
-- Testing timezone_offset_get() function with an invalid values for $object argument --
string(87) "timezone_offset_get(): Argument #1 ($object) must be of type DateTimeZone, object given"
string(89) "timezone_offset_get(): Argument #1 ($object) must be of type DateTimeZone, stdClass given"
string(84) "timezone_offset_get(): Argument #1 ($object) must be of type DateTimeZone, int given"
@ -73,7 +73,7 @@ string(85) "timezone_offset_get(): Argument #1 ($object) must be of type DateTim
-- Testing timezone_offset_get() function with an invalid values for $datetime argument --
string(94) "timezone_offset_get(): Argument #2 ($datetime) must be of type DateTimeInterface, object given"
string(96) "timezone_offset_get(): Argument #2 ($datetime) must be of type DateTimeInterface, stdClass given"
string(91) "timezone_offset_get(): Argument #2 ($datetime) must be of type DateTimeInterface, int given"

View file

@ -19,4 +19,4 @@ foreach (['', 1, NULL, $x] as $value) {
NumberFormatter::format(): Argument #1 ($value) must be of type int|float, string given
string(1) "1"
string(1) "0"
NumberFormatter::format(): Argument #1 ($value) must be of type int|float, object given
NumberFormatter::format(): Argument #1 ($value) must be of type int|float, NumberFormatter given

View file

@ -47,7 +47,7 @@ try {
--EXPECT--
error: 0, IntlCalendar::equals() expects exactly 1 parameter, 0 given
error: 0, IntlCalendar::equals(): Argument #1 ($calendar) must be of type IntlCalendar, object given
error: 0, IntlCalendar::equals(): Argument #1 ($calendar) must be of type IntlCalendar, stdClass given
error: 0, IntlCalendar::equals() expects exactly 1 parameter, 2 given

View file

@ -34,7 +34,7 @@ libxml_set_streams_context(): Argument #1 ($context) must be of type resource, s
bool(true)
libxml_set_streams_context(): Argument #1 ($context) must be of type resource, int given
bool(true)
libxml_set_streams_context(): Argument #1 ($context) must be of type resource, object given
libxml_set_streams_context(): Argument #1 ($context) must be of type resource, stdClass given
bool(true)
libxml_set_streams_context(): Argument #1 ($context) must be of type resource, array given
bool(true)

View file

@ -166,9 +166,9 @@ ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must
--heredoc--
ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must be 'none', 'long', 'entity' or a valid codepoint
--instance of classWithToString--
TypeError: mb_substitute_character(): Argument #1 ($substitute_character) must be of type string|int|null, object given
TypeError: mb_substitute_character(): Argument #1 ($substitute_character) must be of type string|int|null, classWithToString given
--instance of classWithoutToString--
TypeError: mb_substitute_character(): Argument #1 ($substitute_character) must be of type string|int|null, object given
TypeError: mb_substitute_character(): Argument #1 ($substitute_character) must be of type string|int|null, classWithoutToString given
--undefined var--
int(12345)
--unset var--

View file

@ -167,7 +167,7 @@ ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must
--instance of classWithToString--
ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must be 'none', 'long', 'entity' or a valid codepoint
--instance of classWithoutToString--
TypeError: mb_substitute_character(): Argument #1 ($substitute_character) must be of type string|int|null, object given
TypeError: mb_substitute_character(): Argument #1 ($substitute_character) must be of type string|int|null, classWithoutToString given
--undefined var--
int(0)
--unset var--

View file

@ -130,7 +130,7 @@ require_once('skipifconnectfailure.inc');
?>
--EXPECTF--
mysqli object is not fully initialized
[0] mysqli_result::fetch_object(): Argument #1 ($class_name) must be of type string, object given in %s on line %d
[0] mysqli_result::fetch_object(): Argument #1 ($class_name) must be of type string, mysqli given in %s on line %d
[0] mysqli_result::fetch_object() expects at most 2 parameters, 3 given in %s on line %d
[0] mysqli_result::fetch_object(): Argument #2 ($params) must be of type array, null given in %s on line %d
Exception: Too few arguments to function mysqli_fetch_object_construct::__construct(), 1 passed and exactly 2 expected

View file

@ -10,7 +10,7 @@ test(new stdClass);
?>
--EXPECTF--
Fatal error: Uncaught TypeError: Return value of test() must be of type iterable, object returned in %s:%d
Fatal error: Uncaught TypeError: test(): Return value must be of type iterable, stdClass returned in %s:%d
Stack trace:
#0 %s(%d): test(Object(stdClass))
#1 {main}

View file

@ -19,7 +19,7 @@ function test1($x) : callable {
try {
test1(1);
} catch (Error $e) {
echo "Error: {$e->getMessage()}\n";
echo $e->getMessage() . "\n";
}
class Foo {}
@ -31,10 +31,10 @@ function test2() : Foo {
try {
test2();
} catch (Error $e) {
echo "Error: {$e->getMessage()}\n";
echo $e->getMessage() . "\n";
}
?>
--EXPECT--
Error: Return value of test1() must be of type callable, string returned
Error: Return value of test2() must be of type Foo, stdClass returned
test1(): Return value must be of type callable, string returned
test2(): Return value must be of type Foo, stdClass returned

View file

@ -66,5 +66,5 @@ array(2) {
[2]=>
string(4) "test"
}
preg_grep(): Argument #1 ($regex) must be of type string, object given
preg_grep(): Argument #1 ($regex) must be of type string, stdClass given
Done

View file

@ -80,5 +80,5 @@ array(1) {
string(1) "t"
}
}
preg_match_all(): Argument #1 ($pattern) must be of type string, object given
preg_match_all(): Argument #1 ($pattern) must be of type string, stdClass given
NULL

View file

@ -60,4 +60,4 @@ preg_match(): Argument #1 ($pattern) must be of type string, array given
Arg value is /[a-zA-Z]/
int(1)
preg_match(): Argument #1 ($pattern) must be of type string, object given
preg_match(): Argument #1 ($pattern) must be of type string, stdClass given

View file

@ -36,5 +36,5 @@ int(1)
Arg value is: Array
preg_match(): Argument #2 ($subject) must be of type string, array given
preg_match(): Argument #2 ($subject) must be of type string, object given
preg_match(): Argument #2 ($subject) must be of type string, stdClass given
Done

View file

@ -67,4 +67,4 @@ array(3) {
[2]=>
string(4) " 5 6"
}
preg_split(): Argument #1 ($pattern) must be of type string, object given
preg_split(): Argument #1 ($pattern) must be of type string, stdClass given

View file

@ -63,4 +63,4 @@ Method 1 does not exist
Method 1.5 does not exist
Method 1 does not exist
ReflectionClass::getMethod(): Argument #1 ($name) must be of type string, array given
ReflectionClass::getMethod(): Argument #1 ($name) must be of type string, object given
ReflectionClass::getMethod(): Argument #1 ($name) must be of type string, C given

View file

@ -61,4 +61,4 @@ Property 1 does not exist
Property 1.5 does not exist
Property 1 does not exist
ReflectionClass::getProperty(): Argument #1 ($name) must be of type string, array given
ReflectionClass::getProperty(): Argument #1 ($name) must be of type string, object given
ReflectionClass::getProperty(): Argument #1 ($name) must be of type string, C given

View file

@ -41,7 +41,7 @@ var_dump(unserialize('O:19:"ReflectionReference":0:{}'));
?>
--EXPECTF--
Call to private ReflectionReference::__construct() from invalid context
ReflectionReference::fromArrayElement(): Argument #1 ($array) must be of type array, object given
ReflectionReference::fromArrayElement(): Argument #1 ($array) must be of type array, stdClass given
ReflectionReference::fromArrayElement(): Argument #2 ($key) must be of type string|int, float given
Array key not found
Serialization of 'ReflectionReference' is not allowed

View file

@ -86,5 +86,5 @@ session_start();
--EXPECT--
*** Testing session_set_save_handler() function: interface wrong ***
bool(true)
session_set_save_handler(): Argument #1 ($open) must be of type SessionHandlerInterface, object given
session_set_save_handler(): Argument #1 ($open) must be of type SessionHandlerInterface, MySession2 given
good handler writing

View file

@ -12,4 +12,4 @@ try {
?>
--EXPECT--
Ok - SplFixedArray::__construct(): Argument #1 ($size) must be of type int, object given
Ok - SplFixedArray::__construct(): Argument #1 ($size) must be of type int, SplFixedArray given

View file

@ -23,6 +23,6 @@ try {
?>
--EXPECT--
Ok - SplFixedArray::__construct(): Argument #1 ($size) must be of type int, object given
Ok - SplFixedArray::__construct(): Argument #1 ($size) must be of type int, stdClass given
Ok - SplFixedArray::__construct(): Argument #1 ($size) must be of type int, string given
Ok - SplFixedArray::__construct(): Argument #1 ($size) must be of type int, string given

View file

@ -83,8 +83,8 @@ NULL
===1===
object(stdClass)#%d (0) {
}
CachingIterator::offsetExists(): Argument #1 ($index) must be of type string, object given
CachingIterator::offsetGet(): Argument #1 ($index) must be of type string, object given
CachingIterator::offsetExists(): Argument #1 ($index) must be of type string, stdClass given
CachingIterator::offsetGet(): Argument #1 ($index) must be of type string, stdClass given
===2===
object(MyFoo)#%d (0) {
}
@ -124,8 +124,8 @@ int(0)
===1===
object(stdClass)#1 (0) {
}
CachingIterator::offsetExists(): Argument #1 ($index) must be of type string, object given
CachingIterator::offsetGet(): Argument #1 ($index) must be of type string, object given
CachingIterator::offsetExists(): Argument #1 ($index) must be of type string, stdClass given
CachingIterator::offsetGet(): Argument #1 ($index) must be of type string, stdClass given
===2===
object(MyFoo)#2 (0) {
}

View file

@ -9,4 +9,4 @@ try {
}
?>
--EXPECT--
RecursiveCachingIterator::__construct(): Argument #1 ($iterator) must be of type RecursiveIterator, object given
RecursiveCachingIterator::__construct(): Argument #1 ($iterator) must be of type RecursiveIterator, ArrayIterator given

View file

@ -172,7 +172,7 @@ array_diff_assoc(): Argument #1 ($arr1) must be of type array, string given
array_diff_assoc(): Argument #1 ($arr1) must be of type array, string given
-- Iteration 23 --
array_diff_assoc(): Argument #1 ($arr1) must be of type array, object given
array_diff_assoc(): Argument #1 ($arr1) must be of type array, classA given
-- Iteration 24 --
array_diff_assoc(): Argument #1 ($arr1) must be of type array, null given

View file

@ -172,7 +172,7 @@ array_diff_assoc(): Argument #2 ($arr2) must be of type array, string given
array_diff_assoc(): Argument #2 ($arr2) must be of type array, string given
-- Iteration 23 --
array_diff_assoc(): Argument #2 ($arr2) must be of type array, object given
array_diff_assoc(): Argument #2 ($arr2) must be of type array, classA given
-- Iteration 24 --
array_diff_assoc(): Argument #2 ($arr2) must be of type array, null given

View file

@ -192,12 +192,12 @@ array_diff_key(): Argument #1 ($arr1) must be of type array, string given
array_diff_key(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString--
array_diff_key(): Argument #1 ($arr1) must be of type array, object given
array_diff_key(): Argument #1 ($arr1) must be of type array, object given
array_diff_key(): Argument #1 ($arr1) must be of type array, classWithToString given
array_diff_key(): Argument #1 ($arr1) must be of type array, classWithToString given
--instance of classWithoutToString--
array_diff_key(): Argument #1 ($arr1) must be of type array, object given
array_diff_key(): Argument #1 ($arr1) must be of type array, object given
array_diff_key(): Argument #1 ($arr1) must be of type array, classWithoutToString given
array_diff_key(): Argument #1 ($arr1) must be of type array, classWithoutToString given
--undefined var--
array_diff_key(): Argument #1 ($arr1) must be of type array, null given

View file

@ -193,12 +193,12 @@ array_diff_key(): Argument #2 ($arr2) must be of type array, string given
array_diff_key(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString--
array_diff_key(): Argument #2 ($arr2) must be of type array, object given
array_diff_key(): Argument #2 ($arr2) must be of type array, object given
array_diff_key(): Argument #2 ($arr2) must be of type array, classWithToString given
array_diff_key(): Argument #2 ($arr2) must be of type array, classWithToString given
--instance of classWithoutToString--
array_diff_key(): Argument #2 ($arr2) must be of type array, object given
array_diff_key(): Argument #2 ($arr2) must be of type array, object given
array_diff_key(): Argument #2 ($arr2) must be of type array, classWithoutToString given
array_diff_key(): Argument #2 ($arr2) must be of type array, classWithoutToString given
--undefined var--
array_diff_key(): Argument #2 ($arr2) must be of type array, null given

View file

@ -179,10 +179,10 @@ array_diff_uassoc(): Argument #1 ($arr1) must be of type array, string given
array_diff_uassoc(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString--
array_diff_uassoc(): Argument #1 ($arr1) must be of type array, object given
array_diff_uassoc(): Argument #1 ($arr1) must be of type array, classWithToString given
--instance of classWithoutToString--
array_diff_uassoc(): Argument #1 ($arr1) must be of type array, object given
array_diff_uassoc(): Argument #1 ($arr1) must be of type array, classWithoutToString given
--undefined var--
array_diff_uassoc(): Argument #1 ($arr1) must be of type array, null given

View file

@ -179,10 +179,10 @@ array_diff_uassoc(): Argument #2 ($arr2) must be of type array, string given
array_diff_uassoc(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString--
array_diff_uassoc(): Argument #2 ($arr2) must be of type array, object given
array_diff_uassoc(): Argument #2 ($arr2) must be of type array, classWithToString given
--instance of classWithoutToString--
array_diff_uassoc(): Argument #2 ($arr2) must be of type array, object given
array_diff_uassoc(): Argument #2 ($arr2) must be of type array, classWithoutToString given
--undefined var--
array_diff_uassoc(): Argument #2 ($arr2) must be of type array, null given

View file

@ -200,12 +200,12 @@ array_diff_ukey(): Argument #1 ($arr1) must be of type array, string given
array_diff_ukey(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString--
array_diff_ukey(): Argument #1 ($arr1) must be of type array, object given
array_diff_ukey(): Argument #1 ($arr1) must be of type array, object given
array_diff_ukey(): Argument #1 ($arr1) must be of type array, classWithToString given
array_diff_ukey(): Argument #1 ($arr1) must be of type array, classWithToString given
--instance of classWithoutToString--
array_diff_ukey(): Argument #1 ($arr1) must be of type array, object given
array_diff_ukey(): Argument #1 ($arr1) must be of type array, object given
array_diff_ukey(): Argument #1 ($arr1) must be of type array, classWithoutToString given
array_diff_ukey(): Argument #1 ($arr1) must be of type array, classWithoutToString given
--undefined var--
array_diff_ukey(): Argument #1 ($arr1) must be of type array, null given

View file

@ -204,12 +204,12 @@ array_diff_ukey(): Argument #2 ($arr2) must be of type array, string given
array_diff_ukey(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString--
array_diff_ukey(): Argument #2 ($arr2) must be of type array, object given
array_diff_ukey(): Argument #2 ($arr2) must be of type array, object given
array_diff_ukey(): Argument #2 ($arr2) must be of type array, classWithToString given
array_diff_ukey(): Argument #2 ($arr2) must be of type array, classWithToString given
--instance of classWithoutToString--
array_diff_ukey(): Argument #2 ($arr2) must be of type array, object given
array_diff_ukey(): Argument #2 ($arr2) must be of type array, object given
array_diff_ukey(): Argument #2 ($arr2) must be of type array, classWithoutToString given
array_diff_ukey(): Argument #2 ($arr2) must be of type array, classWithoutToString given
--undefined var--
array_diff_ukey(): Argument #2 ($arr2) must be of type array, null given

View file

@ -150,7 +150,7 @@ echo "Done";
-- Iteration 22 --array_diff(): Argument #1 ($arr1) must be of type array, string given
-- Iteration 23 --array_diff(): Argument #1 ($arr1) must be of type array, object given
-- Iteration 23 --array_diff(): Argument #1 ($arr1) must be of type array, classA given
-- Iteration 24 --array_diff(): Argument #1 ($arr1) must be of type array, null given

View file

@ -149,7 +149,7 @@ echo "Done";
-- Iteration 22 --array_diff(): Argument #2 ($arr2) must be of type array, string given
-- Iteration 23 --array_diff(): Argument #2 ($arr2) must be of type array, object given
-- Iteration 23 --array_diff(): Argument #2 ($arr2) must be of type array, classA given
-- Iteration 24 --array_diff(): Argument #2 ($arr2) must be of type array, null given

View file

@ -179,8 +179,8 @@ array_intersect_assoc(): Argument #1 ($arr1) must be of type array, string given
-- Iteration 20 --array_intersect_assoc(): Argument #1 ($arr1) must be of type array, string given
array_intersect_assoc(): Argument #1 ($arr1) must be of type array, string given
-- Iteration 21 --array_intersect_assoc(): Argument #1 ($arr1) must be of type array, object given
array_intersect_assoc(): Argument #1 ($arr1) must be of type array, object given
-- Iteration 21 --array_intersect_assoc(): Argument #1 ($arr1) must be of type array, classA given
array_intersect_assoc(): Argument #1 ($arr1) must be of type array, classA given
-- Iteration 22 --array_intersect_assoc(): Argument #1 ($arr1) must be of type array, null given
array_intersect_assoc(): Argument #1 ($arr1) must be of type array, null given

View file

@ -180,8 +180,8 @@ array_intersect_assoc(): Argument #2 ($arr2) must be of type array, string given
-- Iteration 20 --array_intersect_assoc(): Argument #2 ($arr2) must be of type array, string given
array_intersect_assoc(): Argument #2 ($arr2) must be of type array, string given
-- Iteration 21 --array_intersect_assoc(): Argument #2 ($arr2) must be of type array, object given
array_intersect_assoc(): Argument #2 ($arr2) must be of type array, object given
-- Iteration 21 --array_intersect_assoc(): Argument #2 ($arr2) must be of type array, classA given
array_intersect_assoc(): Argument #2 ($arr2) must be of type array, classA given
-- Iteration 22 --array_intersect_assoc(): Argument #2 ($arr2) must be of type array, null given
array_intersect_assoc(): Argument #2 ($arr2) must be of type array, null given

View file

@ -196,12 +196,12 @@ array_intersect_key(): Argument #1 ($arr1) must be of type array, string given
array_intersect_key(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString--
array_intersect_key(): Argument #1 ($arr1) must be of type array, object given
array_intersect_key(): Argument #1 ($arr1) must be of type array, object given
array_intersect_key(): Argument #1 ($arr1) must be of type array, classWithToString given
array_intersect_key(): Argument #1 ($arr1) must be of type array, classWithToString given
--instance of classWithoutToString--
array_intersect_key(): Argument #1 ($arr1) must be of type array, object given
array_intersect_key(): Argument #1 ($arr1) must be of type array, object given
array_intersect_key(): Argument #1 ($arr1) must be of type array, classWithoutToString given
array_intersect_key(): Argument #1 ($arr1) must be of type array, classWithoutToString given
--undefined var--
array_intersect_key(): Argument #1 ($arr1) must be of type array, null given

View file

@ -197,12 +197,12 @@ array_intersect_key(): Argument #2 ($arr2) must be of type array, string given
array_intersect_key(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString--
array_intersect_key(): Argument #2 ($arr2) must be of type array, object given
array_intersect_key(): Argument #2 ($arr2) must be of type array, object given
array_intersect_key(): Argument #2 ($arr2) must be of type array, classWithToString given
array_intersect_key(): Argument #2 ($arr2) must be of type array, classWithToString given
--instance of classWithoutToString--
array_intersect_key(): Argument #2 ($arr2) must be of type array, object given
array_intersect_key(): Argument #2 ($arr2) must be of type array, object given
array_intersect_key(): Argument #2 ($arr2) must be of type array, classWithoutToString given
array_intersect_key(): Argument #2 ($arr2) must be of type array, classWithoutToString given
--undefined var--
array_intersect_key(): Argument #2 ($arr2) must be of type array, null given

View file

@ -204,12 +204,12 @@ array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, string give
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString--
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, object given
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, object given
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, classWithToString given
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, classWithToString given
--instance of classWithoutToString--
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, object given
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, object given
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, classWithoutToString given
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, classWithoutToString given
--undefined var--
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, null given

View file

@ -204,12 +204,12 @@ array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, string give
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString--
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, object given
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, object given
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, classWithToString given
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, classWithToString given
--instance of classWithoutToString--
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, object given
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, object given
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, classWithoutToString given
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, classWithoutToString given
--undefined var--
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, null given

View file

@ -202,12 +202,12 @@ array_intersect_ukey(): Argument #1 ($arr1) must be of type array, string given
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString--
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, object given
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, object given
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, classWithToString given
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, classWithToString given
--instance of classWithoutToString--
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, object given
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, object given
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, classWithoutToString given
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, classWithoutToString given
--undefined var--
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, null given

View file

@ -202,12 +202,12 @@ array_intersect_ukey(): Argument #2 ($arr2) must be of type array, string given
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString--
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, object given
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, object given
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, classWithToString given
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, classWithToString given
--instance of classWithoutToString--
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, object given
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, object given
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, classWithoutToString given
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, classWithoutToString given
--undefined var--
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, null given

View file

@ -178,8 +178,8 @@ array_intersect(): Argument #1 ($arr1) must be of type array, string given
-- Iterator 20 --array_intersect(): Argument #1 ($arr1) must be of type array, string given
array_intersect(): Argument #1 ($arr1) must be of type array, string given
-- Iterator 21 --array_intersect(): Argument #1 ($arr1) must be of type array, object given
array_intersect(): Argument #1 ($arr1) must be of type array, object given
-- Iterator 21 --array_intersect(): Argument #1 ($arr1) must be of type array, classA given
array_intersect(): Argument #1 ($arr1) must be of type array, classA given
-- Iterator 22 --array_intersect(): Argument #1 ($arr1) must be of type array, null given
array_intersect(): Argument #1 ($arr1) must be of type array, null given

View file

@ -179,8 +179,8 @@ array_intersect(): Argument #2 ($arr2) must be of type array, string given
-- Iterator 20 --array_intersect(): Argument #2 ($arr2) must be of type array, string given
array_intersect(): Argument #2 ($arr2) must be of type array, string given
-- Iterator 21 --array_intersect(): Argument #2 ($arr2) must be of type array, object given
array_intersect(): Argument #2 ($arr2) must be of type array, object given
-- Iterator 21 --array_intersect(): Argument #2 ($arr2) must be of type array, classA given
array_intersect(): Argument #2 ($arr2) must be of type array, classA given
-- Iterator 22 --array_intersect(): Argument #2 ($arr2) must be of type array, null given
array_intersect(): Argument #2 ($arr2) must be of type array, null given

View file

@ -224,5 +224,5 @@ bool(true)
Illegal offset type
*** Testing operation on objects ***
array_key_exists(): Argument #2 ($array) must be of type array, object given
array_key_exists(): Argument #2 ($array) must be of type array, key_check given
Done

Some files were not shown because too many files have changed in this diff Show more