Fix NameResolver for class constant native type

This commit is contained in:
Ondrej Mirtes 2023-11-28 14:11:58 +01:00 committed by Nikita Popov
parent e453389866
commit 2a5e81f7ca
2 changed files with 11 additions and 1 deletions

View File

@ -118,6 +118,9 @@ class NameResolver extends NodeVisitorAbstract
$this->addNamespacedName($const); $this->addNamespacedName($const);
} }
} else if ($node instanceof Stmt\ClassConst) { } else if ($node instanceof Stmt\ClassConst) {
if (null !== $node->type) {
$node->type = $this->resolveType($node->type);
}
$this->resolveAttrGroups($node); $this->resolveAttrGroups($node);
} else if ($node instanceof Stmt\EnumCase) { } else if ($node instanceof Stmt\EnumCase) {
$this->resolveAttrGroups($node); $this->resolveAttrGroups($node);

View File

@ -189,7 +189,7 @@ class A extends B implements C, D {
E::h as i; E::h as i;
E::j insteadof F, G; E::j insteadof F, G;
} }
#[X] #[X]
public float $php = 7.4; public float $php = 7.4;
public ?Foo $person; public ?Foo $person;
@ -198,6 +198,10 @@ class A extends B implements C, D {
#[X] #[X]
const C = 1; const C = 1;
public const X A = X::Bar;
public const X\Foo B = X\Foo::Bar;
public const \X\Foo C = \X\Foo::Bar;
} }
#[X] #[X]
@ -263,6 +267,9 @@ class A extends \NS\B implements \NS\C, \NS\D
public \NS\A|\NS\B|int $prop; public \NS\A|\NS\B|int $prop;
#[\NS\X] #[\NS\X]
const C = 1; const C = 1;
public const \NS\X A = \NS\X::Bar;
public const \NS\X\Foo B = \NS\X\Foo::Bar;
public const \X\Foo C = \X\Foo::Bar;
} }
#[\NS\X] #[\NS\X]
interface A extends \NS\C, \NS\D interface A extends \NS\C, \NS\D