From 73c5eff44d77d8970a4f472c81cfd197c9878dac Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Sat, 1 Aug 2015 21:33:42 +0200 Subject: [PATCH] Fix the retrieval of the default value for variadic arguments --- .../Component/Routing/Loader/AnnotationClassLoader.php | 2 +- .../VariadicClass.php | 2 +- .../Routing/Tests/Loader/AnnotationClassLoaderTest.php | 1 + .../Routing/Tests/Loader/AnnotationFileLoaderTest.php | 6 +++--- 4 files changed, 6 insertions(+), 5 deletions(-) rename src/Symfony/Component/Routing/Tests/Fixtures/{AnnotatedClasses => OtherAnnotatedClasses}/VariadicClass.php (81%) diff --git a/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php b/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php index e35f807b4c..11d8f34d5a 100644 --- a/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php +++ b/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php @@ -180,7 +180,7 @@ abstract class AnnotationClassLoader implements LoaderInterface $defaults = array_replace($globals['defaults'], $annot->getDefaults()); foreach ($method->getParameters() as $param) { - if (!isset($defaults[$param->getName()]) && $param->isOptional()) { + if (!isset($defaults[$param->getName()]) && $param->isDefaultValueAvailable()) { $defaults[$param->getName()] = $param->getDefaultValue(); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/AnnotatedClasses/VariadicClass.php b/src/Symfony/Component/Routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php similarity index 81% rename from src/Symfony/Component/Routing/Tests/Fixtures/AnnotatedClasses/VariadicClass.php rename to src/Symfony/Component/Routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php index f0fe7f095e..729c9b4d07 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/AnnotatedClasses/VariadicClass.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses; +namespace Symfony\Component\Routing\Tests\Fixtures\OtherAnnotatedClasses; class VariadicClass { diff --git a/src/Symfony/Component/Routing/Tests/Loader/AnnotationClassLoaderTest.php b/src/Symfony/Component/Routing/Tests/Loader/AnnotationClassLoaderTest.php index 07efaf7778..67d07c3f5d 100644 --- a/src/Symfony/Component/Routing/Tests/Loader/AnnotationClassLoaderTest.php +++ b/src/Symfony/Component/Routing/Tests/Loader/AnnotationClassLoaderTest.php @@ -16,6 +16,7 @@ use Symfony\Component\Routing\Annotation\Route; class AnnotationClassLoaderTest extends AbstractAnnotationLoaderTest { protected $loader; + private $reader; protected function setUp() { diff --git a/src/Symfony/Component/Routing/Tests/Loader/AnnotationFileLoaderTest.php b/src/Symfony/Component/Routing/Tests/Loader/AnnotationFileLoaderTest.php index 94b6d02981..9a83994f9a 100644 --- a/src/Symfony/Component/Routing/Tests/Loader/AnnotationFileLoaderTest.php +++ b/src/Symfony/Component/Routing/Tests/Loader/AnnotationFileLoaderTest.php @@ -40,12 +40,12 @@ class AnnotationFileLoaderTest extends AbstractAnnotationLoaderTest */ public function testLoadVariadic() { - $route = new Route(["path" => "/path/to/{id}"]); + $route = new Route(array('path' => '/path/to/{id}')); $this->reader->expects($this->once())->method('getClassAnnotation'); $this->reader->expects($this->once())->method('getMethodAnnotations') - ->will($this->returnValue([$route])); + ->will($this->returnValue(array($route))); - $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses/VariadicClass.php'); + $this->loader->load(__DIR__.'/../Fixtures/OtherAnnotatedClasses/VariadicClass.php'); } public function testSupports()