Skip to content

Commit

Permalink
[DependencyInjection][CheckTypeDeclarationsPass] Always resolve param…
Browse files Browse the repository at this point in the history
…eters
  • Loading branch information
fancyweb committed Jun 10, 2020
1 parent c70241e commit da0e2c3
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 16 deletions.
Expand Up @@ -198,8 +198,7 @@ private function checkType(Definition $checkedDefinition, $value, \ReflectionPar
}
} elseif (\is_string($value)) {
if ('%' === ($value[0] ?? '') && preg_match('/^%([^%]+)%$/', $value, $match)) {
// Only array parameters are not inlined when dumped.
$value = [];
$value = $this->container->getParameter(substr($value, 1, -1));
} elseif ($envPlaceholderUniquePrefix && false !== strpos($value, 'env_')) {
// If the value is an env placeholder that is either mixed with a string or with another env placeholder, then its resolved value will always be a string, so we don't need to resolve it.
// We don't need to change the value because it is already a string.
Expand Down
Expand Up @@ -612,20 +612,6 @@ public function testProcessThrowsOnIterableTypeWhenScalarPassed()
$this->assertInstanceOf(\stdClass::class, $container->get('bar')->foo);
}

public function testProcessResolveArrayParameters()
{
$container = new ContainerBuilder();
$container->setParameter('ccc', ['foobar']);

$container
->register('foobar', BarMethodCall::class)
->addMethodCall('setArray', ['%ccc%']);

(new CheckTypeDeclarationsPass(true))->process($container);

$this->addToAssertionCount(1);
}

public function testProcessResolveExpressions()
{
$container = new ContainerBuilder();
Expand Down Expand Up @@ -791,4 +777,20 @@ public function testExpressionLanguageWithSyntheticService()

$this->addToAssertionCount(1);
}

public function testProcessResolveParameters()
{
$container = new ContainerBuilder();
$container->setParameter('array_param', ['foobar']);
$container->setParameter('string_param', 'ccc');

$container
->register('foobar', BarMethodCall::class)
->addMethodCall('setArray', ['%array_param%'])
->addMethodCall('setString', ['%string_param%']);

(new CheckTypeDeclarationsPass(true))->process($container);

$this->addToAssertionCount(1);
}
}
Expand Up @@ -44,4 +44,8 @@ public function setCallable(callable $callable): void
public function setClosure(\Closure $closure): void
{
}

public function setString(string $string)
{
}
}

0 comments on commit da0e2c3

Please sign in to comment.