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"; echo "Done\n";
?> ?>
--EXPECTF-- --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: Stack trace:
#0 {main} #0 {main}
thrown in %s on line %d thrown in %s on line %d

View file

@ -20,9 +20,9 @@ var_dump($c);
echo "Done\n"; echo "Done\n";
?> ?>
--EXPECTF-- --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: Stack trace:
#0 {main} #0 {main}
thrown in %s on line %d thrown in %s on line %d

View file

@ -64,6 +64,6 @@ try {
--EXPECT-- --EXPECT--
Hello World! Hello World!
===NONE=== ===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=== ===THROW===
This is an error! This is an error!

View file

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

View file

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

View file

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

View file

@ -8,7 +8,7 @@ throw new Hello(new stdClass);
?> ?>
--EXPECTF-- --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: Stack trace:
#0 %sexception_018.php(%d): Exception->__construct(Object(stdClass)) #0 %sexception_018.php(%d): Exception->__construct(Object(stdClass))
#1 {main} #1 {main}

View file

@ -7,7 +7,7 @@ throw new Exception(new stdClass);
?> ?>
--EXPECTF-- --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: Stack trace:
#0 %sexception_019.php(%d): Exception->__construct(Object(stdClass)) #0 %sexception_019.php(%d): Exception->__construct(Object(stdClass))
#1 {main} #1 {main}

View file

@ -8,7 +8,7 @@ throw new MyErrorException(new stdClass);
?> ?>
--EXPECTF-- --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: Stack trace:
#0 %sexception_020.php(%d): ErrorException->__construct(Object(stdClass)) #0 %sexception_020.php(%d): ErrorException->__construct(Object(stdClass))
#1 {main} #1 {main}

View file

@ -8,7 +8,7 @@ throw new Hello(new stdClass);
?> ?>
--EXPECTF-- --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: Stack trace:
#0 %sexception_021.php(%d): Error->__construct(Object(stdClass)) #0 %sexception_021.php(%d): Error->__construct(Object(stdClass))
#1 {main} #1 {main}

View file

@ -7,7 +7,7 @@ throw new Error(new stdClass);
?> ?>
--EXPECTF-- --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: Stack trace:
#0 %sexception_022.php(%d): Error->__construct(Object(stdClass)) #0 %sexception_022.php(%d): Error->__construct(Object(stdClass))
#1 {main} #1 {main}

View file

@ -12,7 +12,7 @@ $gen->throw(new stdClass);
?> ?>
--EXPECTF-- --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: Stack trace:
#0 %s(%d): Generator->throw(Object(stdClass)) #0 %s(%d): Generator->throw(Object(stdClass))
#1 {main} #1 {main}

View file

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

View file

@ -18,7 +18,7 @@ new bar(new \stdclass);
--EXPECTF-- --EXPECTF--
NULL 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: Stack trace:
#0 %s(%d): foo\bar->__construct(Object(stdClass)) #0 %s(%d): foo\bar->__construct(Object(stdClass))
#1 {main} #1 {main}

View file

@ -18,7 +18,7 @@ $three = new class extends Two {
}; };
$three->a(); $three->a();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): Two@anonymous->a() #0 %s(%d): Two@anonymous->a()
#1 {main} #1 {main}

View file

@ -8,7 +8,7 @@ function a() : object {
} }
a(); a();
--EXPECTF-- --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: Stack trace:
#0 %s(6): a() #0 %s(6): a()
#1 {main} #1 {main}

View file

@ -18,7 +18,7 @@ $three = new class extends Two {
}; };
$three->a(); $three->a();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): Two@anonymous->a() #0 %s(%d): Two@anonymous->a()
#1 {main} #1 {main}

View file

@ -18,7 +18,7 @@ $three = new class implements Two {
}; };
$three->a(); $three->a();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): Two@anonymous->a() #0 %s(%d): Two@anonymous->a()
#1 {main} #1 {main}

File diff suppressed because it is too large Load diff

View file

@ -7,7 +7,7 @@ function test1() : array {
test1(); test1();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): test1() #0 %s(%d): test1()
#1 {main} #1 {main}

View file

