Skip to content

Commit b3287bd

Browse files
Merge branch '5.4' into 6.0
* 5.4: [ErrorHandler] Turn return-type annotations into deprecations by default, add mode to turn them into native types
2 parents 2f94606 + 0cb07c7 commit b3287bd

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

.github/patch-types.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
switch (true) {
1616
case false !== strpos($file = realpath($file), '/vendor/'):
1717
case false !== strpos($file, '/src/Symfony/Bridge/PhpUnit/'):
18-
case false !== strpos($file, '/Attribute/'):
1918
case false !== strpos($file, '/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Validation/Article.php'):
2019
case false !== strpos($file, '/src/Symfony/Component/Cache/Tests/Fixtures/DriverWrapper.php'):
2120
case false !== strpos($file, '/src/Symfony/Component/Config/Tests/Fixtures/BadFileName.php'):

src/Symfony/Component/ErrorHandler/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

src/Symfony/Component/ErrorHandler/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)