Skip to content

Commit

Permalink
Do not enforce resolve to null on unknown classes
Browse files Browse the repository at this point in the history
  • Loading branch information
dritter committed May 30, 2022
1 parent 0e45066 commit be78bf6
Showing 1 changed file with 10 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public function resolveTagFullyQualifiedName(
$tag = ltrim($tag, '@');

$uses = $this->useImportsResolver->resolveForNode($node);
$fullyQualifiedClass = $this->resolveFullyQualifiedClass($uses, $node, $tag);
$fullyQualifiedClass = $this->resolveFullyQualifiedClass($uses, $node, $tag, $returnNullOnUnknownClass);

if ($fullyQualifiedClass === null) {
if ($returnNullOnUnknownClass) {
Expand All @@ -62,7 +62,7 @@ public function resolveTagFullyQualifiedName(
/**
* @param Use_[]|GroupUse[] $uses
*/
private function resolveFullyQualifiedClass(array $uses, Node $node, string $tag): ?string
private function resolveFullyQualifiedClass(array $uses, Node $node, string $tag, bool $returnNullOnUnknownClass): ?string
{
$scope = $node->getAttribute(AttributeKey::SCOPE);

Expand All @@ -75,7 +75,7 @@ private function resolveFullyQualifiedClass(array $uses, Node $node, string $tag
}

if (! str_contains($tag, '\\')) {
return $this->resolveAsAliased($uses, $tag);
return $this->resolveAsAliased($uses, $tag, $returnNullOnUnknownClass);
}

if (str_starts_with($tag, '\\')
Expand All @@ -89,13 +89,13 @@ private function resolveFullyQualifiedClass(array $uses, Node $node, string $tag
}

$class = $this->useImportNameMatcher->matchNameWithUses($tag, $uses);
return $this->resolveClass($class);
return $this->resolveClass($class, $returnNullOnUnknownClass);
}

/**
* @param Use_[]|GroupUse[] $uses
*/
private function resolveAsAliased(array $uses, string $tag): ?string
private function resolveAsAliased(array $uses, string $tag, bool $returnNullOnUnknownClass): ?string
{
foreach ($uses as $use) {
$prefix = $use instanceof GroupUse
Expand All @@ -111,20 +111,21 @@ private function resolveAsAliased(array $uses, string $tag): ?string
$alias = $useUse->alias;
if ($alias->toString() === $tag) {
$class = $prefix . $useUse->name->toString();
return $this->resolveClass($class);
return $this->resolveClass($class, $returnNullOnUnknownClass);
}
}
}

$class = $this->useImportNameMatcher->matchNameWithUses($tag, $uses);
return $this->resolveClass($class);
return $this->resolveClass($class, $returnNullOnUnknownClass);
}

private function resolveClass(?string $class): ?string
private function resolveClass(?string $class, bool $returnNullOnUnknownClass): ?string
{
if (null === $class) {
return null;
}
return $this->reflectionProvider->hasClass($class) ? $class : null;
$resolvedClass = $this->reflectionProvider->hasClass($class) ? $class : null;
return $returnNullOnUnknownClass ? $resolvedClass : $class;
}
}

0 comments on commit be78bf6

Please sign in to comment.