@ -8,7 +8,7 @@ function test1() : array {
test1(); test1();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): test1() #0 %s(%d): test1()
#1 {main} #1 {main}

View file

@ -7,7 +7,7 @@ function test1() : array {
} }
test1(); test1();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): test1() #0 %s(%d): test1()
#1 {main} #1 {main}

View file

@ -8,7 +8,7 @@ function test1() : array {
test1(); test1();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): test1() #0 %s(%d): test1()
#1 {main} #1 {main}

View file

@ -13,7 +13,7 @@ class qux {
$qux = new qux(); $qux = new qux();
$qux->foo(); $qux->foo();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): qux->foo() #0 %s(%d): qux->foo()
#1 {main} #1 {main}

View file

@ -9,7 +9,7 @@ function &foo(array &$in) : array {
$array = [1, 2, 3]; $array = [1, 2, 3];
var_dump(foo($array)); var_dump(foo($array));
--EXPECTF-- --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: Stack trace:
#0 %s(%d): foo(Array) #0 %s(%d): foo(Array)
#1 {main} #1 {main}

View file

@ -14,7 +14,7 @@ class foo {
$baz = new foo(); $baz = new foo();
var_dump($func=$baz->bar(), $func()); var_dump($func=$baz->bar(), $func());
--EXPECTF-- --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: Stack trace:
#0 %s(%d): foo->{closure}() #0 %s(%d): foo->{closure}()
#1 {main} #1 {main}

View file

@ -17,4 +17,4 @@ try {
?> ?>
--EXPECTF-- --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() #0 %s(%d): foo()
#1 {main} #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: Stack trace:
#0 %s(%d): foo() #0 %s(%d): foo()
#1 {main} #1 {main}

View file

@ -16,7 +16,7 @@ foo(0);
ok ok
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: Stack trace:
#0 %s030.php(10): foo(0) #0 %s030.php(10): foo(0)
#1 {main} #1 {main}

View file

@ -16,4 +16,4 @@ try {
} }
?> ?>
--EXPECT-- --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(); boom();
?> ?>
--EXPECTF-- --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: Stack trace:
#0 %s(%d): boom() #0 %s(%d): boom()
#1 {main} #1 {main}

View file

@ -10,5 +10,5 @@ if (!PHP_DEBUG) die('skip requires debug build');
<?php <?php
zend_test_array_return(); zend_test_array_return();
?> ?>
--EXPECTF-- --EXPECT--
Fatal error: Return value of zend_test_array_return() must be of type array, null returned in %s on line %d 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(); get_config();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): get_config() #0 %s(%d): get_config()
#1 {main} #1 {main}

View file

@ -8,7 +8,7 @@ function foo(): DateTime {
foo(); foo();
--EXPECTF-- --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: Stack trace:
#0 %s(%d): foo() #0 %s(%d): foo()
#1 {main} #1 {main}

View file

@ -167,7 +167,7 @@ string(3) "bar"
string(11) "exception 1" string(11) "exception 1"
bool(true) bool(true)
string(20) "false ? true : throw" 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(35) "throw $exception = new Exception();"
string(37) "throw $exception ??= new Exception();" string(37) "throw $exception ??= new Exception();"
string(30) "throw null ?? new Exception();" string(30) "throw null ?? new Exception();"

View file

@ -38,6 +38,6 @@ try {
?> ?>
--EXPECTF-- --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::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 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) { 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-- --EXPECT--
Return value of foo() must be of type mixed, none returned foo(): Return value must be of type mixed, none returned

View file

@ -15,4 +15,4 @@ try {
?> ?>
--EXPECT-- --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) { *** 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) { *** 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) *** Trying resource(%d) of type (stream)
*** Caught {closure}(): Argument #1 ($i) must be of type int, resource given, called in %s on line %d *** 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) { *** 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) { *** 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) *** Trying resource(%d) of type (stream)
*** Caught {closure}(): Argument #1 ($f) must be of type float, resource given, called in %s on line %d *** 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) { *** 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) { *** Trying object(StringCapable)#%s (0) {
} }
@ -264,11 +264,11 @@ bool(false)
*** Trying object(stdClass)#%s (0) { *** 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) { *** 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) *** Trying resource(%d) of type (stream)
*** Caught {closure}(): Argument #1 ($b) must be of type bool, resource given, called in %s on line %d *** 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 E_NOTICE: A non well formed numeric value encountered on line %d
int(1) int(1)
*** Trying string(1) "a" *** 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) "" *** 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) *** Trying int(2147483647)
int(2147483647) int(2147483647)
*** Trying float(NAN) *** 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) *** Trying bool(true)
int(1) int(1)
*** Trying bool(false) *** Trying bool(false)
int(0) int(0)
*** Trying NULL *** 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) { *** 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) { *** 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) { *** 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) *** 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: Testing 'float' type:
*** Trying int(1) *** Trying int(1)
@ -113,9 +113,9 @@ float(1.5)
E_NOTICE: A non well formed numeric value encountered on line %d E_NOTICE: A non well formed numeric value encountered on line %d
float(1) float(1)
*** Trying string(1) "a" *** 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) "" *** 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) *** Trying int(2147483647)
float(2147483647) float(2147483647)
*** Trying float(NAN) *** Trying float(NAN)
@ -125,18 +125,18 @@ float(1)
*** Trying bool(false) *** Trying bool(false)
float(0) float(0)
*** Trying NULL *** 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) { *** 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) { *** 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) { *** 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) *** 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: Testing 'string' type:
*** Trying int(1) *** Trying int(1)
@ -162,18 +162,18 @@ string(1) "1"
*** Trying bool(false) *** Trying bool(false)
string(0) "" string(0) ""
*** Trying NULL *** 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) { *** 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) { *** 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) { *** Trying object(StringCapable)#7 (0) {
} }
string(6) "foobar" string(6) "foobar"
*** Trying resource(5) of type (stream) *** 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: Testing 'bool' type:
*** Trying int(1) *** Trying int(1)
@ -199,17 +199,17 @@ bool(true)
*** Trying bool(false) *** Trying bool(false)
bool(false) bool(false)
*** Trying NULL *** 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) { *** 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) { *** 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) { *** 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) *** 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 Done

