TypePHP 编译器 https://swoole.com/aot/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

55 lines
991 B

--TEST--
Nullsafe receiver temporaries release weak targets after the statement
--FILE--
<?php
final class NullsafeWeakReceiver
{
public string $value = 'probe';
public function label(): string
{
return $this->value;
}
}
function methodReceiver(): array
{
$target = new NullsafeWeakReceiver();
$weak = WeakReference::create($target);
$observed = $weak->get()?->label();
unset($target);
gc_collect_cycles();
return [$observed, $weak->get() === null];
}
function propertyReceiver(): array
{
$target = new NullsafeWeakReceiver();
$weak = WeakReference::create($target);
$observed = $weak->get()?->value;
unset($target);
gc_collect_cycles();
return [$observed, $weak->get() === null];
}
function main(): void
{
var_dump(methodReceiver());
var_dump(propertyReceiver());
}
?>
--EXPECT--
array(2) {
[0]=>
string(5) "probe"
[1]=>
bool(true)
}
array(2) {
[0]=>
string(5) "probe"
[1]=>
bool(true)
}