--- /dev/null
+--TEST--
+Catch method calls on non-objects inside array access
+--FILE--
+<?php
+set_error_handler(function($code, $message) {
+ var_dump($code, $message);
+});
+
+$x= null;
+$a= [null => 'OK'];
+var_dump($a[$x->method()]);
+echo "Alive\n";
+?>
+--EXPECTF--
+int(4096)
+string(%d) "Call to a member function method() on null"
+string(2) "OK"
+Alive
\ No newline at end of file
--- /dev/null
+--TEST--
+Catch method calls on non-objects inside array creation
+--FILE--
+<?php
+set_error_handler(function($code, $message) {
+ var_dump($code, $message);
+});
+
+$x= null;
+var_dump([$x->method() => 'OK']);
+var_dump([$x->method(), $x->method(), $x->method()]);
+echo "Alive\n";
+?>
+--EXPECTF--
+int(4096)
+string(%d) "Call to a member function method() on null"
+array(1) {
+ [""]=>
+ string(2) "OK"
+}
+int(4096)
+string(%d) "Call to a member function method() on null"
+int(4096)
+string(%d) "Call to a member function method() on null"
+int(4096)
+string(%d) "Call to a member function method() on null"
+array(3) {
+ [0]=>
+ NULL
+ [1]=>
+ NULL
+ [2]=>
+ NULL
+}
+Alive
\ No newline at end of file
--- /dev/null
+--TEST--
+Catch method calls on non-objects inside concatenation
+--FILE--
+<?php
+set_error_handler(function($code, $message) {
+ var_dump($code, $message);
+});
+
+$x= null;
+echo "Before\n".$x->method()."After\n";
+echo "Alive\n";
+?>
+--EXPECTF--
+int(4096)
+string(%d) "Call to a member function method() on null"
+Before
+After
+Alive
\ No newline at end of file
--- /dev/null
+--TEST--
+Catch method calls on non-objects inside echo
+--FILE--
+<?php
+set_error_handler(function($code, $message) {
+ var_dump($code, $message);
+});
+
+$x= null;
+echo "Before\n", $x->method(), "After\n";
+echo "Alive\n";
+?>
+--EXPECTF--
+Before
+int(4096)
+string(%d) "Call to a member function method() on null"
+After
+Alive
\ No newline at end of file