Skip to content

Commit 3f04d8a

Browse files
committed
Parameter::from() prevents fatal error when default value is not resolvable
1 parent f9589f4 commit 3f04d8a

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

src/PhpGenerator/Parameter.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,13 @@ public static function from(\ReflectionParameter $from)
5959
}
6060
}
6161
}
62-
$param->hasDefaultValue = $from->isDefaultValueAvailable();
63-
$param->defaultValue = $from->isDefaultValueAvailable() ? $from->getDefaultValue() : NULL;
64-
$param->nullable = $param->nullable && (!$param->hasDefaultValue || $param->defaultValue !== NULL);
62+
if ($from->isDefaultValueAvailable()) {
63+
$param->hasDefaultValue = TRUE;
64+
$param->defaultValue = $from->isDefaultValueConstant()
65+
? new PhpLiteral($from->getDefaultValueConstantName())
66+
: $from->getDefaultValue();
67+
$param->nullable = $param->nullable && $param->defaultValue !== NULL;
68+
}
6569
return $param;
6670
}
6771

tests/PhpGenerator/ClassType.from.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class Class2 extends Class1 implements Interface2
4848
* Func3
4949
* @return Class1
5050
*/
51-
private function &func3(array $a%a?%, Class2 $b = NULL, Unknown $c, \Xyz\Unknown $d, callable $e, $f)
51+
private function &func3(array $a%a?%, Class2 $b = NULL, Unknown $c, \Xyz\Unknown $d, callable $e, $f = Abc\Unknown::ABC, $g)
5252
{
5353
}
5454

tests/PhpGenerator/ClassType.from.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class Class2 extends Class1 implements Interface2
5454
* Func3
5555
* @return Class1
5656
*/
57-
private function &func3(array $a = [], Class2 $b = NULL, \Abc\Unknown $c, \Xyz\Unknown $d, callable $e, $f)
57+
private function &func3(array $a = [], Class2 $b = NULL, \Abc\Unknown $c, \Xyz\Unknown $d, callable $e, $f = Unknown::ABC, $g)
5858
{}
5959

6060
final function func2()

0 commit comments

Comments
 (0)