[Config] fix tracking default values that reference the parent class

This commit is contained in:
Nicolas Grekas 2021-06-21 16:51:25 +02:00
parent ffb0d2d424
commit 978747e6ea
2 changed files with 4 additions and 1 deletions

View File

@ -161,6 +161,8 @@ class ReflectionClassResource implements SelfCheckingResourceInterface
}
}
$defined = \Closure::bind(static function ($c) { return \defined($c); }, null, $class->name);
foreach ($class->getMethods(\ReflectionMethod::IS_PUBLIC | \ReflectionMethod::IS_PROTECTED) as $m) {
if (\PHP_VERSION_ID >= 80000) {
foreach ($m->getAttributes() as $a) {
@ -187,7 +189,7 @@ class ReflectionClassResource implements SelfCheckingResourceInterface
continue;
}
if (!$p->isDefaultValueConstant() || \defined($p->getDefaultValueConstantName())) {
if (!$p->isDefaultValueConstant() || $defined($p->getDefaultValueConstantName())) {
$defaults[$p->name] = $p->getDefaultValue();
continue;

View File

@ -164,6 +164,7 @@ EOPHP;
yield [true, 17, 'public function ccc($bar = 187) {}'];
yield [true, 17, 'public function ccc($bar = ANOTHER_ONE_THAT_WILL_NEVER_BE_DEFINED_CCCCCCCCC) {}'];
yield [true, 17, 'public function ccc($bar = parent::BOOM) {}'];
yield [true, 17, null, static function () { \define('A_CONSTANT_THAT_FOR_SURE_WILL_NEVER_BE_DEFINED_CCCCCC', 'foo'); }];
}