View file

@ -75,30 +75,30 @@ int(1)
E_NOTICE: A non well formed numeric value encountered on line %d E_NOTICE: A non well formed numeric value encountered on line %d
int(1) int(1)
*** Trying string(1) "a" *** 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) "" *** 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) *** Trying int(9223372036854775807)
int(9223372036854775807) int(9223372036854775807)
*** Trying float(NAN) *** 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) *** Trying bool(true)
int(1) int(1)
*** Trying bool(false) *** Trying bool(false)
int(0) int(0)
*** Trying NULL *** 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) { *** 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) { *** 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) { *** 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) *** 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: Testing 'float' type:
*** Trying int(1) *** Trying int(1)
@ -113,9 +113,9 @@ float(1.5)
E_NOTICE: A non well formed numeric value encountered on line %d E_NOTICE: A non well formed numeric value encountered on line %d
float(1) float(1)
*** Trying string(1) "a" *** 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) "" *** 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) *** Trying int(9223372036854775807)
float(9.223372036854776E+18) float(9.223372036854776E+18)
*** Trying float(NAN) *** Trying float(NAN)
@ -125,18 +125,18 @@ float(1)
*** Trying bool(false) *** Trying bool(false)
float(0) float(0)
*** Trying NULL *** 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) { *** 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) { *** 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) { *** 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) *** 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: Testing 'string' type:
*** Trying int(1) *** Trying int(1)
@ -162,18 +162,18 @@ string(1) "1"
*** Trying bool(false) *** Trying bool(false)
string(0) "" string(0) ""
*** Trying NULL *** 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) { *** 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) { *** 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) { *** Trying object(StringCapable)#7 (0) {
} }
string(6) "foobar" string(6) "foobar"
*** Trying resource(5) of type (stream) *** 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: Testing 'bool' type:
*** Trying int(1) *** Trying int(1)
@ -199,17 +199,17 @@ bool(true)
*** Trying bool(false) *** Trying bool(false)
bool(false) bool(false)
*** Trying NULL *** 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) { *** 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) { *** 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) { *** 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) *** 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 Done

View file

