summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDavid Walker <dave@mudsite.com>2018-02-14 22:06:34 -0700
committerNikita Popov <nikita.ppv@gmail.com>2019-02-14 12:50:25 +0100
commite63febb1c772e15c1da891f00e3a343090e43c67 (patch)
tree995c82b1627d266332e6cf1dfa8eca8cfce7c2a2 /tests
parentdab54624842e76350bb6f5e71a8ef0f53ed34630 (diff)
downloadphp-git-e63febb1c772e15c1da891f00e3a343090e43c67.tar.gz
Fixed bug #75921
Ensure that the "creating default object from empty value" warning is always thrown. Previously some cases were missing the warning, in particular those going through FETCH_OBJ_W rather than a dedicated opcode (like ASSIGN_OBJ). One slightly unfortunate side-effect of this change is that something like $a->b->c = 'd' will now generate two warnings rather than one when $a is null (one for property b, one for property c).
Diffstat (limited to 'tests')
-rw-r--r--tests/lang/engine_assignExecutionOrder_008.phpt8
-rw-r--r--tests/lang/foreachLoop.016.phpt8
-rw-r--r--tests/lang/passByReference_006.phpt48
3 files changed, 63 insertions, 1 deletions
diff --git a/tests/lang/engine_assignExecutionOrder_008.phpt b/tests/lang/engine_assignExecutionOrder_008.phpt
index be9b3423c8..310e0d9964 100644
--- a/tests/lang/engine_assignExecutionOrder_008.phpt
+++ b/tests/lang/engine_assignExecutionOrder_008.phpt
@@ -70,10 +70,16 @@ Warning: Creating default object from empty value in %s on line %d
good
$i->p->q=f():
Warning: Creating default object from empty value in %s on line %d
+
+Warning: Creating default object from empty value in %s on line %d
+good
+$i->p[0]=f():
+Warning: Creating default object from empty value in %s on line %d
good
-$i->p[0]=f(): good
$i->p[0]->p=f():
Warning: Creating default object from empty value in %s on line %d
+
+Warning: Creating default object from empty value in %s on line %d
good
C::$p=f(): good
C::$p[0]=f(): good
diff --git a/tests/lang/foreachLoop.016.phpt b/tests/lang/foreachLoop.016.phpt
index 00deb5f1db..fa1267fa8d 100644
--- a/tests/lang/foreachLoop.016.phpt
+++ b/tests/lang/foreachLoop.016.phpt
@@ -158,18 +158,24 @@ array(1) {
$a->b->c
Warning: Creating default object from empty value in %s on line %d
+
+Warning: Creating default object from empty value in %s on line %d
array(1) {
[0]=>
string(8) "original"
}
$a->b[0]
+
+Warning: Creating default object from empty value in %s on line %d
array(1) {
[0]=>
string(8) "original"
}
$a->b[0][0]
+
+Warning: Creating default object from empty value in %s on line %d
array(1) {
[0]=>
string(8) "original"
@@ -178,6 +184,8 @@ array(1) {
$a->b[0]->c
Warning: Creating default object from empty value in %s on line %d
+
+Warning: Creating default object from empty value in %s on line %d
array(1) {
[0]=>
string(8) "original"
diff --git a/tests/lang/passByReference_006.phpt b/tests/lang/passByReference_006.phpt
index 9f5d275333..c1478663ca 100644
--- a/tests/lang/passByReference_006.phpt
+++ b/tests/lang/passByReference_006.phpt
@@ -55,6 +55,18 @@ var_dump($u1, $u2, $u3, $u4, $u5);
?>
--EXPECTF--
---- Pass uninitialised array & object by ref: function call ---
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
array(1) {
[0]=>
string(12) "Ref1 changed"
@@ -91,6 +103,18 @@ object(stdClass)#%d (1) {
---- Pass uninitialised arrays & objects by ref: static method call ---
Deprecated: Non-static method C::refs() should not be called statically in %s on line 39
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
array(1) {
[0]=>
string(12) "Ref1 changed"
@@ -126,6 +150,18 @@ object(stdClass)#%d (1) {
---- Pass uninitialised arrays & objects by ref: constructor ---
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
array(1) {
[0]=>
string(12) "Ref1 changed"
@@ -160,6 +196,18 @@ object(stdClass)#%d (1) {
}
---- Pass uninitialised arrays & objects by ref: instance method call ---
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
+
+Warning: Creating default object from empty value in %spassByReference_006.php on line %d
array(1) {
[0]=>
string(12) "Ref1 changed"