From e3d6d6fe5113fc139d337ea9e764f31273f24c35 Mon Sep 17 00:00:00 2001 From: James Buncle Date: Wed, 1 Apr 2026 17:18:45 +0100 Subject: [PATCH] Resolve imported class constant fetches --- src/Objects/ClassConstObject.php | 3 ++ src/Objects/NamespaceConstObject.php | 2 +- tests/run.php | 49 ++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/Objects/ClassConstObject.php b/src/Objects/ClassConstObject.php index 1008fa0..8f2edfb 100644 --- a/src/Objects/ClassConstObject.php +++ b/src/Objects/ClassConstObject.php @@ -109,6 +109,9 @@ private function renderClassName($class): string { if ($class instanceof \PhpParser\Node\Name\FullyQualified) { return '\\' . ltrim((string) $class, '\\'); } + if ($this->typeLookup !== null) { + return $this->typeLookup->getAbsoluteType($class); + } return (string) $class; } diff --git a/src/Objects/NamespaceConstObject.php b/src/Objects/NamespaceConstObject.php index 5d99d1d..aed745b 100644 --- a/src/Objects/NamespaceConstObject.php +++ b/src/Objects/NamespaceConstObject.php @@ -89,6 +89,6 @@ private function renderClassName($class): string { return '\\' . ltrim((string) $class, '\\'); } - return (string) $class; + return $this->typeLookup->getAbsoluteType($class); } } diff --git a/tests/run.php b/tests/run.php index f1244e2..a16aeb1 100644 --- a/tests/run.php +++ b/tests/run.php @@ -865,6 +865,53 @@ function build(?Alias $item, Other $other = null): ?Alias {} ], $signatures); } +function testSignatureSearchResolvesImportedClassConstantFetchesInValues(): void { + $root = createRepository('class-const-fetch-resolution', [ + 'src/Config.php' => <<<'PHP' +__construct()', + '\Demo\Settings::MODE = \Vendor\Config::DEFAULT_MODE', + ], $signatures); +} + +function testClassConstantFetchAliasChangesAffectDiffs(): void { + $root = createRepository('class-const-fetch-alias-diff', [ + 'src/Config.php' => <<<'PHP' +diff('HEAD', 'WC')->getIncrement()); +} + function testSignatureSearchResolvesImportedConstantsInDefaultsAndValues(): void { $root = createRepository('const-import-resolution', [ 'src/Config.php' => <<<'PHP' @@ -1947,6 +1994,8 @@ function testCliParsingAndDefaults(): void { testTraitUseSignatureModelsRenderCurrentStrings(); testNamespaceConstantSignatureModelsRenderCurrentStrings(); +testSignatureSearchResolvesImportedClassConstantFetchesInValues(); +testClassConstantFetchAliasChangesAffectDiffs(); testSignatureSearchResolvesImportedConstantsInDefaultsAndValues(); testSignatureSearchFormatsMagicConstants(); testMagicConstantChangesAffectDiffs();