Fix indirect readonly error messages (#14979)

$obj->ro[] = 42;, passByRef($obj->ro); and the likes should emit an indirect
modification error message. This message already existed but was used
inconsistently.
This commit is contained in:
Ilija Tovilo 2024-07-16 23:24:07 +02:00 committed by GitHub
parent 71c520c74f
commit fdbe910b3b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 28 additions and 28 deletions

View file

@ -22,5 +22,5 @@ var_dump(Foo::Bar->value);
?> ?>
--EXPECT-- --EXPECT--
Cannot modify readonly property Foo::$value Cannot indirectly modify readonly property Foo::$value
int(0) int(0)

View file

@ -23,5 +23,5 @@ var_dump(Foo::Bar->value);
?> ?>
--EXPECT-- --EXPECT--
Cannot modify readonly property Foo::$value Cannot indirectly modify readonly property Foo::$value
int(0) int(0)

View file

@ -18,5 +18,5 @@ var_dump(Foo::Bar->value);
?> ?>
--EXPECT-- --EXPECT--
Cannot modify readonly property Foo::$value Cannot indirectly modify readonly property Foo::$value
int(0) int(0)

View file

@ -19,5 +19,5 @@ var_dump(Foo::Bar->value);
?> ?>
--EXPECT-- --EXPECT--
Cannot modify readonly property Foo::$value Cannot indirectly modify readonly property Foo::$value
int(0) int(0)

View file

@ -88,35 +88,35 @@ $replaceProp3();
var_dump($test->prop3); var_dump($test->prop3);
?> ?>
--EXPECT-- --EXPECTF--
string(1) "a" string(1) "a"
Cannot modify readonly property Test::$prop Cannot modify readonly property Test::$prop
string(1) "a" string(1) "a"
Cannot modify readonly property Test::$prop2 Cannot indirectly modify readonly property Test::$prop2
Cannot modify readonly property Test::$prop2 Cannot modify readonly property Test::$prop2
array(0) { array(0) {
} }
object(stdClass)#3 (1) { object(stdClass)#%d (1) {
["foo"]=> ["foo"]=>
int(1) int(1)
} }
object(stdClass)#3 (1) { object(stdClass)#%d (1) {
["foo"]=> ["foo"]=>
int(1) int(1)
} }
Cannot modify readonly property Test::$prop2 Cannot indirectly modify readonly property Test::$prop2
Cannot modify readonly property Test::$prop2 Cannot indirectly modify readonly property Test::$prop2
array(0) { array(0) {
} }
object(stdClass)#5 (1) { object(stdClass)#%d (1) {
["foo"]=> ["foo"]=>
int(1) int(1)
} }
object(stdClass)#5 (1) { object(stdClass)#%d (1) {
["foo"]=> ["foo"]=>
int(1) int(1)
} }

View file

@ -57,20 +57,20 @@ try {
} }
?> ?>
--EXPECT-- --EXPECTF--
object(TestSetOnce)#2 (1) { object(TestSetOnce)#%d (1) {
["prop"]=> ["prop"]=>
array(1) { array(1) {
[0]=> [0]=>
int(1) int(1)
} }
} }
object(TestSetOnce)#1 (1) { object(TestSetOnce)#%d (1) {
["prop"]=> ["prop"]=>
array(1) { array(1) {
[0]=> [0]=>
int(1) int(1)
} }
} }
Cannot modify readonly property TestSetTwice::$prop Cannot indirectly modify readonly property TestSetTwice::$prop
Cannot modify readonly property TestSetTwice::$prop Cannot indirectly modify readonly property TestSetTwice::$prop

View file

@ -73,10 +73,10 @@ Cannot modify readonly property Test::$prop
Cannot modify readonly property Test::$prop Cannot modify readonly property Test::$prop
Cannot modify readonly property Test::$prop Cannot modify readonly property Test::$prop
Cannot modify readonly property Test::$prop Cannot modify readonly property Test::$prop
Cannot modify readonly property Test::$prop Cannot indirectly modify readonly property Test::$prop
Cannot modify readonly property Test::$prop Cannot indirectly modify readonly property Test::$prop
Cannot modify readonly property Test::$prop Cannot indirectly modify readonly property Test::$prop
array(0) { array(0) {
} }
Cannot modify readonly property Test::$prop2 Cannot indirectly modify readonly property Test::$prop2
Cannot modify readonly property Test::$prop2 Cannot indirectly modify readonly property Test::$prop2

View file