@ -98,11 +98,11 @@ int(2147483647)
*** Trying object(stdClass)#5 (0) { *** 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) { *** 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) *** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($i) must be of type int, resource given, called in %s on line %d *** 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) { *** 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) { *** 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) *** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($f) must be of type float, resource given, called in %s on line %d *** 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) { *** 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) { *** 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) *** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($s) must be of type string, resource given, called in %s on line %d *** 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) { *** 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) { *** 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) *** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($b) must be of type bool, resource given, called in %s on line %d *** 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) { *** 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) { *** 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) *** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($i) must be of type int, resource given, called in %s on line %d *** 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) { *** 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) { *** 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) *** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($f) must be of type float, resource given, called in %s on line %d *** 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) { *** 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) { *** 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) *** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($s) must be of type string, resource given, called in %s on line %d *** 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) { *** 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) { *** 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) *** Trying resource(5) of type (stream)
*** Caught {closure}(): Argument #1 ($b) must be of type bool, resource given, called in %s on line %d *** 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 *** Caught {closure}(): Argument #1 ($i) must be of type int, array given, called in %s on line %d
*** Trying object value *** 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 *** Trying resource value
*** Caught {closure}(): Argument #1 ($i) must be of type int, resource given, called in %s on line %d *** 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 *** Caught {closure}(): Argument #1 ($f) must be of type float, array given, called in %s on line %d
*** Trying object value *** 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 *** Trying resource value
*** Caught {closure}(): Argument #1 ($f) must be of type float, resource given, called in %s on line %d *** 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 *** Caught {closure}(): Argument #1 ($s) must be of type string, array given, called in %s on line %d
*** Trying object value *** 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 *** Trying resource value
*** Caught {closure}(): Argument #1 ($s) must be of type string, resource given, called in %s on line %d *** 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 *** Caught {closure}(): Argument #1 ($b) must be of type bool, array given, called in %s on line %d
*** Trying object value *** 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 *** Trying resource value
*** Caught {closure}(): Argument #1 ($b) must be of type bool, resource given, called in %s on line %d *** 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) { 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) { object(A)#3 (0) {
} }
@ -84,8 +84,8 @@ object(C)#3 (0) {
object(A)#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) { object(A)#1 (0) {
} }

View file

@ -31,7 +31,7 @@ object(P)#2 (0) {
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: Stack trace:
#0 %s(%d): C->test(Object(C)) #0 %s(%d): C->test(Object(C))
#1 {main} #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 false => Argument ... must be of type int|float, bool given
null => Argument ... must be of type int|float, null given null => Argument ... must be of type int|float, null given
[] => Argument ... must be of type int|float, array given [] => Argument ... must be of type int|float, array given
new stdClass => 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, object given new WithToString => Argument ... must be of type int|float, WithToString given
Type int|float|false: Type int|float|false:
42 => 42 42 => 42
@ -95,8 +95,8 @@ true => Argument ... must be of type int|float|false, bool given
false => false false => false
null => Argument ... must be of type int|float|false, null given null => Argument ... must be of type int|float|false, null given
[] => Argument ... must be of type int|float|false, array given [] => Argument ... must be of type int|float|false, array given
new stdClass => 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, object given new WithToString => Argument ... must be of type int|float|false, WithToString given
Type int|float|bool: Type int|float|bool:
42 => 42 42 => 42
@ -111,8 +111,8 @@ true => true
false => false false => false
null => Argument ... must be of type int|float|bool, null given null => Argument ... must be of type int|float|bool, null given
[] => Argument ... must be of type int|float|bool, array given [] => Argument ... must be of type int|float|bool, array given
new stdClass => 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, object given new WithToString => Argument ... must be of type int|float|bool, WithToString given
Type int|bool: Type int|bool:
42 => 42 42 => 42
@ -127,8 +127,8 @@ true => true
false => false false => false
null => Argument ... must be of type int|bool, null given null => Argument ... must be of type int|bool, null given
[] => Argument ... must be of type int|bool, array given [] => Argument ... must be of type int|bool, array given
new stdClass => 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, object given new WithToString => Argument ... must be of type int|bool, WithToString given
Type int|string|null: Type int|string|null:
42 => 42 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 false => Argument ... must be of type string|int|null, bool given
null => null null => null
[] => Argument ... must be of type string|int|null, array given [] => 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 => Argument ... must be of type string|int|null, object given new WithToString => Argument ... must be of type string|int|null, WithToString given
Type string|bool: Type string|bool:
42 => Argument ... must be of type string|bool, int given 42 => Argument ... must be of type string|bool, int given
@ -159,8 +159,8 @@ true => true
false => false false => false
null => Argument ... must be of type string|bool, null given null => Argument ... must be of type string|bool, null given
[] => Argument ... must be of type string|bool, array 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 => Argument ... must be of type string|bool, object given new WithToString => Argument ... must be of type string|bool, WithToString given
Type float|array: Type float|array:
42 => 42.0 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 false => Argument ... must be of type array|float, bool given
null => Argument ... must be of type array|float, null given null => Argument ... must be of type array|float, null given
[] => [] [] => []
new stdClass => 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, object given new WithToString => Argument ... must be of type array|float, WithToString given
Type string|array: Type string|array:
42 => Argument ... must be of type array|string, int given 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 false => Argument ... must be of type array|string, bool given
null => Argument ... must be of type array|string, null given 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 => Argument ... must be of type array|string, object given new WithToString => Argument ... must be of type array|string, WithToString given
Type bool|array: Type bool|array:
42 => Argument ... must be of type array|bool, int given 42 => Argument ... must be of type array|bool, int given
@ -207,5 +207,5 @@ true => true
false => false false => false
null => Argument ... must be of type array|bool, null given null => Argument ... must be of type array|bool, null given
[] => [] [] => []
new stdClass => 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, object given new WithToString => Argument ... must be of type array|bool, WithToString given

