Skip to content

Commit

Permalink
bug #18593 [VarDumper] Fix dumping type hints for non-existing parent…
Browse files Browse the repository at this point in the history
… classes (nicolas-grekas)

This PR was merged into the 2.7 branch.

Discussion
----------

[VarDumper] Fix dumping type hints for non-existing parent classes

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

812bf5c [VarDumper] Fix dumping type hints for non-existing parent classes
  • Loading branch information
nicolas-grekas committed Apr 20, 2016
2 parents 2f0b8f8 + 812bf5c commit 6a0a687
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
11 changes: 5 additions & 6 deletions src/Symfony/Component/VarDumper/Caster/ReflectionCaster.php
Expand Up @@ -171,12 +171,11 @@ public static function castParameter(\ReflectionParameter $c, array $a, Stub $st
if ($c->hasType()) {
$a[$prefix.'typeHint'] = $c->getType()->__toString();
}
} elseif ($c->isArray()) {
$a[$prefix.'typeHint'] = 'array';
} elseif (method_exists($c, 'isCallable') && $c->isCallable()) {
$a[$prefix.'typeHint'] = 'callable';
} elseif ($v = $c->getClass()) {
$a[$prefix.'typeHint'] = $v->name;
} else {
$v = explode(' ', $c->__toString(), 6);
if (isset($v[5]) && 0 === strspn($v[4], '.&$')) {
$a[$prefix.'typeHint'] = $v[4];
}
}
} catch (\ReflectionException $e) {
if (preg_match('/^Class ([^ ]++) does not exist$/', $e->getMessage(), $m)) {
Expand Down
Expand Up @@ -12,6 +12,7 @@
namespace Symfony\Component\VarDumper\Tests\Caster;

use Symfony\Component\VarDumper\Test\VarDumperTestCase;
use Symfony\Component\VarDumper\Tests\Fixtures\NotLoadableClass;

/**
* @author Nicolas Grekas <p@tchwork.com>
Expand Down Expand Up @@ -47,7 +48,7 @@ public function testReflectionCaster()
"export" => ReflectionMethod {
+name: "export"
+class: "ReflectionClass"
parameters: array:2 [
%A parameters: array:2 [
"$%s" => ReflectionParameter {
%A position: 0
%A }
Expand All @@ -70,7 +71,7 @@ public function testReflectionParameter()
ReflectionParameter {
+name: "arg1"
position: 0
typeHint: "Symfony\Component\VarDumper\Tests\Caster\NotExistingClass"
typeHint: "Symfony\Component\VarDumper\Tests\Fixtures\NotLoadableClass"
default: null
}
EOTXT
Expand Down Expand Up @@ -121,6 +122,6 @@ class: "Symfony\Component\VarDumper\Tests\Caster\ReflectionCasterTest"
}
}

function reflectionParameterFixture(NotExistingClass $arg1 = null, $arg2)
function reflectionParameterFixture(NotLoadableClass $arg1 = null, $arg2)
{
}
@@ -0,0 +1,7 @@
<?php

namespace Symfony\Component\VarDumper\Tests\Fixtures;

class NotLoadableClass extends NotLoadableClass
{
}

0 comments on commit 6a0a687

Please sign in to comment.