@ -95,13 +95,13 @@ foreach ([true, false] as $init) {
Init: 1, scope: 1, op: r: 1 Init: 1, scope: 1, op: r: 1
Init: 1, scope: 1, op: w: Cannot modify readonly property Test::$prop Init: 1, scope: 1, op: w: Cannot modify readonly property Test::$prop
Init: 1, scope: 1, op: rw: Cannot modify readonly property Test::$prop Init: 1, scope: 1, op: rw: Cannot modify readonly property Test::$prop
Init: 1, scope: 1, op: im: Cannot modify readonly property Test::$prop Init: 1, scope: 1, op: im: Cannot indirectly modify readonly property Test::$prop
Init: 1, scope: 1, op: is: 1 Init: 1, scope: 1, op: is: 1
Init: 1, scope: 1, op: us: Cannot unset readonly property Test::$prop Init: 1, scope: 1, op: us: Cannot unset readonly property Test::$prop
Init: 1, scope: 0, op: r: 1 Init: 1, scope: 0, op: r: 1
Init: 1, scope: 0, op: w: Cannot modify readonly property Test::$prop Init: 1, scope: 0, op: w: Cannot modify readonly property Test::$prop
Init: 1, scope: 0, op: rw: Cannot modify readonly property Test::$prop Init: 1, scope: 0, op: rw: Cannot modify readonly property Test::$prop
Init: 1, scope: 0, op: im: Cannot modify readonly property Test::$prop Init: 1, scope: 0, op: im: Cannot indirectly modify readonly property Test::$prop
Init: 1, scope: 0, op: is: 1 Init: 1, scope: 0, op: is: 1
Init: 1, scope: 0, op: us: Cannot unset readonly property Test::$prop Init: 1, scope: 0, op: us: Cannot unset readonly property Test::$prop
Init: 0, scope: 1, op: r: Typed property Test::$prop must not be accessed before initialization Init: 0, scope: 1, op: r: Typed property Test::$prop must not be accessed before initialization

View file

@ -3367,7 +3367,7 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c
} else if (Z_PROP_FLAG_P(ptr) & IS_PROP_REINITABLE) { } else if (Z_PROP_FLAG_P(ptr) & IS_PROP_REINITABLE) {
Z_PROP_FLAG_P(ptr) &= ~IS_PROP_REINITABLE; Z_PROP_FLAG_P(ptr) &= ~IS_PROP_REINITABLE;
} else { } else {
zend_readonly_property_modification_error(prop_info); zend_readonly_property_indirect_modification_error(prop_info);
ZVAL_ERROR(result); ZVAL_ERROR(result);
} }
return; return;

View file

@ -697,7 +697,7 @@ try_again:
} else if (Z_PROP_FLAG_P(retval) & IS_PROP_REINITABLE) { } else if (Z_PROP_FLAG_P(retval) & IS_PROP_REINITABLE) {
Z_PROP_FLAG_P(retval) &= ~IS_PROP_REINITABLE; Z_PROP_FLAG_P(retval) &= ~IS_PROP_REINITABLE;
} else { } else {
zend_readonly_property_modification_error(prop_info); zend_readonly_property_indirect_modification_error(prop_info);
retval = &EG(uninitialized_zval); retval = &EG(uninitialized_zval);
} }
} }

View file

@ -13959,7 +13959,7 @@ static int zend_jit_fetch_obj(zend_jit_ctx *jit,
ir_IF_FALSE(if_reinitable); ir_IF_FALSE(if_reinitable);
jit_SET_EX_OPLINE(jit, opline); jit_SET_EX_OPLINE(jit, opline);
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_readonly_property_modification_error), prop_info_ref); ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_readonly_property_indirect_modification_error), prop_info_ref);
jit_set_Z_TYPE_INFO(jit, res_addr, _IS_ERROR); jit_set_Z_TYPE_INFO(jit, res_addr, _IS_ERROR);
ir_END_list(end_inputs); ir_END_list(end_inputs);
@ -14033,7 +14033,7 @@ static int zend_jit_fetch_obj(zend_jit_ctx *jit,
ir_IF_FALSE(if_reinitable); ir_IF_FALSE(if_reinitable);
jit_SET_EX_OPLINE(jit, opline); jit_SET_EX_OPLINE(jit, opline);
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_readonly_property_modification_error), ir_CONST_ADDR(prop_info)); ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_readonly_property_indirect_modification_error), ir_CONST_ADDR(prop_info));
jit_set_Z_TYPE_INFO(jit, res_addr, _IS_ERROR); jit_set_Z_TYPE_INFO(jit, res_addr, _IS_ERROR);
ir_END_list(end_inputs); ir_END_list(end_inputs);