View file

@ -77,8 +77,8 @@ true => 1
false => 0 false => 0
null => Argument ... must be of type int|float, null given null => Argument ... must be of type int|float, null given
[] => Argument ... must be of type int|float, array given [] => Argument ... must be of type int|float, array given
new stdClass => 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, object given new WithToString => Argument ... must be of type int|float, WithToString given
Type int|float|false: Type int|float|false:
42 => 42 42 => 42
@ -93,8 +93,8 @@ true => 1
false => false false => false
null => Argument ... must be of type int|float|false, null given null => Argument ... must be of type int|float|false, null given
[] => Argument ... must be of type int|float|false, array given [] => Argument ... must be of type int|float|false, array given
new stdClass => 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, object given new WithToString => Argument ... must be of type int|float|false, WithToString given
Type int|float|bool: Type int|float|bool:
42 => 42 42 => 42
@ -109,8 +109,8 @@ true => true
false => false false => false
null => Argument ... must be of type int|float|bool, null given null => Argument ... must be of type int|float|bool, null given
[] => Argument ... must be of type int|float|bool, array given [] => Argument ... must be of type int|float|bool, array given
new stdClass => 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, object given new WithToString => Argument ... must be of type int|float|bool, WithToString given
Type int|bool: Type int|bool:
42 => 42 42 => 42
@ -125,8 +125,8 @@ true => true
false => false false => false
null => Argument ... must be of type int|bool, null given null => Argument ... must be of type int|bool, null given
[] => Argument ... must be of type int|bool, array given [] => Argument ... must be of type int|bool, array given
new stdClass => 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, object given new WithToString => Argument ... must be of type int|bool, WithToString given
Type int|string|null: Type int|string|null:
42 => 42 42 => 42
@ -141,7 +141,7 @@ true => 1
false => 0 false => 0
null => null null => null
[] => Argument ... must be of type string|int|null, array given [] => 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()" new WithToString => "__toString()"
Type string|bool: Type string|bool:
@ -157,7 +157,7 @@ true => true
false => false false => false
null => Argument ... must be of type string|bool, null given null => Argument ... must be of type string|bool, null given
[] => Argument ... must be of type string|bool, array 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()" new WithToString => "__toString()"
Type float|array: Type float|array:
@ -173,8 +173,8 @@ true => 1.0
false => 0.0 false => 0.0
null => Argument ... must be of type array|float, null given null => Argument ... must be of type array|float, null given
[] => [] [] => []
new stdClass => 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, object given new WithToString => Argument ... must be of type array|float, WithToString given
Type string|array: Type string|array:
42 => "42" 42 => "42"
@ -189,7 +189,7 @@ true => "1"
false => "" false => ""
null => Argument ... must be of type array|string, null given 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()" new WithToString => "__toString()"
Type bool|array: Type bool|array:
@ -205,5 +205,5 @@ true => true
false => false false => false
null => Argument ... must be of type array|bool, null given null => Argument ... must be of type array|bool, null given
[] => [] [] => []
new stdClass => 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, object 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: Stack trace:
#0 %s(60): iterableF(1) #0 %s(60): iterableF(1)
#1 {main} #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: Stack trace:
#0 %s(68): intF(Object(stdClass)) #0 %s(68): intF(Object(stdClass))
#1 {main} #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: Stack trace:
#0 %s(78): returnUnloadedClass() #0 %s(78): returnUnloadedClass()
#1 {main} #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: Stack trace:
#0 %s(88): returnLoadedClass() #0 %s(88): returnLoadedClass()
#1 {main} #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: Stack trace:
#0 %s(98): returnLoadedInterface() #0 %s(98): returnLoadedInterface()
#1 {main} #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: Stack trace:
#0 %s(108): returnUnloadedClassScalar() #0 %s(108): returnUnloadedClassScalar()
#1 {main} #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: Stack trace:
#0 %s(118): returnLoadedClassScalar() #0 %s(118): returnLoadedClassScalar()
#1 {main} #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: Stack trace:
#0 %s(128): returnLoadedInterfaceScalar() #0 %s(128): returnLoadedInterfaceScalar()
#1 {main} #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: Stack trace:
#0 %s(138): returnCallable() #0 %s(138): returnCallable()
#1 {main} #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: Stack trace:
#0 %s(148): returnIterable() #0 %s(148): returnIterable()
#1 {main} #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: Stack trace:
#0 %s(158): returnInt() #0 %s(158): returnInt()
#1 {main} #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: Stack trace:
#0 %s(167): returnMissingUnloadedClass() #0 %s(167): returnMissingUnloadedClass()
#1 {main} #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: Stack trace:
#0 %s(176): returnMissingLoadedClass() #0 %s(176): returnMissingLoadedClass()
#1 {main} #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: Stack trace:
#0 %s(185): returnMissingLoadedInterface() #0 %s(185): returnMissingLoadedInterface()
#1 {main} #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: Stack trace:
#0 %s(194): returnMissingCallable() #0 %s(194): returnMissingCallable()
#1 {main} #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: Stack trace:
#0 %s(203): returnMissingIterable() #0 %s(203): returnMissingIterable()
#1 {main} #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: Stack trace:
#0 %s(212): returnMissingInt() #0 %s(212): returnMissingInt()
#1 {main} #1 {main}

