@@ -229,7 +229,7 @@ public function setValue(&$objectOrArray, $propertyPath, $value)
229
229
$ value = $ zval [self ::VALUE ];
230
230
}
231
231
} catch (\TypeError $ e ) {
232
- self ::throwInvalidArgumentException ($ e ->getMessage (), $ e ->getTrace (), 0 );
232
+ self ::throwInvalidArgumentException ($ e ->getMessage (), $ e ->getTrace (), 0 , $ e );
233
233
234
234
// It wasn't thrown in this class so rethrow it
235
235
throw $ e ;
@@ -253,7 +253,7 @@ public static function handleError($type, $message, $file, $line, $context = [])
253
253
return null !== self ::$ previousErrorHandler && false !== \call_user_func (self ::$ previousErrorHandler , $ type , $ message , $ file , $ line , $ context );
254
254
}
255
255
256
- private static function throwInvalidArgumentException ($ message , $ trace , $ i )
256
+ private static function throwInvalidArgumentException ($ message , $ trace , $ i, $ previous = null )
257
257
{
258
258
// the type mismatch is not caused by invalid arguments (but e.g. by an incompatible return type hint of the writer method)
259
259
if (0 !== strpos ($ message , 'Argument ' )) {
@@ -267,7 +267,7 @@ private static function throwInvalidArgumentException($message, $trace, $i)
267
267
$ type = substr ($ message , 2 + $ j , strpos ($ message , ' given ' , $ j ) - $ j - 2 );
268
268
$ message = substr ($ message , $ pos , $ j - $ pos );
269
269
270
- throw new InvalidArgumentException (sprintf ('Expected argument of type "%s", "%s" given ' , $ message , 'NULL ' === $ type ? 'null ' : $ type ));
270
+ throw new InvalidArgumentException (sprintf ('Expected argument of type "%s", "%s" given ' , $ message , 'NULL ' === $ type ? 'null ' : $ type ), 0 , $ previous );
271
271
}
272
272
}
273
273
0 commit comments