diff --git a/src/Symbol/NamespaceSymbol.php b/src/Symbol/NamespaceSymbol.php index 6b3b27f..a438504 100644 --- a/src/Symbol/NamespaceSymbol.php +++ b/src/Symbol/NamespaceSymbol.php @@ -4,6 +4,8 @@ namespace ComposerUnused\SymbolParser\Symbol; +use function rtrim; + final class NamespaceSymbol implements SymbolInterface { /** @var string */ @@ -11,7 +13,7 @@ final class NamespaceSymbol implements SymbolInterface public function __construct(string $namespace) { - $this->namespace = $namespace; + $this->namespace = rtrim($namespace, '\\') . '\\'; } public static function fromClass(string $class): self @@ -26,6 +28,6 @@ public function getIdentifier(): string public function matches(SymbolInterface $symbol): bool { - return strpos($symbol->getIdentifier(), $this->namespace) === 0; + return strpos(rtrim($symbol->getIdentifier(), '\\') . '\\', $this->namespace) === 0; } } diff --git a/tests/Unit/Symbol/NamespaceSymbolTest.php b/tests/Unit/Symbol/NamespaceSymbolTest.php index eed3c44..57ac073 100644 --- a/tests/Unit/Symbol/NamespaceSymbolTest.php +++ b/tests/Unit/Symbol/NamespaceSymbolTest.php @@ -32,4 +32,15 @@ public function itShouldMatchNameSpaceFromClass(): void self::assertTrue($namespaceSymbol->matches($namespaceSymbolFromClass)); } + + /** + * @test + */ + public function itShouldMatchShortNamespaces(): void + { + $namespaceSymbol = new NamespaceSymbol('Foo\\Baz\\'); + $symbol = new Symbol('Foo\\Baz'); + + self::assertTrue($namespaceSymbol->matches($symbol)); + } }