View file

@ -136,7 +136,15 @@ ZEND_API const char *zend_zval_type_name(const zval *arg) /* {{{ */
{ {
ZVAL_DEREF(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); *need_msg = zend_type_to_string_resolved(arg_info->type, zf->common.scope);
if (value) { if (value) {
zend_bool has_class = ZEND_TYPE_HAS_CLASS(arg_info->type) *given_kind = zend_zval_type_name(value);
|| (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);
}
} else { } else {
*given_kind = "none"; *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); type_str = zend_type_to_string(info->type);
zend_type_error("Cannot assign %s to property %s::$%s of type %s", 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), ZSTR_VAL(info->ce->name),
zend_get_unmangled_property_name(info->name), zend_get_unmangled_property_name(info->name),
ZSTR_VAL(type_str)); ZSTR_VAL(type_str));
@ -1187,7 +1181,7 @@ ZEND_API ZEND_COLD void zend_verify_return_error(
zf, arg_info, cache_slot, value, zf, arg_info, cache_slot, value,
&fname, &fsep, &fclass, &need_msg, &given_msg); &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); fclass, fsep, fname, ZSTR_VAL(need_msg), given_msg);
zend_string_release(need_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, zf, arg_info, cache_slot, value,
&fname, &fsep, &fclass, &need_msg, &given_msg); &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); 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 *type1_str = zend_type_to_string(prop1->type);
zend_string *type2_str = zend_type_to_string(prop2->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", 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), ZSTR_VAL(prop1->ce->name),
zend_get_unmangled_property_name(prop1->name), zend_get_unmangled_property_name(prop1->name),
ZSTR_VAL(type1_str), 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_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_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", 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), ZSTR_VAL(prop->ce->name),
zend_get_unmangled_property_name(prop->name), zend_get_unmangled_property_name(prop->name),
ZSTR_VAL(type_str) 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 *type1_str = zend_type_to_string(prop1->type);
zend_string *type2_str = zend_type_to_string(prop2->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", 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), ZSTR_VAL(prop1->ce->name),
zend_get_unmangled_property_name(prop1->name), zend_get_unmangled_property_name(prop1->name),
ZSTR_VAL(type1_str), ZSTR_VAL(type1_str),

View file

@ -33,7 +33,7 @@ object(DateTimeZone)#%d (2) {
} }
int(0) 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: Stack trace:
#0 %s(%d): timezone_offset_get(Object(DateTime), Object(DateTimeZone)) #0 %s(%d): timezone_offset_get(Object(DateTime), Object(DateTimeZone))
#1 {main} #1 {main}

