1--TEST--
2Modification of typed property during assignment must not leak
3--FILE--
4<?php
5
6class A {
7    public string $prop = "";
8}
9
10class B {
11    public function __toString() {
12        global $a;
13        $a->prop = "dont ";
14        $a->prop .= "leak ";
15        $a->prop .= "me!";
16        return "test";
17    }
18}
19
20$a = new A;
21$a->prop = new B;
22var_dump($a);
23
24$a = new A;
25$prop = &$a->prop;
26$a->prop = new B;
27var_dump($a);
28
29?>
30--EXPECTF--
31object(A)#1 (1) {
32  ["prop"]=>
33  string(4) "test"
34}
35object(A)#%d (1) {
36  ["prop"]=>
37  &string(4) "test"
38}
39