Skip to content

Commit f831511

Browse files
[ErrorHandler] Turn return-type annotations into deprecations by default, add mode to turn them into native types
1 parent 6aed826 commit f831511

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
CHANGELOG
22
=========
33

4+
5.4
5+
---
6+
7+
* Make `DebugClassLoader` trigger deprecation notices on missing return types
8+
* Add `SYMFONY_PATCH_TYPE_DECLARATIONS='force=2'` mode to `DebugClassLoader` to turn annotations into native return types
9+
410
5.2.0
511
-----
612

DebugClassLoader.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@
3434
* which is a url-encoded array with the follow parameters:
3535
* - "force": any value enables deprecation notices - can be any of:
3636
* - "phpdoc" to patch only docblock annotations
37-
* - "object" to turn union types to the "object" type when possible (not recommended)
38-
* - "1" to add all possible return types including magic methods
39-
* - "0" to add possible return types excluding magic methods
37+
* - "2" to add all possible return types
38+
* - "1" to add return types but only to tests/final/internal/private methods
4039
* - "php": the target version of PHP - e.g. "7.1" doesn't generate "object" types
4140
* - "deprecations": "1" to trigger a deprecation notice when a child class misses a
4241
* return type while the parent declares an "@return" annotation
@@ -73,6 +72,7 @@ class DebugClassLoader
7372
'mixed' => 'mixed',
7473
'static' => 'static',
7574
'$this' => 'static',
75+
'list' => 'array',
7676
];
7777

7878
private const BUILTIN_RETURN_TYPES = [
@@ -127,7 +127,7 @@ public function __construct(callable $classLoader)
127127
$this->patchTypes += [
128128
'force' => null,
129129
'php' => \PHP_MAJOR_VERSION.'.'.\PHP_MINOR_VERSION,
130-
'deprecations' => false,
130+
'deprecations' => \PHP_VERSION_ID >= 70400,
131131
];
132132

133133
if ('phpdoc' === $this->patchTypes['force']) {
@@ -534,7 +534,8 @@ public function checkAnnotations(\ReflectionClass $refl, string $class): array
534534
$this->patchTypes['force'] = $forcePatchTypes ?: 'docblock';
535535
}
536536

537-
$canAddReturnType = false !== stripos($method->getFileName(), \DIRECTORY_SEPARATOR.'Tests'.\DIRECTORY_SEPARATOR)
537+
$canAddReturnType = 2 === (int) $forcePatchTypes
538+
|| false !== stripos($method->getFileName(), \DIRECTORY_SEPARATOR.'Tests'.\DIRECTORY_SEPARATOR)
538539
|| $refl->isFinal()
539540
|| $method->isFinal()
540541
|| $method->isPrivate()

0 commit comments

Comments
 (0)