View file

@ -24,4 +24,4 @@ object(DateTimeImmutable)#%d (3) {
["timezone"]=> ["timezone"]=>
string(13) "Europe/London" 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" string(13) "Europe/London"
} }
bool(true) 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-- --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) { --> 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) --> bad arg: int(1)
float(%s) float(%s)

View file

@ -65,7 +65,7 @@ try {
*** Testing timezone_offset_get() : error conditions *** *** Testing timezone_offset_get() : error conditions ***
-- Testing timezone_offset_get() function with an invalid values for $object argument -- -- 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" 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 -- -- 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" 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 NumberFormatter::format(): Argument #1 ($value) must be of type int|float, string given
string(1) "1" string(1) "1"
string(1) "0" 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-- --EXPECT--
error: 0, IntlCalendar::equals() expects exactly 1 parameter, 0 given 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 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) bool(true)
libxml_set_streams_context(): Argument #1 ($context) must be of type resource, int given libxml_set_streams_context(): Argument #1 ($context) must be of type resource, int given
bool(true) 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) bool(true)
libxml_set_streams_context(): Argument #1 ($context) must be of type resource, array given libxml_set_streams_context(): Argument #1 ($context) must be of type resource, array given
bool(true) bool(true)

View file

@ -166,9 +166,9 @@ ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must
--heredoc-- --heredoc--
ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must be 'none', 'long', 'entity' or a valid codepoint ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must be 'none', 'long', 'entity' or a valid codepoint
--instance of classWithToString-- --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-- --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-- --undefined var--
int(12345) int(12345)
--unset var-- --unset var--

View file

@ -167,7 +167,7 @@ ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must
--instance of classWithToString-- --instance of classWithToString--
ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must be 'none', 'long', 'entity' or a valid codepoint ValueError: mb_substitute_character(): Argument #1 ($substitute_character) must be 'none', 'long', 'entity' or a valid codepoint
--instance of classWithoutToString-- --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-- --undefined var--
int(0) int(0)
--unset var-- --unset var--

View file

