diff options
| author | David Walker <dave@mudsite.com> | 2018-02-14 22:06:34 -0700 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-14 12:50:25 +0100 |
| commit | e63febb1c772e15c1da891f00e3a343090e43c67 (patch) | |
| tree | 995c82b1627d266332e6cf1dfa8eca8cfce7c2a2 /tests | |
| parent | dab54624842e76350bb6f5e71a8ef0f53ed34630 (diff) | |
| download | php-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.phpt | 8 | ||||
| -rw-r--r-- | tests/lang/foreachLoop.016.phpt | 8 | ||||
| -rw-r--r-- | tests/lang/passByReference_006.phpt | 48 |
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" |
