diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php index ed852fd041942..7fc7b4f363826 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php @@ -65,13 +65,16 @@ public function process(ContainerBuilder $container) // check for typos $candidates = array(); - foreach ($tags as $definedTag) { - if ($definedTag === $tag) { - continue; - } - if (false !== strpos($definedTag, $tag) || levenshtein($tag, $definedTag) <= strlen($tag) / 3) { - $candidates[] = $definedTag; + if (null !== $tag && '' !== $tag) { + foreach ($tags as $definedTag) { + if ($definedTag === $tag) { + continue; + } + + if (false !== strpos($definedTag, $tag) || levenshtein($tag, $definedTag) <= strlen($tag) / 3) { + $candidates[] = $definedTag; + } } } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/UnusedTagsPassTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/UnusedTagsPassTest.php index f354007bb982d..fbbe792eb85b4 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/UnusedTagsPassTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/UnusedTagsPassTest.php @@ -12,6 +12,7 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass; +use Symfony\Component\DependencyInjection\ContainerBuilder; class UnusedTagsPassTest extends \PHPUnit_Framework_TestCase { @@ -49,4 +50,23 @@ public function testProcess() $pass->process($container); } + + public function testEmptyTagNameIsIgnored() + { + $pass = new UnusedTagsPass(); + + $container = new ContainerBuilder(); + $definition = $container->register('foo'); + $definition->addTag('', array('bar' => 'baz')); + $definition->addTag('foo'); + + $pass->process($container); + + $this->assertMessageIsLogged($container, 'Tag "foo" was defined on service(s) "foo", but was never used.'); + } + + private function assertMessageIsLogged(ContainerBuilder $container, $message) + { + $this->assertContains('Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: '.$message, $container->getCompiler()->getLog()); + } }