@ -130,7 +130,7 @@ require_once('skipifconnectfailure.inc');
?> ?>
--EXPECTF-- --EXPECTF--
mysqli object is not fully initialized 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() 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 [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 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-- --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: Stack trace:
#0 %s(%d): test(Object(stdClass)) #0 %s(%d): test(Object(stdClass))
#1 {main} #1 {main}

View file

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

View file

@ -66,5 +66,5 @@ array(2) {
[2]=> [2]=>
string(4) "test" 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 Done

View file

@ -80,5 +80,5 @@ array(1) {
string(1) "t" 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 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]/ Arg value is /[a-zA-Z]/
int(1) 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 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, 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 Done

View file

@ -67,4 +67,4 @@ array(3) {
[2]=> [2]=>
string(4) " 5 6" 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.5 does not exist
Method 1 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, 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.5 does not exist
Property 1 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, 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-- --EXPECTF--
Call to private ReflectionReference::__construct() from invalid context 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 ReflectionReference::fromArrayElement(): Argument #2 ($key) must be of type string|int, float given
Array key not found Array key not found
Serialization of 'ReflectionReference' is not allowed Serialization of 'ReflectionReference' is not allowed

View file

@ -86,5 +86,5 @@ session_start();
--EXPECT-- --EXPECT--
*** Testing session_set_save_handler() function: interface wrong *** *** Testing session_set_save_handler() function: interface wrong ***
bool(true) 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 good handler writing

View file

@ -12,4 +12,4 @@ try {
?> ?>
--EXPECT-- --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-- --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
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=== ===1===
object(stdClass)#%d (0) { object(stdClass)#%d (0) {
} }
CachingIterator::offsetExists(): 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, object given CachingIterator::offsetGet(): Argument #1 ($index) must be of type string, stdClass given
===2=== ===2===
object(MyFoo)#%d (0) { object(MyFoo)#%d (0) {
} }
@ -124,8 +124,8 @@ int(0)
===1=== ===1===
object(stdClass)#1 (0) { object(stdClass)#1 (0) {
} }
CachingIterator::offsetExists(): 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, object given CachingIterator::offsetGet(): Argument #1 ($index) must be of type string, stdClass given
===2=== ===2===
object(MyFoo)#2 (0) { object(MyFoo)#2 (0) {
} }

View file

@ -9,4 +9,4 @@ try {
} }
?> ?>
--EXPECT-- --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 array_diff_assoc(): Argument #1 ($arr1) must be of type array, string given
-- Iteration 23 -- -- 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 -- -- Iteration 24 --
array_diff_assoc(): Argument #1 ($arr1) must be of type array, null given 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 array_diff_assoc(): Argument #2 ($arr2) must be of type array, string given
-- Iteration 23 -- -- 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 -- -- Iteration 24 --
array_diff_assoc(): Argument #2 ($arr2) must be of type array, null given 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 array_diff_key(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_diff_key(): Argument #1 ($arr1) must be of type array, null given 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 array_diff_key(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_diff_key(): Argument #2 ($arr2) must be of type array, null given 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 array_diff_uassoc(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString-- --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-- --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-- --undefined var--
array_diff_uassoc(): Argument #1 ($arr1) must be of type array, null given 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 array_diff_uassoc(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString-- --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-- --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-- --undefined var--
array_diff_uassoc(): Argument #2 ($arr2) must be of type array, null given 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 array_diff_ukey(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_diff_ukey(): Argument #1 ($arr1) must be of type array, null given 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 array_diff_ukey(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_diff_ukey(): Argument #2 ($arr2) must be of type array, null given 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 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 -- 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 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 -- 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 -- 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 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 -- 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, object 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 -- 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 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 -- 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 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 -- 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, object 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 -- 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 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 array_intersect_key(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_intersect_key(): Argument #1 ($arr1) must be of type array, null given 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 array_intersect_key(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_intersect_key(): Argument #2 ($arr2) must be of type array, null given 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 array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_intersect_uassoc(): Argument #1 ($arr1) must be of type array, null given 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 array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_intersect_uassoc(): Argument #2 ($arr2) must be of type array, null given 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 array_intersect_ukey(): Argument #1 ($arr1) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_intersect_ukey(): Argument #1 ($arr1) must be of type array, null given 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 array_intersect_ukey(): Argument #2 ($arr2) must be of type array, string given
--instance of classWithToString-- --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, classWithToString 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
--instance of classWithoutToString-- --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, classWithoutToString 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
--undefined var-- --undefined var--
array_intersect_ukey(): Argument #2 ($arr2) must be of type array, null given 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 -- 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 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 -- Iterator 21 --array_intersect(): Argument #1 ($arr1) must be of type array, classA given
array_intersect(): Argument #1 ($arr1) must be of type array, object 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 -- 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 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 -- 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 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 -- Iterator 21 --array_intersect(): Argument #2 ($arr2) must be of type array, classA given
array_intersect(): Argument #2 ($arr2) must be of type array, object 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 -- 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 array_intersect(): Argument #2 ($arr2) must be of type array, null given

View file

@ -224,5 +224,5 @@ bool(true)
Illegal offset type Illegal offset type
*** Testing operation on objects *** *** 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 Done

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