1--TEST--
2__clone() can indirectly modify unlocked readonly properties
3--FILE--
4<?php
5
6class Foo {
7    public function __construct(
8        public readonly array $bar
9    ) {}
10
11    public function __clone()
12    {
13        $this->bar['bar'] = 'bar';
14    }
15}
16
17$foo = new Foo([]);
18// First call fills the cache slot
19var_dump(clone $foo);
20var_dump(clone $foo);
21
22?>
23--EXPECTF--
24object(Foo)#2 (%d) {
25  ["bar"]=>
26  array(1) {
27    ["bar"]=>
28    string(3) "bar"
29  }
30}
31object(Foo)#2 (%d) {
32  ["bar"]=>
33  array(1) {
34    ["bar"]=>
35    string(3) "bar"
36  }
37}
38