8000 [ErrorHandler] Turn return-type annotations into deprecations by defa… · symfony/symfony@80c5ef4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 80c5ef4

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

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-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'):

.github/workflows/unit-tests.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,11 @@ jobs:
139139
if: "${{ matrix.php == '8.0' && ! matrix.mode }}"
140140
run: |
141141
sed -i 's/"\*\*\/Tests\/"//' composer.json
142+
git add .
142143
composer install -q --optimize-autoloader
143144
SYMFONY_PATCH_TYPE_DECLARATIONS='force=1&php=7.2' php .github/patch-types.php
144145
SYMFONY_PATCH_TYPE_DECLARATIONS='force=1&php=7.2' php .github/patch-types.php # ensure the script is idempotent
146+
git diff --exit-code
145147
echo PHPUNIT="$PHPUNIT,legacy" >> $GITHUB_ENV
146148
147149
- name: Run tests

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: 5 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
@@ -127,7 +126,7 @@ public function __construct(callable $classLoader)
127126
$this->patchTypes += [
128127
'force' => null,
129128
'php' => \PHP_MAJOR_VERSION.'.'.\PHP_MINOR_VERSION,
130-
'deprecations' => false,
129+
'deprecations' => \PHP_VERSION_ID >= 70300,
131130
];
132131

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

537-
$canAddReturnType = false !== stripos($method->getFileName(), \DIRECTORY_SEPARATOR.'Tests'.\DIRECTORY_SEPARATOR)
536+
$canAddReturnType = 2 === (int) $forcePatchTypes
537+
|| false !== stripos($method->getFileName(), \DIRECTORY_SEPARATOR.'Tests'.\DIRECTORY_SEPARATOR)
538538
|| $refl->isFinal()
539539
|| $method->isFinal()
540540
|| $method->isPrivate()

0 commit comments

Comments
 (0)
0