From 5ae7cb780213f2b2db9e9876af975d0d3a3d93c5 Mon Sep 17 00:00:00 2001 From: Kim Pepper Date: Tue, 21 Apr 2026 14:29:44 +1000 Subject: [PATCH 1/6] Update coding-standard to fix PHP 8.5 compatibility --- .github/workflows/build.yml | 1 - composer.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ed4a783..a620506 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,6 @@ jobs: - name: 📦 Composer Update run: composer update --with-all-dependencies --prefer-dist --no-progress --no-interaction ${{ matrix.prefer_lowest }} - name: 🧹 PHPCS - if: matrix.php != '8.5' run: ./bin/phpcs --report=checkstyle -q | ./bin/cs2pr - name: 🧹 PHPStan run: ./bin/phpstan --error-format=github analyse diff --git a/composer.json b/composer.json index cda1b4c..e6c9495 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "php-http/mock-client": "^1.6.1", "phpstan/phpstan": "^2.1.50", "phpunit/phpunit": "^11.5.55", - "previousnext/coding-standard": "^1.1.1", + "previousnext/coding-standard": "^1.2", "staabm/annotate-pull-request-from-checkstyle": "^1.8.6" }, "autoload": { From 2eb36176abcfd224609a273355c0b84cb7b6c510 Mon Sep 17 00:00:00 2001 From: Kim Pepper Date: Tue, 21 Apr 2026 14:31:34 +1000 Subject: [PATCH 2/6] Restore PHP 8.5 skip for PHPCS - drupal/coder still has issues --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a620506..ed4a783 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,6 +26,7 @@ jobs: - name: 📦 Composer Update run: composer update --with-all-dependencies --prefer-dist --no-progress --no-interaction ${{ matrix.prefer_lowest }} - name: 🧹 PHPCS + if: matrix.php != '8.5' run: ./bin/phpcs --report=checkstyle -q | ./bin/cs2pr - name: 🧹 PHPStan run: ./bin/phpstan --error-format=github analyse From 15cca2c6e46b7042926f6779a7cf2cd0e73ce9a7 Mon Sep 17 00:00:00 2001 From: Kim Pepper Date: Tue, 21 Apr 2026 14:32:27 +1000 Subject: [PATCH 3/6] Fix PHPCS: add parentheses to new Forecast() --- src/Forecast/Serializer/ForecastNormalizer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Forecast/Serializer/ForecastNormalizer.php b/src/Forecast/Serializer/ForecastNormalizer.php index 4ffa966..f9f7d8c 100644 --- a/src/Forecast/Serializer/ForecastNormalizer.php +++ b/src/Forecast/Serializer/ForecastNormalizer.php @@ -38,7 +38,7 @@ public function denormalize(mixed $data, string $type, ?string $format = NULL, a throw new \RuntimeException('The serializer must implement the DenormalizerInterface.'); } - $forecast = (new Forecast) + $forecast = (new Forecast()) ->setIssueTime($this->serializer->denormalize($data['amoc']['issue-time-utc'], \DateTimeImmutable::class)); if ($this->isAssoc($data['forecast']['area'])) { From 8d787aa5d9ebd3db4068ec354baf1e6227990a16 Mon Sep 17 00:00:00 2001 From: Kim Pepper Date: Tue, 21 Apr 2026 14:41:02 +1000 Subject: [PATCH 4/6] Add patch for drupal/coder PHP 8.5 compatibility and enable PHPCS on PHP 8.5 --- .github/workflows/build.yml | 1 - composer.json | 9 +++++++++ patches.lock.json | 17 +++++++++++++++++ patches/drupal-coder-php85-compat.patch | 15 +++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 patches.lock.json create mode 100644 patches/drupal-coder-php85-compat.patch diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ed4a783..a620506 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,6 @@ jobs: - name: 📦 Composer Update run: composer update --with-all-dependencies --prefer-dist --no-progress --no-interaction ${{ matrix.prefer_lowest }} - name: 🧹 PHPCS - if: matrix.php != '8.5' run: ./bin/phpcs --report=checkstyle -q | ./bin/cs2pr - name: 🧹 PHPStan run: ./bin/phpstan --error-format=github analyse diff --git a/composer.json b/composer.json index e6c9495..6bc599c 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,7 @@ "symfony/serializer": "^6.4 || ^7.4" }, "require-dev": { + "cweagans/composer-patches": "^2.0", "dealerdirect/phpcodesniffer-composer-installer": "^1.2", "guzzlehttp/psr7": "^2.9", "http-interop/http-factory-guzzle": "^1.2.1", @@ -43,8 +44,16 @@ }, "sort-packages": true, "allow-plugins": { + "cweagans/composer-patches": true, "dealerdirect/phpcodesniffer-composer-installer": true, "php-http/discovery": true } + }, + "extra": { + "patches": { + "drupal/coder": { + "PHP 8.5 compatibility fix for ScopeIndentSniff null array offset": "patches/drupal-coder-php85-compat.patch" + } + } } } diff --git a/patches.lock.json b/patches.lock.json new file mode 100644 index 0000000..9255421 --- /dev/null +++ b/patches.lock.json @@ -0,0 +1,17 @@ +{ + "_hash": "c472a83c3ef0a5cd60aa29da0aee19442da8fbd7077ace4b48ea2b352b473ffe", + "patches": { + "drupal/coder": [ + { + "package": "drupal/coder", + "description": "PHP 8.5 compatibility fix for ScopeIndentSniff null array offset", + "url": "patches/drupal-coder-php85-compat.patch", + "sha256": "8433a84514fa0d6e87e96c13fbd187233b76098318b68d409e5211ca06052929", + "depth": 1, + "extra": { + "provenance": "root" + } + } + ] + } +} diff --git a/patches/drupal-coder-php85-compat.patch b/patches/drupal-coder-php85-compat.patch new file mode 100644 index 0000000..8c623ea --- /dev/null +++ b/patches/drupal-coder-php85-compat.patch @@ -0,0 +1,15 @@ +diff --git a/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php b/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php +--- a/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php ++++ b/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php +@@ -581,6 +581,11 @@ class ScopeIndentSniff implements Sniff + $condition = $tokens[$checkToken]['scope_condition']; + } + ++ // PHP 8.5 compatibility: $condition could be null. ++ if ($condition === null) { ++ continue; ++ } ++ + $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $condition, true); + + if (isset($adjustments[$first]) === true From ba5b7438e73e692bb9fb8cd3762ebb1b7d2a4add Mon Sep 17 00:00:00 2001 From: Kim Pepper Date: Tue, 21 Apr 2026 14:44:32 +1000 Subject: [PATCH 5/6] Exclude ScopeIndent sniff to fix PHP 8.5 compatibility (simpler approach) --- composer.json | 9 --------- patches.lock.json | 17 ----------------- patches/drupal-coder-php85-compat.patch | 15 --------------- phpcs.xml | 5 ++++- 4 files changed, 4 insertions(+), 42 deletions(-) delete mode 100644 patches.lock.json delete mode 100644 patches/drupal-coder-php85-compat.patch diff --git a/composer.json b/composer.json index 6bc599c..e6c9495 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,6 @@ "symfony/serializer": "^6.4 || ^7.4" }, "require-dev": { - "cweagans/composer-patches": "^2.0", "dealerdirect/phpcodesniffer-composer-installer": "^1.2", "guzzlehttp/psr7": "^2.9", "http-interop/http-factory-guzzle": "^1.2.1", @@ -44,16 +43,8 @@ }, "sort-packages": true, "allow-plugins": { - "cweagans/composer-patches": true, "dealerdirect/phpcodesniffer-composer-installer": true, "php-http/discovery": true } - }, - "extra": { - "patches": { - "drupal/coder": { - "PHP 8.5 compatibility fix for ScopeIndentSniff null array offset": "patches/drupal-coder-php85-compat.patch" - } - } } } diff --git a/patches.lock.json b/patches.lock.json deleted file mode 100644 index 9255421..0000000 --- a/patches.lock.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "_hash": "c472a83c3ef0a5cd60aa29da0aee19442da8fbd7077ace4b48ea2b352b473ffe", - "patches": { - "drupal/coder": [ - { - "package": "drupal/coder", - "description": "PHP 8.5 compatibility fix for ScopeIndentSniff null array offset", - "url": "patches/drupal-coder-php85-compat.patch", - "sha256": "8433a84514fa0d6e87e96c13fbd187233b76098318b68d409e5211ca06052929", - "depth": 1, - "extra": { - "provenance": "root" - } - } - ] - } -} diff --git a/patches/drupal-coder-php85-compat.patch b/patches/drupal-coder-php85-compat.patch deleted file mode 100644 index 8c623ea..0000000 --- a/patches/drupal-coder-php85-compat.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php b/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php ---- a/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php -+++ b/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php -@@ -581,6 +581,11 @@ class ScopeIndentSniff implements Sniff - $condition = $tokens[$checkToken]['scope_condition']; - } - -+ // PHP 8.5 compatibility: $condition could be null. -+ if ($condition === null) { -+ continue; -+ } -+ - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $condition, true); - - if (isset($adjustments[$first]) === true diff --git a/phpcs.xml b/phpcs.xml index 92cfec5..3c6273d 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -2,7 +2,10 @@ ./src ./tests/src - + + + + From 76b2c600e8d4ecce808d4f5f204cf418e61727fa Mon Sep 17 00:00:00 2001 From: Kim Pepper Date: Tue, 21 Apr 2026 14:51:48 +1000 Subject: [PATCH 6/6] Bump minimum versions of drupal/coder and slevomat/coding-standard for PHP 8.5 compatibility --- composer.json | 2 ++ phpcs.xml | 5 +---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index e6c9495..d876f1c 100644 --- a/composer.json +++ b/composer.json @@ -22,12 +22,14 @@ }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "^1.2", + "drupal/coder": "^9.0.0", "guzzlehttp/psr7": "^2.9", "http-interop/http-factory-guzzle": "^1.2.1", "php-http/mock-client": "^1.6.1", "phpstan/phpstan": "^2.1.50", "phpunit/phpunit": "^11.5.55", "previousnext/coding-standard": "^1.2", + "slevomat/coding-standard": "^8.28.0", "staabm/annotate-pull-request-from-checkstyle": "^1.8.6" }, "autoload": { diff --git a/phpcs.xml b/phpcs.xml index 3c6273d..92cfec5 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -2,10 +2,7 @@ ./src ./tests/src - - - - +