1--TEST--
2Typed property must cast when used with &__get()
3--FILE--
4<?php
5
6class Test {
7    public $prop = "42";
8    public int $val;
9
10    public function &__get($name) {
11        return $this->prop;
12    }
13}
14
15$test = new Test;
16unset($test->val);
17var_dump($test);
18var_dump($val = &$test->val);
19var_dump($test);
20
21$test->prop = "x";
22var_dump($test, $val);
23
24?>
25--EXPECT--
26object(Test)#1 (1) {
27  ["prop"]=>
28  string(2) "42"
29  ["val"]=>
30  uninitialized(int)
31}
32int(42)
33object(Test)#1 (1) {
34  ["prop"]=>
35  &int(42)
36  ["val"]=>
37  uninitialized(int)
38}
39object(Test)#1 (1) {
40  ["prop"]=>
41  &string(1) "x"
42  ["val"]=>
43  uninitialized(int)
44}
45string(1) "x"
46