Description
The following code:
<?php
try {
assert(false && new class {
public function __construct(public Closure $f = strrev(...)) {
var_dump(($this->f)('abc'));
}
});
} catch (AssertionError $e) {
echo $e->getMessage(), PHP_EOL;
}
Resulted in this output:
assert(false && new class {
public function __construct(public Closure $f = strrev(...)) {
var_dump($this->f('abc'));
}
})
But I expected this output instead:
assert(false && new class {
public function __construct(public Closure $f = strrev(...)) {
var_dump(($this->f)('abc'));
}
})
because the parentheses around $this->f are needed to disambiguate.
PHP Version
PHP 8.6.0-dev (cli) (built: Jun 21 2026 12:05:35) (NTS DEBUG)
Copyright © The PHP Group and Contributors
Zend Engine v4.6.0-dev, Copyright © Zend by Perforce
with Zend OPcache v8.6.0-dev, Copyright ©, by Zend by Perforce
Operating System
No response
Description
The following code:
Resulted in this output:
But I expected this output instead:
because the parentheses around
$this->fare needed to disambiguate.PHP Version
Operating System
No response