Skip to content

Commit

Permalink
Fix deprecation about implicit null when generating proxies.
Browse files Browse the repository at this point in the history
  • Loading branch information
beberlei committed Oct 8, 2024
1 parent e53168e commit ba6c17c
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 4 deletions.
1 change: 0 additions & 1 deletion src/Proxy/ProxyGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -1282,7 +1282,6 @@ function (ReflectionType $intersectedType) use ($method, $parameter) {
if (
$type->allowsNull()
&& ! in_array($name, ['mixed', 'null'], true)
&& ($parameter === null || ! $parameter->isDefaultValueAvailable() || $parameter->getDefaultValue() !== null)
) {
$name = '?' . $name;
}
Expand Down
6 changes: 6 additions & 0 deletions tests/Common/Proxy/Php8UnionTypes.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,16 @@ class Php8UnionTypes

public function setValue(stdClass|array $value) : bool|float
{
return true;
}

public function setNullableValue(stdClass|array|null $value) : bool|float|null
{
return true;
}

public function setNullableValueDefaultNull(stdClass|array|null $value = null) : bool|float|null
{
return true;
}
}
11 changes: 8 additions & 3 deletions tests/Common/Proxy/ProxyGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ public function testClassWithScalarTypeHintsOnProxiedMethods()
self::assertEquals(1, substr_count($classCode, 'function combinationOfTypeHintsAndNormal(\stdClass $a, \Countable $b, $c, int $d)'));
self::assertEquals(1, substr_count($classCode, 'function typeHintsWithVariadic(int ...$foo)'));
self::assertEquals(1, substr_count($classCode, 'function withDefaultValue(int $foo = 123)'));
self::assertEquals(1, substr_count($classCode, 'function withDefaultValueNull(int $foo = NULL)'));
self::assertEquals(1, substr_count($classCode, 'function withDefaultValueNull(?int $foo = NULL)'));
}

public function testClassWithReturnTypesOnProxiedMethods()
Expand Down Expand Up @@ -220,8 +220,8 @@ public function testClassWithNullableTypeHintsOnProxiedMethods()
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintObject(?\stdClass $param)'));
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintSelf(?\\' . $className . ' $param)'));
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintWithDefault(?int $param = 123)'));
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintWithDefaultNull(int $param = NULL)'));
self::assertEquals(1, substr_count($classCode, 'function notNullableTypeHintWithDefaultNull(int $param = NULL)'));
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintWithDefaultNull(?int $param = NULL)'));
self::assertEquals(1, substr_count($classCode, 'function notNullableTypeHintWithDefaultNull(?int $param = NULL)'));
}

public function testClassWithNullableReturnTypesOnProxiedMethods()
Expand Down Expand Up @@ -460,6 +460,11 @@ public function testPhp8UnionTypes()
'setNullableValue(\stdClass|array|null $value): float|bool|null',
file_get_contents(__DIR__ . '/generated/__CG__DoctrineTestsCommonProxyPhp8UnionTypes.php')
);

self::assertStringContainsString(
'setNullableValueDefaultNull(\stdClass|array|null $value = NULL): float|bool|null',
file_get_contents(__DIR__ . '/generated/__CG__DoctrineTestsCommonProxyPhp8UnionTypes.php')
);
}

/**
Expand Down

0 comments on commit ba6c17c

Please sign in to comment.