From 04e21574d8d7e6f169bcec7b137f22ff0b597c73 Mon Sep 17 00:00:00 2001 From: Sylvain Fabre Date: Fri, 13 Feb 2026 15:45:31 +0100 Subject: [PATCH 1/4] Apply Rector fixes and add PHPStan baseline for denormalize covariance Co-Authored-By: Claude Opus 4.6 --- phpstan-baseline.neon | 7 +++++++ phpstan.neon.dist | 15 ++++++++------- .../AbsolutePercentValueNormalizerTest.php | 6 +++--- tests/Object/AbsolutePercentValueTest.php | 2 +- 4 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 phpstan-baseline.neon diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..8ded269 --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,7 @@ +parameters: + ignoreErrors: + - + message: '#^Return type \(AssoConnect\\AbsolutePercentValueBundle\\Object\\AbsolutePercentValue\) of method AssoConnect\\AbsolutePercentValueBundle\\Normalizer\\AbsolutePercentValueNormalizer\:\:denormalize\(\) should be covariant with return type \(\(\$type is class\-string\ \? object \: mixed\)\) of method Symfony\\Component\\Serializer\\Normalizer\\DenormalizerInterface\:\:denormalize\(\)$#' + identifier: method.childReturnType + count: 1 + path: src/Normalizer/AbsolutePercentValueNormalizer.php diff --git a/phpstan.neon.dist b/phpstan.neon.dist index a64e98e..95bf548 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,7 +1,8 @@ -parameters: - paths: - - src/ - - tests/ - -includes: - - vendor/assoconnect/php-quality-config/phpstan.extension.neon \ No newline at end of file +parameters: + paths: + - src/ + - tests/ + +includes: + - vendor/assoconnect/php-quality-config/phpstan.extension.neon + - phpstan-baseline.neon \ No newline at end of file diff --git a/tests/Normalizer/AbsolutePercentValueNormalizerTest.php b/tests/Normalizer/AbsolutePercentValueNormalizerTest.php index 746052e..7c242f4 100644 --- a/tests/Normalizer/AbsolutePercentValueNormalizerTest.php +++ b/tests/Normalizer/AbsolutePercentValueNormalizerTest.php @@ -20,7 +20,7 @@ protected function setUp(): void } /** @return iterable */ - public function providerSupportsNormalization(): iterable + public static function providerSupportsNormalization(): iterable { yield [new AbsolutePercentValue(AbsolutePercentValue::TYPE_ABSOLUTE, '20000'), true]; yield [new \stdClass(), false]; @@ -49,7 +49,7 @@ public function testNormalize(): void } /** @return iterable */ - public function providerSupportsDenormalization(): iterable + public static function providerSupportsDenormalization(): iterable { yield [AbsolutePercentValue::class, true]; yield [\stdClass::class, false]; @@ -73,7 +73,7 @@ public function testDenormalizeFailure(mixed $data): void } /** @return iterable */ - public function providerTestDenormalize(): iterable + public static function providerTestDenormalize(): iterable { yield ['']; yield [null]; diff --git a/tests/Object/AbsolutePercentValueTest.php b/tests/Object/AbsolutePercentValueTest.php index 59ab808..1fd0146 100644 --- a/tests/Object/AbsolutePercentValueTest.php +++ b/tests/Object/AbsolutePercentValueTest.php @@ -75,7 +75,7 @@ public function testConstructSuccess(string $type): void } /** @return iterable */ - public function providerTypes(): iterable + public static function providerTypes(): iterable { yield [AbsolutePercentValue::TYPE_PERCENT]; yield [AbsolutePercentValue::TYPE_ABSOLUTE]; From 99d748b88787254e6b02a7dee1465145672a4ce5 Mon Sep 17 00:00:00 2001 From: Sylvain Fabre Date: Fri, 13 Feb 2026 17:29:16 +0100 Subject: [PATCH 2/4] Fix CRLF line endings to LF Co-Authored-By: Claude Opus 4.6 --- phpstan.neon.dist | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 95bf548..a339821 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,8 +1,8 @@ -parameters: - paths: - - src/ - - tests/ - -includes: - - vendor/assoconnect/php-quality-config/phpstan.extension.neon +parameters: + paths: + - src/ + - tests/ + +includes: + - vendor/assoconnect/php-quality-config/phpstan.extension.neon - phpstan-baseline.neon \ No newline at end of file From e1bca5a1e99df0ff5b95ca7d08463d5b0630aa3a Mon Sep 17 00:00:00 2001 From: Sylvain Fabre Date: Sat, 14 Feb 2026 15:43:15 +0100 Subject: [PATCH 3/4] Fix denormalize return type properly, remove baseline, add trailing newline Co-Authored-By: Claude Opus 4.6 --- phpstan-baseline.neon | 7 ------- phpstan.neon.dist | 1 - src/Normalizer/AbsolutePercentValueNormalizer.php | 5 +---- 3 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 phpstan-baseline.neon diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon deleted file mode 100644 index 8ded269..0000000 --- a/phpstan-baseline.neon +++ /dev/null @@ -1,7 +0,0 @@ -parameters: - ignoreErrors: - - - message: '#^Return type \(AssoConnect\\AbsolutePercentValueBundle\\Object\\AbsolutePercentValue\) of method AssoConnect\\AbsolutePercentValueBundle\\Normalizer\\AbsolutePercentValueNormalizer\:\:denormalize\(\) should be covariant with return type \(\(\$type is class\-string\ \? object \: mixed\)\) of method Symfony\\Component\\Serializer\\Normalizer\\DenormalizerInterface\:\:denormalize\(\)$#' - identifier: method.childReturnType - count: 1 - path: src/Normalizer/AbsolutePercentValueNormalizer.php diff --git a/phpstan.neon.dist b/phpstan.neon.dist index a339821..d9032f4 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -5,4 +5,3 @@ parameters: includes: - vendor/assoconnect/php-quality-config/phpstan.extension.neon - - phpstan-baseline.neon \ No newline at end of file diff --git a/src/Normalizer/AbsolutePercentValueNormalizer.php b/src/Normalizer/AbsolutePercentValueNormalizer.php index 372661b..5a8aa26 100644 --- a/src/Normalizer/AbsolutePercentValueNormalizer.php +++ b/src/Normalizer/AbsolutePercentValueNormalizer.php @@ -47,15 +47,12 @@ public function supportsNormalization(mixed $data, ?string $format = null, array return $data instanceof AbsolutePercentValue; } - /** - * @inheritDoc - */ public function denormalize( mixed $data, string $type, ?string $format = null, array $context = [] - ): AbsolutePercentValue { + ): mixed { if ('' === $data || null === $data) { throw new UnexpectedValueException(); } From 711eab9dfd879fdfeca9460f756bdfcceb4cc645 Mon Sep 17 00:00:00 2001 From: Sylvain Fabre Date: Sat, 14 Feb 2026 15:59:15 +0100 Subject: [PATCH 4/4] Restore AbsolutePercentValue return type with phpstan-ignore Co-Authored-By: Claude Opus 4.6 --- src/Normalizer/AbsolutePercentValueNormalizer.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Normalizer/AbsolutePercentValueNormalizer.php b/src/Normalizer/AbsolutePercentValueNormalizer.php index 5a8aa26..235caba 100644 --- a/src/Normalizer/AbsolutePercentValueNormalizer.php +++ b/src/Normalizer/AbsolutePercentValueNormalizer.php @@ -47,12 +47,13 @@ public function supportsNormalization(mixed $data, ?string $format = null, array return $data instanceof AbsolutePercentValue; } + /** @phpstan-ignore method.childReturnType */ public function denormalize( mixed $data, string $type, ?string $format = null, array $context = [] - ): mixed { + ): AbsolutePercentValue { if ('' === $data || null === $data) { throw new UnexpectedValueException(); }