diff --git a/composer.json b/composer.json index e508f79cfd4..735482c6ba6 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "justinrainbow/json-schema": "^5.2 || ^6.3", "lullabot/mink-selenium2-driver": "^1.7.3", "lullabot/php-webdriver": "^2.0.5", - "mglaman/phpstan-drupal": "^1.2.11 || ^2.0.4", + "mglaman/phpstan-drupal": "^2.0.7", "micheh/phpcs-gitlab": "^1.1 || ^2.0", "mikey179/vfsstream": "^1.6.11", "open-telemetry/exporter-otlp": "^1", @@ -32,8 +32,8 @@ "php-http/guzzle7-adapter": "^1.0", "phpspec/prophecy-phpunit": "^2", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.4 || ^2.1.14", - "phpstan/phpstan-phpunit": "^1.3.16 || ^2.0.6", + "phpstan/phpstan": "^2.1.17", + "phpstan/phpstan-phpunit": "^2.0.6", "phpunit/phpunit": "^10.5.19 || ^11.5.3", "symfony/browser-kit": "^7.3", "symfony/css-selector": "^7.3", diff --git a/composer.lock b/composer.lock index 13d49d164e9..2617d5414d3 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b958b8cb17ca5b5abe9f6cd8b9469f7f", + "content-hash": "cb5ffa459396dd81c6c044041488251c", "packages": [ { "name": "asm89/stack-cors", @@ -5961,16 +5961,16 @@ }, { "name": "mglaman/phpstan-drupal", - "version": "2.0.5", + "version": "2.0.7", "source": { "type": "git", "url": "https://github.com/mglaman/phpstan-drupal.git", - "reference": "c50f146e1dbb331c800ddfed38cdf482e4ea0052" + "reference": "42cca54ee8bccec83a674ac45d1d17586777187e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/c50f146e1dbb331c800ddfed38cdf482e4ea0052", - "reference": "c50f146e1dbb331c800ddfed38cdf482e4ea0052", + "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/42cca54ee8bccec83a674ac45d1d17586777187e", + "reference": "42cca54ee8bccec83a674ac45d1d17586777187e", "shasum": "" }, "require": { @@ -6042,7 +6042,7 @@ "description": "Drupal extension and rules for PHPStan", "support": { "issues": "https://github.com/mglaman/phpstan-drupal/issues", - "source": "https://github.com/mglaman/phpstan-drupal/tree/2.0.5" + "source": "https://github.com/mglaman/phpstan-drupal/tree/2.0.7" }, "funding": [ { @@ -6058,7 +6058,7 @@ "type": "tidelift" } ], - "time": "2025-04-15T16:10:24+00:00" + "time": "2025-05-22T18:06:14+00:00" }, { "name": "micheh/phpcs-gitlab", @@ -7514,16 +7514,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.14", + "version": "2.1.17", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "8f2e03099cac24ff3b379864d171c5acbfc6b9a2" + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8f2e03099cac24ff3b379864d171c5acbfc6b9a2", - "reference": "8f2e03099cac24ff3b379864d171c5acbfc6b9a2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053", + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053", "shasum": "" }, "require": { @@ -7568,25 +7568,25 @@ "type": "github" } ], - "time": "2025-05-02T15:32:28+00:00" + "time": "2025-05-21T20:55:28+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "9d8e7d4e32711715ad78a1fb6ec368df9af01fdf" + "reference": "468e02c9176891cc901143da118f09dc9505fc2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/9d8e7d4e32711715ad78a1fb6ec368df9af01fdf", - "reference": "9d8e7d4e32711715ad78a1fb6ec368df9af01fdf", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/468e02c9176891cc901143da118f09dc9505fc2f", + "reference": "468e02c9176891cc901143da118f09dc9505fc2f", "shasum": "" }, "require": { "php": "^7.4 || ^8.0", - "phpstan/phpstan": "^2.1.13" + "phpstan/phpstan": "^2.1.15" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -7613,9 +7613,9 @@ "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", "support": { "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/2.0.2" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/2.0.3" }, - "time": "2025-04-26T19:59:57+00:00" + "time": "2025-05-14T10:56:57+00:00" }, { "name": "phpstan/phpstan-phpunit", diff --git a/composer/Metapackage/DevDependencies/composer.json b/composer/Metapackage/DevDependencies/composer.json index 925698516b2..6e2436f3037 100644 --- a/composer/Metapackage/DevDependencies/composer.json +++ b/composer/Metapackage/DevDependencies/composer.json @@ -15,7 +15,7 @@ "justinrainbow/json-schema": "^5.2 || ^6.3", "lullabot/mink-selenium2-driver": "^1.7.3", "lullabot/php-webdriver": "^2.0.5", - "mglaman/phpstan-drupal": "^1.2.11 || ^2.0.4", + "mglaman/phpstan-drupal": "^2.0.7", "micheh/phpcs-gitlab": "^1.1 || ^2.0", "mikey179/vfsstream": "^1.6.11", "open-telemetry/exporter-otlp": "^1", @@ -23,8 +23,8 @@ "php-http/guzzle7-adapter": "^1.0", "phpspec/prophecy-phpunit": "^2", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.4 || ^2.1.14", - "phpstan/phpstan-phpunit": "^1.3.16 || ^2.0.6", + "phpstan/phpstan": "^2.1.17", + "phpstan/phpstan-phpunit": "^2.0.6", "phpunit/phpunit": "^10.5.19 || ^11.5.3", "symfony/browser-kit": "^7.3", "symfony/css-selector": "^7.3", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index ee1c0ec8ed3..5f7d311f77e 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -27,7 +27,7 @@ "lullabot/mink-selenium2-driver": "v1.7.4", "lullabot/php-webdriver": "v2.0.6", "marc-mabe/php-enum": "v4.7.1", - "mglaman/phpstan-drupal": "2.0.5", + "mglaman/phpstan-drupal": "2.0.7", "micheh/phpcs-gitlab": "2.0.0", "mikey179/vfsstream": "v1.6.12", "myclabs/deep-copy": "1.13.1", @@ -52,8 +52,8 @@ "phpspec/prophecy-phpunit": "v2.3.0", "phpstan/extension-installer": "1.4.3", "phpstan/phpdoc-parser": "2.1.0", - "phpstan/phpstan": "2.1.14", - "phpstan/phpstan-deprecation-rules": "2.0.2", + "phpstan/phpstan": "2.1.17", + "phpstan/phpstan-deprecation-rules": "2.0.3", "phpstan/phpstan-phpunit": "2.0.6", "phpunit/php-code-coverage": "10.1.16", "phpunit/php-file-iterator": "4.1.0", diff --git a/core/.phpstan-baseline.php b/core/.phpstan-baseline.php index d8dbb74df2b..3c22dd980b5 100644 --- a/core/.phpstan-baseline.php +++ b/core/.phpstan-baseline.php @@ -7165,6 +7165,12 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/lib/Drupal/Core/Field/FormatterInterface.php', ]; +$ignoreErrors[] = [ + 'message' => '#^Method Drupal\\\\Core\\\\Field\\\\FormatterPluginManager\\:\\:getInstance\\(\\) return type with generic interface Drupal\\\\Core\\\\Field\\\\FormatterInterface does not specify its types\\: T$#', + 'identifier' => 'missingType.generics', + 'count' => 1, + 'path' => __DIR__ . '/lib/Drupal/Core/Field/FormatterPluginManager.php', +]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\Core\\\\Field\\\\Plugin\\\\Field\\\\FieldFormatter\\\\EntityReferenceFormatterBase\\:\\:prepareView\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -7237,6 +7243,12 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php', ]; +$ignoreErrors[] = [ + 'message' => '#^Variable \\$target_type_info in empty\\(\\) always exists and is not falsy\\.$#', + 'identifier' => 'empty.variable', + 'count' => 1, + 'path' => __DIR__ . '/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php', +]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\Core\\\\Field\\\\Plugin\\\\Field\\\\FieldType\\\\LanguageItem\\:\\:onChange\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -10633,12 +10645,6 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/lib/Drupal/Core/TypedData/Plugin/DataType/DurationIso8601.php', ]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\Core\\\\TypedData\\\\Plugin\\\\DataType\\\\ItemList\\:\\:getIterator\\(\\) return type with generic class ArrayIterator does not specify its types\\: TKey, TValue$#', - 'identifier' => 'missingType.generics', - 'count' => 1, - 'path' => __DIR__ . '/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php', -]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\Core\\\\TypedData\\\\Plugin\\\\DataType\\\\ItemList\\:\\:onChange\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -14569,12 +14575,6 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php', ]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\content_moderation\\\\Plugin\\\\Field\\\\ModerationStateFieldItemList\\:\\:getIterator\\(\\) return type with generic class ArrayIterator does not specify its types\\: TKey, TValue$#', - 'identifier' => 'missingType.generics', - 'count' => 1, - 'path' => __DIR__ . '/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php', -]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\content_moderation\\\\Plugin\\\\Field\\\\ModerationStateFieldItemList\\:\\:onChange\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -21595,6 +21595,12 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/modules/layout_builder/src/Plugin/Block/FieldBlock.php', ]; +$ignoreErrors[] = [ + 'message' => '#^Method Drupal\\\\layout_builder\\\\Plugin\\\\Block\\\\FieldBlock\\:\\:getFormatter\\(\\) return type with generic interface Drupal\\\\Core\\\\Field\\\\FormatterInterface does not specify its types\\: T$#', + 'identifier' => 'missingType.generics', + 'count' => 1, + 'path' => __DIR__ . '/modules/layout_builder/src/Plugin/Block/FieldBlock.php', +]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\layout_builder\\\\Plugin\\\\Block\\\\InlineBlock\\:\\:blockSubmit\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -27997,12 +28003,6 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/modules/path/src/Plugin/Field/FieldType/PathFieldItemList.php', ]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\path\\\\Plugin\\\\Field\\\\FieldType\\\\PathFieldItemList\\:\\:getIterator\\(\\) return type with generic class ArrayIterator does not specify its types\\: TKey, TValue$#', - 'identifier' => 'missingType.generics', - 'count' => 1, - 'path' => __DIR__ . '/modules/path/src/Plugin/Field/FieldType/PathFieldItemList.php', -]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\path\\\\Plugin\\\\Field\\\\FieldType\\\\PathFieldItemList\\:\\:setValue\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -32043,12 +32043,6 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedReferenceTestFieldItemList.php', ]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedReferenceTestFieldItemList\\:\\:getIterator\\(\\) return type with generic class ArrayIterator does not specify its types\\: TKey, TValue$#', - 'identifier' => 'missingType.generics', - 'count' => 1, - 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedReferenceTestFieldItemList.php', -]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedReferenceTestFieldItemList\\:\\:setValue\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -32067,12 +32061,6 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedTestBundleFieldItemList.php', ]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedTestBundleFieldItemList\\:\\:getIterator\\(\\) return type with generic class ArrayIterator does not specify its types\\: TKey, TValue$#', - 'identifier' => 'missingType.generics', - 'count' => 1, - 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedTestBundleFieldItemList.php', -]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedTestBundleFieldItemList\\:\\:setValue\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -32091,12 +32079,6 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedTestCacheableIntegerItemList.php', ]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedTestCacheableIntegerItemList\\:\\:getIterator\\(\\) return type with generic class ArrayIterator does not specify its types\\: TKey, TValue$#', - 'identifier' => 'missingType.generics', - 'count' => 1, - 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedTestCacheableIntegerItemList.php', -]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedTestCacheableIntegerItemList\\:\\:setValue\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -32115,12 +32097,6 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedTestCacheableStringItemList.php', ]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedTestCacheableStringItemList\\:\\:getIterator\\(\\) return type with generic class ArrayIterator does not specify its types\\: TKey, TValue$#', - 'identifier' => 'missingType.generics', - 'count' => 1, - 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedTestCacheableStringItemList.php', -]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedTestCacheableStringItemList\\:\\:setValue\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -32139,12 +32115,6 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedTestFieldItemList.php', ]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedTestFieldItemList\\:\\:getIterator\\(\\) return type with generic class ArrayIterator does not specify its types\\: TKey, TValue$#', - 'identifier' => 'missingType.generics', - 'count' => 1, - 'path' => __DIR__ . '/modules/system/tests/modules/entity_test/src/Plugin/Field/ComputedTestFieldItemList.php', -]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\entity_test\\\\Plugin\\\\Field\\\\ComputedTestFieldItemList\\:\\:setValue\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', @@ -40915,6 +40885,12 @@ $ignoreErrors[] = [ 'count' => 1, 'path' => __DIR__ . '/modules/views/src/Plugin/views/field/EntityField.php', ]; +$ignoreErrors[] = [ + 'message' => '#^Method Drupal\\\\views\\\\Plugin\\\\views\\\\field\\\\EntityField\\:\\:getFormatterInstance\\(\\) return type with generic interface Drupal\\\\Core\\\\Field\\\\FormatterInterface does not specify its types\\: T$#', + 'identifier' => 'missingType.generics', + 'count' => 1, + 'path' => __DIR__ . '/modules/views/src/Plugin/views/field/EntityField.php', +]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\views\\\\Plugin\\\\views\\\\field\\\\EntityField\\:\\:init\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', diff --git a/core/tests/PHPStan/composer.json b/core/tests/PHPStan/composer.json index 62e1876dea7..5d5e5165168 100644 --- a/core/tests/PHPStan/composer.json +++ b/core/tests/PHPStan/composer.json @@ -3,7 +3,7 @@ "description": "Tests Drupal core's PHPStan rules", "require-dev": { "phpunit/phpunit": "^11", - "phpstan/phpstan": "2.1.14" + "phpstan/phpstan": "2.1.17" }, "license": "GPL-2.0-or-later", "autoload": {