diff --git a/composer.json b/composer.json
index 7a892cf63..61392d50d 100644
--- a/composer.json
+++ b/composer.json
@@ -1,7 +1,7 @@
{
"require": {
"php": ">=7.4",
- "rector/rector": "1.2.2",
+ "rector/rector": "1.2.6",
"friendsofphp/php-cs-fixer": "3.38.2",
"redaxo/php-cs-fixer-config": "^1.0"
},
diff --git a/composer.lock b/composer.lock
index 7fe472a22..f4d34825d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,34 +4,42 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "fe3e37d1dbd3c8603d2c8625706638f0",
+ "content-hash": "d6eade6a8c1b1c61534d732ba5edfcb4",
"packages": [
{
"name": "composer/pcre",
- "version": "3.1.3",
+ "version": "3.3.1",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8"
+ "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
- "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4",
+ "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
+ "conflict": {
+ "phpstan/phpstan": "<1.11.10"
+ },
"require-dev": {
- "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan": "^1.11.10",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^5"
+ "phpunit/phpunit": "^8 || ^9"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
}
},
"autoload": {
@@ -59,7 +67,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.1.3"
+ "source": "https://github.com/composer/pcre/tree/3.3.1"
},
"funding": [
{
@@ -75,28 +83,28 @@
"type": "tidelift"
}
],
- "time": "2024-03-19T10:26:25+00:00"
+ "time": "2024-08-27T18:44:43+00:00"
},
{
"name": "composer/semver",
- "version": "3.4.0",
+ "version": "3.4.3",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
- "phpstan/phpstan": "^1.4",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "phpstan/phpstan": "^1.11",
+ "symfony/phpunit-bridge": "^3 || ^7"
},
"type": "library",
"extra": {
@@ -140,7 +148,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.0"
+ "source": "https://github.com/composer/semver/tree/3.4.3"
},
"funding": [
{
@@ -156,7 +164,7 @@
"type": "tidelift"
}
],
- "time": "2023-08-31T09:50:34+00:00"
+ "time": "2024-09-19T14:15:21+00:00"
},
{
"name": "composer/xdebug-handler",
@@ -319,16 +327,16 @@
},
{
"name": "phpstan/phpstan",
- "version": "1.11.8",
+ "version": "1.12.5",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "6adbd118e6c0515dd2f36b06cde1d6da40f1b8ec"
+ "reference": "7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/6adbd118e6c0515dd2f36b06cde1d6da40f1b8ec",
- "reference": "6adbd118e6c0515dd2f36b06cde1d6da40f1b8ec",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17",
+ "reference": "7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17",
"shasum": ""
},
"require": {
@@ -373,7 +381,7 @@
"type": "github"
}
],
- "time": "2024-07-24T07:01:22+00:00"
+ "time": "2024-09-26T12:45:22+00:00"
},
{
"name": "psr/container",
@@ -525,21 +533,21 @@
},
{
"name": "rector/rector",
- "version": "1.2.2",
+ "version": "1.2.6",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "044e6364017882d1e346da8690eeabc154da5495"
+ "reference": "6ca85da28159dbd3bb36211c5104b7bc91278e99"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/044e6364017882d1e346da8690eeabc154da5495",
- "reference": "044e6364017882d1e346da8690eeabc154da5495",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/6ca85da28159dbd3bb36211c5104b7bc91278e99",
+ "reference": "6ca85da28159dbd3bb36211c5104b7bc91278e99",
"shasum": ""
},
"require": {
"php": "^7.2|^8.0",
- "phpstan/phpstan": "^1.11"
+ "phpstan/phpstan": "^1.12.5"
},
"conflict": {
"rector/rector-doctrine": "*",
@@ -572,7 +580,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/1.2.2"
+ "source": "https://github.com/rectorphp/rector/tree/1.2.6"
},
"funding": [
{
@@ -580,7 +588,7 @@
"type": "github"
}
],
- "time": "2024-07-25T07:44:34+00:00"
+ "time": "2024-10-03T08:56:44+00:00"
},
{
"name": "redaxo/php-cs-fixer-config",
@@ -691,16 +699,16 @@
},
{
"name": "symfony/console",
- "version": "v5.4.39",
+ "version": "v5.4.44",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "f3e591c48688a0cfa1a3296205926c05e84b22b1"
+ "reference": "5b5a0aa66e3296e303e22490f90f521551835a83"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/f3e591c48688a0cfa1a3296205926c05e84b22b1",
- "reference": "f3e591c48688a0cfa1a3296205926c05e84b22b1",
+ "url": "https://api.github.com/repos/symfony/console/zipball/5b5a0aa66e3296e303e22490f90f521551835a83",
+ "reference": "5b5a0aa66e3296e303e22490f90f521551835a83",
"shasum": ""
},
"require": {
@@ -770,7 +778,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.4.39"
+ "source": "https://github.com/symfony/console/tree/v5.4.44"
},
"funding": [
{
@@ -786,7 +794,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T08:26:06+00:00"
+ "time": "2024-09-20T07:56:40+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -857,16 +865,16 @@
},
{
"name": "symfony/event-dispatcher",
- "version": "v5.4.39",
+ "version": "v5.4.40",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "d40fae9fd85c762b6ba378152fdd1157a85d7e4f"
+ "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d40fae9fd85c762b6ba378152fdd1157a85d7e4f",
- "reference": "d40fae9fd85c762b6ba378152fdd1157a85d7e4f",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a54e2a8a114065f31020d6a89ede83e34c3b27a4",
+ "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4",
"shasum": ""
},
"require": {
@@ -922,7 +930,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.39"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.40"
},
"funding": [
{
@@ -938,7 +946,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T08:26:06+00:00"
+ "time": "2024-05-31T14:33:22+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -1021,23 +1029,25 @@
},
{
"name": "symfony/filesystem",
- "version": "v5.4.39",
+ "version": "v5.4.44",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "e6edd875d5d39b03de51f3c3951148cfa79a4d12"
+ "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/e6edd875d5d39b03de51f3c3951148cfa79a4d12",
- "reference": "e6edd875d5d39b03de51f3c3951148cfa79a4d12",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/76c3818964e9d32be3862c9318ae3ba9aa280ddc",
+ "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8",
- "symfony/polyfill-php80": "^1.16",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "require-dev": {
"symfony/process": "^5.4|^6.4"
},
"type": "library",
@@ -1066,7 +1076,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.4.39"
+ "source": "https://github.com/symfony/filesystem/tree/v5.4.44"
},
"funding": [
{
@@ -1082,20 +1092,20 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T08:26:06+00:00"
+ "time": "2024-09-16T14:52:48+00:00"
},
{
"name": "symfony/finder",
- "version": "v5.4.39",
+ "version": "v5.4.43",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "f6a96e4fcd468a25fede16ee665f50ced856bd0a"
+ "reference": "ae25a9145a900764158d439653d5630191155ca0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/f6a96e4fcd468a25fede16ee665f50ced856bd0a",
- "reference": "f6a96e4fcd468a25fede16ee665f50ced856bd0a",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/ae25a9145a900764158d439653d5630191155ca0",
+ "reference": "ae25a9145a900764158d439653d5630191155ca0",
"shasum": ""
},
"require": {
@@ -1129,7 +1139,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.4.39"
+ "source": "https://github.com/symfony/finder/tree/v5.4.43"
},
"funding": [
{
@@ -1145,20 +1155,20 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T08:26:06+00:00"
+ "time": "2024-08-13T14:03:51+00:00"
},
{
"name": "symfony/options-resolver",
- "version": "v5.4.39",
+ "version": "v5.4.40",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "1303bb73d6c3882f07c618129295503085dfddb9"
+ "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1303bb73d6c3882f07c618129295503085dfddb9",
- "reference": "1303bb73d6c3882f07c618129295503085dfddb9",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/bd1afbde6613a8d6b956115e0e14b196191fd0c4",
+ "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4",
"shasum": ""
},
"require": {
@@ -1198,7 +1208,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v5.4.39"
+ "source": "https://github.com/symfony/options-resolver/tree/v5.4.40"
},
"funding": [
{
@@ -1214,24 +1224,24 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T08:26:06+00:00"
+ "time": "2024-05-31T14:33:22+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.29.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
- "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-ctype": "*"
@@ -1277,7 +1287,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
},
"funding": [
{
@@ -1293,24 +1303,24 @@
"type": "tidelift"
}
],
- "time": "2024-01-29T20:11:03+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.29.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
+ "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
- "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
+ "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
@@ -1355,7 +1365,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0"
},
"funding": [
{
@@ -1371,24 +1381,24 @@
"type": "tidelift"
}
],
- "time": "2024-01-29T20:11:03+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.29.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
- "reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
@@ -1436,7 +1446,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
},
"funding": [
{
@@ -1452,24 +1462,24 @@
"type": "tidelift"
}
],
- "time": "2024-01-29T20:11:03+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.29.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
- "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
@@ -1516,7 +1526,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
},
"funding": [
{
@@ -1532,24 +1542,24 @@
"type": "tidelift"
}
],
- "time": "2024-01-29T20:11:03+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.29.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "21bd091060673a1177ae842c0ef8fe30893114d2"
+ "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2",
- "reference": "21bd091060673a1177ae842c0ef8fe30893114d2",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
+ "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"type": "library",
"extra": {
@@ -1592,7 +1602,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0"
},
"funding": [
{
@@ -1608,24 +1618,24 @@
"type": "tidelift"
}
],
- "time": "2024-01-29T20:11:03+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.29.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
+ "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
- "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
+ "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"type": "library",
"extra": {
@@ -1672,7 +1682,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
},
"funding": [
{
@@ -1688,24 +1698,24 @@
"type": "tidelift"
}
],
- "time": "2024-01-29T20:11:03+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-php81",
- "version": "v1.29.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
+ "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
- "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
+ "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"type": "library",
"extra": {
@@ -1748,7 +1758,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0"
},
"funding": [
{
@@ -1764,20 +1774,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-29T20:11:03+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/process",
- "version": "v5.4.39",
+ "version": "v5.4.44",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "85a554acd7c28522241faf2e97b9541247a0d3d5"
+ "reference": "1b9fa82b5c62cd49da8c9e3952dd8531ada65096"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/85a554acd7c28522241faf2e97b9541247a0d3d5",
- "reference": "85a554acd7c28522241faf2e97b9541247a0d3d5",
+ "url": "https://api.github.com/repos/symfony/process/zipball/1b9fa82b5c62cd49da8c9e3952dd8531ada65096",
+ "reference": "1b9fa82b5c62cd49da8c9e3952dd8531ada65096",
"shasum": ""
},
"require": {
@@ -1810,7 +1820,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v5.4.39"
+ "source": "https://github.com/symfony/process/tree/v5.4.44"
},
"funding": [
{
@@ -1826,7 +1836,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T08:26:06+00:00"
+ "time": "2024-09-17T12:46:43+00:00"
},
{
"name": "symfony/service-contracts",
@@ -1913,16 +1923,16 @@
},
{
"name": "symfony/stopwatch",
- "version": "v5.4.39",
+ "version": "v5.4.40",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "fb97497490bcec8a3c32c809cacfdd4c15dc8390"
+ "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fb97497490bcec8a3c32c809cacfdd4c15dc8390",
- "reference": "fb97497490bcec8a3c32c809cacfdd4c15dc8390",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0e9daf3b7c805c747638b2cc48f1649e594f9625",
+ "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625",
"shasum": ""
},
"require": {
@@ -1955,7 +1965,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/stopwatch/tree/v5.4.39"
+ "source": "https://github.com/symfony/stopwatch/tree/v5.4.40"
},
"funding": [
{
@@ -1971,20 +1981,20 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T08:26:06+00:00"
+ "time": "2024-05-31T14:33:22+00:00"
},
{
"name": "symfony/string",
- "version": "v5.4.39",
+ "version": "v5.4.44",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "495e71bae5862308051b9e63cc3e34078eed83ef"
+ "reference": "832caa16b6d9aac6bf11747315225f5aba384c24"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/495e71bae5862308051b9e63cc3e34078eed83ef",
- "reference": "495e71bae5862308051b9e63cc3e34078eed83ef",
+ "url": "https://api.github.com/repos/symfony/string/zipball/832caa16b6d9aac6bf11747315225f5aba384c24",
+ "reference": "832caa16b6d9aac6bf11747315225f5aba384c24",
"shasum": ""
},
"require": {
@@ -2041,7 +2051,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.4.39"
+ "source": "https://github.com/symfony/string/tree/v5.4.44"
},
"funding": [
{
@@ -2057,7 +2067,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T08:26:06+00:00"
+ "time": "2024-09-20T07:56:40+00:00"
}
],
"packages-dev": [],
diff --git a/lib/RexFactor.php b/lib/RexFactor.php
index 37c554312..fbecc02cb 100644
--- a/lib/RexFactor.php
+++ b/lib/RexFactor.php
@@ -45,14 +45,10 @@ final class RexFactor
'PHPUNIT_70' => 'PHPUnit 7',
'PHPUNIT_80' => 'PHPUnit 8',
'PHPUNIT_90' => 'PHPUnit 9',
- 'PHPUNIT_91' => 'PHPUnit 9.1',
'PHPUNIT_100' => 'PHPUnit 10',
],
self::TESTS_QUALITY => [
'PHPUNIT_CODE_QUALITY' => 'Unify test-code quality',
- 'PHPUNIT_EXCEPTION' => 'Refactor exception expectations',
- 'REMOVE_MOCKS' => 'Reduce mock usage',
- 'PHPUNIT_SPECIFIC_METHOD' => 'Use specific assert*() methods',
'ANNOTATIONS_TO_ATTRIBUTES' => 'Annotations to Attributes',
],
self::MISC_MIGRATIONS => [
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index c795f005f..47877ddf5 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -15,6 +15,12 @@
'Composer\\Pcre\\MatchResult' => $vendorDir . '/composer/pcre/src/MatchResult.php',
'Composer\\Pcre\\MatchStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchStrictGroupsResult.php',
'Composer\\Pcre\\MatchWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchWithOffsetsResult.php',
+ 'Composer\\Pcre\\PHPStan\\InvalidRegexPatternRule' => $vendorDir . '/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php',
+ 'Composer\\Pcre\\PHPStan\\PregMatchFlags' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchFlags.php',
+ 'Composer\\Pcre\\PHPStan\\PregMatchParameterOutTypeExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php',
+ 'Composer\\Pcre\\PHPStan\\PregMatchTypeSpecifyingExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php',
+ 'Composer\\Pcre\\PHPStan\\PregReplaceCallbackClosureTypeExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php',
+ 'Composer\\Pcre\\PHPStan\\UnsafeStrictGroupsCallRule' => $vendorDir . '/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php',
'Composer\\Pcre\\PcreException' => $vendorDir . '/composer/pcre/src/PcreException.php',
'Composer\\Pcre\\Preg' => $vendorDir . '/composer/pcre/src/Preg.php',
'Composer\\Pcre\\Regex' => $vendorDir . '/composer/pcre/src/Regex.php',
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 150085553..880392e1b 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -173,6 +173,12 @@ class ComposerStaticInit432d9322d3d4193d52e9a1d1ec2ff418
'Composer\\Pcre\\MatchResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchResult.php',
'Composer\\Pcre\\MatchStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchStrictGroupsResult.php',
'Composer\\Pcre\\MatchWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchWithOffsetsResult.php',
+ 'Composer\\Pcre\\PHPStan\\InvalidRegexPatternRule' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php',
+ 'Composer\\Pcre\\PHPStan\\PregMatchFlags' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchFlags.php',
+ 'Composer\\Pcre\\PHPStan\\PregMatchParameterOutTypeExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php',
+ 'Composer\\Pcre\\PHPStan\\PregMatchTypeSpecifyingExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php',
+ 'Composer\\Pcre\\PHPStan\\PregReplaceCallbackClosureTypeExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php',
+ 'Composer\\Pcre\\PHPStan\\UnsafeStrictGroupsCallRule' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php',
'Composer\\Pcre\\PcreException' => __DIR__ . '/..' . '/composer/pcre/src/PcreException.php',
'Composer\\Pcre\\Preg' => __DIR__ . '/..' . '/composer/pcre/src/Preg.php',
'Composer\\Pcre\\Regex' => __DIR__ . '/..' . '/composer/pcre/src/Regex.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 0d8857162..49a83f482 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -2,32 +2,40 @@
"packages": [
{
"name": "composer/pcre",
- "version": "3.1.3",
- "version_normalized": "3.1.3.0",
+ "version": "3.3.1",
+ "version_normalized": "3.3.1.0",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8"
+ "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
- "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4",
+ "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
+ "conflict": {
+ "phpstan/phpstan": "<1.11.10"
+ },
"require-dev": {
- "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan": "^1.11.10",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^5"
+ "phpunit/phpunit": "^8 || ^9"
},
- "time": "2024-03-19T10:26:25+00:00",
+ "time": "2024-08-27T18:44:43+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
}
},
"installation-source": "dist",
@@ -56,7 +64,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.1.3"
+ "source": "https://github.com/composer/pcre/tree/3.3.1"
},
"funding": [
{
@@ -76,27 +84,27 @@
},
{
"name": "composer/semver",
- "version": "3.4.0",
- "version_normalized": "3.4.0.0",
+ "version": "3.4.3",
+ "version_normalized": "3.4.3.0",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
- "phpstan/phpstan": "^1.4",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "phpstan/phpstan": "^1.11",
+ "symfony/phpunit-bridge": "^3 || ^7"
},
- "time": "2023-08-31T09:50:34+00:00",
+ "time": "2024-09-19T14:15:21+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -140,7 +148,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.0"
+ "source": "https://github.com/composer/semver/tree/3.4.3"
},
"funding": [
{
@@ -325,17 +333,17 @@
},
{
"name": "phpstan/phpstan",
- "version": "1.10.67",
- "version_normalized": "1.10.67.0",
+ "version": "1.12.5",
+ "version_normalized": "1.12.5.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493"
+ "reference": "7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/16ddbe776f10da6a95ebd25de7c1dbed397dc493",
- "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17",
+ "reference": "7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17",
"shasum": ""
},
"require": {
@@ -344,7 +352,7 @@
"conflict": {
"phpstan/phpstan-shim": "*"
},
- "time": "2024-04-16T07:22:02+00:00",
+ "time": "2024-09-26T12:45:22+00:00",
"bin": [
"phpstan",
"phpstan.phar"
@@ -543,22 +551,22 @@
},
{
"name": "rector/rector",
- "version": "1.0.5",
- "version_normalized": "1.0.5.0",
+ "version": "1.2.6",
+ "version_normalized": "1.2.6.0",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "73eb63e4f9011dba6b7c66c3262543014e352f34"
+ "reference": "6ca85da28159dbd3bb36211c5104b7bc91278e99"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/73eb63e4f9011dba6b7c66c3262543014e352f34",
- "reference": "73eb63e4f9011dba6b7c66c3262543014e352f34",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/6ca85da28159dbd3bb36211c5104b7bc91278e99",
+ "reference": "6ca85da28159dbd3bb36211c5104b7bc91278e99",
"shasum": ""
},
"require": {
"php": "^7.2|^8.0",
- "phpstan/phpstan": "^1.10.57"
+ "phpstan/phpstan": "^1.12.5"
},
"conflict": {
"rector/rector-doctrine": "*",
@@ -569,7 +577,7 @@
"suggest": {
"ext-dom": "To manipulate phpunit.xml via the custom-rule command"
},
- "time": "2024-05-10T05:31:15+00:00",
+ "time": "2024-10-03T08:56:44+00:00",
"bin": [
"bin/rector"
],
@@ -593,7 +601,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/1.0.5"
+ "source": "https://github.com/rectorphp/rector/tree/1.2.6"
},
"funding": [
{
@@ -718,17 +726,17 @@
},
{
"name": "symfony/console",
- "version": "v5.4.39",
- "version_normalized": "5.4.39.0",
+ "version": "v5.4.44",
+ "version_normalized": "5.4.44.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "f3e591c48688a0cfa1a3296205926c05e84b22b1"
+ "reference": "5b5a0aa66e3296e303e22490f90f521551835a83"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/f3e591c48688a0cfa1a3296205926c05e84b22b1",
- "reference": "f3e591c48688a0cfa1a3296205926c05e84b22b1",
+ "url": "https://api.github.com/repos/symfony/console/zipball/5b5a0aa66e3296e303e22490f90f521551835a83",
+ "reference": "5b5a0aa66e3296e303e22490f90f521551835a83",
"shasum": ""
},
"require": {
@@ -766,7 +774,7 @@
"symfony/lock": "",
"symfony/process": ""
},
- "time": "2024-04-18T08:26:06+00:00",
+ "time": "2024-09-20T07:56:40+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -800,7 +808,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.4.39"
+ "source": "https://github.com/symfony/console/tree/v5.4.44"
},
"funding": [
{
@@ -890,17 +898,17 @@
},
{
"name": "symfony/event-dispatcher",
- "version": "v5.4.39",
- "version_normalized": "5.4.39.0",
+ "version": "v5.4.40",
+ "version_normalized": "5.4.40.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "d40fae9fd85c762b6ba378152fdd1157a85d7e4f"
+ "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d40fae9fd85c762b6ba378152fdd1157a85d7e4f",
- "reference": "d40fae9fd85c762b6ba378152fdd1157a85d7e4f",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a54e2a8a114065f31020d6a89ede83e34c3b27a4",
+ "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4",
"shasum": ""
},
"require": {
@@ -930,7 +938,7 @@
"symfony/dependency-injection": "",
"symfony/http-kernel": ""
},
- "time": "2024-04-18T08:26:06+00:00",
+ "time": "2024-05-31T14:33:22+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -958,7 +966,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.39"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.40"
},
"funding": [
{
@@ -1060,27 +1068,29 @@
},
{
"name": "symfony/filesystem",
- "version": "v5.4.39",
- "version_normalized": "5.4.39.0",
+ "version": "v5.4.44",
+ "version_normalized": "5.4.44.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "e6edd875d5d39b03de51f3c3951148cfa79a4d12"
+ "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/e6edd875d5d39b03de51f3c3951148cfa79a4d12",
- "reference": "e6edd875d5d39b03de51f3c3951148cfa79a4d12",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/76c3818964e9d32be3862c9318ae3ba9aa280ddc",
+ "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8",
- "symfony/polyfill-php80": "^1.16",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "require-dev": {
"symfony/process": "^5.4|^6.4"
},
- "time": "2024-04-18T08:26:06+00:00",
+ "time": "2024-09-16T14:52:48+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1108,7 +1118,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.4.39"
+ "source": "https://github.com/symfony/filesystem/tree/v5.4.44"
},
"funding": [
{
@@ -1128,17 +1138,17 @@
},
{
"name": "symfony/finder",
- "version": "v5.4.39",
- "version_normalized": "5.4.39.0",
+ "version": "v5.4.43",
+ "version_normalized": "5.4.43.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "f6a96e4fcd468a25fede16ee665f50ced856bd0a"
+ "reference": "ae25a9145a900764158d439653d5630191155ca0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/f6a96e4fcd468a25fede16ee665f50ced856bd0a",
- "reference": "f6a96e4fcd468a25fede16ee665f50ced856bd0a",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/ae25a9145a900764158d439653d5630191155ca0",
+ "reference": "ae25a9145a900764158d439653d5630191155ca0",
"shasum": ""
},
"require": {
@@ -1146,7 +1156,7 @@
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-php80": "^1.16"
},
- "time": "2024-04-18T08:26:06+00:00",
+ "time": "2024-08-13T14:03:51+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1174,7 +1184,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.4.39"
+ "source": "https://github.com/symfony/finder/tree/v5.4.43"
},
"funding": [
{
@@ -1194,17 +1204,17 @@
},
{
"name": "symfony/options-resolver",
- "version": "v5.4.39",
- "version_normalized": "5.4.39.0",
+ "version": "v5.4.40",
+ "version_normalized": "5.4.40.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "1303bb73d6c3882f07c618129295503085dfddb9"
+ "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1303bb73d6c3882f07c618129295503085dfddb9",
- "reference": "1303bb73d6c3882f07c618129295503085dfddb9",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/bd1afbde6613a8d6b956115e0e14b196191fd0c4",
+ "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4",
"shasum": ""
},
"require": {
@@ -1213,7 +1223,7 @@
"symfony/polyfill-php73": "~1.0",
"symfony/polyfill-php80": "^1.16"
},
- "time": "2024-04-18T08:26:06+00:00",
+ "time": "2024-05-31T14:33:22+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1246,7 +1256,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v5.4.39"
+ "source": "https://github.com/symfony/options-resolver/tree/v5.4.40"
},
"funding": [
{
@@ -1266,21 +1276,21 @@
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.29.0",
- "version_normalized": "1.29.0.0",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
- "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-ctype": "*"
@@ -1288,7 +1298,7 @@
"suggest": {
"ext-ctype": "For best performance"
},
- "time": "2024-01-29T20:11:03+00:00",
+ "time": "2024-09-09T11:45:10+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -1328,7 +1338,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
},
"funding": [
{
@@ -1348,26 +1358,26 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.29.0",
- "version_normalized": "1.29.0.0",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
+ "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
- "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
+ "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
},
- "time": "2024-01-29T20:11:03+00:00",
+ "time": "2024-09-09T11:45:10+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -1409,7 +1419,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0"
},
"funding": [
{
@@ -1429,26 +1439,26 @@
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.29.0",
- "version_normalized": "1.29.0.0",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
- "reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
},
- "time": "2024-01-29T20:11:03+00:00",
+ "time": "2024-09-09T11:45:10+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -1493,7 +1503,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
},
"funding": [
{
@@ -1513,21 +1523,21 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.29.0",
- "version_normalized": "1.29.0.0",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
- "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
@@ -1535,7 +1545,7 @@
"suggest": {
"ext-mbstring": "For best performance"
},
- "time": "2024-01-29T20:11:03+00:00",
+ "time": "2024-09-09T11:45:10+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -1576,7 +1586,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
},
"funding": [
{
@@ -1596,23 +1606,23 @@
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.29.0",
- "version_normalized": "1.29.0.0",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "21bd091060673a1177ae842c0ef8fe30893114d2"
+ "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2",
- "reference": "21bd091060673a1177ae842c0ef8fe30893114d2",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
+ "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
- "time": "2024-01-29T20:11:03+00:00",
+ "time": "2024-09-09T11:45:10+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -1655,7 +1665,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0"
},
"funding": [
{
@@ -1675,23 +1685,23 @@
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.29.0",
- "version_normalized": "1.29.0.0",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
+ "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
- "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
+ "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
- "time": "2024-01-29T20:11:03+00:00",
+ "time": "2024-09-09T11:45:10+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -1738,7 +1748,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
},
"funding": [
{
@@ -1758,23 +1768,23 @@
},
{
"name": "symfony/polyfill-php81",
- "version": "v1.29.0",
- "version_normalized": "1.29.0.0",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
+ "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
- "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
+ "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
- "time": "2024-01-29T20:11:03+00:00",
+ "time": "2024-09-09T11:45:10+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -1817,7 +1827,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0"
},
"funding": [
{
@@ -1837,24 +1847,24 @@
},
{
"name": "symfony/process",
- "version": "v5.4.39",
- "version_normalized": "5.4.39.0",
+ "version": "v5.4.44",
+ "version_normalized": "5.4.44.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "85a554acd7c28522241faf2e97b9541247a0d3d5"
+ "reference": "1b9fa82b5c62cd49da8c9e3952dd8531ada65096"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/85a554acd7c28522241faf2e97b9541247a0d3d5",
- "reference": "85a554acd7c28522241faf2e97b9541247a0d3d5",
+ "url": "https://api.github.com/repos/symfony/process/zipball/1b9fa82b5c62cd49da8c9e3952dd8531ada65096",
+ "reference": "1b9fa82b5c62cd49da8c9e3952dd8531ada65096",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-php80": "^1.16"
},
- "time": "2024-04-18T08:26:06+00:00",
+ "time": "2024-09-17T12:46:43+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1882,7 +1892,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v5.4.39"
+ "source": "https://github.com/symfony/process/tree/v5.4.44"
},
"funding": [
{
@@ -1988,24 +1998,24 @@
},
{
"name": "symfony/stopwatch",
- "version": "v5.4.39",
- "version_normalized": "5.4.39.0",
+ "version": "v5.4.40",
+ "version_normalized": "5.4.40.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "fb97497490bcec8a3c32c809cacfdd4c15dc8390"
+ "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fb97497490bcec8a3c32c809cacfdd4c15dc8390",
- "reference": "fb97497490bcec8a3c32c809cacfdd4c15dc8390",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0e9daf3b7c805c747638b2cc48f1649e594f9625",
+ "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/service-contracts": "^1|^2|^3"
},
- "time": "2024-04-18T08:26:06+00:00",
+ "time": "2024-05-31T14:33:22+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2033,7 +2043,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/stopwatch/tree/v5.4.39"
+ "source": "https://github.com/symfony/stopwatch/tree/v5.4.40"
},
"funding": [
{
@@ -2053,17 +2063,17 @@
},
{
"name": "symfony/string",
- "version": "v5.4.39",
- "version_normalized": "5.4.39.0",
+ "version": "v5.4.44",
+ "version_normalized": "5.4.44.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "495e71bae5862308051b9e63cc3e34078eed83ef"
+ "reference": "832caa16b6d9aac6bf11747315225f5aba384c24"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/495e71bae5862308051b9e63cc3e34078eed83ef",
- "reference": "495e71bae5862308051b9e63cc3e34078eed83ef",
+ "url": "https://api.github.com/repos/symfony/string/zipball/832caa16b6d9aac6bf11747315225f5aba384c24",
+ "reference": "832caa16b6d9aac6bf11747315225f5aba384c24",
"shasum": ""
},
"require": {
@@ -2083,7 +2093,7 @@
"symfony/translation-contracts": "^1.1|^2",
"symfony/var-exporter": "^4.4|^5.0|^6.0"
},
- "time": "2024-04-18T08:26:06+00:00",
+ "time": "2024-09-20T07:56:40+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2122,7 +2132,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.4.39"
+ "source": "https://github.com/symfony/string/tree/v5.4.44"
},
"funding": [
{
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 6b1891888..cf72add7f 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-main',
'version' => 'dev-main',
- 'reference' => '6e4343516f2667323b3b38369ea21e52d3a47f8e',
+ 'reference' => '824f3fc5cbbfbc7f920ecb43af9a8663b61e16ef',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -13,25 +13,25 @@
'__root__' => array(
'pretty_version' => 'dev-main',
'version' => 'dev-main',
- 'reference' => '6e4343516f2667323b3b38369ea21e52d3a47f8e',
+ 'reference' => '824f3fc5cbbfbc7f920ecb43af9a8663b61e16ef',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'dev_requirement' => false,
),
'composer/pcre' => array(
- 'pretty_version' => '3.1.3',
- 'version' => '3.1.3.0',
- 'reference' => '5b16e25a5355f1f3afdfc2f954a0a80aec4826a8',
+ 'pretty_version' => '3.3.1',
+ 'version' => '3.3.1.0',
+ 'reference' => '63aaeac21d7e775ff9bc9d45021e1745c97521c4',
'type' => 'library',
'install_path' => __DIR__ . '/./pcre',
'aliases' => array(),
'dev_requirement' => false,
),
'composer/semver' => array(
- 'pretty_version' => '3.4.0',
- 'version' => '3.4.0.0',
- 'reference' => '35e8d0af4486141bc745f23a29cc2091eb624a32',
+ 'pretty_version' => '3.4.3',
+ 'version' => '3.4.3.0',
+ 'reference' => '4313d26ada5e0c4edfbd1dc481a92ff7bff91f12',
'type' => 'library',
'install_path' => __DIR__ . '/./semver',
'aliases' => array(),
@@ -56,9 +56,9 @@
'dev_requirement' => false,
),
'phpstan/phpstan' => array(
- 'pretty_version' => '1.10.67',
- 'version' => '1.10.67.0',
- 'reference' => '16ddbe776f10da6a95ebd25de7c1dbed397dc493',
+ 'pretty_version' => '1.12.5',
+ 'version' => '1.12.5.0',
+ 'reference' => '7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17',
'type' => 'library',
'install_path' => __DIR__ . '/../phpstan/phpstan',
'aliases' => array(),
@@ -104,9 +104,9 @@
),
),
'rector/rector' => array(
- 'pretty_version' => '1.0.5',
- 'version' => '1.0.5.0',
- 'reference' => '73eb63e4f9011dba6b7c66c3262543014e352f34',
+ 'pretty_version' => '1.2.6',
+ 'version' => '1.2.6.0',
+ 'reference' => '6ca85da28159dbd3bb36211c5104b7bc91278e99',
'type' => 'library',
'install_path' => __DIR__ . '/../rector/rector',
'aliases' => array(),
@@ -131,9 +131,9 @@
'dev_requirement' => false,
),
'symfony/console' => array(
- 'pretty_version' => 'v5.4.39',
- 'version' => '5.4.39.0',
- 'reference' => 'f3e591c48688a0cfa1a3296205926c05e84b22b1',
+ 'pretty_version' => 'v5.4.44',
+ 'version' => '5.4.44.0',
+ 'reference' => '5b5a0aa66e3296e303e22490f90f521551835a83',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/console',
'aliases' => array(),
@@ -149,9 +149,9 @@
'dev_requirement' => false,
),
'symfony/event-dispatcher' => array(
- 'pretty_version' => 'v5.4.39',
- 'version' => '5.4.39.0',
- 'reference' => 'd40fae9fd85c762b6ba378152fdd1157a85d7e4f',
+ 'pretty_version' => 'v5.4.40',
+ 'version' => '5.4.40.0',
+ 'reference' => 'a54e2a8a114065f31020d6a89ede83e34c3b27a4',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/event-dispatcher',
'aliases' => array(),
@@ -173,99 +173,99 @@
),
),
'symfony/filesystem' => array(
- 'pretty_version' => 'v5.4.39',
- 'version' => '5.4.39.0',
- 'reference' => 'e6edd875d5d39b03de51f3c3951148cfa79a4d12',
+ 'pretty_version' => 'v5.4.44',
+ 'version' => '5.4.44.0',
+ 'reference' => '76c3818964e9d32be3862c9318ae3ba9aa280ddc',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/filesystem',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/finder' => array(
- 'pretty_version' => 'v5.4.39',
- 'version' => '5.4.39.0',
- 'reference' => 'f6a96e4fcd468a25fede16ee665f50ced856bd0a',
+ 'pretty_version' => 'v5.4.43',
+ 'version' => '5.4.43.0',
+ 'reference' => 'ae25a9145a900764158d439653d5630191155ca0',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/finder',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/options-resolver' => array(
- 'pretty_version' => 'v5.4.39',
- 'version' => '5.4.39.0',
- 'reference' => '1303bb73d6c3882f07c618129295503085dfddb9',
+ 'pretty_version' => 'v5.4.40',
+ 'version' => '5.4.40.0',
+ 'reference' => 'bd1afbde6613a8d6b956115e0e14b196191fd0c4',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/options-resolver',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-ctype' => array(
- 'pretty_version' => 'v1.29.0',
- 'version' => '1.29.0.0',
- 'reference' => 'ef4d7e442ca910c4764bce785146269b30cb5fc4',
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-intl-grapheme' => array(
- 'pretty_version' => 'v1.29.0',
- 'version' => '1.29.0.0',
- 'reference' => '32a9da87d7b3245e09ac426c83d334ae9f06f80f',
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => 'b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-intl-normalizer' => array(
- 'pretty_version' => 'v1.29.0',
- 'version' => '1.29.0.0',
- 'reference' => 'bc45c394692b948b4d383a08d7753968bed9a83d',
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => '3833d7255cc303546435cb650316bff708a1c75c',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-mbstring' => array(
- 'pretty_version' => 'v1.29.0',
- 'version' => '1.29.0.0',
- 'reference' => '9773676c8a1bb1f8d4340a62efe641cf76eda7ec',
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => '85181ba99b2345b0ef10ce42ecac37612d9fd341',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-php73' => array(
- 'pretty_version' => 'v1.29.0',
- 'version' => '1.29.0.0',
- 'reference' => '21bd091060673a1177ae842c0ef8fe30893114d2',
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => '0f68c03565dcaaf25a890667542e8bd75fe7e5bb',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-php73',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-php80' => array(
- 'pretty_version' => 'v1.29.0',
- 'version' => '1.29.0.0',
- 'reference' => '87b68208d5c1188808dd7839ee1e6c8ec3b02f1b',
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => '60328e362d4c2c802a54fcbf04f9d3fb892b4cf8',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-php80',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-php81' => array(
- 'pretty_version' => 'v1.29.0',
- 'version' => '1.29.0.0',
- 'reference' => 'c565ad1e63f30e7477fc40738343c62b40bc672d',
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => '4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-php81',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/process' => array(
- 'pretty_version' => 'v5.4.39',
- 'version' => '5.4.39.0',
- 'reference' => '85a554acd7c28522241faf2e97b9541247a0d3d5',
+ 'pretty_version' => 'v5.4.44',
+ 'version' => '5.4.44.0',
+ 'reference' => '1b9fa82b5c62cd49da8c9e3952dd8531ada65096',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/process',
'aliases' => array(),
@@ -281,18 +281,18 @@
'dev_requirement' => false,
),
'symfony/stopwatch' => array(
- 'pretty_version' => 'v5.4.39',
- 'version' => '5.4.39.0',
- 'reference' => 'fb97497490bcec8a3c32c809cacfdd4c15dc8390',
+ 'pretty_version' => 'v5.4.40',
+ 'version' => '5.4.40.0',
+ 'reference' => '0e9daf3b7c805c747638b2cc48f1649e594f9625',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/stopwatch',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/string' => array(
- 'pretty_version' => 'v5.4.39',
- 'version' => '5.4.39.0',
- 'reference' => '495e71bae5862308051b9e63cc3e34078eed83ef',
+ 'pretty_version' => 'v5.4.44',
+ 'version' => '5.4.44.0',
+ 'reference' => '832caa16b6d9aac6bf11747315225f5aba384c24',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/string',
'aliases' => array(),
diff --git a/vendor/composer/pcre/README.md b/vendor/composer/pcre/README.md
index 973b17d8d..490651499 100644
--- a/vendor/composer/pcre/README.md
+++ b/vendor/composer/pcre/README.md
@@ -12,7 +12,8 @@ to understand the implications.
It thus makes it easier to work with static analysis tools like PHPStan or Psalm as it
simplifies and reduces the possible return values from all the `preg_*` functions which
-are quite packed with edge cases.
+are quite packed with edge cases. As of v2.2.0 / v3.2.0 the library also comes with a
+[PHPStan extension](#phpstan-extension) for parsing regular expressions and giving you even better output types.
This library is a thin wrapper around `preg_*` functions with [some limitations](#restrictions--limitations).
If you are looking for a richer API to handle regular expressions have a look at
@@ -175,6 +176,13 @@ preg_match('/(a)(b)*(c)(d)*/', 'ac', $matches, $flags);
| group 2 (any unmatched group preceding one that matched) is set to `''`. You cannot tell if it matched an empty string or did not match at all | group 2 is `null` when unmatched and a string if it matched, easy to check for |
| group 4 (any optional group without a matching one following) is missing altogether. So you have to check with `isset()`, but really you want `isset($m[4]) && $m[4] !== ''` for safety unless you are very careful to check that a non-optional group follows it | group 4 is always set, and null in this case as there was no match, easy to check for with `$m[4] !== null` |
+PHPStan Extension
+-----------------
+
+To use the PHPStan extension if you do not use `phpstan/extension-installer` you can include `vendor/composer/pcre/extension.neon` in your PHPStan config.
+
+The extension provides much better type information for $matches as well as regex validation where possible.
+
License
-------
diff --git a/vendor/composer/pcre/composer.json b/vendor/composer/pcre/composer.json
index 40477ff4e..30a2c953d 100644
--- a/vendor/composer/pcre/composer.json
+++ b/vendor/composer/pcre/composer.json
@@ -20,10 +20,13 @@
"php": "^7.4 || ^8.0"
},
"require-dev": {
- "symfony/phpunit-bridge": "^5",
- "phpstan/phpstan": "^1.3",
+ "phpunit/phpunit": "^8 || ^9",
+ "phpstan/phpstan": "^1.11.10",
"phpstan/phpstan-strict-rules": "^1.1"
},
+ "conflict": {
+ "phpstan/phpstan": "<1.11.10"
+ },
"autoload": {
"psr-4": {
"Composer\\Pcre\\": "src"
@@ -37,10 +40,15 @@
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
}
},
"scripts": {
- "test": "vendor/bin/simple-phpunit",
- "phpstan": "phpstan analyse"
+ "test": "@php vendor/bin/phpunit",
+ "phpstan": "@php phpstan analyse"
}
}
diff --git a/vendor/composer/pcre/extension.neon b/vendor/composer/pcre/extension.neon
new file mode 100644
index 000000000..b9cea113f
--- /dev/null
+++ b/vendor/composer/pcre/extension.neon
@@ -0,0 +1,22 @@
+# composer/pcre PHPStan extensions
+#
+# These can be reused by third party packages by including 'vendor/composer/pcre/extension.neon'
+# in your phpstan config
+
+services:
+ -
+ class: Composer\Pcre\PHPStan\PregMatchParameterOutTypeExtension
+ tags:
+ - phpstan.staticMethodParameterOutTypeExtension
+ -
+ class: Composer\Pcre\PHPStan\PregMatchTypeSpecifyingExtension
+ tags:
+ - phpstan.typeSpecifier.staticMethodTypeSpecifyingExtension
+ -
+ class: Composer\Pcre\PHPStan\PregReplaceCallbackClosureTypeExtension
+ tags:
+ - phpstan.staticMethodParameterClosureTypeExtension
+
+rules:
+ - Composer\Pcre\PHPStan\UnsafeStrictGroupsCallRule
+ - Composer\Pcre\PHPStan\InvalidRegexPatternRule
diff --git a/vendor/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php b/vendor/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php
new file mode 100644
index 000000000..8a05fb24a
--- /dev/null
+++ b/vendor/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php
@@ -0,0 +1,142 @@
+
+ */
+class InvalidRegexPatternRule implements Rule
+{
+ public function getNodeType(): string
+ {
+ return StaticCall::class;
+ }
+
+ public function processNode(Node $node, Scope $scope): array
+ {
+ $patterns = $this->extractPatterns($node, $scope);
+
+ $errors = [];
+ foreach ($patterns as $pattern) {
+ $errorMessage = $this->validatePattern($pattern);
+ if ($errorMessage === null) {
+ continue;
+ }
+
+ $errors[] = RuleErrorBuilder::message(sprintf('Regex pattern is invalid: %s', $errorMessage))->identifier('regexp.pattern')->build();
+ }
+
+ return $errors;
+ }
+
+ /**
+ * @return string[]
+ */
+ private function extractPatterns(StaticCall $node, Scope $scope): array
+ {
+ if (!$node->class instanceof FullyQualified) {
+ return [];
+ }
+ $isRegex = $node->class->toString() === Regex::class;
+ $isPreg = $node->class->toString() === Preg::class;
+ if (!$isRegex && !$isPreg) {
+ return [];
+ }
+ if (!$node->name instanceof Node\Identifier || !Preg::isMatch('{^(match|isMatch|grep|replace|split)}', $node->name->name)) {
+ return [];
+ }
+
+ $functionName = $node->name->name;
+ if (!isset($node->getArgs()[0])) {
+ return [];
+ }
+
+ $patternNode = $node->getArgs()[0]->value;
+ $patternType = $scope->getType($patternNode);
+
+ $patternStrings = [];
+
+ foreach ($patternType->getConstantStrings() as $constantStringType) {
+ if ($functionName === 'replaceCallbackArray') {
+ continue;
+ }
+
+ $patternStrings[] = $constantStringType->getValue();
+ }
+
+ foreach ($patternType->getConstantArrays() as $constantArrayType) {
+ if (
+ in_array($functionName, [
+ 'replace',
+ 'replaceCallback',
+ ], true)
+ ) {
+ foreach ($constantArrayType->getValueTypes() as $arrayKeyType) {
+ foreach ($arrayKeyType->getConstantStrings() as $constantString) {
+ $patternStrings[] = $constantString->getValue();
+ }
+ }
+ }
+
+ if ($functionName !== 'replaceCallbackArray') {
+ continue;
+ }
+
+ foreach ($constantArrayType->getKeyTypes() as $arrayKeyType) {
+ foreach ($arrayKeyType->getConstantStrings() as $constantString) {
+ $patternStrings[] = $constantString->getValue();
+ }
+ }
+ }
+
+ return $patternStrings;
+ }
+
+ private function validatePattern(string $pattern): ?string
+ {
+ try {
+ $msg = null;
+ $prev = set_error_handler(function (int $severity, string $message, string $file) use (&$msg): bool {
+ $msg = preg_replace("#^preg_match(_all)?\\(.*?\\): #", '', $message);
+
+ return true;
+ });
+
+ if ($pattern === '') {
+ return 'Empty string is not a valid regular expression';
+ }
+
+ Preg::match($pattern, '');
+ if ($msg !== null) {
+ return $msg;
+ }
+ } catch (PcreException $e) {
+ if ($e->getCode() === PREG_INTERNAL_ERROR && $msg !== null) {
+ return $msg;
+ }
+
+ return preg_replace('{.*? failed executing ".*": }', '', $e->getMessage());
+ } finally {
+ restore_error_handler();
+ }
+
+ return null;
+ }
+
+}
diff --git a/vendor/composer/pcre/src/PHPStan/PregMatchFlags.php b/vendor/composer/pcre/src/PHPStan/PregMatchFlags.php
new file mode 100644
index 000000000..aa30ab347
--- /dev/null
+++ b/vendor/composer/pcre/src/PHPStan/PregMatchFlags.php
@@ -0,0 +1,70 @@
+getType($flagsArg->value);
+
+ $constantScalars = $flagsType->getConstantScalarValues();
+ if ($constantScalars === []) {
+ return null;
+ }
+
+ $internalFlagsTypes = [];
+ foreach ($flagsType->getConstantScalarValues() as $constantScalarValue) {
+ if (!is_int($constantScalarValue)) {
+ return null;
+ }
+
+ $internalFlagsTypes[] = new ConstantIntegerType($constantScalarValue | PREG_UNMATCHED_AS_NULL);
+ }
+ return TypeCombinator::union(...$internalFlagsTypes);
+ }
+
+ static public function removeNullFromMatches(Type $matchesType): Type
+ {
+ return TypeTraverser::map($matchesType, static function (Type $type, callable $traverse): Type {
+ if ($type instanceof UnionType || $type instanceof IntersectionType) {
+ return $traverse($type);
+ }
+
+ if ($type instanceof ConstantArrayType) {
+ return new ConstantArrayType(
+ $type->getKeyTypes(),
+ array_map(static function (Type $valueType) use ($traverse): Type {
+ return $traverse($valueType);
+ }, $type->getValueTypes()),
+ $type->getNextAutoIndexes(),
+ [],
+ $type->isList()
+ );
+ }
+
+ if ($type instanceof ArrayType) {
+ return new ArrayType($type->getKeyType(), $traverse($type->getItemType()));
+ }
+
+ return TypeCombinator::removeNull($type);
+ });
+ }
+
+}
diff --git a/vendor/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php b/vendor/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php
new file mode 100644
index 000000000..e0d60208e
--- /dev/null
+++ b/vendor/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php
@@ -0,0 +1,65 @@
+regexShapeMatcher = $regexShapeMatcher;
+ }
+
+ public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter): bool
+ {
+ return
+ $methodReflection->getDeclaringClass()->getName() === Preg::class
+ && in_array($methodReflection->getName(), [
+ 'match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups',
+ 'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups'
+ ], true)
+ && $parameter->getName() === 'matches';
+ }
+
+ public function getParameterOutTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope): ?Type
+ {
+ $args = $methodCall->getArgs();
+ $patternArg = $args[0] ?? null;
+ $matchesArg = $args[2] ?? null;
+ $flagsArg = $args[3] ?? null;
+
+ if (
+ $patternArg === null || $matchesArg === null
+ ) {
+ return null;
+ }
+
+ $flagsType = PregMatchFlags::getType($flagsArg, $scope);
+ if ($flagsType === null) {
+ return null;
+ }
+
+ if (stripos($methodReflection->getName(), 'matchAll') !== false) {
+ return $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope);
+ }
+
+ return $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope);
+ }
+
+}
diff --git a/vendor/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php b/vendor/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php
new file mode 100644
index 000000000..cf22f6020
--- /dev/null
+++ b/vendor/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php
@@ -0,0 +1,105 @@
+regexShapeMatcher = $regexShapeMatcher;
+ }
+
+ public function setTypeSpecifier(TypeSpecifier $typeSpecifier): void
+ {
+ $this->typeSpecifier = $typeSpecifier;
+ }
+
+ public function getClass(): string
+ {
+ return Preg::class;
+ }
+
+ public function isStaticMethodSupported(MethodReflection $methodReflection, StaticCall $node, TypeSpecifierContext $context): bool
+ {
+ return in_array($methodReflection->getName(), [
+ 'match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups',
+ 'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups'
+ ], true)
+ && !$context->null();
+ }
+
+ public function specifyTypes(MethodReflection $methodReflection, StaticCall $node, Scope $scope, TypeSpecifierContext $context): SpecifiedTypes
+ {
+ $args = $node->getArgs();
+ $patternArg = $args[0] ?? null;
+ $matchesArg = $args[2] ?? null;
+ $flagsArg = $args[3] ?? null;
+
+ if (
+ $patternArg === null || $matchesArg === null
+ ) {
+ return new SpecifiedTypes();
+ }
+
+ $flagsType = PregMatchFlags::getType($flagsArg, $scope);
+ if ($flagsType === null) {
+ return new SpecifiedTypes();
+ }
+
+ if (stripos($methodReflection->getName(), 'matchAll') !== false) {
+ $matchedType = $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope);
+ } else {
+ $matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope);
+ }
+
+ if ($matchedType === null) {
+ return new SpecifiedTypes();
+ }
+
+ if (
+ in_array($methodReflection->getName(), ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], true)
+ ) {
+ $matchedType = PregMatchFlags::removeNullFromMatches($matchedType);
+ }
+
+ $overwrite = false;
+ if ($context->false()) {
+ $overwrite = true;
+ $context = $context->negate();
+ }
+
+ return $this->typeSpecifier->create(
+ $matchesArg->value,
+ $matchedType,
+ $context,
+ $overwrite,
+ $scope,
+ $node
+ );
+ }
+}
diff --git a/vendor/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php b/vendor/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php
new file mode 100644
index 000000000..7b9536725
--- /dev/null
+++ b/vendor/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php
@@ -0,0 +1,91 @@
+regexShapeMatcher = $regexShapeMatcher;
+ }
+
+ public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter): bool
+ {
+ return in_array($methodReflection->getDeclaringClass()->getName(), [Preg::class, Regex::class], true)
+ && in_array($methodReflection->getName(), ['replaceCallback', 'replaceCallbackStrictGroups'], true)
+ && $parameter->getName() === 'replacement';
+ }
+
+ public function getTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope): ?Type
+ {
+ $args = $methodCall->getArgs();
+ $patternArg = $args[0] ?? null;
+ $flagsArg = $args[5] ?? null;
+
+ if (
+ $patternArg === null
+ ) {
+ return null;
+ }
+
+ $flagsType = PregMatchFlags::getType($flagsArg, $scope);
+
+ $matchesType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope);
+ if ($matchesType === null) {
+ return null;
+ }
+
+ if ($methodReflection->getName() === 'replaceCallbackStrictGroups' && count($matchesType->getConstantArrays()) === 1) {
+ $matchesType = $matchesType->getConstantArrays()[0];
+ $matchesType = new ConstantArrayType(
+ $matchesType->getKeyTypes(),
+ array_map(static function (Type $valueType): Type {
+ if (count($valueType->getConstantArrays()) === 1) {
+ $valueTypeArray = $valueType->getConstantArrays()[0];
+ return new ConstantArrayType(
+ $valueTypeArray->getKeyTypes(),
+ array_map(static function (Type $valueType): Type {
+ return TypeCombinator::removeNull($valueType);
+ }, $valueTypeArray->getValueTypes()),
+ $valueTypeArray->getNextAutoIndexes(),
+ [],
+ $valueTypeArray->isList()
+ );
+ }
+ return TypeCombinator::removeNull($valueType);
+ }, $matchesType->getValueTypes()),
+ $matchesType->getNextAutoIndexes(),
+ [],
+ $matchesType->isList()
+ );
+ }
+
+ return new ClosureType(
+ [
+ new NativeParameterReflection($parameter->getName(), $parameter->isOptional(), $matchesType, $parameter->passedByReference(), $parameter->isVariadic(), $parameter->getDefaultValue()),
+ ],
+ new StringType()
+ );
+ }
+}
diff --git a/vendor/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php b/vendor/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php
new file mode 100644
index 000000000..5bced5070
--- /dev/null
+++ b/vendor/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php
@@ -0,0 +1,112 @@
+
+ */
+final class UnsafeStrictGroupsCallRule implements Rule
+{
+ /**
+ * @var RegexArrayShapeMatcher
+ */
+ private $regexShapeMatcher;
+
+ public function __construct(RegexArrayShapeMatcher $regexShapeMatcher)
+ {
+ $this->regexShapeMatcher = $regexShapeMatcher;
+ }
+
+ public function getNodeType(): string
+ {
+ return StaticCall::class;
+ }
+
+ public function processNode(Node $node, Scope $scope): array
+ {
+ if (!$node->class instanceof FullyQualified) {
+ return [];
+ }
+ $isRegex = $node->class->toString() === Regex::class;
+ $isPreg = $node->class->toString() === Preg::class;
+ if (!$isRegex && !$isPreg) {
+ return [];
+ }
+ if (!$node->name instanceof Node\Identifier || !in_array($node->name->name, ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], true)) {
+ return [];
+ }
+
+ $args = $node->getArgs();
+ if (!isset($args[0])) {
+ return [];
+ }
+
+ $patternArg = $args[0] ?? null;
+ if ($isPreg) {
+ if (!isset($args[2])) { // no matches set, skip as the matches won't be used anyway
+ return [];
+ }
+ $flagsArg = $args[3] ?? null;
+ } else {
+ $flagsArg = $args[2] ?? null;
+ }
+
+ if ($patternArg === null) {
+ return [];
+ }
+
+ $flagsType = PregMatchFlags::getType($flagsArg, $scope);
+ if ($flagsType === null) {
+ return [];
+ }
+
+ $matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope);
+ if ($matchedType === null) {
+ return [
+ RuleErrorBuilder::message(sprintf('The %s call is potentially unsafe as $matches\' type could not be inferred.', $node->name->name))
+ ->identifier('composerPcre.maybeUnsafeStrictGroups')
+ ->build(),
+ ];
+ }
+
+ if (count($matchedType->getConstantArrays()) === 1) {
+ $matchedType = $matchedType->getConstantArrays()[0];
+ $nullableGroups = [];
+ foreach ($matchedType->getValueTypes() as $index => $type) {
+ if (TypeCombinator::containsNull($type)) {
+ $nullableGroups[] = $matchedType->getKeyTypes()[$index]->getValue();
+ }
+ }
+
+ if (\count($nullableGroups) > 0) {
+ return [
+ RuleErrorBuilder::message(sprintf(
+ 'The %s call is unsafe as match group%s "%s" %s optional and may be null.',
+ $node->name->name,
+ \count($nullableGroups) > 1 ? 's' : '',
+ implode('", "', $nullableGroups),
+ \count($nullableGroups) > 1 ? 'are' : 'is'
+ ))->identifier('composerPcre.unsafeStrictGroups')->build(),
+ ];
+ }
+ }
+
+ return [];
+ }
+}
diff --git a/vendor/composer/pcre/src/Preg.php b/vendor/composer/pcre/src/Preg.php
index 2f54a9936..400abbfec 100644
--- a/vendor/composer/pcre/src/Preg.php
+++ b/vendor/composer/pcre/src/Preg.php
@@ -203,7 +203,7 @@ public static function replaceCallback($pattern, callable $replacement, $subject
*
* @param-out int<0, max> $count
*/
- public static function replaceCallbackStrictGroups(string $pattern, callable $replacement, $subject, int $limit = -1, int &$count = null, int $flags = 0): string
+ public static function replaceCallbackStrictGroups(string $pattern, callable $replacement, $subject, int $limit = -1, ?int &$count = null, int $flags = 0): string
{
return self::replaceCallback($pattern, function (array $matches) use ($pattern, $replacement) {
return $replacement(self::enforceNonNullMatches($pattern, $matches, 'replaceCallback'));
diff --git a/vendor/composer/pcre/src/Regex.php b/vendor/composer/pcre/src/Regex.php
index 21564a471..038cf0696 100644
--- a/vendor/composer/pcre/src/Regex.php
+++ b/vendor/composer/pcre/src/Regex.php
@@ -43,6 +43,7 @@ public static function match(string $pattern, string $subject, int $flags = 0, i
*/
public static function matchStrictGroups(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchStrictGroupsResult
{
+ // @phpstan-ignore composerPcre.maybeUnsafeStrictGroups
$count = Preg::matchStrictGroups($pattern, $subject, $matches, $flags, $offset);
return new MatchStrictGroupsResult($count, $matches);
@@ -87,6 +88,7 @@ public static function matchAllStrictGroups(string $pattern, string $subject, in
self::checkOffsetCapture($flags, 'matchAllWithOffsets');
self::checkSetOrder($flags);
+ // @phpstan-ignore composerPcre.maybeUnsafeStrictGroups
$count = Preg::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset);
return new MatchAllStrictGroupsResult($count, $matches);
diff --git a/vendor/composer/semver/CHANGELOG.md b/vendor/composer/semver/CHANGELOG.md
index 3b1116124..bad46cd1c 100644
--- a/vendor/composer/semver/CHANGELOG.md
+++ b/vendor/composer/semver/CHANGELOG.md
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
+### [3.4.3] 2024-09-19
+
+ * Fixed some type annotations
+
+### [3.4.2] 2024-07-12
+
+ * Fixed PHP 5.3 syntax error
+
+### [3.4.1] 2024-07-12
+
+ * Fixed normalizeStability's return type to enforce valid stabilities
+
### [3.4.0] 2023-08-31
* Support larger major version numbers (#149)
@@ -179,6 +191,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint`
* Changed: code style using php-cs-fixer.
+[3.4.3]: https://github.com/composer/semver/compare/3.4.2...3.4.3
+[3.4.2]: https://github.com/composer/semver/compare/3.4.1...3.4.2
+[3.4.1]: https://github.com/composer/semver/compare/3.4.0...3.4.1
[3.4.0]: https://github.com/composer/semver/compare/3.3.2...3.4.0
[3.3.2]: https://github.com/composer/semver/compare/3.3.1...3.3.2
[3.3.1]: https://github.com/composer/semver/compare/3.3.0...3.3.1
diff --git a/vendor/composer/semver/composer.json b/vendor/composer/semver/composer.json
index f3a6f4cc6..1fad9e548 100644
--- a/vendor/composer/semver/composer.json
+++ b/vendor/composer/semver/composer.json
@@ -34,8 +34,8 @@
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
- "symfony/phpunit-bridge": "^4.2 || ^5",
- "phpstan/phpstan": "^1.4"
+ "symfony/phpunit-bridge": "^3 || ^7",
+ "phpstan/phpstan": "^1.11"
},
"autoload": {
"psr-4": {
diff --git a/vendor/composer/semver/phpstan-baseline.neon b/vendor/composer/semver/phpstan-baseline.neon
deleted file mode 100644
index 933cf2031..000000000
--- a/vendor/composer/semver/phpstan-baseline.neon
+++ /dev/null
@@ -1,11 +0,0 @@
-parameters:
- ignoreErrors:
- -
- message: "#^Parameter \\#1 \\$operator of class Composer\\\\Semver\\\\Constraint\\\\Constraint constructor expects '\\!\\='\\|'\\<'\\|'\\<\\='\\|'\\<\\>'\\|'\\='\\|'\\=\\='\\|'\\>'\\|'\\>\\=', non\\-falsy\\-string given\\.$#"
- count: 1
- path: src/VersionParser.php
-
- -
- message: "#^Strict comparison using \\=\\=\\= between null and non\\-empty\\-string will always evaluate to false\\.$#"
- count: 2
- path: src/VersionParser.php
diff --git a/vendor/composer/semver/src/CompilingMatcher.php b/vendor/composer/semver/src/CompilingMatcher.php
index 45bce70a6..aea1d3b95 100644
--- a/vendor/composer/semver/src/CompilingMatcher.php
+++ b/vendor/composer/semver/src/CompilingMatcher.php
@@ -64,7 +64,7 @@ public static function clear()
* @phpstan-param Constraint::OP_* $operator
* @param string $version
*
- * @return mixed
+ * @return bool
*/
public static function match(ConstraintInterface $constraint, $operator, $version)
{
diff --git a/vendor/composer/semver/src/VersionParser.php b/vendor/composer/semver/src/VersionParser.php
index 9318629a7..305a0faec 100644
--- a/vendor/composer/semver/src/VersionParser.php
+++ b/vendor/composer/semver/src/VersionParser.php
@@ -82,11 +82,16 @@ public static function parseStability($version)
* @param string $stability
*
* @return string
+ * @phpstan-return 'stable'|'RC'|'beta'|'alpha'|'dev'
*/
public static function normalizeStability($stability)
{
$stability = strtolower((string) $stability);
+ if (!in_array($stability, array('stable', 'rc', 'beta', 'alpha', 'dev'), true)) {
+ throw new \InvalidArgumentException('Invalid stability string "'.$stability.'", expected one of stable, RC, beta, alpha or dev');
+ }
+
return $stability === 'rc' ? 'RC' : $stability;
}
diff --git a/vendor/phpstan/phpstan/README.md b/vendor/phpstan/phpstan/README.md
index 790f234c6..e3bb94063 100644
--- a/vendor/phpstan/phpstan/README.md
+++ b/vendor/phpstan/phpstan/README.md
@@ -24,50 +24,56 @@ can be checked before you run the actual line.
## Sponsors
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
[**You can now sponsor my open-source work on PHPStan through GitHub Sponsors.**](https://github.com/sponsors/ondrejmirtes)
Does GitHub already have your 💳? Do you use PHPStan to find 🐛 before they reach production? [Send a couple of 💸 a month my way too.](https://github.com/sponsors/ondrejmirtes) Thank you!
-One-time donations [through PayPal](https://paypal.me/phpstan) are also accepted. To request an invoice, [contact me](mailto:ondrej@mirtes.cz) through e-mail.
+One-time donations [through Revolut.me](https://revolut.me/ondrejmirtes) are also accepted. To request an invoice, [contact me](mailto:ondrej@mirtes.cz) through e-mail.
## Documentation
diff --git a/vendor/phpstan/phpstan/bootstrap.php b/vendor/phpstan/phpstan/bootstrap.php
index 76a7c58f4..2d950b095 100644
--- a/vendor/phpstan/phpstan/bootstrap.php
+++ b/vendor/phpstan/phpstan/bootstrap.php
@@ -28,9 +28,7 @@ final public static function loadClass(string $class): void {
self::$composerAutoloader = require 'phar://' . __DIR__ . '/phpstan.phar/vendor/autoload.php';
require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/jetbrains/phpstorm-stubs/PhpStormStubsMap.php';
require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/react/async/src/functions_include.php';
- require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/react/promise-timer/src/functions_include.php';
require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/react/promise/src/functions_include.php';
- require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/ringcentral/psr7/src/functions_include.php';
}
self::$composerAutoloader->loadClass($class);
diff --git a/vendor/phpstan/phpstan/phpstan.phar b/vendor/phpstan/phpstan/phpstan.phar
index 207b04ace..95932296f 100755
Binary files a/vendor/phpstan/phpstan/phpstan.phar and b/vendor/phpstan/phpstan/phpstan.phar differ
diff --git a/vendor/phpstan/phpstan/phpstan.phar.asc b/vendor/phpstan/phpstan/phpstan.phar.asc
index 2e50bc434..8abddd1f4 100644
--- a/vendor/phpstan/phpstan/phpstan.phar.asc
+++ b/vendor/phpstan/phpstan/phpstan.phar.asc
@@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE-----
-iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmYeJvgACgkQUcZzBf/C
-5cCOqQ/8D0idBljs/5h0aJmBcLdThaoESPRpGUzIVfU860mPAViajDSj9goyGdlD
-OclH2iBakSQv3QoImnWszHfLW7i3Xxmy+/FomyQrrrOZ4tJnEgC/v94AXpFX33lu
-5Ew4sXDrFV2TpT7kgi354aq8m8LXZFSWio4tiOrxqBdGCUVWbap+5dbU7HuxrM4k
-R3suUGSgde9VNnFZaK6qC0Tudtjkrhb/NKuH/rMRxwMtPbdT61r7p37PoP51JJ25
-vjtnGklbzG+Y7NdOkv6c+8RwfSra5oQx2MUxrWRKEVluUKDD7ZhSW3wIZgV7GJih
-REyqHFBiW3V19csTWGyVdKmPXxCbRGhAiawb/qFGoOgxQBXKbF3zZ/5WDQUdwPYX
-6XoFRzJ2Ey4TjiXHXvMlQhIQxSsUEWoeZcLqas5y9wLN6xBVR3PLA/qgpkMK165K
-SGKRUW78FKtNjpYWalbrjBe8HWlQ9Ho9G1hOACjYUxeBTaO8UwfJ7JKjhEOXuzcH
-1/mJ0hKg94lyV0ONp6xqtV3E/sIJOW/h7X9HcftA/J0CSZOWVwAIJJ3tvAoe+4Z3
-pzCs6JWJR8lec+9p+oFaiSSNsPa1xwSDeaWZ2Wf8RTc0gUr0umQz9gyiQr6i6AMR
-7qpCMCss4hTN/4ZAkvunKNEvgcWX9PUy5m4snNCN/D+y44hVRZo=
-=FwC0
+iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmb1V0gACgkQUcZzBf/C
+5cBoFg/8CSNvVpvksAjqyOOLjVfCZ8JvJv+CGjsRQD7BWPi61T/Ef+A74U1M2Qf+
+F6j9SKbfnQ+g7jHewzRtziCmElNUip74iKee7268L9nSb0gDikwMgbBIoK7V3KX2
+9wa9P/3OdEyhKjRJtkB3E4mRXJ6MnWlDMi7xDEmh9lJPWSTELs4OAaLIL2tGA6JP
+fRSPRmOpqcU5lbHho6wOc+KFjdvfAMqy5k1TsVY7ulibFAolsPuwatAn3Yhods/P
+hKgupNBtGsFW79QIuapatuhxzU6SF1Xdd3WUG4q0C5gQRoNXysNBYkF3zLNaYx24
+XAMiEykfexGEkJrVoXUf9xdFXdGGtFNqkKViWjqtatgJhF4OjaIXXFK0utj8tDzp
+Y5FgcTXAwn8X4K8OIoNoxaZrJThKne7kawvCGvmaRDAsv0zAykijkwDT5kV9yohD
+R51fFWl/EN5/l35OJdl7W80zPRApgkY198mvNK+Q3XQSxbJcTPii9nH8Z3Xrt4Ko
+Q5gd+v1dFEDy2ukmqPLayzszUF7t/NHeo7q4cOlY+A9EQfVhJtc9GuloMe10E5b2
+CT0vDuZw17zpltqUg/wfmYz0Coxx04fVbkQ+3t5yn6LNFXP0xJb4GlcRP0BmdtcI
+vdS2nIG0aDbwwMOUFx5yylTWER0ikLozFfrJKYFJf/oYS9o0mn0=
+=6tJf
-----END PGP SIGNATURE-----
diff --git a/vendor/rector/rector/README.md b/vendor/rector/rector/README.md
index 982915f86..36dc7effb 100644
--- a/vendor/rector/rector/README.md
+++ b/vendor/rector/rector/README.md
@@ -72,7 +72,7 @@ vendor/bin/rector process src
## Documentation
* Find [full documentation here](https://getrector.com/documentation/).
-* [Explore Rector Rules](/docs/rector_rules_overview.md)
+* [Explore Rector Rules](https://getrector.com/find-rule)
diff --git a/vendor/rector/rector/bin/add-phpstan-self-replace.php b/vendor/rector/rector/bin/add-phpstan-self-replace.php
deleted file mode 100644
index 94f922876..000000000
--- a/vendor/rector/rector/bin/add-phpstan-self-replace.php
+++ /dev/null
@@ -1,15 +0,0 @@
-newLineOnFluentCall(\false);
+ // allow real paths in output formatters
+ $rectorConfig->reportingRealPath(\false);
};
diff --git a/vendor/rector/rector/config/set/code-quality.php b/vendor/rector/rector/config/set/code-quality.php
index 17f81a173..c4d71f509 100644
--- a/vendor/rector/rector/config/set/code-quality.php
+++ b/vendor/rector/rector/config/set/code-quality.php
@@ -1,112 +1,15 @@
ruleWithConfiguration(RenameFunctionRector::class, [
- 'split' => 'explode',
- 'join' => 'implode',
- 'sizeof' => 'count',
- # https://www.php.net/manual/en/aliases.php
- 'chop' => 'rtrim',
- 'doubleval' => 'floatval',
- 'gzputs' => 'gzwrites',
- 'fputs' => 'fwrite',
- 'ini_alter' => 'ini_set',
- 'is_double' => 'is_float',
- 'is_integer' => 'is_int',
- 'is_long' => 'is_int',
- 'is_real' => 'is_float',
- 'is_writeable' => 'is_writable',
- 'key_exists' => 'array_key_exists',
- 'pos' => 'current',
- 'strchr' => 'strstr',
- # mb
- 'mbstrcut' => 'mb_strcut',
- 'mbstrlen' => 'mb_strlen',
- 'mbstrpos' => 'mb_strpos',
- 'mbstrrpos' => 'mb_strrpos',
- 'mbsubstr' => 'mb_substr',
- ]);
- $rectorConfig->rules([CombinedAssignRector::class, SimplifyEmptyArrayCheckRector::class, ReplaceMultipleBooleanNotRector::class, ForeachToInArrayRector::class, SimplifyForeachToCoalescingRector::class, SimplifyFuncGetArgsCountRector::class, SimplifyInArrayValuesRector::class, SimplifyStrposLowerRector::class, GetClassToInstanceOfRector::class, SimplifyArraySearchRector::class, SimplifyConditionsRector::class, SimplifyIfNotNullReturnRector::class, SimplifyIfReturnBoolRector::class, SimplifyUselessVariableRector::class, UnnecessaryTernaryExpressionRector::class, RemoveExtraParametersRector::class, SimplifyDeMorganBinaryRector::class, SimplifyTautologyTernaryRector::class, SingleInArrayToCompareRector::class, SimplifyIfElseToTernaryRector::class, JoinStringConcatRector::class, ConsecutiveNullCompareReturnsToNullCoalesceQueueRector::class, ExplicitBoolCompareRector::class, CombineIfRector::class, UseIdenticalOverEqualWithSameTypeRector::class, SimplifyBoolIdenticalTrueRector::class, SimplifyRegexPatternRector::class, BooleanNotIdenticalToNotIdenticalRector::class, CallableThisArrayToAnonymousFunctionRector::class, AndAssignsToSeparateLinesRector::class, CompactToVariablesRector::class, CompleteDynamicPropertiesRector::class, IsAWithStringWithThirdArgumentRector::class, StrlenZeroToIdenticalEmptyStringRector::class, ThrowWithPreviousExceptionRector::class, RemoveSoleValueSprintfRector::class, ShortenElseIfRector::class, ExplicitReturnNullRector::class, ArrayMergeOfNonArraysToSimpleArrayRector::class, ArrayKeyExistsTernaryThenValueToCoalescingRector::class, AbsolutizeRequireAndIncludePathRector::class, ChangeArrayPushToArrayAssignRector::class, ForRepeatedCountToOwnVariableRector::class, ForeachItemsAssignToEmptyArrayToAssignRector::class, InlineIfToExplicitIfRector::class, UnusedForeachValueToArrayKeysRector::class, CommonNotEqualRector::class, SetTypeToCastRector::class, LogicalToBooleanRector::class, VarToPublicPropertyRector::class, IssetOnPropertyObjectToPropertyExistsRector::class, NewStaticToNewSelfRector::class, UnwrapSprintfOneArgumentRector::class, SwitchNegatedTernaryRector::class, SingularSwitchToIfRector::class, SimplifyIfNullableReturnRector::class, FuncGetArgsToVariadicParamRector::class, CallUserFuncToMethodCallRector::class, CallUserFuncWithArrowFunctionToInlineRector::class, CountArrayToEmptyArrayComparisonRector::class, FlipTypeControlToUseExclusiveTypeRector::class, InlineArrayReturnAssignRector::class, InlineIsAInstanceOfRector::class, TernaryFalseExpressionToIfRector::class, InlineConstructorDefaultToPropertyRector::class, TernaryEmptyArrayArrayDimFetchToCoalesceRector::class, OptionalParametersAfterRequiredRector::class, SimplifyEmptyCheckOnEmptyArrayRector::class, SwitchTrueToIfRector::class, CleanupUnneededNullsafeOperatorRector::class, DisallowedEmptyRuleFixerRector::class, ConvertStaticPrivateConstantToSelfRector::class, LocallyCalledStaticMethodToNonStaticRector::class, NumberCompareToMaxFuncCallRector::class, CompleteMissingIfElseBracketRector::class, RemoveUselessIsObjectCheckRector::class, StaticToSelfStaticMethodCallOnFinalClassRector::class]);
+ foreach (CodeQualityLevel::RULES_WITH_CONFIGURATION as $rectorClass => $configuration) {
+ $rectorConfig->ruleWithConfiguration($rectorClass, $configuration);
+ }
+ // the rule order matters, as its used in withCodeQualityLevel() method
+ // place the safest rules first, follow by more complex ones
+ $rectorConfig->rules(CodeQualityLevel::RULES);
};
diff --git a/vendor/rector/rector/config/set/coding-style.php b/vendor/rector/rector/config/set/coding-style.php
index 8a6fc0c96..1713a005e 100644
--- a/vendor/rector/rector/config/set/coding-style.php
+++ b/vendor/rector/rector/config/set/coding-style.php
@@ -1,9 +1,8 @@
ruleWithConfiguration(FuncCallToConstFetchRector::class, ['php_sapi_name' => 'PHP_SAPI', 'pi' => 'M_PI']);
- $rectorConfig->rules([SeparateMultiUseImportsRector::class, PostIncDecToPreIncDecRector::class, NewlineAfterStatementRector::class, RemoveFinalFromConstRector::class, NullableCompareToNullRector::class, ConsistentImplodeRector::class, TernaryConditionVariableAssignmentRector::class, SymplifyQuoteEscapeRector::class, StringClassNameToClassConstantRector::class, CatchExceptionNameMatchingTypeRector::class, UseIncrementAssignRector::class, SplitDoubleAssignRector::class, EncapsedStringsToSprintfRector::class, WrapEncapsedVariableInCurlyBracesRector::class, NewlineBeforeNewAssignSetRector::class, MakeInheritedMethodVisibilitySameAsParentRector::class, CallUserFuncArrayToVariadicRector::class, VersionCompareFuncCallToConstantRector::class, StaticArrowFunctionRector::class, StaticClosureRector::class, CountArrayToEmptyArrayComparisonRector::class, CallUserFuncToMethodCallRector::class, FuncGetArgsToVariadicParamRector::class, StrictArraySearchRector::class, UseClassKeywordForClassNameResolutionRector::class, SplitGroupedPropertiesRector::class, SplitGroupedClassConstantsRector::class, ExplicitPublicClassMethodRector::class, RemoveUselessAliasInUseStatementRector::class]);
+ $rectorConfig->rules([SeparateMultiUseImportsRector::class, NewlineAfterStatementRector::class, RemoveFinalFromConstRector::class, NullableCompareToNullRector::class, ConsistentImplodeRector::class, TernaryConditionVariableAssignmentRector::class, SymplifyQuoteEscapeRector::class, StringClassNameToClassConstantRector::class, CatchExceptionNameMatchingTypeRector::class, SplitDoubleAssignRector::class, EncapsedStringsToSprintfRector::class, WrapEncapsedVariableInCurlyBracesRector::class, NewlineBeforeNewAssignSetRector::class, MakeInheritedMethodVisibilitySameAsParentRector::class, CallUserFuncArrayToVariadicRector::class, VersionCompareFuncCallToConstantRector::class, CountArrayToEmptyArrayComparisonRector::class, CallUserFuncToMethodCallRector::class, FuncGetArgsToVariadicParamRector::class, StrictArraySearchRector::class, UseClassKeywordForClassNameResolutionRector::class, SplitGroupedPropertiesRector::class, SplitGroupedClassConstantsRector::class, ExplicitPublicClassMethodRector::class, RemoveUselessAliasInUseStatementRector::class]);
};
diff --git a/vendor/rector/rector/config/set/datetime-to-carbon.php b/vendor/rector/rector/config/set/datetime-to-carbon.php
new file mode 100644
index 000000000..c0ad7b1d9
--- /dev/null
+++ b/vendor/rector/rector/config/set/datetime-to-carbon.php
@@ -0,0 +1,13 @@
+rules([DateFuncCallToCarbonRector::class, DateTimeInstanceToCarbonRector::class, DateTimeMethodCallToCarbonRector::class, TimeFuncCallToCarbonRector::class]);
+};
diff --git a/vendor/rector/rector/config/set/dead-code.php b/vendor/rector/rector/config/set/dead-code.php
index aed5d83e3..6bfcf025b 100644
--- a/vendor/rector/rector/config/set/dead-code.php
+++ b/vendor/rector/rector/config/set/dead-code.php
@@ -1,7 +1,7 @@
rules([ChangeNestedForeachIfsToEarlyContinueRector::class, ChangeAndIfToEarlyReturnRector::class, ChangeIfElseValueAssignToEarlyReturnRector::class, ChangeNestedIfsToEarlyReturnRector::class, RemoveAlwaysElseRector::class, ChangeOrIfContinueToMultiContinueRector::class, PreparedValueToEarlyReturnRector::class, ReturnBinaryOrToEarlyReturnRector::class, ReturnEarlyIfVariableRector::class]);
+ $rectorConfig->rules([ChangeNestedForeachIfsToEarlyContinueRector::class, ChangeIfElseValueAssignToEarlyReturnRector::class, ChangeNestedIfsToEarlyReturnRector::class, RemoveAlwaysElseRector::class, ChangeOrIfContinueToMultiContinueRector::class, PreparedValueToEarlyReturnRector::class, ReturnBinaryOrToEarlyReturnRector::class, ReturnEarlyIfVariableRector::class]);
};
diff --git a/vendor/rector/rector/config/set/gmagick-to-imagick.php b/vendor/rector/rector/config/set/gmagick-to-imagick.php
index cc31281d1..d89320901 100644
--- a/vendor/rector/rector/config/set/gmagick-to-imagick.php
+++ b/vendor/rector/rector/config/set/gmagick-to-imagick.php
@@ -1,7 +1,7 @@
rules([EmptyOnNullableObjectToInstanceOfRector::class, GetClassToInstanceOfRector::class, InlineIsAInstanceOfRector::class, FlipTypeControlToUseExclusiveTypeRector::class, RemoveDeadInstanceOfRector::class, FlipNegatedTernaryInstanceofRector::class, BinaryOpNullableToInstanceofRector::class, WhileNullableToInstanceofRector::class]);
+ $rectorConfig->rules([EmptyOnNullableObjectToInstanceOfRector::class, InlineIsAInstanceOfRector::class, FlipTypeControlToUseExclusiveTypeRector::class, RemoveDeadInstanceOfRector::class, FlipNegatedTernaryInstanceofRector::class, BinaryOpNullableToInstanceofRector::class, WhileNullableToInstanceofRector::class]);
};
diff --git a/vendor/rector/rector/config/set/level/up-to-php53.php b/vendor/rector/rector/config/set/level/up-to-php53.php
index 8536eb181..1f21f89f3 100644
--- a/vendor/rector/rector/config/set/level/up-to-php53.php
+++ b/vendor/rector/rector/config/set/level/up-to-php53.php
@@ -1,7 +1,7 @@
withRules([ArrayKeyFirstLastRector::class, IsCountableRector::class, GetDebugTypeRector::class, StrStartsWithRector::class, StrEndsWithRector::class, StrContainsRector::class]);
diff --git a/vendor/rector/rector/config/set/php52.php b/vendor/rector/rector/config/set/php52.php
index 66bba32dc..659faf718 100644
--- a/vendor/rector/rector/config/set/php52.php
+++ b/vendor/rector/rector/config/set/php52.php
@@ -1,7 +1,7 @@
rule(VarToPublicPropertyRector::class);
- $rectorConfig->rule(ContinueToBreakInSwitchRector::class);
+ $rectorConfig->rules([VarToPublicPropertyRector::class, ContinueToBreakInSwitchRector::class]);
$rectorConfig->ruleWithConfiguration(RemoveFuncCallArgRector::class, [
// see https://www.php.net/manual/en/function.ldap-first-attribute.php
new RemoveFuncCallArg('ldap_first_attribute', 2),
diff --git a/vendor/rector/rector/config/set/php53.php b/vendor/rector/rector/config/set/php53.php
index 9c147a16d..948240e9d 100644
--- a/vendor/rector/rector/config/set/php53.php
+++ b/vendor/rector/rector/config/set/php53.php
@@ -1,14 +1,12 @@
rule(TernaryToElvisRector::class);
- $rectorConfig->rule(DirNameFileConstantToDirConstantRector::class);
- $rectorConfig->rule(ReplaceHttpServerVarsByServerRector::class);
+ $rectorConfig->rules([TernaryToElvisRector::class, DirNameFileConstantToDirConstantRector::class, ReplaceHttpServerVarsByServerRector::class]);
};
diff --git a/vendor/rector/rector/config/set/php54.php b/vendor/rector/rector/config/set/php54.php
index 77b3f1da5..34472c675 100644
--- a/vendor/rector/rector/config/set/php54.php
+++ b/vendor/rector/rector/config/set/php54.php
@@ -1,7 +1,7 @@
rule(LongArrayToShortArrayRector::class);
+ $rectorConfig->rules([LongArrayToShortArrayRector::class, RemoveReferenceFromCallRector::class, RemoveZeroBreakContinueRector::class]);
$rectorConfig->ruleWithConfiguration(RenameFunctionRector::class, ['mysqli_param_count' => 'mysqli_stmt_param_count']);
- $rectorConfig->rule(RemoveReferenceFromCallRector::class);
- $rectorConfig->rule(RemoveZeroBreakContinueRector::class);
};
diff --git a/vendor/rector/rector/config/set/php55.php b/vendor/rector/rector/config/set/php55.php
index c6fc766a1..b41495709 100644
--- a/vendor/rector/rector/config/set/php55.php
+++ b/vendor/rector/rector/config/set/php55.php
@@ -1,7 +1,7 @@
rule(StringClassNameToClassConstantRector::class);
- $rectorConfig->rule(ClassConstantToSelfClassRector::class);
- $rectorConfig->rule(PregReplaceEModifierRector::class);
- $rectorConfig->rule(GetCalledClassToSelfClassRector::class);
- $rectorConfig->rule(GetCalledClassToStaticClassRector::class);
- $rectorConfig->rule(StaticToSelfOnFinalClassRector::class);
+ $rectorConfig->rules([StringClassNameToClassConstantRector::class, ClassConstantToSelfClassRector::class, PregReplaceEModifierRector::class, GetCalledClassToSelfClassRector::class, GetCalledClassToStaticClassRector::class, StaticToSelfOnFinalClassRector::class]);
};
diff --git a/vendor/rector/rector/config/set/php56.php b/vendor/rector/rector/config/set/php56.php
index 6c5168fd1..98fc69fdc 100644
--- a/vendor/rector/rector/config/set/php56.php
+++ b/vendor/rector/rector/config/set/php56.php
@@ -1,7 +1,7 @@
rules([IsIterableRector::class, MultiExceptionCatchRector::class, AssignArrayToStringRector::class, RemoveExtraParametersRector::class, BinaryOpBetweenNumberAndStringRector::class, ListToArrayDestructRector::class, PublicConstantVisibilityRector::class]);
+ $rectorConfig->rules([IsIterableRector::class, MultiExceptionCatchRector::class, AssignArrayToStringRector::class, RemoveExtraParametersRector::class, BinaryOpBetweenNumberAndStringRector::class, ListToArrayDestructRector::class]);
};
diff --git a/vendor/rector/rector/config/set/php72.php b/vendor/rector/rector/config/set/php72.php
index 6c1f72632..5245bed5c 100644
--- a/vendor/rector/rector/config/set/php72.php
+++ b/vendor/rector/rector/config/set/php72.php
@@ -1,7 +1,7 @@
'is_float',
- #apache_request_headers_function
- # https://wiki.php.net/rfc/deprecations_php_7_4
- 'apache_request_headers' => 'getallheaders',
]);
- $rectorConfig->rules([ArrayKeyExistsOnPropertyRector::class, FilterVarToAddSlashesRector::class, ExportToReflectionFunctionRector::class, MbStrrposEncodingArgumentPositionRector::class, RealToFloatTypeCastRector::class, NullCoalescingOperatorRector::class, ClosureToArrowFunctionRector::class, RestoreDefaultNullToNullableTypePropertyRector::class, CurlyToSquareBracketArrayStringRector::class, MoneyFormatToNumberFormatRector::class, ParenthesizeNestedTernaryRector::class]);
+ $rectorConfig->rules([ArrayKeyExistsOnPropertyRector::class, FilterVarToAddSlashesRector::class, ExportToReflectionFunctionRector::class, MbStrrposEncodingArgumentPositionRector::class, RealToFloatTypeCastRector::class, NullCoalescingOperatorRector::class, ClosureToArrowFunctionRector::class, RestoreDefaultNullToNullableTypePropertyRector::class, CurlyToSquareBracketArrayStringRector::class, MoneyFormatToNumberFormatRector::class, ParenthesizeNestedTernaryRector::class, RestoreIncludePathToIniRestoreRector::class, HebrevcToNl2brHebrevRector::class]);
};
diff --git a/vendor/rector/rector/config/set/php80.php b/vendor/rector/rector/config/set/php80.php
index 2faeb23e1..0a0c7ce58 100644
--- a/vendor/rector/rector/config/set/php80.php
+++ b/vendor/rector/rector/config/set/php80.php
@@ -1,7 +1,7 @@
rules([DeclareStrictTypesRector::class, PostIncDecToPreIncDecRector::class, FinalizeTestCaseClassRector::class]);
+};
diff --git a/vendor/rector/rector/config/set/strict-booleans.php b/vendor/rector/rector/config/set/strict-booleans.php
index 0af8167e3..08e8fe0a1 100644
--- a/vendor/rector/rector/config/set/strict-booleans.php
+++ b/vendor/rector/rector/config/set/strict-booleans.php
@@ -1,7 +1,7 @@
valueResolver = $valueResolver;
}
/**
+ * @template TCall as (MethodCall|StaticCall|ClassMethod|FuncCall|New_)
+ *
* @param \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\FuncCall|\PhpParser\Node\Expr\New_ $node
+ * @return TCall|null
*/
- public function processReplaces($node, ReplaceArgumentDefaultValueInterface $replaceArgumentDefaultValue) : ?Node
+ public function processReplaces($node, ReplaceArgumentDefaultValueInterface $replaceArgumentDefaultValue)
{
if ($node instanceof ClassMethod) {
if (!isset($node->params[$replaceArgumentDefaultValue->getPosition()])) {
@@ -78,10 +80,16 @@ private function processParams(ClassMethod $classMethod, ReplaceArgumentDefaultV
return $classMethod;
}
/**
+ * @template TCall as (MethodCall|StaticCall|FuncCall|New_)
+ *
* @param \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\FuncCall|\PhpParser\Node\Expr\New_ $expr
+ * @return TCall|null
*/
private function processArgs($expr, ReplaceArgumentDefaultValueInterface $replaceArgumentDefaultValue) : ?Expr
{
+ if ($expr->isFirstClassCallable()) {
+ return null;
+ }
$position = $replaceArgumentDefaultValue->getPosition();
$particularArg = $expr->getArgs()[$position] ?? null;
if (!$particularArg instanceof Arg) {
diff --git a/vendor/rector/rector/rules/Arguments/Rector/ClassMethod/ArgumentAdderRector.php b/vendor/rector/rector/rules/Arguments/Rector/ClassMethod/ArgumentAdderRector.php
index 8df194340..ec2b05530 100644
--- a/vendor/rector/rector/rules/Arguments/Rector/ClassMethod/ArgumentAdderRector.php
+++ b/vendor/rector/rector/rules/Arguments/Rector/ClassMethod/ArgumentAdderRector.php
@@ -29,7 +29,7 @@
use Rector\StaticTypeMapper\StaticTypeMapper;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Arguments\Rector\ClassMethod\ArgumentAdderRector\ArgumentAdderRectorTest
*/
@@ -199,7 +199,7 @@ private function fillGapBetweenWithDefaultValue($node, int $position) : void
if (!$param->default instanceof Expr) {
throw new ShouldNotHappenException('Previous position does not have default value');
}
- $node->args[$index] = new Arg($this->nodeFactory->createReprintedExpr($param->default));
+ $node->args[$index] = new Arg($this->nodeFactory->createReprintedNode($param->default));
}
}
/**
diff --git a/vendor/rector/rector/rules/Arguments/Rector/ClassMethod/ReplaceArgumentDefaultValueRector.php b/vendor/rector/rector/rules/Arguments/Rector/ClassMethod/ReplaceArgumentDefaultValueRector.php
index 656e55386..71c902298 100644
--- a/vendor/rector/rector/rules/Arguments/Rector/ClassMethod/ReplaceArgumentDefaultValueRector.php
+++ b/vendor/rector/rector/rules/Arguments/Rector/ClassMethod/ReplaceArgumentDefaultValueRector.php
@@ -15,7 +15,7 @@
use Rector\ValueObject\MethodName;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @api used in rector-symfony
* @see \Rector\Tests\Arguments\Rector\ClassMethod\ReplaceArgumentDefaultValueRector\ReplaceArgumentDefaultValueRectorTest
diff --git a/vendor/rector/rector/rules/Arguments/Rector/FuncCall/FunctionArgumentDefaultValueReplacerRector.php b/vendor/rector/rector/rules/Arguments/Rector/FuncCall/FunctionArgumentDefaultValueReplacerRector.php
index c2b90bafe..7af89e968 100644
--- a/vendor/rector/rector/rules/Arguments/Rector/FuncCall/FunctionArgumentDefaultValueReplacerRector.php
+++ b/vendor/rector/rector/rules/Arguments/Rector/FuncCall/FunctionArgumentDefaultValueReplacerRector.php
@@ -11,11 +11,8 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
- * @changelog https://php.watch/versions/8.1/version_compare-operator-restrictions
- * @changelog https://github.com/rectorphp/rector/issues/6271
- *
* @see \Rector\Tests\Arguments\Rector\FuncCall\FunctionArgumentDefaultValueReplacerRector\FunctionArgumentDefaultValueReplacerRectorTest
*/
final class FunctionArgumentDefaultValueReplacerRector extends AbstractRector implements ConfigurableRectorInterface
diff --git a/vendor/rector/rector/rules/Arguments/Rector/MethodCall/RemoveMethodCallParamRector.php b/vendor/rector/rector/rules/Arguments/Rector/MethodCall/RemoveMethodCallParamRector.php
index 7542018cd..b31599100 100644
--- a/vendor/rector/rector/rules/Arguments/Rector/MethodCall/RemoveMethodCallParamRector.php
+++ b/vendor/rector/rector/rules/Arguments/Rector/MethodCall/RemoveMethodCallParamRector.php
@@ -11,7 +11,7 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Arguments\Rector\MethodCall\RemoveMethodCallParamRector\RemoveMethodCallParamRectorTest
*/
diff --git a/vendor/rector/rector/rules/Carbon/NodeFactory/CarbonCallFactory.php b/vendor/rector/rector/rules/Carbon/NodeFactory/CarbonCallFactory.php
new file mode 100644
index 000000000..9d74b2a33
--- /dev/null
+++ b/vendor/rector/rector/rules/Carbon/NodeFactory/CarbonCallFactory.php
@@ -0,0 +1,142 @@
+\\+|-)(\\s+)?(?\\d+)(\\s+)?(?seconds|second|sec|minutes|minute|min|hours|hour|days|day|weeks|week|months|month|years|year)#';
+ /**
+ * @var string
+ * @see https://regex101.com/r/IhxHTO/1
+ */
+ private const STATIC_DATE_REGEX = '#now|yesterday|today|tomorrow#';
+ /**
+ * @return \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall
+ */
+ public function createFromDateTimeString(FullyQualified $carbonFullyQualified, String_ $string)
+ {
+ $carbonCall = $this->createStaticCall($carbonFullyQualified, $string);
+ $string->value = Strings::replace($string->value, self::STATIC_DATE_REGEX);
+ // Handle add/sub multiple times
+ while ($match = Strings::match($string->value, self::PLUS_MINUS_COUNT_REGEX)) {
+ $methodCall = $this->createModifyMethodCall($carbonCall, new LNumber((int) $match['count']), $match['unit'], $match['operator']);
+ if ($methodCall instanceof MethodCall) {
+ $carbonCall = $methodCall;
+ $string->value = Strings::replace($string->value, self::PLUS_MINUS_COUNT_REGEX, '', 1);
+ }
+ }
+ // If we still have something in the string, we go back to the first method and replace this with a parse
+ if (($rest = Strings::trim($string->value)) !== '') {
+ $currentCall = $carbonCall;
+ $callStack = [];
+ while ($currentCall instanceof MethodCall) {
+ $callStack[] = $currentCall;
+ $currentCall = $currentCall->var;
+ }
+ if (!$currentCall instanceof StaticCall) {
+ return $carbonCall;
+ }
+ // If we fallback to a parse we want to include tomorrow/today/yesterday etc
+ if ($currentCall->name instanceof Identifier && $currentCall->name->name != 'now') {
+ $rest .= ' ' . $currentCall->name->name;
+ }
+ $currentCall->name = new Identifier('parse');
+ $currentCall->args = [new Arg(new String_($rest))];
+ // Rebuild original call from callstack
+ $carbonCall = $this->rebuildCallStack($currentCall, $callStack);
+ }
+ return $carbonCall;
+ }
+ private function createStaticCall(FullyQualified $carbonFullyQualified, String_ $string) : StaticCall
+ {
+ $startDate = Strings::match($string->value, self::STATIC_DATE_REGEX)[0] ?? 'now';
+ return new StaticCall($carbonFullyQualified, new Identifier($startDate));
+ }
+ /**
+ * @param \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall $carbonCall
+ */
+ private function createModifyMethodCall($carbonCall, LNumber $countLNumber, string $unit, string $operator) : ?MethodCall
+ {
+ switch ($unit) {
+ case 'sec':
+ case 'second':
+ case 'seconds':
+ $unit = 'seconds';
+ break;
+ case 'min':
+ case 'minute':
+ case 'minutes':
+ $unit = 'minutes';
+ break;
+ case 'hour':
+ case 'hours':
+ $unit = 'hours';
+ break;
+ case 'day':
+ case 'days':
+ $unit = 'days';
+ break;
+ case 'week':
+ case 'weeks':
+ $unit = 'weeks';
+ break;
+ case 'month':
+ case 'months':
+ $unit = 'months';
+ break;
+ case 'year':
+ case 'years':
+ $unit = 'years';
+ break;
+ default:
+ $unit = null;
+ break;
+ }
+ switch ($operator) {
+ case '+':
+ $operator = 'add';
+ break;
+ case '-':
+ $operator = 'sub';
+ break;
+ default:
+ $operator = null;
+ break;
+ }
+ if ($unit === null || $operator === null) {
+ return null;
+ }
+ $methodName = $operator . \ucfirst($unit);
+ return new MethodCall($carbonCall, new Identifier($methodName), [new Arg($countLNumber)]);
+ }
+ /**
+ * @param MethodCall[] $callStack
+ * @return \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall
+ */
+ private function rebuildCallStack(StaticCall $staticCall, array $callStack)
+ {
+ if ($callStack === []) {
+ return $staticCall;
+ }
+ $currentCall = $staticCall;
+ $callStack = \array_reverse($callStack);
+ foreach ($callStack as $call) {
+ $call->var = $currentCall;
+ $currentCall = $call;
+ }
+ return $currentCall;
+ }
+}
diff --git a/vendor/rector/rector/rules/Carbon/Rector/FuncCall/DateFuncCallToCarbonRector.php b/vendor/rector/rector/rules/Carbon/Rector/FuncCall/DateFuncCallToCarbonRector.php
new file mode 100644
index 000000000..73eb979cb
--- /dev/null
+++ b/vendor/rector/rector/rules/Carbon/Rector/FuncCall/DateFuncCallToCarbonRector.php
@@ -0,0 +1,72 @@
+format(*)', [new CodeSample(<<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function run()
+ {
+ $date = date('Y-m-d');
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function run()
+ {
+ $date = \Carbon\Carbon::now()->format('Y-m-d');
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [FuncCall::class];
+ }
+ /**
+ * @param FuncCall $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ if (!$this->isName($node->name, 'date')) {
+ return null;
+ }
+ if ($node->isFirstClassCallable()) {
+ return null;
+ }
+ if (\count($node->getArgs()) !== 1) {
+ return null;
+ }
+ $firstArg = $node->getArgs()[0];
+ if (!$firstArg->value instanceof String_) {
+ return null;
+ }
+ // create now and format()
+ $nowStaticCall = new StaticCall(new FullyQualified('Carbon\\Carbon'), 'now');
+ return new MethodCall($nowStaticCall, 'format', [new Arg($firstArg->value)]);
+ }
+}
diff --git a/vendor/rector/rector/rules/Carbon/Rector/FuncCall/TimeFuncCallToCarbonRector.php b/vendor/rector/rector/rules/Carbon/Rector/FuncCall/TimeFuncCallToCarbonRector.php
new file mode 100644
index 000000000..894588727
--- /dev/null
+++ b/vendor/rector/rector/rules/Carbon/Rector/FuncCall/TimeFuncCallToCarbonRector.php
@@ -0,0 +1,69 @@
+timestamp', [new CodeSample(<<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function run()
+ {
+ $time = time();
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function run()
+ {
+ $time = \Carbon\Carbon::now()->timestamp;
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [FuncCall::class];
+ }
+ /**
+ * @param FuncCall $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ if (!$this->isName($node->name, 'time')) {
+ return null;
+ }
+ $firstClassCallable = $node->isFirstClassCallable();
+ if (!$firstClassCallable && \count($node->getArgs()) !== 0) {
+ return null;
+ }
+ // create now and format()
+ $nowStaticCall = new StaticCall(new FullyQualified('Carbon\\Carbon'), 'now');
+ $propertyFetch = new PropertyFetch($nowStaticCall, 'timestamp');
+ if ($firstClassCallable) {
+ return new ArrowFunction(['static' => \true, 'expr' => $propertyFetch]);
+ }
+ return $propertyFetch;
+ }
+}
diff --git a/vendor/rector/rector/rules/Carbon/Rector/MethodCall/DateTimeMethodCallToCarbonRector.php b/vendor/rector/rector/rules/Carbon/Rector/MethodCall/DateTimeMethodCallToCarbonRector.php
new file mode 100644
index 000000000..863031a72
--- /dev/null
+++ b/vendor/rector/rector/rules/Carbon/Rector/MethodCall/DateTimeMethodCallToCarbonRector.php
@@ -0,0 +1,94 @@
+carbonCallFactory = $carbonCallFactory;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Convert new DateTime() with a method call to Carbon::*()', [new CodeSample(<<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function run()
+ {
+ $date = (new \DateTime('today +20 day'))->format('Y-m-d');
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function run()
+ {
+ $date = \Carbon\Carbon::today()->addDays(20)->format('Y-m-d')
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [MethodCall::class];
+ }
+ /**
+ * @param MethodCall $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ if (!$node->var instanceof New_) {
+ return null;
+ }
+ $new = $node->var;
+ if (!$new->class instanceof Name) {
+ return null;
+ }
+ if (!$this->isName($new->class, 'DateTime') && !$this->isName($new->class, 'DateTimeImmutable')) {
+ return null;
+ }
+ if ($new->isFirstClassCallable()) {
+ return null;
+ }
+ if (\count($new->getArgs()) !== 1) {
+ // @todo handle in separate static call
+ return null;
+ }
+ $firstArg = $new->getArgs()[0];
+ if (!$firstArg->value instanceof String_) {
+ return null;
+ }
+ if ($this->isName($new->class, 'DateTime')) {
+ $carbonFullyQualified = new FullyQualified('Carbon\\Carbon');
+ } else {
+ $carbonFullyQualified = new FullyQualified('Carbon\\CarbonImmutable');
+ }
+ $carbonCall = $this->carbonCallFactory->createFromDateTimeString($carbonFullyQualified, $firstArg->value);
+ $node->var = $carbonCall;
+ return $node;
+ }
+}
diff --git a/vendor/rector/rector/rules/Carbon/Rector/New_/DateTimeInstanceToCarbonRector.php b/vendor/rector/rector/rules/Carbon/Rector/New_/DateTimeInstanceToCarbonRector.php
new file mode 100644
index 000000000..91374248c
--- /dev/null
+++ b/vendor/rector/rector/rules/Carbon/Rector/New_/DateTimeInstanceToCarbonRector.php
@@ -0,0 +1,82 @@
+carbonCallFactory = $carbonCallFactory;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Convert new DateTime() to Carbon::*()', [new CodeSample(<<<'CODE_SAMPLE'
+$date = new \DateTime('today');
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+$date = \Carbon\Carbon::today();
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [New_::class];
+ }
+ /**
+ * @param New_ $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ if ($node->isFirstClassCallable()) {
+ return null;
+ }
+ if ($this->isName($node->class, 'DateTime')) {
+ return $this->refactorWithClass($node, 'Carbon\\Carbon');
+ }
+ if ($this->isName($node->class, 'DateTimeImmutable')) {
+ return $this->refactorWithClass($node, 'Carbon\\CarbonImmutable');
+ }
+ return null;
+ }
+ /**
+ * @return \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall|null
+ */
+ private function refactorWithClass(New_ $new, string $className)
+ {
+ // no arg? ::now()
+ $carbonFullyQualified = new FullyQualified($className);
+ if ($new->args === []) {
+ return new StaticCall($carbonFullyQualified, new Identifier('now'));
+ }
+ if (\count($new->getArgs()) === 1) {
+ $firstArg = $new->getArgs()[0];
+ if ($firstArg->value instanceof String_) {
+ return $this->carbonCallFactory->createFromDateTimeString($carbonFullyQualified, $firstArg->value);
+ }
+ }
+ return null;
+ }
+}
diff --git a/vendor/rector/rector/rules/CodeQuality/NodeAnalyzer/ClassLikeAnalyzer.php b/vendor/rector/rector/rules/CodeQuality/NodeAnalyzer/ClassLikeAnalyzer.php
index db7ae7580..268f644dc 100644
--- a/vendor/rector/rector/rules/CodeQuality/NodeAnalyzer/ClassLikeAnalyzer.php
+++ b/vendor/rector/rector/rules/CodeQuality/NodeAnalyzer/ClassLikeAnalyzer.php
@@ -4,18 +4,8 @@
namespace Rector\CodeQuality\NodeAnalyzer;
use PhpParser\Node\Stmt\Class_;
-use Rector\NodeNameResolver\NodeNameResolver;
final class ClassLikeAnalyzer
{
- /**
- * @readonly
- * @var \Rector\NodeNameResolver\NodeNameResolver
- */
- private $nodeNameResolver;
- public function __construct(NodeNameResolver $nodeNameResolver)
- {
- $this->nodeNameResolver = $nodeNameResolver;
- }
/**
* @return string[]
*/
@@ -23,7 +13,9 @@ public function resolvePropertyNames(Class_ $class) : array
{
$propertyNames = [];
foreach ($class->getProperties() as $property) {
- $propertyNames[] = $this->nodeNameResolver->getName($property);
+ foreach ($property->props as $prop) {
+ $propertyNames[] = $prop->name->toString();
+ }
}
return $propertyNames;
}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Array_/CallableThisArrayToAnonymousFunctionRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Array_/CallableThisArrayToAnonymousFunctionRector.php
deleted file mode 100644
index eb2fd342f..000000000
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Array_/CallableThisArrayToAnonymousFunctionRector.php
+++ /dev/null
@@ -1,120 +0,0 @@
-anonymousFunctionFactory = $anonymousFunctionFactory;
- $this->reflectionResolver = $reflectionResolver;
- $this->arrayCallableMethodMatcher = $arrayCallableMethodMatcher;
- }
- public function getRuleDefinition() : RuleDefinition
- {
- return new RuleDefinition('Convert [$this, "method"] to proper anonymous function', [new CodeSample(<<<'CODE_SAMPLE'
-class SomeClass
-{
- public function run()
- {
- $values = [1, 5, 3];
- usort($values, [$this, 'compareSize']);
-
- return $values;
- }
-
- private function compareSize($first, $second)
- {
- return $first <=> $second;
- }
-}
-CODE_SAMPLE
-, <<<'CODE_SAMPLE'
-class SomeClass
-{
- public function run()
- {
- $values = [1, 5, 3];
- usort($values, function ($first, $second) {
- return $this->compareSize($first, $second);
- });
-
- return $values;
- }
-
- private function compareSize($first, $second)
- {
- return $first <=> $second;
- }
-}
-CODE_SAMPLE
-)]);
- }
- /**
- * @return array>
- */
- public function getNodeTypes() : array
- {
- return [Array_::class];
- }
- /**
- * @param Array_ $node
- */
- public function refactorWithScope(Node $node, Scope $scope) : ?Node
- {
- if ($this->shouldSkipTwigExtension($scope)) {
- return null;
- }
- $arrayCallable = $this->arrayCallableMethodMatcher->match($node, $scope);
- if (!$arrayCallable instanceof ArrayCallable) {
- return null;
- }
- $phpMethodReflection = $this->reflectionResolver->resolveMethodReflection($arrayCallable->getClass(), $arrayCallable->getMethod(), $scope);
- if (!$phpMethodReflection instanceof PhpMethodReflection) {
- return null;
- }
- return $this->anonymousFunctionFactory->createFromPhpMethodReflection($phpMethodReflection, $arrayCallable->getCallerExpr());
- }
- private function shouldSkipTwigExtension(Scope $scope) : bool
- {
- if (!$scope->isInClass()) {
- return \false;
- }
- $classReflection = $scope->getClassReflection();
- return $classReflection->isSubclassOf('Twig\\Extension\\ExtensionInterface');
- }
-}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/BooleanAnd/SimplifyEmptyArrayCheckRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/BooleanAnd/SimplifyEmptyArrayCheckRector.php
index be60803d8..21c232f32 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/BooleanAnd/SimplifyEmptyArrayCheckRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/BooleanAnd/SimplifyEmptyArrayCheckRector.php
@@ -15,8 +15,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/EZ2P4
- * @changelog https://3v4l.org/egtb5
* @see \Rector\Tests\CodeQuality\Rector\BooleanAnd\SimplifyEmptyArrayCheckRector\SimplifyEmptyArrayCheckRectorTest
*/
final class SimplifyEmptyArrayCheckRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/BooleanNot/SimplifyDeMorganBinaryRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/BooleanNot/SimplifyDeMorganBinaryRector.php
index 0f3186d2f..831449d03 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/BooleanNot/SimplifyDeMorganBinaryRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/BooleanNot/SimplifyDeMorganBinaryRector.php
@@ -12,7 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/questions/20043664/de-morgans-law
* @see \Rector\Tests\CodeQuality\Rector\BooleanNot\SimplifyDeMorganBinaryRector\SimplifyDeMorganBinaryRectorTest
*/
final class SimplifyDeMorganBinaryRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Catch_/ThrowWithPreviousExceptionRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Catch_/ThrowWithPreviousExceptionRector.php
index f19e1a80b..3c9c586ce 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Catch_/ThrowWithPreviousExceptionRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Catch_/ThrowWithPreviousExceptionRector.php
@@ -23,7 +23,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://github.com/thecodingmachine/phpstan-strict-rules/blob/e3d746a61d38993ca2bc2e2fcda7012150de120c/src/Rules/Exceptions/ThrowMustBundlePreviousExceptionRule.php#L83
* @see \Rector\Tests\CodeQuality\Rector\Catch_\ThrowWithPreviousExceptionRector\ThrowWithPreviousExceptionRectorTest
*/
final class ThrowWithPreviousExceptionRector extends AbstractRector
@@ -125,17 +124,20 @@ private function refactorThrow(Throw_ $throw, Variable $catchedThrowableVariable
$getMessageMethodCall = new MethodCall($catchedThrowableVariable, 'getMessage');
$new->args[0] = new Arg($getMessageMethodCall);
}
+ /** @var Arg $messageArgument */
+ $messageArgument = $new->getArgs()[0];
+ $shouldUseNamedArguments = $messageArgument->name !== null;
if (!isset($new->getArgs()[1])) {
// get previous code
- $new->args[1] = new Arg(new MethodCall($catchedThrowableVariable, 'getCode'));
+ $new->args[1] = new Arg(new MethodCall($catchedThrowableVariable, 'getCode'), \false, \false, [], $shouldUseNamedArguments ? new Identifier('code') : null);
}
/** @var Arg $arg1 */
$arg1 = $new->args[1];
if ($arg1->name instanceof Identifier && $arg1->name->toString() === 'previous') {
- $new->args[1] = new Arg(new MethodCall($catchedThrowableVariable, 'getCode'));
+ $new->args[1] = new Arg(new MethodCall($catchedThrowableVariable, 'getCode'), \false, \false, [], $shouldUseNamedArguments ? new Identifier('code') : null);
$new->args[$exceptionArgumentPosition] = $arg1;
} else {
- $new->args[$exceptionArgumentPosition] = new Arg($catchedThrowableVariable);
+ $new->args[$exceptionArgumentPosition] = new Arg($catchedThrowableVariable, \false, \false, [], $shouldUseNamedArguments ? new Identifier('previous') : null);
}
// null the node, to fix broken format preserving printers, see https://github.com/rectorphp/rector/issues/5576
$new->setAttribute(AttributeKey::ORIGINAL_NODE, null);
@@ -158,7 +160,7 @@ private function resolveExceptionArgumentPosition(Name $exceptionName) : ?int
return self::DEFAULT_EXCEPTION_ARGUMENT_POSITION;
}
$extendedMethodReflection = $classReflection->getConstructor();
- $parametersAcceptorWithPhpDocs = ParametersAcceptorSelector::selectSingle($extendedMethodReflection->getVariants());
+ $parametersAcceptorWithPhpDocs = ParametersAcceptorSelector::combineAcceptors($extendedMethodReflection->getVariants());
foreach ($parametersAcceptorWithPhpDocs->getParameters() as $position => $parameterReflectionWithPhpDoc) {
$parameterType = $parameterReflectionWithPhpDoc->getType();
if (!$parameterType instanceof TypeWithClassName) {
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/ClassConstFetch/ConvertStaticPrivateConstantToSelfRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/ClassConstFetch/ConvertStaticPrivateConstantToSelfRector.php
index 117296ad5..984158265 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/ClassConstFetch/ConvertStaticPrivateConstantToSelfRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/ClassConstFetch/ConvertStaticPrivateConstantToSelfRector.php
@@ -66,7 +66,10 @@ public function refactor(Node $node) : ?Class_
if (!$node instanceof ClassConstFetch) {
return null;
}
- if ($this->shouldBeSkipped($class, $node)) {
+ if (!$this->isUsingStatic($node)) {
+ return null;
+ }
+ if (!$class->isFinal() && !$this->isPrivateConstant($node, $class)) {
return null;
}
$hasChanged = \true;
@@ -96,13 +99,6 @@ private function isPrivateConstant(ClassConstFetch $classConstFetch, Class_ $cla
}
return \false;
}
- private function shouldBeSkipped(Class_ $class, ClassConstFetch $classConstFetch) : bool
- {
- if (!$this->isUsingStatic($classConstFetch)) {
- return \true;
- }
- return !$this->isPrivateConstant($classConstFetch, $class);
- }
private function getConstantName(ClassConstFetch $classConstFetch) : ?string
{
$constantNameIdentifier = $classConstFetch->name;
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/ClassMethod/LocallyCalledStaticMethodToNonStaticRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/ClassMethod/LocallyCalledStaticMethodToNonStaticRector.php
index 98cec8fd3..00a1045ce 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/ClassMethod/LocallyCalledStaticMethodToNonStaticRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/ClassMethod/LocallyCalledStaticMethodToNonStaticRector.php
@@ -4,6 +4,8 @@
namespace Rector\CodeQuality\Rector\ClassMethod;
use PhpParser\Node;
+use PhpParser\Node\Expr\ArrowFunction;
+use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\Variable;
@@ -117,11 +119,38 @@ private function refactorClassMethod(Class_ $class, ClassMethod $classMethod) :
}
// replace all the calls
$classMethodName = $this->getName($classMethod);
- $this->traverseNodesWithCallable($class, function (Node $node) use($classMethodName) : ?MethodCall {
+ $className = $this->getName($class) ?? '';
+ $shouldSkip = \false;
+ $this->traverseNodesWithCallable($class->getMethods(), function (Node $node) use(&$shouldSkip, $classMethodName, $className) : ?int {
+ if (($node instanceof Closure || $node instanceof ArrowFunction) && $node->static) {
+ $this->traverseNodesWithCallable($node->getStmts(), function (Node $subNode) use(&$shouldSkip, $classMethodName, $className) : ?int {
+ if (!$subNode instanceof StaticCall) {
+ return null;
+ }
+ if (!$this->isNames($subNode->class, ['self', 'static', $className])) {
+ return null;
+ }
+ if (!$this->isName($subNode->name, $classMethodName)) {
+ return null;
+ }
+ $shouldSkip = \true;
+ return NodeTraverser::STOP_TRAVERSAL;
+ });
+ if ($shouldSkip) {
+ return NodeTraverser::STOP_TRAVERSAL;
+ }
+ return null;
+ }
+ return null;
+ });
+ if ($shouldSkip) {
+ return null;
+ }
+ $this->traverseNodesWithCallable($class->getMethods(), function (Node $node) use($classMethodName, $className) : ?MethodCall {
if (!$node instanceof StaticCall) {
return null;
}
- if (!$this->isNames($node->class, ['self', 'static'])) {
+ if (!$this->isNames($node->class, ['self', 'static', $className])) {
return null;
}
if (!$this->isName($node->name, $classMethodName)) {
@@ -139,6 +168,7 @@ private function refactorClassMethod(Class_ $class, ClassMethod $classMethod) :
*/
private function isClassMethodCalledInAnotherStaticClassMethod(Class_ $class, ClassMethod $classMethod) : bool
{
+ $currentClassNamespacedName = (string) $this->getName($class);
$currentClassMethodName = $this->getName($classMethod);
$isInsideStaticClassMethod = \false;
// check if called stati call somewhere in class, but only in static methods
@@ -147,11 +177,11 @@ private function isClassMethodCalledInAnotherStaticClassMethod(Class_ $class, Cl
if (!$checkedClassMethod->isStatic()) {
continue;
}
- $this->traverseNodesWithCallable($checkedClassMethod, function (Node $node) use($currentClassMethodName, &$isInsideStaticClassMethod) : ?int {
+ $this->traverseNodesWithCallable($checkedClassMethod, function (Node $node) use($currentClassNamespacedName, $currentClassMethodName, &$isInsideStaticClassMethod) : ?int {
if (!$node instanceof StaticCall) {
return null;
}
- if (!$this->isNames($node->class, ['self', 'static'])) {
+ if (!$this->isNames($node->class, ['self', 'static', $currentClassNamespacedName])) {
return null;
}
if (!$this->isName($node->name, $currentClassMethodName)) {
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/ClassMethod/OptionalParametersAfterRequiredRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/ClassMethod/OptionalParametersAfterRequiredRector.php
index 1d0739513..5230ed5ef 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/ClassMethod/OptionalParametersAfterRequiredRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/ClassMethod/OptionalParametersAfterRequiredRector.php
@@ -23,8 +23,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://php.watch/versions/8.0#deprecate-required-param-after-optional
- *
* @see \Rector\Tests\CodeQuality\Rector\ClassMethod\OptionalParametersAfterRequiredRector\OptionalParametersAfterRequiredRectorTest
*/
final class OptionalParametersAfterRequiredRector extends AbstractScopeAwareRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php
index f4a5abbb8..a08968657 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php
@@ -21,10 +21,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/GL6II
- * @changelog https://3v4l.org/eTrhZ
- * @changelog https://3v4l.org/C554W
- *
* @see \Rector\Tests\CodeQuality\Rector\Class_\CompleteDynamicPropertiesRector\CompleteDynamicPropertiesRectorTest
*/
final class CompleteDynamicPropertiesRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Class_/StaticToSelfStaticMethodCallOnFinalClassRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Class_/StaticToSelfStaticMethodCallOnFinalClassRector.php
index 63be2ed32..737937341 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Class_/StaticToSelfStaticMethodCallOnFinalClassRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Class_/StaticToSelfStaticMethodCallOnFinalClassRector.php
@@ -14,7 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/JK1g2#v5.0.0
* @see \Rector\Tests\CodeQuality\Rector\Class_\StaticToSelfStaticMethodCallOnFinalClassRector\StaticToSelfStaticMethodCallOnFinalClassRectorTest
*/
final class StaticToSelfStaticMethodCallOnFinalClassRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Concat/JoinStringConcatRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Concat/JoinStringConcatRector.php
index a4c8a236a..f415e0bc5 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Concat/JoinStringConcatRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Concat/JoinStringConcatRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodeQuality\Rector\Concat;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\BinaryOp\Concat;
use PhpParser\Node\Scalar\String_;
@@ -72,7 +72,7 @@ private function joinConcatIfStrings(String_ $leftString, String_ $rightString)
{
$leftValue = $leftString->value;
$rightValue = $rightString->value;
- if ($leftValue === "\n" || $rightValue === "\n") {
+ if (\strpos($leftValue, "\n") !== \false || \strpos($rightValue, "\n") !== \false) {
return null;
}
$joinedStringValue = $leftValue . $rightValue;
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Empty_/SimplifyEmptyCheckOnEmptyArrayRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Empty_/SimplifyEmptyCheckOnEmptyArrayRector.php
index 9bcf789d0..21bfebb46 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Empty_/SimplifyEmptyCheckOnEmptyArrayRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Empty_/SimplifyEmptyCheckOnEmptyArrayRector.php
@@ -28,7 +28,7 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @see \Rector\Tests\CodeQuality\Rector\Empty_\SimplifyEmptyCheckOnEmptyArrayRectorTest\SimplifyEmptyCheckOnEmptyArrayRectorTest
+ * @see \Rector\Tests\CodeQuality\Rector\Empty_\SimplifyEmptyCheckOnEmptyArrayRector\SimplifyEmptyCheckOnEmptyArrayRectorTest
*/
final class SimplifyEmptyCheckOnEmptyArrayRector extends AbstractScopeAwareRector
{
@@ -125,7 +125,7 @@ private function isAllowedExpr(Expr $expr, Scope $scope) : bool
if (!$expr->name instanceof Identifier) {
return \false;
}
- $classReflection = $this->reflectionResolver->resolveClassReflection($expr);
+ $classReflection = $this->reflectionResolver->resolveClassReflectionSourceObject($expr);
if (!$classReflection instanceof ClassReflection) {
return \false;
}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Expression/InlineIfToExplicitIfRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Expression/InlineIfToExplicitIfRector.php
index 79be13895..ce0f33ddc 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Expression/InlineIfToExplicitIfRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Expression/InlineIfToExplicitIfRector.php
@@ -16,8 +16,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/dmHCC
- *
* @see \Rector\Tests\CodeQuality\Rector\Expression\InlineIfToExplicitIfRector\InlineIfToExplicitIfRectorTest
*/
final class InlineIfToExplicitIfRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Expression/TernaryFalseExpressionToIfRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Expression/TernaryFalseExpressionToIfRector.php
index 8fce3074e..f5e838c34 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Expression/TernaryFalseExpressionToIfRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Expression/TernaryFalseExpressionToIfRector.php
@@ -6,10 +6,11 @@
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Ternary;
+use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\If_;
use PHPStan\Analyser\Scope;
-use Rector\DeadCode\SideEffect\SideEffectNodeDetector;
+use Rector\NodeAnalyzer\ExprAnalyzer;
use Rector\Rector\AbstractScopeAwareRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@@ -20,12 +21,12 @@ final class TernaryFalseExpressionToIfRector extends AbstractScopeAwareRector
{
/**
* @readonly
- * @var \Rector\DeadCode\SideEffect\SideEffectNodeDetector
+ * @var \Rector\NodeAnalyzer\ExprAnalyzer
*/
- private $sideEffectNodeDetector;
- public function __construct(SideEffectNodeDetector $sideEffectNodeDetector)
+ private $exprAnalyzer;
+ public function __construct(ExprAnalyzer $exprAnalyzer)
{
- $this->sideEffectNodeDetector = $sideEffectNodeDetector;
+ $this->exprAnalyzer = $exprAnalyzer;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -70,7 +71,7 @@ public function refactorWithScope(Node $node, Scope $scope) : ?Node
if (!$ternary->if instanceof Expr) {
return null;
}
- if ($this->sideEffectNodeDetector->detect($ternary->else, $scope) || $this->sideEffectNodeDetector->detectCallExpr($ternary->else, $scope)) {
+ if (!$ternary->else instanceof Variable && $this->exprAnalyzer->isDynamicExpr($ternary->else)) {
return null;
}
return new If_($ternary->cond, ['stmts' => [new Expression($ternary->if)]]);
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php
index a48121bfb..edc6cf952 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php
@@ -132,7 +132,7 @@ private function shouldSkip(Foreach_ $foreach, array $emptyArrayVariables) : boo
if (!$assignVariableExpr instanceof Expr) {
return \true;
}
- $foreachedExprType = $this->getType($foreach->expr);
+ $foreachedExprType = $this->nodeTypeResolver->getNativeType($foreach->expr);
// only arrays, not traversable/iterable
if (!$foreachedExprType->isArray()->yes()) {
return \true;
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/ForeachToInArrayRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/ForeachToInArrayRector.php
index 05d2213c7..4cf9b2b8c 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/ForeachToInArrayRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/ForeachToInArrayRector.php
@@ -13,7 +13,7 @@
use PhpParser\Node\Stmt\Foreach_;
use PhpParser\Node\Stmt\If_;
use PhpParser\Node\Stmt\Return_;
-use PHPStan\Type\ObjectType;
+use PhpParser\NodeFinder;
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
use Rector\NodeManipulator\BinaryOpManipulator;
use Rector\Php71\ValueObject\TwoNodeMatch;
@@ -36,10 +36,16 @@ final class ForeachToInArrayRector extends AbstractRector
* @var \Rector\PhpParser\Node\Value\ValueResolver
*/
private $valueResolver;
- public function __construct(BinaryOpManipulator $binaryOpManipulator, ValueResolver $valueResolver)
+ /**
+ * @readonly
+ * @var \PhpParser\NodeFinder
+ */
+ private $nodeFinder;
+ public function __construct(BinaryOpManipulator $binaryOpManipulator, ValueResolver $valueResolver, NodeFinder $nodeFinder)
{
$this->binaryOpManipulator = $binaryOpManipulator;
$this->valueResolver = $valueResolver;
+ $this->nodeFinder = $nodeFinder;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -96,6 +102,12 @@ public function refactor(Node $node) : ?Node
if (!$twoNodeMatch instanceof TwoNodeMatch) {
return null;
}
+ $variableNodes = $this->nodeFinder->findInstanceOf($twoNodeMatch->getSecondExpr(), Variable::class);
+ foreach ($variableNodes as $variableNode) {
+ if ($this->nodeComparator->areNodesEqual($variableNode, $foreach->valueVar)) {
+ return null;
+ }
+ }
$comparedExpr = $twoNodeMatch->getSecondExpr();
if (!$this->isIfBodyABoolReturnNode($firstNodeInsideForeach)) {
return null;
@@ -138,8 +150,7 @@ private function shouldSkipForeach(Foreach_ $foreach) : bool
if (!$foreach->stmts[0] instanceof If_) {
return \true;
}
- $foreachValueStaticType = $this->getType($foreach->expr);
- return $foreachValueStaticType instanceof ObjectType;
+ return !$this->nodeTypeResolver->getNativeType($foreach->expr)->isArray()->yes();
}
private function shouldSkipIf(If_ $if) : bool
{
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php
index 09a41657e..55d62e452 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php
@@ -22,8 +22,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/bfsdY
- *
* @see \Rector\Tests\CodeQuality\Rector\Foreach_\SimplifyForeachToCoalescingRector\SimplifyForeachToCoalescingRectorTest
*/
final class SimplifyForeachToCoalescingRector extends AbstractRector implements MinPhpVersionInterface
@@ -133,6 +131,10 @@ private function matchForeachReturnOrAssign(Foreach_ $foreach)
if ($if->else instanceof Else_ || $if->elseifs !== []) {
return null;
}
+ $foreachExprType = $this->nodeTypeResolver->getNativeType($foreach->expr);
+ if (!$foreachExprType->isArray()->yes()) {
+ return null;
+ }
$innerStmt = $if->stmts[0];
if ($innerStmt instanceof Return_) {
return $innerStmt;
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/UnusedForeachValueToArrayKeysRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/UnusedForeachValueToArrayKeysRector.php
index 7842a1eb7..b09ee4db5 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/UnusedForeachValueToArrayKeysRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Foreach_/UnusedForeachValueToArrayKeysRector.php
@@ -9,8 +9,9 @@
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Foreach_;
-use PHPStan\Type\ObjectType;
+use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
use Rector\DeadCode\NodeAnalyzer\ExprUsedInNodeAnalyzer;
+use Rector\NodeManipulator\StmtsManipulator;
use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
@@ -30,10 +31,16 @@ final class UnusedForeachValueToArrayKeysRector extends AbstractRector
* @var \Rector\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
- public function __construct(ExprUsedInNodeAnalyzer $exprUsedInNodeAnalyzer, BetterNodeFinder $betterNodeFinder)
+ /**
+ * @readonly
+ * @var \Rector\NodeManipulator\StmtsManipulator
+ */
+ private $stmtsManipulator;
+ public function __construct(ExprUsedInNodeAnalyzer $exprUsedInNodeAnalyzer, BetterNodeFinder $betterNodeFinder, StmtsManipulator $stmtsManipulator)
{
$this->exprUsedInNodeAnalyzer = $exprUsedInNodeAnalyzer;
$this->betterNodeFinder = $betterNodeFinder;
+ $this->stmtsManipulator = $stmtsManipulator;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -68,37 +75,57 @@ public function run()
*/
public function getNodeTypes() : array
{
- return [Foreach_::class];
+ return [StmtsAwareInterface::class];
}
/**
- * @param Foreach_ $node
+ * @param StmtsAwareInterface $node
*/
public function refactor(Node $node) : ?Node
{
- if (!$node->keyVar instanceof Expr) {
+ $stmts = $node->stmts;
+ if ($stmts === null) {
return null;
}
- // special case of nested array items
- if ($node->valueVar instanceof Array_) {
- $valueArray = $this->refactorArrayForeachValue($node->valueVar, $node);
- if ($valueArray instanceof Array_) {
- $node->valueVar = $valueArray;
+ $hasChanged = \false;
+ foreach ($stmts as $key => $stmt) {
+ if (!$stmt instanceof Foreach_) {
+ continue;
}
- // not sure what does this mean :)
- if ($node->valueVar->items !== []) {
- return null;
+ if (!$stmt->keyVar instanceof Expr) {
+ continue;
}
- } elseif ($node->valueVar instanceof Variable) {
- if ($this->isVariableUsedInForeach($node->valueVar, $node)) {
- return null;
+ if (!$this->nodeTypeResolver->getNativeType($stmt->expr)->isArray()->yes()) {
+ continue;
}
- } else {
- return null;
+ // special case of nested array items
+ if ($stmt->valueVar instanceof Array_) {
+ $valueArray = $this->refactorArrayForeachValue($stmt->valueVar, $stmt);
+ if ($valueArray instanceof Array_) {
+ $stmt->valueVar = $valueArray;
+ }
+ // not sure what does this mean :)
+ if ($stmt->valueVar->items !== []) {
+ continue;
+ }
+ $hasChanged = \true;
+ $this->removeForeachValueAndUseArrayKeys($stmt, $stmt->keyVar);
+ continue;
+ }
+ if (!$stmt->valueVar instanceof Variable) {
+ continue;
+ }
+ if ($this->isVariableUsedInForeach($stmt->valueVar, $stmt)) {
+ continue;
+ }
+ if ($this->stmtsManipulator->isVariableUsedInNextStmt($stmts, $key + 1, (string) $this->getName($stmt->valueVar))) {
+ continue;
+ }
+ $hasChanged = \true;
+ $this->removeForeachValueAndUseArrayKeys($stmt, $stmt->keyVar);
}
- if (!$this->isArrayType($node->expr)) {
+ if (!$hasChanged) {
return null;
}
- $this->removeForeachValueAndUseArrayKeys($node, $node->keyVar);
return $node;
}
/**
@@ -158,12 +185,4 @@ private function removeForeachValueAndUseArrayKeys(Foreach_ $foreach, Expr $keyV
$foreach->keyVar = null;
$foreach->expr = $this->nodeFactory->createFuncCall('array_keys', [$foreach->expr]);
}
- private function isArrayType(Expr $expr) : bool
- {
- $exprType = $this->getType($expr);
- if ($exprType instanceof ObjectType) {
- return \false;
- }
- return $exprType->isArray()->yes();
- }
}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/ArrayMergeOfNonArraysToSimpleArrayRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/ArrayMergeOfNonArraysToSimpleArrayRector.php
index d34120d57..683b86a56 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/ArrayMergeOfNonArraysToSimpleArrayRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/ArrayMergeOfNonArraysToSimpleArrayRector.php
@@ -12,10 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/aLf96
- * @changelog https://3v4l.org/2r26K
- * @changelog https://3v4l.org/anks3
- *
* @see \Rector\Tests\CodeQuality\Rector\FuncCall\ArrayMergeOfNonArraysToSimpleArrayRector\ArrayMergeOfNonArraysToSimpleArrayRectorTest
*/
final class ArrayMergeOfNonArraysToSimpleArrayRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/BoolvalToTypeCastRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/BoolvalToTypeCastRector.php
deleted file mode 100644
index a469d340e..000000000
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/BoolvalToTypeCastRector.php
+++ /dev/null
@@ -1,62 +0,0 @@
->
- */
- public function getNodeTypes() : array
- {
- return [FuncCall::class];
- }
- /**
- * @param FuncCall $node
- */
- public function refactor(Node $node) : ?Node
- {
- if ($node->isFirstClassCallable()) {
- return null;
- }
- if (!$this->isName($node, 'boolval')) {
- return null;
- }
- if (!isset($node->getArgs()[0])) {
- return null;
- }
- return new Bool_($node->getArgs()[0]->value);
- }
-}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/CallUserFuncWithArrowFunctionToInlineRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/CallUserFuncWithArrowFunctionToInlineRector.php
index f78b8273c..188b19308 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/CallUserFuncWithArrowFunctionToInlineRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/CallUserFuncWithArrowFunctionToInlineRector.php
@@ -13,8 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/fuuEF
- *
* @see \Rector\Tests\CodeQuality\Rector\FuncCall\CallUserFuncWithArrowFunctionToInlineRector\CallUserFuncWithArrowFunctionToInlineRectorTest
*/
final class CallUserFuncWithArrowFunctionToInlineRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/ChangeArrayPushToArrayAssignRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/ChangeArrayPushToArrayAssignRector.php
index 52d60407d..c2a58258b 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/ChangeArrayPushToArrayAssignRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/ChangeArrayPushToArrayAssignRector.php
@@ -13,8 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/questions/559844/whats-better-to-use-in-php-array-value-or-array-pusharray-value
- *
* @see \Rector\Tests\CodeQuality\Rector\FuncCall\ChangeArrayPushToArrayAssignRector\ChangeArrayPushToArrayAssignRectorTest
*/
final class ChangeArrayPushToArrayAssignRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/CompactToVariablesRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/CompactToVariablesRector.php
index 58b7ac42d..4aae925a6 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/CompactToVariablesRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/CompactToVariablesRector.php
@@ -17,9 +17,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/a/16319909/1348344
- * @changelog https://3v4l.org/8GJEs
- *
* @see \Rector\Tests\CodeQuality\Rector\FuncCall\CompactToVariablesRector\CompactToVariablesRectorTest
*/
final class CompactToVariablesRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/FloatvalToTypeCastRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/FloatvalToTypeCastRector.php
deleted file mode 100644
index 2b96506f7..000000000
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/FloatvalToTypeCastRector.php
+++ /dev/null
@@ -1,73 +0,0 @@
->
- */
- public function getNodeTypes() : array
- {
- return [FuncCall::class];
- }
- /**
- * @param FuncCall $node
- */
- public function refactor(Node $node) : ?Node
- {
- $methodName = $this->getName($node);
- if ($methodName === null) {
- return null;
- }
- if (!\in_array($methodName, self::VAL_FUNCTION_NAMES, \true)) {
- return null;
- }
- if ($node->isFirstClassCallable()) {
- return null;
- }
- $firstArg = $node->getArgs()[0];
- $double = new Double($firstArg->value);
- $double->setAttribute(AttributeKey::KIND, Double::KIND_FLOAT);
- return $double;
- }
-}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/IntvalToTypeCastRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/IntvalToTypeCastRector.php
deleted file mode 100644
index 4cfce61df..000000000
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/IntvalToTypeCastRector.php
+++ /dev/null
@@ -1,82 +0,0 @@
-valueResolver = $valueResolver;
- }
- public function getRuleDefinition() : RuleDefinition
- {
- return new RuleDefinition('Change intval() to faster and readable (int) $value', [new CodeSample(<<<'CODE_SAMPLE'
-class SomeClass
-{
- public function run($value)
- {
- return intval($value);
- }
-}
-CODE_SAMPLE
-, <<<'CODE_SAMPLE'
-class SomeClass
-{
- public function run($value)
- {
- return (int) $value;
- }
-}
-CODE_SAMPLE
-)]);
- }
- /**
- * @return array>
- */
- public function getNodeTypes() : array
- {
- return [FuncCall::class];
- }
- /**
- * @param FuncCall $node
- */
- public function refactor(Node $node) : ?Node
- {
- if (!$this->isName($node, 'intval')) {
- return null;
- }
- if (isset($node->args[1]) && $node->args[1] instanceof Arg) {
- $secondArgumentValue = $this->valueResolver->getValue($node->args[1]->value);
- // default value
- if ($secondArgumentValue !== 10) {
- return null;
- }
- }
- if ($node->isFirstClassCallable()) {
- return null;
- }
- if (!isset($node->getArgs()[0])) {
- return null;
- }
- return new Int_($node->getArgs()[0]->value);
- }
-}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SetTypeToCastRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SetTypeToCastRector.php
index d55f94e35..a5b5512d6 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SetTypeToCastRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SetTypeToCastRector.php
@@ -23,8 +23,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/questions/5577003/using-settype-in-php-instead-of-typecasting-using-brackets-what-is-the-differen/5577068#5577068
- *
* @see \Rector\Tests\CodeQuality\Rector\FuncCall\SetTypeToCastRector\SetTypeToCastRectorTest
*/
final class SetTypeToCastRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SimplifyRegexPatternRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SimplifyRegexPatternRector.php
index 8f26b81e6..a91f3ce45 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SimplifyRegexPatternRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SimplifyRegexPatternRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodeQuality\Rector\FuncCall;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Scalar\String_;
use Rector\NodeNameResolver\Regex\RegexPatternDetector;
@@ -11,8 +11,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog http://php.net/manual/en/function.preg-match.php#105924
- *
* @see \Rector\Tests\CodeQuality\Rector\FuncCall\SimplifyRegexPatternRector\SimplifyRegexPatternRectorTest
*/
final class SimplifyRegexPatternRector extends AbstractRector
@@ -76,6 +74,9 @@ public function refactor(Node $node) : ?Node
if (\strpos($originalValue, '[^' . $complexPattern) !== \false) {
continue;
}
+ if ($complexPattern === $node->value) {
+ continue;
+ }
$node->value = $simplifiedValue;
return $node;
}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SimplifyStrposLowerRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SimplifyStrposLowerRector.php
index 0885fc73d..a9be33eb0 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SimplifyStrposLowerRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/SimplifyStrposLowerRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodeQuality\Rector\FuncCall;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Name;
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/StrvalToTypeCastRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/StrvalToTypeCastRector.php
deleted file mode 100644
index 047683005..000000000
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/StrvalToTypeCastRector.php
+++ /dev/null
@@ -1,62 +0,0 @@
->
- */
- public function getNodeTypes() : array
- {
- return [FuncCall::class];
- }
- /**
- * @param FuncCall $node
- */
- public function refactor(Node $node) : ?Node
- {
- if (!$this->isName($node, 'strval')) {
- return null;
- }
- if ($node->isFirstClassCallable()) {
- return null;
- }
- if (!isset($node->getArgs()[0])) {
- return null;
- }
- return new String_($node->getArgs()[0]->value);
- }
-}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/UnwrapSprintfOneArgumentRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/UnwrapSprintfOneArgumentRector.php
index fe3f84c92..e278a1399 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/UnwrapSprintfOneArgumentRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/FuncCall/UnwrapSprintfOneArgumentRector.php
@@ -9,7 +9,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/5280
* @see \Rector\Tests\CodeQuality\Rector\FuncCall\UnwrapSprintfOneArgumentRector\UnwrapSprintfOneArgumentRectorTest
*/
final class UnwrapSprintfOneArgumentRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/FunctionLike/SimplifyUselessVariableRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/FunctionLike/SimplifyUselessVariableRector.php
index 4f87c08af..e755d08e0 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/FunctionLike/SimplifyUselessVariableRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/FunctionLike/SimplifyUselessVariableRector.php
@@ -14,17 +14,18 @@
use PHPStan\Type\MixedType;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
+use Rector\Contract\Rector\ConfigurableRectorInterface;
use Rector\NodeAnalyzer\CallAnalyzer;
use Rector\NodeAnalyzer\VariableAnalyzer;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpParser\Node\AssignAndBinaryMap;
use Rector\Rector\AbstractRector;
-use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
+use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\Tests\CodeQuality\Rector\FunctionLike\SimplifyUselessVariableRector\SimplifyUselessVariableRectorTest
*/
-final class SimplifyUselessVariableRector extends AbstractRector
+final class SimplifyUselessVariableRector extends AbstractRector implements ConfigurableRectorInterface
{
/**
* @readonly
@@ -46,6 +47,15 @@ final class SimplifyUselessVariableRector extends AbstractRector
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private $phpDocInfoFactory;
+ /**
+ * @api
+ * @var string
+ */
+ public const ONLY_DIRECT_ASSIGN = 'only_direct_assign';
+ /**
+ * @var bool
+ */
+ private $onlyDirectAssign = \false;
public function __construct(AssignAndBinaryMap $assignAndBinaryMap, VariableAnalyzer $variableAnalyzer, CallAnalyzer $callAnalyzer, PhpDocInfoFactory $phpDocInfoFactory)
{
$this->assignAndBinaryMap = $assignAndBinaryMap;
@@ -53,20 +63,44 @@ public function __construct(AssignAndBinaryMap $assignAndBinaryMap, VariableAnal
$this->callAnalyzer = $callAnalyzer;
$this->phpDocInfoFactory = $phpDocInfoFactory;
}
+ public function configure(array $configuration) : void
+ {
+ $this->onlyDirectAssign = $configuration[self::ONLY_DIRECT_ASSIGN] ?? \false;
+ }
public function getRuleDefinition() : RuleDefinition
{
- return new RuleDefinition('Removes useless variable assigns', [new CodeSample(<<<'CODE_SAMPLE'
+ return new RuleDefinition('Removes useless variable assigns', [new ConfiguredCodeSample(
+ <<<'CODE_SAMPLE'
function () {
$a = true;
return $a;
};
CODE_SAMPLE
-, <<<'CODE_SAMPLE'
+,
+ <<<'CODE_SAMPLE'
function () {
return true;
};
CODE_SAMPLE
-)]);
+,
+ // default
+ [self::ONLY_DIRECT_ASSIGN => \true]
+ ), new ConfiguredCodeSample(<<<'CODE_SAMPLE'
+function () {
+ $a = 'Hello, ';
+ $a .= 'World!';
+
+ return $a;
+};
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+function () {
+ $a = 'Hello, ';
+
+ return $a . 'World!';
+};
+CODE_SAMPLE
+, [self::ONLY_DIRECT_ASSIGN => \false])]);
}
/**
* @return array>
@@ -141,6 +175,9 @@ private function shouldSkipStmt(Return_ $return, Stmt $previousStmt) : bool
if (!$previousNode instanceof AssignOp && !$previousNode instanceof Assign) {
return \true;
}
+ if ($this->onlyDirectAssign && $previousNode instanceof AssignOp) {
+ return \true;
+ }
$variable = $return->expr;
// is the same variable
if (!$this->nodeComparator->areNodesEqual($previousNode->var, $variable)) {
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Identical/BooleanNotIdenticalToNotIdenticalRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Identical/BooleanNotIdenticalToNotIdenticalRector.php
index 47a09b256..ad5188f94 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Identical/BooleanNotIdenticalToNotIdenticalRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Identical/BooleanNotIdenticalToNotIdenticalRector.php
@@ -11,7 +11,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/GoEPq
* @see \Rector\Tests\CodeQuality\Rector\Identical\BooleanNotIdenticalToNotIdenticalRector\BooleanNotIdenticalToNotIdenticalRectorTest
*/
final class BooleanNotIdenticalToNotIdenticalRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Identical/GetClassToInstanceOfRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Identical/GetClassToInstanceOfRector.php
deleted file mode 100644
index 4350dea73..000000000
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Identical/GetClassToInstanceOfRector.php
+++ /dev/null
@@ -1,116 +0,0 @@
-binaryOpManipulator = $binaryOpManipulator;
- $this->valueResolver = $valueResolver;
- }
- public function getRuleDefinition() : RuleDefinition
- {
- return new RuleDefinition('Changes comparison with get_class to instanceof', [new CodeSample('if (EventsListener::class === get_class($event->job)) { }', 'if ($event->job instanceof EventsListener) { }')]);
- }
- /**
- * @return array>
- */
- public function getNodeTypes() : array
- {
- return [Identical::class, NotIdentical::class];
- }
- /**
- * @param Identical|NotIdentical $node
- */
- public function refactor(Node $node) : ?Node
- {
- $twoNodeMatch = $this->binaryOpManipulator->matchFirstAndSecondConditionNode($node, function (Node $node) : bool {
- return $this->isClassReference($node);
- }, function (Node $node) : bool {
- return $this->isGetClassFuncCallNode($node);
- });
- if (!$twoNodeMatch instanceof TwoNodeMatch) {
- return null;
- }
- /** @var ClassConstFetch|String_ $firstExpr */
- $firstExpr = $twoNodeMatch->getFirstExpr();
- /** @var FuncCall $secondExpr */
- $secondExpr = $twoNodeMatch->getSecondExpr();
- if ($secondExpr->isFirstClassCallable()) {
- return null;
- }
- if (!isset($secondExpr->getArgs()[0])) {
- return null;
- }
- $firstArg = $secondExpr->getArgs()[0];
- $varNode = $firstArg->value;
- if ($firstExpr instanceof String_) {
- $className = $this->valueResolver->getValue($firstExpr);
- } else {
- $className = $this->getName($firstExpr->class);
- }
- if ($className === null) {
- return null;
- }
- if ($className === ObjectReference::PARENT) {
- return null;
- }
- $class = \in_array($className, self::NO_NAMESPACED_CLASSNAMES, \true) ? new Name($className) : new FullyQualified($className);
- $instanceof = new Instanceof_($varNode, $class);
- if ($node instanceof NotIdentical) {
- return new BooleanNot($instanceof);
- }
- return $instanceof;
- }
- private function isClassReference(Node $node) : bool
- {
- if (!$node instanceof ClassConstFetch) {
- // might be
- return $node instanceof String_;
- }
- return $this->isName($node->name, 'class');
- }
- private function isGetClassFuncCallNode(Node $node) : bool
- {
- if (!$node instanceof FuncCall) {
- return \false;
- }
- return $this->isName($node, 'get_class');
- }
-}
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/If_/ExplicitBoolCompareRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/If_/ExplicitBoolCompareRector.php
index 635d3dc12..24000bcba 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/If_/ExplicitBoolCompareRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/If_/ExplicitBoolCompareRector.php
@@ -31,9 +31,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.reddit.com/r/PHP/comments/aqk01p/is_there_a_situation_in_which_if_countarray_0/
- * @changelog https://3v4l.org/UCd1b
- *
* @see \Rector\Tests\CodeQuality\Rector\If_\ExplicitBoolCompareRector\ExplicitBoolCompareRectorTest
*/
final class ExplicitBoolCompareRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Include_/AbsolutizeRequireAndIncludePathRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Include_/AbsolutizeRequireAndIncludePathRector.php
index 55c736777..094796f66 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Include_/AbsolutizeRequireAndIncludePathRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Include_/AbsolutizeRequireAndIncludePathRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodeQuality\Rector\Include_;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\BinaryOp\Concat;
use PhpParser\Node\Expr\Include_;
@@ -14,8 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://github.com/symplify/CodingStandard#includerequire-should-be-followed-by-absolute-path
- *
* @see \Rector\Tests\CodeQuality\Rector\Include_\AbsolutizeRequireAndIncludePathRector\AbsolutizeRequireAndIncludePathRectorTest
*/
final class AbsolutizeRequireAndIncludePathRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php
index 5dd55fe99..f69c7bc3e 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php
@@ -28,8 +28,6 @@
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\Tests\CodeQuality\Rector\Isset_\IssetOnPropertyObjectToPropertyExistsRector\IssetOnPropertyObjectToPropertyExistsRectorTest
- *
- * @changelog https://3v4l.org/TI8XL Change isset on property object to property_exists() with not null check
*/
final class IssetOnPropertyObjectToPropertyExistsRector extends AbstractRector
{
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/LogicalAnd/AndAssignsToSeparateLinesRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/LogicalAnd/AndAssignsToSeparateLinesRector.php
index 0fa3cff94..33753fea3 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/LogicalAnd/AndAssignsToSeparateLinesRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/LogicalAnd/AndAssignsToSeparateLinesRector.php
@@ -11,7 +11,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/ji8bX
* @see \Rector\Tests\CodeQuality\Rector\LogicalAnd\AndAssignsToSeparateLinesRector\AndAssignsToSeparateLinesRectorTest
*/
final class AndAssignsToSeparateLinesRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/LogicalAnd/LogicalToBooleanRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/LogicalAnd/LogicalToBooleanRector.php
index c03420752..826e2a8ff 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/LogicalAnd/LogicalToBooleanRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/LogicalAnd/LogicalToBooleanRector.php
@@ -12,8 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/a/5998330/1348344
- *
* @see \Rector\Tests\CodeQuality\Rector\LogicalAnd\LogicalToBooleanRector\LogicalToBooleanRectorTest
*/
final class LogicalToBooleanRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/New_/NewStaticToNewSelfRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/New_/NewStaticToNewSelfRector.php
index 01be4f153..311ef36bc 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/New_/NewStaticToNewSelfRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/New_/NewStaticToNewSelfRector.php
@@ -12,8 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://github.com/phpstan/phpstan-src/blob/699c420f8193da66927e54494a0afa0c323c6458/src/Rules/Classes/NewStaticRule.php
- *
* @see \Rector\Tests\CodeQuality\Rector\New_\NewStaticToNewSelfRector\NewStaticToNewSelfRectorTest
*/
final class NewStaticToNewSelfRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/NotEqual/CommonNotEqualRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/NotEqual/CommonNotEqualRector.php
index fc85bb0ee..dd788954a 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/NotEqual/CommonNotEqualRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/NotEqual/CommonNotEqualRector.php
@@ -10,7 +10,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/a/4294663/1348344
* @see \Rector\Tests\CodeQuality\Rector\NotEqual\CommonNotEqualRector\CommonNotEqualRectorTest
*/
final class CommonNotEqualRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/NullsafeMethodCall/CleanupUnneededNullsafeOperatorRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/NullsafeMethodCall/CleanupUnneededNullsafeOperatorRector.php
index 55ffa3070..85e8a9ec7 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/NullsafeMethodCall/CleanupUnneededNullsafeOperatorRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/NullsafeMethodCall/CleanupUnneededNullsafeOperatorRector.php
@@ -9,8 +9,8 @@
use PhpParser\Node\Expr\NullsafeMethodCall;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Identifier;
+use PHPStan\Type\ObjectType;
use Rector\Rector\AbstractRector;
-use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use Rector\TypeDeclaration\TypeAnalyzer\ReturnStrictTypeAnalyzer;
use Rector\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -84,12 +84,8 @@ public function refactor(Node $node) : ?Node
if (!$node->var instanceof FuncCall && !$node->var instanceof MethodCall && !$node->var instanceof StaticCall) {
return null;
}
- $returnNode = $this->returnStrictTypeAnalyzer->resolveMethodCallReturnNode($node->var);
- if (!$returnNode instanceof Node) {
- return null;
- }
- $type = $this->getType($returnNode);
- if (!$type instanceof FullyQualifiedObjectType) {
+ $returnType = $this->returnStrictTypeAnalyzer->resolveMethodCallReturnType($node->var);
+ if (!$returnType instanceof ObjectType) {
return null;
}
return new MethodCall($node->var, $node->name, $node->args);
diff --git a/vendor/rector/rector/rules/CodeQuality/Rector/Ternary/ArrayKeyExistsTernaryThenValueToCoalescingRector.php b/vendor/rector/rector/rules/CodeQuality/Rector/Ternary/ArrayKeyExistsTernaryThenValueToCoalescingRector.php
index 32c2bb07e..8c6a4140c 100644
--- a/vendor/rector/rector/rules/CodeQuality/Rector/Ternary/ArrayKeyExistsTernaryThenValueToCoalescingRector.php
+++ b/vendor/rector/rector/rules/CodeQuality/Rector/Ternary/ArrayKeyExistsTernaryThenValueToCoalescingRector.php
@@ -14,8 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/f7itn
- *
* @see \Rector\Tests\CodeQuality\Rector\Ternary\ArrayKeyExistsTernaryThenValueToCoalescingRector\ArrayKeyExistsTernaryThenValueToCoalescingRectorTest
*/
final class ArrayKeyExistsTernaryThenValueToCoalescingRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodingStyle/Application/UseImportsAdder.php b/vendor/rector/rector/rules/CodingStyle/Application/UseImportsAdder.php
index 442978b52..8d0142c10 100644
--- a/vendor/rector/rector/rules/CodingStyle/Application/UseImportsAdder.php
+++ b/vendor/rector/rector/rules/CodingStyle/Application/UseImportsAdder.php
@@ -3,10 +3,11 @@
declare (strict_types=1);
namespace Rector\CodingStyle\Application;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Declare_;
+use PhpParser\Node\Stmt\GroupUse;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\Nop;
use PhpParser\Node\Stmt\Use_;
@@ -56,23 +57,28 @@ public function addImportsToStmts(FileWithoutNamespace $fileWithoutNamespace, ar
}
// place after declare strict_types
foreach ($stmts as $key => $stmt) {
- if ($stmt instanceof Declare_) {
- if (isset($stmts[$key + 1]) && $stmts[$key + 1] instanceof Use_) {
- $nodesToAdd = $newUses;
- } else {
- // add extra space, if there are no new use imports to be added
- $nodesToAdd = \array_merge([new Nop()], $newUses);
- }
- $this->mirrorUseComments($stmts, $newUses, $key + 1);
- \array_splice($stmts, $key + 1, 0, $nodesToAdd);
- $fileWithoutNamespace->stmts = $stmts;
- $fileWithoutNamespace->stmts = \array_values($fileWithoutNamespace->stmts);
- return [$fileWithoutNamespace];
+ // maybe just added a space
+ if ($stmt instanceof Nop) {
+ continue;
+ }
+ // when we found a non-declare, directly stop
+ if (!$stmt instanceof Declare_) {
+ break;
+ }
+ $nodesToAdd = \array_merge([new Nop()], $newUses);
+ $this->mirrorUseComments($stmts, $newUses, $key + 1);
+ // remove space before next use tweak
+ if (isset($stmts[$key + 1]) && ($stmts[$key + 1] instanceof Use_ || $stmts[$key + 1] instanceof GroupUse)) {
+ $stmts[$key + 1]->setAttribute(AttributeKey::ORIGINAL_NODE, null);
}
+ \array_splice($stmts, $key + 1, 0, $nodesToAdd);
+ $fileWithoutNamespace->stmts = $stmts;
+ $fileWithoutNamespace->stmts = \array_values($fileWithoutNamespace->stmts);
+ return [$fileWithoutNamespace];
}
$this->mirrorUseComments($stmts, $newUses);
// make use stmts first
- $fileWithoutNamespace->stmts = \array_merge($newUses, $stmts);
+ $fileWithoutNamespace->stmts = \array_merge($newUses, $this->resolveInsertNop($fileWithoutNamespace), $stmts);
$fileWithoutNamespace->stmts = \array_values($fileWithoutNamespace->stmts);
return [$fileWithoutNamespace];
}
@@ -97,9 +103,21 @@ public function addImportsToNamespace(Namespace_ $namespace, array $useImportTyp
return;
}
$this->mirrorUseComments($namespace->stmts, $newUses);
- $namespace->stmts = \array_merge($newUses, $namespace->stmts);
+ $namespace->stmts = \array_merge($newUses, $this->resolveInsertNop($namespace), $namespace->stmts);
$namespace->stmts = \array_values($namespace->stmts);
}
+ /**
+ * @return Nop[]
+ * @param \Rector\PhpParser\Node\CustomNode\FileWithoutNamespace|\PhpParser\Node\Stmt\Namespace_ $namespace
+ */
+ private function resolveInsertNop($namespace) : array
+ {
+ $currentStmt = $namespace->stmts[0] ?? null;
+ if (!$currentStmt instanceof Stmt || $currentStmt instanceof Use_ || $currentStmt instanceof GroupUse) {
+ return [];
+ }
+ return [new Nop()];
+ }
/**
* @param Stmt[] $stmts
* @param Use_[] $newUses
@@ -113,7 +131,7 @@ private function mirrorUseComments(array $stmts, array $newUses, int $indexStmt
$comments = (array) $stmts[$indexStmt]->getAttribute(AttributeKey::COMMENTS);
if ($comments !== []) {
$newUses[0]->setAttribute(AttributeKey::COMMENTS, $stmts[$indexStmt]->getAttribute(AttributeKey::COMMENTS));
- $stmts[$indexStmt]->setAttribute(AttributeKey::COMMENTS, null);
+ $stmts[$indexStmt]->setAttribute(AttributeKey::COMMENTS, []);
}
}
}
diff --git a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/AliasUsesResolver.php b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/AliasUsesResolver.php
index c40a51bbe..8eeb7e53c 100644
--- a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/AliasUsesResolver.php
+++ b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/AliasUsesResolver.php
@@ -9,6 +9,7 @@
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\Use_;
use PhpParser\Node\Stmt\UseUse;
+use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
final class AliasUsesResolver
{
/**
@@ -26,10 +27,10 @@ public function __construct(\Rector\CodingStyle\ClassNameImport\UseImportsTraver
*/
public function resolveFromNode(Node $node, array $stmts) : array
{
- if (!$node instanceof Namespace_) {
- /** @var Namespace_[] $namespaces */
+ if (!$node instanceof Namespace_ && !$node instanceof FileWithoutNamespace) {
+ /** @var Namespace_[]|FileWithoutNamespace[] $namespaces */
$namespaces = \array_filter($stmts, static function (Stmt $stmt) : bool {
- return $stmt instanceof Namespace_;
+ return $stmt instanceof Namespace_ || $stmt instanceof FileWithoutNamespace;
});
if (\count($namespaces) !== 1) {
return [];
diff --git a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php
index 7cf523212..08a5b80c4 100644
--- a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php
+++ b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use Rector\CodingStyle\ClassNameImport\ShortNameResolver;
use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface;
diff --git a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/UsesClassNameImportSkipVoter.php b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/UsesClassNameImportSkipVoter.php
index b2f068aeb..58d0a0443 100644
--- a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/UsesClassNameImportSkipVoter.php
+++ b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/UsesClassNameImportSkipVoter.php
@@ -5,7 +5,6 @@
use PhpParser\Node;
use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface;
-use Rector\Configuration\RenamedClassesDataCollector;
use Rector\PostRector\Collector\UseNodesToAddCollector;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use Rector\ValueObject\Application\File;
@@ -23,24 +22,14 @@ final class UsesClassNameImportSkipVoter implements ClassNameImportSkipVoterInte
* @var \Rector\PostRector\Collector\UseNodesToAddCollector
*/
private $useNodesToAddCollector;
- /**
- * @readonly
- * @var \Rector\Configuration\RenamedClassesDataCollector
- */
- private $renamedClassesDataCollector;
- public function __construct(UseNodesToAddCollector $useNodesToAddCollector, RenamedClassesDataCollector $renamedClassesDataCollector)
+ public function __construct(UseNodesToAddCollector $useNodesToAddCollector)
{
$this->useNodesToAddCollector = $useNodesToAddCollector;
- $this->renamedClassesDataCollector = $renamedClassesDataCollector;
}
public function shouldSkip(File $file, FullyQualifiedObjectType $fullyQualifiedObjectType, Node $node) : bool
{
- $useImportTypes = $this->useNodesToAddCollector->getUseImportTypesByNode($file, $node);
+ $useImportTypes = $this->useNodesToAddCollector->getUseImportTypesByNode($file);
foreach ($useImportTypes as $useImportType) {
- // if the class is renamed, the use import is no longer blocker
- if ($this->renamedClassesDataCollector->hasOldClass($useImportType->getClassName())) {
- continue;
- }
if (!$useImportType->equals($fullyQualifiedObjectType) && $useImportType->areShortNamesEqual($fullyQualifiedObjectType)) {
return \true;
}
diff --git a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php
index f9e797464..57075fb38 100644
--- a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php
+++ b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php
@@ -5,12 +5,16 @@
use PhpParser\Node;
use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\GroupUse;
use PhpParser\Node\Stmt\Use_;
use PhpParser\Node\Stmt\UseUse;
use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface;
+use Rector\Configuration\Option;
+use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\Naming\Naming\UseImportsResolver;
+use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use Rector\ValueObject\Application\File;
final class ClassNameImportSkipper
@@ -43,12 +47,19 @@ public function shouldSkipNameForFullyQualifiedObjectType(File $file, Node $node
return \false;
}
/**
- * @param Use_[]|GroupUse[] $uses
+ * @param array $uses
*/
public function shouldSkipName(FullyQualified $fullyQualified, array $uses) : bool
{
- if (\substr_count($fullyQualified->toCodeString(), '\\') <= 1) {
- return \false;
+ if (\substr_count($fullyQualified->toCodeString(), '\\') === 1) {
+ return $this->shouldSkipShortName($fullyQualified);
+ }
+ // verify long name, as short name verify may conflict
+ // see test PR: https://github.com/rectorphp/rector-src/pull/6208
+ // ref https://3v4l.org/21H5j vs https://3v4l.org/GIHSB
+ $originalName = $fullyQualified->getAttribute(AttributeKey::ORIGINAL_NAME);
+ if ($originalName instanceof Name && $originalName->getLast() === $originalName->toString()) {
+ return \true;
}
$stringName = $fullyQualified->toString();
$lastUseName = $fullyQualified->getLast();
@@ -69,6 +80,28 @@ public function shouldSkipName(FullyQualified $fullyQualified, array $uses) : bo
}
return \false;
}
+ private function shouldSkipShortName(FullyQualified $fullyQualified) : bool
+ {
+ // is scalar name?
+ if (\in_array($fullyQualified->toLowerString(), ['true', 'false', 'bool'], \true)) {
+ return \true;
+ }
+ if ($fullyQualified->isSpecialClassName()) {
+ return \true;
+ }
+ if ($this->isFunctionOrConstantImport($fullyQualified)) {
+ return \true;
+ }
+ // Importing root namespace classes (like \DateTime) is optional
+ return !SimpleParameterProvider::provideBoolParameter(Option::IMPORT_SHORT_CLASSES);
+ }
+ private function isFunctionOrConstantImport(FullyQualified $fullyQualified) : bool
+ {
+ if ($fullyQualified->getAttribute(AttributeKey::IS_CONSTFETCH_NAME) === \true) {
+ return \true;
+ }
+ return $fullyQualified->getAttribute(AttributeKey::IS_FUNCCALL_NAME) === \true;
+ }
private function isConflictedShortNameInUse(UseUse $useUse, string $useName, string $lastUseName, string $stringName) : bool
{
if (!$useUse->alias instanceof Identifier && $useName !== $stringName && $lastUseName === $stringName) {
diff --git a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/UseImportsTraverser.php b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/UseImportsTraverser.php
index fe44489ea..0872c49a1 100644
--- a/vendor/rector/rector/rules/CodingStyle/ClassNameImport/UseImportsTraverser.php
+++ b/vendor/rector/rector/rules/CodingStyle/ClassNameImport/UseImportsTraverser.php
@@ -3,31 +3,22 @@
declare (strict_types=1);
namespace Rector\CodingStyle\ClassNameImport;
-use PhpParser\Node;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\GroupUse;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\Use_;
use PhpParser\Node\Stmt\UseUse;
-use PhpParser\NodeTraverser;
use Rector\NodeNameResolver\NodeNameResolver;
-use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
final class UseImportsTraverser
{
- /**
- * @readonly
- * @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser
- */
- private $simpleCallableNodeTraverser;
/**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
- public function __construct(SimpleCallableNodeTraverser $simpleCallableNodeTraverser, NodeNameResolver $nodeNameResolver)
+ public function __construct(NodeNameResolver $nodeNameResolver)
{
- $this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->nodeNameResolver = $nodeNameResolver;
}
/**
@@ -36,24 +27,25 @@ public function __construct(SimpleCallableNodeTraverser $simpleCallableNodeTrave
*/
public function traverserStmts(array $stmts, callable $callable) : void
{
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable($stmts, function (Node $node) use($callable) : ?int {
- if ($node instanceof Namespace_ || $node instanceof FileWithoutNamespace) {
- // traverse into namespaces
- return null;
+ foreach ($stmts as $stmt) {
+ if ($stmt instanceof Namespace_ || $stmt instanceof FileWithoutNamespace) {
+ $this->traverserStmts($stmt->stmts, $callable);
+ continue;
}
- if ($node instanceof Use_) {
- foreach ($node->uses as $useUse) {
+ if ($stmt instanceof Use_) {
+ foreach ($stmt->uses as $useUse) {
$name = $this->nodeNameResolver->getName($useUse);
if ($name === null) {
continue;
}
- $callable($node->type, $useUse, $name);
+ $callable($stmt->type, $useUse, $name);
}
- } elseif ($node instanceof GroupUse) {
- $this->processGroupUse($node, $callable);
+ continue;
}
- return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
- });
+ if ($stmt instanceof GroupUse) {
+ $this->processGroupUse($stmt, $callable);
+ }
+ }
}
/**
* @param callable(Use_::TYPE_* $useType, UseUse $useUse, string $name): void $callable
diff --git a/vendor/rector/rector/rules/CodingStyle/Naming/ClassNaming.php b/vendor/rector/rector/rules/CodingStyle/Naming/ClassNaming.php
index 37d2ca195..30e1cff5e 100644
--- a/vendor/rector/rector/rules/CodingStyle/Naming/ClassNaming.php
+++ b/vendor/rector/rector/rules/CodingStyle/Naming/ClassNaming.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodingStyle\Naming;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\ClassLike;
diff --git a/vendor/rector/rector/rules/CodingStyle/Node/NameImporter.php b/vendor/rector/rector/rules/CodingStyle/Node/NameImporter.php
index b963787ad..fa278619b 100644
--- a/vendor/rector/rector/rules/CodingStyle/Node/NameImporter.php
+++ b/vendor/rector/rector/rules/CodingStyle/Node/NameImporter.php
@@ -3,14 +3,16 @@
declare (strict_types=1);
namespace Rector\CodingStyle\Node;
+use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
+use PhpParser\Node\Stmt\GroupUse;
+use PhpParser\Node\Stmt\Use_;
use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper;
-use Rector\Configuration\Option;
-use Rector\Configuration\Parameter\SimpleParameterProvider;
+use Rector\Naming\Naming\AliasNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PostRector\Collector\UseNodesToAddCollector;
-use Rector\StaticTypeMapper\StaticTypeMapper;
+use Rector\StaticTypeMapper\PhpParser\FullyQualifiedNodeMapper;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use Rector\ValueObject\Application\File;
final class NameImporter
@@ -22,55 +24,76 @@ final class NameImporter
private $classNameImportSkipper;
/**
* @readonly
- * @var \Rector\StaticTypeMapper\StaticTypeMapper
+ * @var \Rector\StaticTypeMapper\PhpParser\FullyQualifiedNodeMapper
*/
- private $staticTypeMapper;
+ private $fullyQualifiedNodeMapper;
/**
* @readonly
* @var \Rector\PostRector\Collector\UseNodesToAddCollector
*/
private $useNodesToAddCollector;
- public function __construct(ClassNameImportSkipper $classNameImportSkipper, StaticTypeMapper $staticTypeMapper, UseNodesToAddCollector $useNodesToAddCollector)
+ /**
+ * @readonly
+ * @var \Rector\Naming\Naming\AliasNameResolver
+ */
+ private $aliasNameResolver;
+ public function __construct(ClassNameImportSkipper $classNameImportSkipper, FullyQualifiedNodeMapper $fullyQualifiedNodeMapper, UseNodesToAddCollector $useNodesToAddCollector, AliasNameResolver $aliasNameResolver)
{
$this->classNameImportSkipper = $classNameImportSkipper;
- $this->staticTypeMapper = $staticTypeMapper;
+ $this->fullyQualifiedNodeMapper = $fullyQualifiedNodeMapper;
$this->useNodesToAddCollector = $useNodesToAddCollector;
+ $this->aliasNameResolver = $aliasNameResolver;
}
- public function importName(FullyQualified $fullyQualified, File $file) : ?Name
+ /**
+ * @param array $currentUses
+ */
+ public function importName(FullyQualified $fullyQualified, File $file, array $currentUses) : ?Name
{
- if ($this->shouldSkipName($fullyQualified)) {
+ if ($this->classNameImportSkipper->shouldSkipName($fullyQualified, $currentUses)) {
return null;
}
- $staticType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($fullyQualified);
+ $staticType = $this->fullyQualifiedNodeMapper->mapToPHPStan($fullyQualified);
if (!$staticType instanceof FullyQualifiedObjectType) {
return null;
}
- return $this->importNameAndCollectNewUseStatement($file, $fullyQualified, $staticType);
+ return $this->importNameAndCollectNewUseStatement($file, $fullyQualified, $staticType, $currentUses);
}
- private function shouldSkipName(FullyQualified $fullyQualified) : bool
+ /**
+ * @param array $currentUses
+ */
+ private function resolveNameInUse(FullyQualified $fullyQualified, array $currentUses) : ?Name
{
- $virtualNode = (bool) $fullyQualified->getAttribute(AttributeKey::VIRTUAL_NODE);
- if ($virtualNode) {
- return \true;
+ $aliasName = $this->aliasNameResolver->resolveByName($fullyQualified, $currentUses);
+ if (\is_string($aliasName)) {
+ return new Name($aliasName);
}
- // is scalar name?
- if (\in_array($fullyQualified->toLowerString(), ['true', 'false', 'bool'], \true)) {
- return \true;
- }
- if ($this->isFunctionOrConstantImportWithSingleName($fullyQualified)) {
- return \true;
+ if (\substr_count($fullyQualified->toCodeString(), '\\') === 1) {
+ return null;
}
- // Importing root namespace classes (like \DateTime) is optional
- if (!SimpleParameterProvider::provideBoolParameter(Option::IMPORT_SHORT_CLASSES)) {
- $stringName = $fullyQualified->toString();
- if (\substr_count($stringName, '\\') === 0) {
- return \true;
+ $lastName = $fullyQualified->getLast();
+ foreach ($currentUses as $currentUse) {
+ foreach ($currentUse->uses as $useUse) {
+ if ($useUse->name->getLast() !== $lastName) {
+ continue;
+ }
+ if ($useUse->alias instanceof Identifier && $useUse->alias->toString() !== $lastName) {
+ return new Name($lastName);
+ }
}
}
- return \false;
+ return null;
}
- private function importNameAndCollectNewUseStatement(File $file, FullyQualified $fullyQualified, FullyQualifiedObjectType $fullyQualifiedObjectType) : ?Name
+ /**
+ * @param array $currentUses
+ */
+ private function importNameAndCollectNewUseStatement(File $file, FullyQualified $fullyQualified, FullyQualifiedObjectType $fullyQualifiedObjectType, array $currentUses) : ?Name
{
+ // make use of existing use import
+ $nameInUse = $this->resolveNameInUse($fullyQualified, $currentUses);
+ if ($nameInUse instanceof Name) {
+ $nameInUse->setAttribute(AttributeKey::NAMESPACED_NAME, $fullyQualified->toString());
+ return $nameInUse;
+ }
// the same end is already imported → skip
if ($this->classNameImportSkipper->shouldSkipNameForFullyQualifiedObjectType($file, $fullyQualified, $fullyQualifiedObjectType)) {
return null;
@@ -84,16 +107,6 @@ private function importNameAndCollectNewUseStatement(File $file, FullyQualified
$this->addUseImport($file, $fullyQualified, $fullyQualifiedObjectType);
return $fullyQualifiedObjectType->getShortNameNode();
}
- private function isFunctionOrConstantImportWithSingleName(FullyQualified $fullyQualified) : bool
- {
- if ($fullyQualified->getAttribute(AttributeKey::IS_CONSTFETCH_NAME) === \true) {
- return \count($fullyQualified->getParts()) === 1;
- }
- if ($fullyQualified->getAttribute(AttributeKey::IS_FUNCCALL_NAME) === \true) {
- return \count($fullyQualified->getParts()) === 1;
- }
- return \false;
- }
private function addUseImport(File $file, FullyQualified $fullyQualified, FullyQualifiedObjectType $fullyQualifiedObjectType) : void
{
if ($this->useNodesToAddCollector->hasImport($file, $fullyQualified, $fullyQualifiedObjectType)) {
diff --git a/vendor/rector/rector/rules/CodingStyle/NodeAnalyzer/UseImportNameMatcher.php b/vendor/rector/rector/rules/CodingStyle/NodeAnalyzer/UseImportNameMatcher.php
index f1b78c768..58c887936 100644
--- a/vendor/rector/rector/rules/CodingStyle/NodeAnalyzer/UseImportNameMatcher.php
+++ b/vendor/rector/rector/rules/CodingStyle/NodeAnalyzer/UseImportNameMatcher.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodingStyle\NodeAnalyzer;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\GroupUse;
@@ -48,7 +48,7 @@ public function matchNameWithStmts(string $tag, array $stmts) : ?string
return $this->matchNameWithUses($tag, $uses);
}
/**
- * @param Use_[]|GroupUse[] $uses
+ * @param array $uses
*/
public function matchNameWithUses(string $tag, array $uses) : ?string
{
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/Assign/SplitDoubleAssignRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/Assign/SplitDoubleAssignRector.php
index b78173372..72bece791 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/Assign/SplitDoubleAssignRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/Assign/SplitDoubleAssignRector.php
@@ -60,8 +60,8 @@ public function refactor(Node $node) : ?array
if (!$firstAssign->expr instanceof Assign) {
return null;
}
- $lastAssignValue = $this->resolveLastAssignExpr($firstAssign);
- $collectExpressions = $this->collectExpressions($firstAssign, $lastAssignValue);
+ $expr = $this->resolveLastAssignExpr($firstAssign);
+ $collectExpressions = $this->collectExpressions($firstAssign, $expr);
if ($collectExpressions === []) {
return null;
}
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php
index 458c68d79..a81e7022f 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php
@@ -3,11 +3,12 @@
declare (strict_types=1);
namespace Rector\CodingStyle\Rector\Catch_;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Variable;
+use PhpParser\Node\Name;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Catch_;
use PhpParser\Node\Stmt\ClassMethod;
@@ -17,9 +18,7 @@
use PhpParser\NodeTraverser;
use PHPStan\Analyser\Scope;
use PHPStan\Type\ObjectType;
-use Rector\Naming\Naming\AliasNameResolver;
use Rector\Naming\Naming\PropertyNaming;
-use Rector\Naming\Naming\UseImportsResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
use Rector\Rector\AbstractRector;
@@ -35,53 +34,29 @@ final class CatchExceptionNameMatchingTypeRector extends AbstractRector
* @var \Rector\Naming\Naming\PropertyNaming
*/
private $propertyNaming;
- /**
- * @readonly
- * @var \Rector\Naming\Naming\AliasNameResolver
- */
- private $aliasNameResolver;
- /**
- * @readonly
- * @var \Rector\Naming\Naming\UseImportsResolver
- */
- private $useImportsResolver;
/**
* @var string
* @see https://regex101.com/r/xmfMAX/1
*/
private const STARTS_WITH_ABBREVIATION_REGEX = '#^([A-Za-z]+?)([A-Z]{1}[a-z]{1})([A-Za-z]*)#';
- public function __construct(PropertyNaming $propertyNaming, AliasNameResolver $aliasNameResolver, UseImportsResolver $useImportsResolver)
+ public function __construct(PropertyNaming $propertyNaming)
{
$this->propertyNaming = $propertyNaming;
- $this->aliasNameResolver = $aliasNameResolver;
- $this->useImportsResolver = $useImportsResolver;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Type and name of catch exception should match', [new CodeSample(<<<'CODE_SAMPLE'
-class SomeClass
-{
- public function run()
- {
- try {
- // ...
- } catch (SomeException $typoException) {
- $typoException->getMessage();
- }
- }
+try {
+ // ...
+} catch (SomeException $typoException) {
+ $typoException->getMessage();
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
-class SomeClass
-{
- public function run()
- {
- try {
- // ...
- } catch (SomeException $someException) {
- $someException->getMessage();
- }
- }
+try {
+ // ...
+} catch (SomeException $someException) {
+ $someException->getMessage();
}
CODE_SAMPLE
)]);
@@ -102,7 +77,6 @@ public function refactor(Node $node) : ?Node
return null;
}
$hasChanged = \false;
- $uses = null;
foreach ($node->stmts as $key => $stmt) {
if ($this->shouldSkip($stmt)) {
continue;
@@ -118,15 +92,7 @@ public function refactor(Node $node) : ?Node
$catchVar = $catch->var;
/** @var string $oldVariableName */
$oldVariableName = (string) $this->getName($catchVar);
- if ($uses === null) {
- $uses = $this->useImportsResolver->resolve();
- }
- $type = $catch->types[0];
- $typeShortName = $this->nodeNameResolver->getShortName($type);
- $aliasName = $this->aliasNameResolver->resolveByName($type, $uses);
- if (\is_string($aliasName)) {
- $typeShortName = $aliasName;
- }
+ $typeShortName = $this->resolveVariableName($catch->types[0]);
$newVariableName = $this->resolveNewVariableName($typeShortName);
$objectType = new ObjectType($newVariableName);
$newVariableName = $this->propertyNaming->fqnToVariableName($objectType);
@@ -220,4 +186,13 @@ private function replaceNextUsageVariable(string $oldVariableName, string $newVa
$key += 2;
$this->replaceNextUsageVariable($oldVariableName, $newVariableName, $key, $stmts, $nextNode);
}
+ private function resolveVariableName(Name $name) : string
+ {
+ $originalName = $name->getAttribute(AttributeKey::ORIGINAL_NAME);
+ // this allows to respect the name alias, if used
+ if ($originalName instanceof Name) {
+ return $originalName->toString();
+ }
+ return $name->toString();
+ }
}
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/ClassConst/RemoveFinalFromConstRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/ClassConst/RemoveFinalFromConstRector.php
index 14b4b8789..748c8161d 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/ClassConst/RemoveFinalFromConstRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/ClassConst/RemoveFinalFromConstRector.php
@@ -12,8 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://php.watch/versions/8.1/final-class-const
- *
* @see \Rector\Tests\CodingStyle\Rector\ClassConst\RemoveFinalFromConstRector\RemoveFinalFromConstRectorTest
*/
final class RemoveFinalFromConstRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/ClassMethod/FuncGetArgsToVariadicParamRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/ClassMethod/FuncGetArgsToVariadicParamRector.php
index 4cc485970..720552e33 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/ClassMethod/FuncGetArgsToVariadicParamRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/ClassMethod/FuncGetArgsToVariadicParamRector.php
@@ -20,8 +20,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/d4tBd
- *
* @see \Rector\Tests\CodingStyle\Rector\ClassMethod\FuncGetArgsToVariadicParamRector\FuncGetArgsToVariadicParamRectorTest
*/
final class FuncGetArgsToVariadicParamRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/ClassMethod/MakeInheritedMethodVisibilitySameAsParentRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/ClassMethod/MakeInheritedMethodVisibilitySameAsParentRector.php
index 9894fb534..28b8c779c 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/ClassMethod/MakeInheritedMethodVisibilitySameAsParentRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/ClassMethod/MakeInheritedMethodVisibilitySameAsParentRector.php
@@ -14,8 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/RFYmn
- *
* @see \Rector\Tests\CodingStyle\Rector\ClassMethod\MakeInheritedMethodVisibilitySameAsParentRector\MakeInheritedMethodVisibilitySameAsParentRectorTest
*/
final class MakeInheritedMethodVisibilitySameAsParentRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/Encapsed/EncapsedStringsToSprintfRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/Encapsed/EncapsedStringsToSprintfRector.php
index b8f8178a3..374869ac5 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/Encapsed/EncapsedStringsToSprintfRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/Encapsed/EncapsedStringsToSprintfRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodingStyle\Rector\Encapsed;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr;
@@ -16,19 +16,29 @@
use PhpParser\Node\Scalar\EncapsedStringPart;
use PhpParser\Node\Scalar\String_;
use PHPStan\Type\Type;
+use Rector\Contract\Rector\ConfigurableRectorInterface;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Rector\AbstractRector;
-use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
+use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\Tests\CodingStyle\Rector\Encapsed\EncapsedStringsToSprintfRector\EncapsedStringsToSprintfRectorTest
*/
-final class EncapsedStringsToSprintfRector extends AbstractRector
+final class EncapsedStringsToSprintfRector extends AbstractRector implements ConfigurableRectorInterface
{
+ /**
+ * @api
+ * @var string
+ */
+ public const ALWAYS = 'always';
/**
* @var array>>
*/
private const FORMAT_SPECIFIERS = ['%s' => ['PHPStan\\Type\\StringType'], '%d' => ['PHPStan\\Type\\Constant\\ConstantIntegerType', 'PHPStan\\Type\\IntegerRangeType', 'PHPStan\\Type\\IntegerType']];
+ /**
+ * @var bool
+ */
+ private $always = \false;
/**
* @var string
*/
@@ -37,9 +47,13 @@ final class EncapsedStringsToSprintfRector extends AbstractRector
* @var Expr[]
*/
private $argumentVariables = [];
+ public function configure(array $configuration) : void
+ {
+ $this->always = $configuration[self::ALWAYS] ?? \false;
+ }
public function getRuleDefinition() : RuleDefinition
{
- return new RuleDefinition('Convert enscaped {$string} to more readable sprintf or concat, if no mask is used', [new CodeSample(<<<'CODE_SAMPLE'
+ return new RuleDefinition('Convert enscaped {$string} to more readable sprintf or concat, if no mask is used', [new ConfiguredCodeSample(<<<'CODE_SAMPLE'
echo "Unsupported format {$format} - use another";
echo "Try {$allowed}";
@@ -49,7 +63,17 @@ public function getRuleDefinition() : RuleDefinition
echo 'Try ' . $allowed;
CODE_SAMPLE
-)]);
+, [self::ALWAYS => \false]), new ConfiguredCodeSample(<<<'CODE_SAMPLE'
+echo "Unsupported format {$format} - use another";
+
+echo "Try {$allowed}";
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+echo sprintf('Unsupported format %s - use another', $format);
+
+echo sprintf('Try %s', $allowed);
+CODE_SAMPLE
+, [self::ALWAYS => \true])]);
}
/**
* @return array>
@@ -124,15 +148,18 @@ private function createSprintfFuncCallOrConcat(string $mask, array $argumentVari
}
return $this->nodeFactory->createConcat($argumentVariables);
}
- $singleValueConcat = $this->createSingleValueEdgeConcat($argumentVariables, $mask);
- if ($singleValueConcat instanceof Concat) {
- return $singleValueConcat;
+ if (!$this->always) {
+ $singleValueConcat = $this->createSingleValueEdgeConcat($argumentVariables, $mask);
+ if ($singleValueConcat instanceof Concat) {
+ return $singleValueConcat;
+ }
}
// checks for windows or linux line ending. \n is contained in both.
if (\strpos($mask, "\n") !== \false) {
return null;
}
- $arguments = [new Arg(new String_($mask))];
+ $string = $this->createString($mask);
+ $arguments = [new Arg($string)];
foreach ($argumentVariables as $argumentVariable) {
$arguments[] = new Arg($argumentVariable);
}
@@ -160,4 +187,9 @@ private function createSingleValueEdgeConcat(array $argumentVariables, string $m
}
return null;
}
+ private function createString(string $value) : String_
+ {
+ $kind = \strpos($value, "'") !== \false ? String_::KIND_DOUBLE_QUOTED : String_::KIND_SINGLE_QUOTED;
+ return new String_($value, ['kind' => $kind]);
+ }
}
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/Foreach_/MultiDimensionalArrayToArrayDestructRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/Foreach_/MultiDimensionalArrayToArrayDestructRector.php
new file mode 100644
index 000000000..ba4b2ac4b
--- /dev/null
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/Foreach_/MultiDimensionalArrayToArrayDestructRector.php
@@ -0,0 +1,170 @@
+nodeFinder = $nodeFinder;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Change multidimensional array access in foreach to array destruct', [new CodeSample(<<<'CODE_SAMPLE'
+class SomeClass
+{
+ /**
+ * @param array $users
+ */
+ public function run(array $users)
+ {
+ foreach ($users as $user) {
+ echo $user['id'];
+ echo sprintf('Name: %s', $user['name']);
+ }
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+class SomeClass
+{
+ /**
+ * @param array $users
+ */
+ public function run(array $users)
+ {
+ foreach ($users as ['id' => $id, 'name' => $name]) {
+ echo $id;
+ echo sprintf('Name: %s', $name);
+ }
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [Foreach_::class];
+ }
+ /**
+ * @param Foreach_ $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ $usedDestructedValues = $this->replaceValueArrayAccessorsInForeachTree($node);
+ if ($usedDestructedValues !== []) {
+ $node->valueVar = new Array_($this->getArrayItems($usedDestructedValues));
+ return $node;
+ }
+ return null;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::ARRAY_DESTRUCT;
+ }
+ /**
+ * Go through the foreach tree and replace array accessors on "foreach variable"
+ * with variables which will be created for array destructor.
+ *
+ * @return array List of destructor variables we need to create in format array key name => variable name
+ */
+ private function replaceValueArrayAccessorsInForeachTree(Foreach_ $foreach) : array
+ {
+ $usedVariableNames = $this->getUsedVariableNamesInForeachTree($foreach);
+ $createdDestructedVariables = [];
+ $this->traverseNodesWithCallable($foreach->stmts, function (Node $traverseNode) use($foreach, $usedVariableNames, &$createdDestructedVariables) {
+ if (!$traverseNode instanceof ArrayDimFetch) {
+ return null;
+ }
+ if ($this->nodeComparator->areNodesEqual($traverseNode->var, $foreach->valueVar) === \false) {
+ return null;
+ }
+ $dim = $traverseNode->dim;
+ if (!$dim instanceof String_) {
+ $createdDestructedVariables = [];
+ return NodeTraverser::STOP_TRAVERSAL;
+ }
+ $destructedVariable = $this->getDestructedVariableName($usedVariableNames, $dim);
+ $createdDestructedVariables[$dim->value] = $destructedVariable;
+ return new Variable($destructedVariable);
+ });
+ return $createdDestructedVariables;
+ }
+ /**
+ * Get all variable names which are used in the foreach tree. We need this so that we don't create array destructor
+ * with variable name which is already used somewhere bellow
+ *
+ * @return list
+ */
+ private function getUsedVariableNamesInForeachTree(Foreach_ $foreach) : array
+ {
+ /** @var list $variableNodes */
+ $variableNodes = $this->nodeFinder->findInstanceOf($foreach, Variable::class);
+ return \array_unique(\array_map(function (Variable $variable) : string {
+ return (string) $this->getName($variable);
+ }, $variableNodes));
+ }
+ /**
+ * Get variable name that will be used for destructor syntax. If variable name is already occupied
+ * it will find the first name available by adding numbers after the variable name
+ *
+ * @param list $usedVariableNames
+ */
+ private function getDestructedVariableName(array $usedVariableNames, String_ $string) : string
+ {
+ $desiredVariableName = (string) $string->value;
+ if (\in_array($desiredVariableName, $usedVariableNames, \true) === \false) {
+ return $desiredVariableName;
+ }
+ $i = 1;
+ $variableName = \sprintf('%s%s', $desiredVariableName, $i);
+ while (\in_array($variableName, $usedVariableNames, \true)) {
+ ++$i;
+ $variableName = \sprintf('%s%s', $desiredVariableName, $i);
+ }
+ return $variableName;
+ }
+ /**
+ * Convert key-value pairs to ArrayItem instances
+ *
+ * @param array $usedDestructedValues
+ *
+ * @return list
+ */
+ private function getArrayItems(array $usedDestructedValues) : array
+ {
+ $items = [];
+ foreach ($usedDestructedValues as $key => $value) {
+ $items[] = new ArrayItem(new Variable($value), new String_($key));
+ }
+ return $items;
+ }
+}
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/ArraySpreadInsteadOfArrayMergeRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/ArraySpreadInsteadOfArrayMergeRector.php
index 50111e832..e96bb29e4 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/ArraySpreadInsteadOfArrayMergeRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/ArraySpreadInsteadOfArrayMergeRector.php
@@ -20,8 +20,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/spread_operator_for_array
- *
* @see \Rector\Tests\CodingStyle\Rector\FuncCall\ArraySpreadInsteadOfArrayMergeRector\Php74ArraySpreadInsteadOfArrayMergeRectorTest
* @see \Rector\Tests\CodingStyle\Rector\FuncCall\ArraySpreadInsteadOfArrayMergeRector\Php81ArraySpreadInsteadOfArrayMergeRectorTest
*/
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/CallUserFuncArrayToVariadicRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/CallUserFuncArrayToVariadicRector.php
index 25664c51b..eee075a25 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/CallUserFuncArrayToVariadicRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/CallUserFuncArrayToVariadicRector.php
@@ -18,9 +18,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.php.net/manual/en/function.call-user-func-array.php#117655
- * @changelog https://3v4l.org/CBWt9
- *
* @see \Rector\Tests\CodingStyle\Rector\FuncCall\CallUserFuncArrayToVariadicRector\CallUserFuncArrayToVariadicRectorTest
*/
final class CallUserFuncArrayToVariadicRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/CallUserFuncToMethodCallRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/CallUserFuncToMethodCallRector.php
index 1facd7984..41f8aafa9 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/CallUserFuncToMethodCallRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/CallUserFuncToMethodCallRector.php
@@ -12,8 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/a/1596250/1348344
- *
* @see \Rector\Tests\CodingStyle\Rector\FuncCall\CallUserFuncToMethodCallRector\CallUserFuncToMethodCallRectorTest
*/
final class CallUserFuncToMethodCallRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/ConsistentImplodeRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/ConsistentImplodeRector.php
index 1f7c6d8dd..0292388c4 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/ConsistentImplodeRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/ConsistentImplodeRector.php
@@ -12,8 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog http://php.net/manual/en/function.implode.php#refsect1-function.implode-description
- * @changelog https://3v4l.org/iYTgh
* @see \Rector\Tests\CodingStyle\Rector\FuncCall\ConsistentImplodeRector\ConsistentImplodeRectorTest
*/
final class ConsistentImplodeRector extends AbstractRector
@@ -63,7 +61,7 @@ public function getNodeTypes() : array
*/
public function refactor(Node $node) : ?Node
{
- if (!$this->isName($node, 'implode')) {
+ if (!$this->isNames($node, ['implode', 'join'])) {
return null;
}
if ($node->isFirstClassCallable()) {
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php
new file mode 100644
index 000000000..524ec2650
--- /dev/null
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php
@@ -0,0 +1,96 @@
+>
+ */
+ public function getNodeTypes() : array
+ {
+ return [FuncCall::class];
+ }
+ public function refactorWithScope(Node $node, Scope $scope) : ?FuncCall
+ {
+ if (!$node instanceof FuncCall) {
+ return null;
+ }
+ if (!$node->name instanceof Name) {
+ return null;
+ }
+ if ($node->isFirstClassCallable()) {
+ return null;
+ }
+ $functionName = (string) $this->getName($node);
+ try {
+ $reflectionFunction = new ReflectionFunction($functionName);
+ } catch (ReflectionException $exception) {
+ return null;
+ }
+ $callableArgs = [];
+ foreach ($reflectionFunction->getParameters() as $reflectionParameter) {
+ if ($reflectionParameter->getType() instanceof ReflectionNamedType && $reflectionParameter->getType()->getName() === 'callable') {
+ $callableArgs[] = $reflectionParameter->getPosition();
+ }
+ }
+ $hasChanged = \false;
+ foreach ($node->getArgs() as $key => $arg) {
+ if (!\in_array($key, $callableArgs, \true)) {
+ continue;
+ }
+ if (!$arg->value instanceof String_) {
+ continue;
+ }
+ $node->args[$key] = new Arg(new FuncCall(new Name($arg->value->value), [new VariadicPlaceholder()]), \false, \false, [], $arg->name);
+ $hasChanged = \true;
+ }
+ return $hasChanged ? $node : null;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersion::PHP_81;
+ }
+}
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/Plus/UseIncrementAssignRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/Plus/UseIncrementAssignRector.php
deleted file mode 100644
index 7f1fef572..000000000
--- a/vendor/rector/rector/rules/CodingStyle/Rector/Plus/UseIncrementAssignRector.php
+++ /dev/null
@@ -1,65 +0,0 @@
->
- */
- public function getNodeTypes() : array
- {
- return [Plus::class, Minus::class];
- }
- /**
- * @param Plus|Minus $node
- */
- public function refactor(Node $node) : ?Node
- {
- if (!$node->expr instanceof LNumber) {
- return null;
- }
- if ($node->expr->value !== 1) {
- return null;
- }
- if ($node instanceof Plus) {
- return new PreInc($node->var);
- }
- return new PreDec($node->var);
- }
-}
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/Stmt/RemoveUselessAliasInUseStatementRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/Stmt/RemoveUselessAliasInUseStatementRector.php
index 9b6f07dfe..f1d93e4e4 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/Stmt/RemoveUselessAliasInUseStatementRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/Stmt/RemoveUselessAliasInUseStatementRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodingStyle\Rector\Stmt;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt\Namespace_;
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/String_/UseClassKeywordForClassNameResolutionRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/String_/UseClassKeywordForClassNameResolutionRector.php
index e2ecef775..990ebb79a 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/String_/UseClassKeywordForClassNameResolutionRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/String_/UseClassKeywordForClassNameResolutionRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\CodingStyle\Rector\String_;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Name\FullyQualified;
@@ -76,7 +76,7 @@ public function refactor(Node $node) : ?Node
*/
private function getParts(String_ $string, array $classNames) : array
{
- $quotedClassNames = \array_map('preg_quote', $classNames);
+ $quotedClassNames = \array_map(\Closure::fromCallable('preg_quote'), $classNames);
// @see https://regex101.com/r/8nGS0F/1
$parts = Strings::split($string->value, '#(' . \implode('|', $quotedClassNames) . ')#');
return \array_filter($parts, static function (string $className) : bool {
diff --git a/vendor/rector/rector/rules/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector.php b/vendor/rector/rector/rules/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector.php
index 1469e114d..5b630d61b 100644
--- a/vendor/rector/rector/rules/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector.php
+++ b/vendor/rector/rector/rules/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector.php
@@ -4,9 +4,11 @@
namespace Rector\CodingStyle\Rector\Use_;
use PhpParser\Node;
+use PhpParser\Node\Name;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\TraitUse;
+use PhpParser\Node\Stmt\TraitUseAdaptation\Alias;
use PhpParser\Node\Stmt\Use_;
use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
use Rector\Rector\AbstractRector;
@@ -101,7 +103,13 @@ private function refactorTraitUse(TraitUse $traitUse) : ?array
}
$traitUses = [];
foreach ($traitUse->traits as $singleTraitUse) {
- $traitUses[] = new TraitUse([$singleTraitUse]);
+ $adaptation = [];
+ foreach ($traitUse->adaptations as $traitAdaptation) {
+ if ($traitAdaptation instanceof Alias && $traitAdaptation->trait && $traitAdaptation->trait instanceof Name && $traitAdaptation->trait->toString() === $singleTraitUse->toString()) {
+ $adaptation[] = $traitAdaptation;
+ }
+ }
+ $traitUses[] = new TraitUse([$singleTraitUse], $adaptation);
}
return $traitUses;
}
diff --git a/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/CallCollectionAnalyzer.php b/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/CallCollectionAnalyzer.php
index dc4758b48..866a81de2 100644
--- a/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/CallCollectionAnalyzer.php
+++ b/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/CallCollectionAnalyzer.php
@@ -6,8 +6,10 @@
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\NullsafeMethodCall;
use PhpParser\Node\Expr\StaticCall;
+use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
+use PHPStan\Type\MixedType;
use PHPStan\Type\TypeWithClassName;
use Rector\Enum\ObjectReference;
use Rector\NodeNameResolver\NodeNameResolver;
@@ -38,6 +40,27 @@ public function isExists(array $calls, string $classMethodName, string $classNam
$callerRoot = $call instanceof StaticCall ? $call->class : $call->var;
$callerType = $this->nodeTypeResolver->getType($callerRoot);
if (!$callerType instanceof TypeWithClassName) {
+ // handle fluent by $this->bar()->baz()->qux()
+ // that methods don't have return type
+ if ($callerType instanceof MixedType && !$callerType->isExplicitMixed()) {
+ $cloneCallerRoot = clone $callerRoot;
+ $isFluent = \false;
+ // init
+ $methodCallNames = [];
+ // first append
+ $methodCallNames[] = (string) $this->nodeNameResolver->getName($call->name);
+ while ($cloneCallerRoot instanceof MethodCall) {
+ $methodCallNames[] = (string) $this->nodeNameResolver->getName($cloneCallerRoot->name);
+ if ($cloneCallerRoot->var instanceof Variable && $cloneCallerRoot->var->name === 'this') {
+ $isFluent = \true;
+ break;
+ }
+ $cloneCallerRoot = $cloneCallerRoot->var;
+ }
+ if ($isFluent && \in_array($classMethodName, $methodCallNames, \true)) {
+ return \true;
+ }
+ }
continue;
}
if ($this->isSelfStatic($call) && $this->shouldSkip($call, $classMethodName)) {
diff --git a/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/ExprUsedInNodeAnalyzer.php b/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/ExprUsedInNodeAnalyzer.php
index d35e0deb9..484aa23b0 100644
--- a/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/ExprUsedInNodeAnalyzer.php
+++ b/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/ExprUsedInNodeAnalyzer.php
@@ -4,11 +4,11 @@
namespace Rector\DeadCode\NodeAnalyzer;
use PhpParser\Node;
+use PhpParser\Node\Expr;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\Include_;
use PhpParser\Node\Expr\Variable;
use Rector\NodeAnalyzer\CompactFuncCallAnalyzer;
-use Rector\PhpParser\Printer\BetterStandardPrinter;
final class ExprUsedInNodeAnalyzer
{
/**
@@ -21,16 +21,10 @@ final class ExprUsedInNodeAnalyzer
* @var \Rector\NodeAnalyzer\CompactFuncCallAnalyzer
*/
private $compactFuncCallAnalyzer;
- /**
- * @readonly
- * @var \Rector\PhpParser\Printer\BetterStandardPrinter
- */
- private $betterStandardPrinter;
- public function __construct(\Rector\DeadCode\NodeAnalyzer\UsedVariableNameAnalyzer $usedVariableNameAnalyzer, CompactFuncCallAnalyzer $compactFuncCallAnalyzer, BetterStandardPrinter $betterStandardPrinter)
+ public function __construct(\Rector\DeadCode\NodeAnalyzer\UsedVariableNameAnalyzer $usedVariableNameAnalyzer, CompactFuncCallAnalyzer $compactFuncCallAnalyzer)
{
$this->usedVariableNameAnalyzer = $usedVariableNameAnalyzer;
$this->compactFuncCallAnalyzer = $compactFuncCallAnalyzer;
- $this->betterStandardPrinter = $betterStandardPrinter;
}
public function isUsed(Node $node, Variable $variable) : bool
{
@@ -38,11 +32,8 @@ public function isUsed(Node $node, Variable $variable) : bool
return \true;
}
// variable as variable variable need mark as used
- if ($node instanceof Variable) {
- $print = $this->betterStandardPrinter->print($node);
- if (\strncmp($print, '${$', \strlen('${$')) === 0) {
- return \true;
- }
+ if ($node instanceof Variable && $node->name instanceof Expr) {
+ return \true;
}
if ($node instanceof FuncCall) {
return $this->compactFuncCallAnalyzer->isInCompact($node, $variable);
diff --git a/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/IsClassMethodUsedAnalyzer.php b/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/IsClassMethodUsedAnalyzer.php
index 425ae30f3..2291ebd03 100644
--- a/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/IsClassMethodUsedAnalyzer.php
+++ b/vendor/rector/rector/rules/DeadCode/NodeAnalyzer/IsClassMethodUsedAnalyzer.php
@@ -121,7 +121,7 @@ private function isClassMethodCalledInLocalMethodCall(Class_ $class, string $cla
private function isClassMethodCalledInLocalNullsafeMethodCall(Class_ $class, string $classMethodName) : bool
{
$className = (string) $this->nodeNameResolver->getName($class);
- /** @var Node\Expr\NullsafeMethodCall[] $methodCalls */
+ /** @var NullsafeMethodCall[] $methodCalls */
$methodCalls = $this->betterNodeFinder->findInstanceOf($class, NullsafeMethodCall::class);
return $this->callCollectionAnalyzer->isExists($methodCalls, $classMethodName, $className);
}
diff --git a/vendor/rector/rector/rules/DeadCode/NodeManipulator/ClassMethodParamRemover.php b/vendor/rector/rector/rules/DeadCode/NodeManipulator/ClassMethodParamRemover.php
new file mode 100644
index 000000000..a95cbf91a
--- /dev/null
+++ b/vendor/rector/rector/rules/DeadCode/NodeManipulator/ClassMethodParamRemover.php
@@ -0,0 +1,44 @@
+paramAnalyzer = $paramAnalyzer;
+ $this->complexNodeRemover = $complexNodeRemover;
+ }
+ public function processRemoveParams(ClassMethod $classMethod) : ?ClassMethod
+ {
+ $paramKeysToBeRemoved = [];
+ foreach ($classMethod->params as $key => $param) {
+ if ($this->paramAnalyzer->isParamUsedInClassMethod($classMethod, $param)) {
+ continue;
+ }
+ $paramKeysToBeRemoved[] = $key;
+ }
+ if ($paramKeysToBeRemoved === []) {
+ return null;
+ }
+ $removedParamKeys = $this->complexNodeRemover->processRemoveParamWithKeys($classMethod, $paramKeysToBeRemoved);
+ if ($removedParamKeys !== []) {
+ return $classMethod;
+ }
+ return null;
+ }
+}
diff --git a/vendor/rector/rector/rules/DeadCode/PhpDoc/DeadVarTagValueNodeAnalyzer.php b/vendor/rector/rector/rules/DeadCode/PhpDoc/DeadVarTagValueNodeAnalyzer.php
index bf0ebc5a0..905617a85 100644
--- a/vendor/rector/rector/rules/DeadCode/PhpDoc/DeadVarTagValueNodeAnalyzer.php
+++ b/vendor/rector/rector/rules/DeadCode/PhpDoc/DeadVarTagValueNodeAnalyzer.php
@@ -6,6 +6,7 @@
use PhpParser\Node\Stmt\Property;
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
use PHPStan\Type\IntersectionType;
+use PHPStan\Type\ObjectType;
use PHPStan\Type\TypeCombinator;
use PHPStan\Type\UnionType;
use Rector\NodeTypeResolver\TypeComparator\TypeComparator;
@@ -41,6 +42,10 @@ public function isDead(VarTagValueNode $varTagValueNode, Property $property) : b
if ($propertyType instanceof UnionType && !$docType instanceof UnionType) {
return !$docType instanceof IntersectionType;
}
+ if ($propertyType instanceof ObjectType && $docType instanceof ObjectType) {
+ // more specific type is already in the property
+ return $docType->isSuperTypeOf($propertyType)->yes();
+ }
if ($this->typeComparator->arePhpParserAndPhpStanPhpDocTypesEqual($property->type, $varTagValueNode->type, $property)) {
return \true;
}
diff --git a/vendor/rector/rector/rules/DeadCode/PhpDoc/TagRemover/ParamTagRemover.php b/vendor/rector/rector/rules/DeadCode/PhpDoc/TagRemover/ParamTagRemover.php
index a2c11f61a..ded731da3 100644
--- a/vendor/rector/rector/rules/DeadCode/PhpDoc/TagRemover/ParamTagRemover.php
+++ b/vendor/rector/rector/rules/DeadCode/PhpDoc/TagRemover/ParamTagRemover.php
@@ -7,6 +7,7 @@
use PHPStan\PhpDocParser\Ast\Node;
use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode;
+use PHPStan\Type\Type;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\Comments\NodeDocBlock\DocBlockUpdater;
use Rector\DeadCode\PhpDoc\DeadParamTagValueNodeAnalyzer;
@@ -28,11 +29,11 @@ public function __construct(DeadParamTagValueNodeAnalyzer $deadParamTagValueNode
$this->deadParamTagValueNodeAnalyzer = $deadParamTagValueNodeAnalyzer;
$this->docBlockUpdater = $docBlockUpdater;
}
- public function removeParamTagsIfUseless(PhpDocInfo $phpDocInfo, FunctionLike $functionLike) : bool
+ public function removeParamTagsIfUseless(PhpDocInfo $phpDocInfo, FunctionLike $functionLike, ?Type $type = null) : bool
{
$hasChanged = \false;
$phpDocNodeTraverser = new PhpDocNodeTraverser();
- $phpDocNodeTraverser->traverseWithCallable($phpDocInfo->getPhpDocNode(), '', function (Node $docNode) use($functionLike, &$hasChanged) : ?int {
+ $phpDocNodeTraverser->traverseWithCallable($phpDocInfo->getPhpDocNode(), '', function (Node $docNode) use($functionLike, &$hasChanged, $type, $phpDocInfo) : ?int {
if (!$docNode instanceof PhpDocTagNode) {
return null;
}
@@ -43,6 +44,12 @@ public function removeParamTagsIfUseless(PhpDocInfo $phpDocInfo, FunctionLike $f
if ($docNode->name !== '@param') {
return null;
}
+ if ($type instanceof Type) {
+ $paramType = $phpDocInfo->getParamType($docNode->value->parameterName);
+ if (!$type->equals($paramType)) {
+ return null;
+ }
+ }
if (!$this->deadParamTagValueNodeAnalyzer->isDead($docNode->value, $functionLike)) {
return null;
}
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/Array_/RemoveDuplicatedArrayKeyRector.php b/vendor/rector/rector/rules/DeadCode/Rector/Array_/RemoveDuplicatedArrayKeyRector.php
index 0cd8c9e92..a1989fc8a 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/Array_/RemoveDuplicatedArrayKeyRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/Array_/RemoveDuplicatedArrayKeyRector.php
@@ -14,7 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/SG0Wu
* @see \Rector\Tests\DeadCode\Rector\Array_\RemoveDuplicatedArrayKeyRector\RemoveDuplicatedArrayKeyRectorTest
*/
final class RemoveDuplicatedArrayKeyRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/Assign/RemoveUnusedVariableAssignRector.php b/vendor/rector/rector/rules/DeadCode/Rector/Assign/RemoveUnusedVariableAssignRector.php
index 61ea27c1b..ce3f4389b 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/Assign/RemoveUnusedVariableAssignRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/Assign/RemoveUnusedVariableAssignRector.php
@@ -18,7 +18,7 @@
use PHPStan\Analyser\Scope;
use Rector\DeadCode\SideEffect\SideEffectNodeDetector;
use Rector\NodeAnalyzer\VariableAnalyzer;
-use Rector\NodeTypeResolver\Node\AttributeKey;
+use Rector\NodeManipulator\StmtsManipulator;
use Rector\Php\ReservedKeywordAnalyzer;
use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\Rector\AbstractScopeAwareRector;
@@ -49,12 +49,18 @@ final class RemoveUnusedVariableAssignRector extends AbstractScopeAwareRector
* @var \Rector\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
- public function __construct(ReservedKeywordAnalyzer $reservedKeywordAnalyzer, SideEffectNodeDetector $sideEffectNodeDetector, VariableAnalyzer $variableAnalyzer, BetterNodeFinder $betterNodeFinder)
+ /**
+ * @readonly
+ * @var \Rector\NodeManipulator\StmtsManipulator
+ */
+ private $stmtsManipulator;
+ public function __construct(ReservedKeywordAnalyzer $reservedKeywordAnalyzer, SideEffectNodeDetector $sideEffectNodeDetector, VariableAnalyzer $variableAnalyzer, BetterNodeFinder $betterNodeFinder, StmtsManipulator $stmtsManipulator)
{
$this->reservedKeywordAnalyzer = $reservedKeywordAnalyzer;
$this->sideEffectNodeDetector = $sideEffectNodeDetector;
$this->variableAnalyzer = $variableAnalyzer;
$this->betterNodeFinder = $betterNodeFinder;
+ $this->stmtsManipulator = $stmtsManipulator;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -101,7 +107,7 @@ public function refactorWithScope(Node $node, Scope $scope)
$assignedVariableNamesByStmtPosition = $this->resolvedAssignedVariablesByStmtPosition($stmts);
$hasChanged = \false;
foreach ($assignedVariableNamesByStmtPosition as $stmtPosition => $variableName) {
- if ($this->isVariableUsedInFollowingStmts($node, $stmtPosition, $variableName)) {
+ if ($this->stmtsManipulator->isVariableUsedInNextStmt($stmts, $stmtPosition + 1, $variableName)) {
continue;
}
/** @var Expression $currentStmt */
@@ -137,30 +143,6 @@ private function hasCallLikeInAssignExpr(Expr $expr, Scope $scope) : bool
return $this->sideEffectNodeDetector->detectCallExpr($subNode, $scope);
});
}
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
- */
- private function isVariableUsedInFollowingStmts($functionLike, int $assignStmtPosition, string $variableName) : bool
- {
- if ($functionLike->stmts === null) {
- return \false;
- }
- foreach ($functionLike->stmts as $key => $stmt) {
- // do not look yet
- if ($key <= $assignStmtPosition) {
- continue;
- }
- $stmtScope = $stmt->getAttribute(AttributeKey::SCOPE);
- if (!$stmtScope instanceof Scope) {
- continue;
- }
- $foundVariable = $this->betterNodeFinder->findVariableOfName($stmt, $variableName);
- if ($foundVariable instanceof Variable) {
- return \true;
- }
- }
- return \false;
- }
/**
* @param Stmt[] $stmts
*/
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/ClassLike/RemoveAnnotationRector.php b/vendor/rector/rector/rules/DeadCode/Rector/ClassLike/RemoveAnnotationRector.php
index 65ded3d9f..568759f07 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/ClassLike/RemoveAnnotationRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/ClassLike/RemoveAnnotationRector.php
@@ -17,7 +17,7 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\DeadCode\Rector\ClassLike\RemoveAnnotationRector\RemoveAnnotationRectorTest
*/
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php b/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php
index e76b67130..a0939c5da 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php
@@ -7,10 +7,10 @@
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Reflection\ClassReflection;
+use Rector\DeadCode\NodeManipulator\ClassMethodParamRemover;
use Rector\NodeAnalyzer\ParamAnalyzer;
use Rector\Rector\AbstractRector;
use Rector\Reflection\ReflectionResolver;
-use Rector\Removing\NodeManipulator\ComplexNodeRemover;
use Rector\ValueObject\MethodName;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@@ -26,19 +26,19 @@ final class RemoveUnusedConstructorParamRector extends AbstractRector
private $paramAnalyzer;
/**
* @readonly
- * @var \Rector\Removing\NodeManipulator\ComplexNodeRemover
+ * @var \Rector\Reflection\ReflectionResolver
*/
- private $complexNodeRemover;
+ private $reflectionResolver;
/**
* @readonly
- * @var \Rector\Reflection\ReflectionResolver
+ * @var \Rector\DeadCode\NodeManipulator\ClassMethodParamRemover
*/
- private $reflectionResolver;
- public function __construct(ParamAnalyzer $paramAnalyzer, ComplexNodeRemover $complexNodeRemover, ReflectionResolver $reflectionResolver)
+ private $classMethodParamRemover;
+ public function __construct(ParamAnalyzer $paramAnalyzer, ReflectionResolver $reflectionResolver, ClassMethodParamRemover $classMethodParamRemover)
{
$this->paramAnalyzer = $paramAnalyzer;
- $this->complexNodeRemover = $complexNodeRemover;
$this->reflectionResolver = $reflectionResolver;
+ $this->classMethodParamRemover = $classMethodParamRemover;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -101,28 +101,10 @@ public function refactor(Node $node) : ?Node
return null;
}
}
- $changedConstructorClassMethod = $this->processRemoveParams($constructorClassMethod);
+ $changedConstructorClassMethod = $this->classMethodParamRemover->processRemoveParams($constructorClassMethod);
if (!$changedConstructorClassMethod instanceof ClassMethod) {
return null;
}
return $node;
}
- private function processRemoveParams(ClassMethod $classMethod) : ?ClassMethod
- {
- $paramKeysToBeRemoved = [];
- foreach ($classMethod->params as $key => $param) {
- if ($this->paramAnalyzer->isParamUsedInClassMethod($classMethod, $param)) {
- continue;
- }
- $paramKeysToBeRemoved[] = $key;
- }
- if ($paramKeysToBeRemoved === []) {
- return null;
- }
- $removedParamKeys = $this->complexNodeRemover->processRemoveParamWithKeys($classMethod, $paramKeysToBeRemoved);
- if ($removedParamKeys !== []) {
- return $classMethod;
- }
- return null;
- }
}
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPromotedPropertyRector.php b/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPromotedPropertyRector.php
index 6d2a9f301..ac56943d0 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPromotedPropertyRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPromotedPropertyRector.php
@@ -9,7 +9,12 @@
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\TraitUse;
use PHPStan\Analyser\Scope;
+use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode;
use PHPStan\Reflection\ClassReflection;
+use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
+use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
+use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
+use Rector\Comments\NodeDocBlock\DocBlockUpdater;
use Rector\DeadCode\NodeAnalyzer\PropertyWriteonlyAnalyzer;
use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\PhpParser\NodeFinder\PropertyFetchFinder;
@@ -52,13 +57,31 @@ final class RemoveUnusedPromotedPropertyRector extends AbstractScopeAwareRector
* @var \Rector\Reflection\ReflectionResolver
*/
private $reflectionResolver;
- public function __construct(PropertyFetchFinder $propertyFetchFinder, VisibilityManipulator $visibilityManipulator, PropertyWriteonlyAnalyzer $propertyWriteonlyAnalyzer, BetterNodeFinder $betterNodeFinder, ReflectionResolver $reflectionResolver)
+ /**
+ * @readonly
+ * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
+ */
+ private $phpDocInfoFactory;
+ /**
+ * @readonly
+ * @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
+ */
+ private $phpDocTagRemover;
+ /**
+ * @readonly
+ * @var \Rector\Comments\NodeDocBlock\DocBlockUpdater
+ */
+ private $docBlockUpdater;
+ public function __construct(PropertyFetchFinder $propertyFetchFinder, VisibilityManipulator $visibilityManipulator, PropertyWriteonlyAnalyzer $propertyWriteonlyAnalyzer, BetterNodeFinder $betterNodeFinder, ReflectionResolver $reflectionResolver, PhpDocInfoFactory $phpDocInfoFactory, PhpDocTagRemover $phpDocTagRemover, DocBlockUpdater $docBlockUpdater)
{
$this->propertyFetchFinder = $propertyFetchFinder;
$this->visibilityManipulator = $visibilityManipulator;
$this->propertyWriteonlyAnalyzer = $propertyWriteonlyAnalyzer;
$this->betterNodeFinder = $betterNodeFinder;
$this->reflectionResolver = $reflectionResolver;
+ $this->phpDocInfoFactory = $phpDocInfoFactory;
+ $this->phpDocTagRemover = $phpDocTagRemover;
+ $this->docBlockUpdater = $docBlockUpdater;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -116,6 +139,7 @@ public function refactorWithScope(Node $node, Scope $scope) : ?Node
return null;
}
$hasChanged = \false;
+ $phpDocInfo = $this->phpDocInfoFactory->createFromNode($constructClassMethod);
foreach ($constructClassMethod->params as $key => $param) {
// only private local scope; removing public property might be dangerous
if (!$this->visibilityManipulator->hasVisibility($param, Visibility::PRIVATE)) {
@@ -129,15 +153,23 @@ public function refactorWithScope(Node $node, Scope $scope) : ?Node
if (!$this->propertyWriteonlyAnalyzer->arePropertyFetchesExclusivelyBeingAssignedTo($propertyFetches)) {
continue;
}
+ // always changed on below code
+ $hasChanged = \true;
// is variable used? only remove property, keep param
$variable = $this->betterNodeFinder->findVariableOfName((array) $constructClassMethod->stmts, $paramName);
if ($variable instanceof Variable) {
$param->flags = 0;
continue;
}
+ if ($phpDocInfo instanceof PhpDocInfo) {
+ $paramTagValueNode = $phpDocInfo->getParamTagValueByName($paramName);
+ if ($paramTagValueNode instanceof ParamTagValueNode) {
+ $this->phpDocTagRemover->removeTagValueFromNode($phpDocInfo, $paramTagValueNode);
+ $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($constructClassMethod);
+ }
+ }
// remove param
unset($constructClassMethod->params[$key]);
- $hasChanged = \true;
}
if ($hasChanged) {
return $node;
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPublicMethodParameterRector.php b/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPublicMethodParameterRector.php
new file mode 100644
index 000000000..733d00ed0
--- /dev/null
+++ b/vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPublicMethodParameterRector.php
@@ -0,0 +1,121 @@
+variadicFunctionLikeDetector = $variadicFunctionLikeDetector;
+ $this->classMethodParamRemover = $classMethodParamRemover;
+ $this->magicClassMethodAnalyzer = $magicClassMethodAnalyzer;
+ $this->phpAttributeAnalyzer = $phpAttributeAnalyzer;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Remove unused parameter in public method on final class without extends and interface', [new CodeSample(<<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function run($a, $b)
+ {
+ echo $a;
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function run($a)
+ {
+ echo $a;
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [Class_::class];
+ }
+ /**
+ * @param Class_ $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ // may have child, or override parent that needs to follow the signature
+ if (!$node->isFinal() || $node->extends instanceof FullyQualified || $node->implements !== []) {
+ return null;
+ }
+ $hasChanged = \false;
+ foreach ($node->getMethods() as $classMethod) {
+ if ($this->shouldSkipClassMethod($classMethod, $node)) {
+ continue;
+ }
+ $changedMethod = $this->classMethodParamRemover->processRemoveParams($classMethod);
+ if (!$changedMethod instanceof ClassMethod) {
+ continue;
+ }
+ $hasChanged = \true;
+ }
+ if ($hasChanged) {
+ return $node;
+ }
+ return null;
+ }
+ private function shouldSkipClassMethod(ClassMethod $classMethod, Class_ $class) : bool
+ {
+ // private method is handled by different rule
+ if (!$classMethod->isPublic()) {
+ return \true;
+ }
+ if ($classMethod->params === []) {
+ return \true;
+ }
+ // parameter is required for contract coupling
+ if ($this->isName($classMethod->name, '__invoke') && $this->phpAttributeAnalyzer->hasPhpAttribute($class, 'Symfony\\Component\\Messenger\\Attribute\\AsMessageHandler')) {
+ return \true;
+ }
+ if ($this->magicClassMethodAnalyzer->isUnsafeOverridden($classMethod)) {
+ return \true;
+ }
+ return $this->variadicFunctionLikeDetector->isVariadic($classMethod);
+ }
+}
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/For_/RemoveDeadIfForeachForRector.php b/vendor/rector/rector/rules/DeadCode/Rector/For_/RemoveDeadIfForeachForRector.php
index da31b6a45..fbdb0b8dc 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/For_/RemoveDeadIfForeachForRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/For_/RemoveDeadIfForeachForRector.php
@@ -136,10 +136,11 @@ private function processIf(If_ $if, int $key, StmtsAwareInterface $stmtsAware) :
*/
private function processForForeach($for, int $key, StmtsAwareInterface $stmtsAware) : void
{
+ $stmts = (array) $stmtsAware->stmts;
if ($for instanceof For_) {
$variables = $this->betterNodeFinder->findInstanceOf(\array_merge($for->init, $for->cond, $for->loop), Variable::class);
foreach ($variables as $variable) {
- if ($this->stmtsManipulator->isVariableUsedInNextStmt($stmtsAware, $key + 1, (string) $this->getName($variable))) {
+ if ($this->stmtsManipulator->isVariableUsedInNextStmt($stmts, $key + 1, (string) $this->getName($variable))) {
return;
}
}
@@ -150,7 +151,7 @@ private function processForForeach($for, int $key, StmtsAwareInterface $stmtsAwa
$exprs = \array_filter([$for->expr, $for->valueVar, $for->valueVar]);
$variables = $this->betterNodeFinder->findInstanceOf($exprs, Variable::class);
foreach ($variables as $variable) {
- if ($this->stmtsManipulator->isVariableUsedInNextStmt($stmtsAware, $key + 1, (string) $this->getName($variable))) {
+ if ($this->stmtsManipulator->isVariableUsedInNextStmt($stmts, $key + 1, (string) $this->getName($variable))) {
return;
}
}
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/Foreach_/RemoveUnusedForeachKeyRector.php b/vendor/rector/rector/rules/DeadCode/Rector/Foreach_/RemoveUnusedForeachKeyRector.php
index a38dddff5..deb5fd321 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/Foreach_/RemoveUnusedForeachKeyRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/Foreach_/RemoveUnusedForeachKeyRector.php
@@ -7,6 +7,10 @@
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Foreach_;
use PhpParser\NodeFinder;
+use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
+use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
+use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
+use Rector\Comments\NodeDocBlock\DocBlockUpdater;
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
use Rector\NodeManipulator\StmtsManipulator;
use Rector\Rector\AbstractRector;
@@ -27,10 +31,22 @@ final class RemoveUnusedForeachKeyRector extends AbstractRector
* @var \Rector\NodeManipulator\StmtsManipulator
*/
private $stmtsManipulator;
- public function __construct(NodeFinder $nodeFinder, StmtsManipulator $stmtsManipulator)
+ /**
+ * @readonly
+ * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
+ */
+ private $phpDocInfoFactory;
+ /**
+ * @readonly
+ * @var \Rector\Comments\NodeDocBlock\DocBlockUpdater
+ */
+ private $docBlockUpdater;
+ public function __construct(NodeFinder $nodeFinder, StmtsManipulator $stmtsManipulator, PhpDocInfoFactory $phpDocInfoFactory, DocBlockUpdater $docBlockUpdater)
{
$this->nodeFinder = $nodeFinder;
$this->stmtsManipulator = $stmtsManipulator;
+ $this->phpDocInfoFactory = $phpDocInfoFactory;
+ $this->docBlockUpdater = $docBlockUpdater;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -78,11 +94,24 @@ public function refactor(Node $node) : ?Node
if ($isNodeUsed) {
continue;
}
- if ($this->stmtsManipulator->isVariableUsedInNextStmt($node, $key + 1, (string) $this->getName($keyVar))) {
+ $keyVarName = (string) $this->getName($keyVar);
+ if ($this->stmtsManipulator->isVariableUsedInNextStmt($node, $key + 1, $keyVarName)) {
continue;
}
$stmt->keyVar = null;
$hasChanged = \true;
+ $phpDocInfo = $this->phpDocInfoFactory->createFromNode($stmt);
+ if (!$phpDocInfo instanceof PhpDocInfo) {
+ continue;
+ }
+ $varTagValues = $phpDocInfo->getPhpDocNode()->getVarTagValues();
+ foreach ($varTagValues as $varTagValue) {
+ $variableName = $varTagValue->variableName;
+ if ($varTagValue->variableName === '$' . $keyVarName) {
+ $phpDocInfo->removeByType(VarTagValueNode::class, $variableName);
+ $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($stmt);
+ }
+ }
}
if ($hasChanged) {
return $node;
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php b/vendor/rector/rector/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php
index 7bc87eb4f..2138bea87 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php
@@ -8,14 +8,18 @@
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
+use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\PropertyFetch;
+use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\StaticPropertyFetch;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Else_;
use PhpParser\Node\Stmt\If_;
use PhpParser\NodeTraverser;
+use PHPStan\Type\ArrayType;
use PHPStan\Type\Constant\ConstantBooleanType;
+use PHPStan\Type\IntersectionType;
use Rector\DeadCode\NodeAnalyzer\SafeLeftTypeBooleanAndOrAnalyzer;
use Rector\NodeAnalyzer\ExprAnalyzer;
use Rector\PhpParser\Node\BetterNodeFinder;
@@ -109,7 +113,7 @@ public function refactor(Node $node)
if ($this->shouldSkipExpr($node->cond)) {
return null;
}
- if ($this->shouldSkipFromParam($node->cond)) {
+ if ($this->shouldSkipFromVariable($node->cond)) {
return null;
}
$hasAssign = (bool) $this->betterNodeFinder->findFirstInstanceOf($node->cond, Assign::class);
@@ -121,7 +125,7 @@ public function refactor(Node $node)
}
return $node->stmts;
}
- private function shouldSkipFromParam(Expr $expr) : bool
+ private function shouldSkipFromVariable(Expr $expr) : bool
{
/** @var Variable[] $variables */
$variables = $this->betterNodeFinder->findInstancesOf($expr, [Variable::class]);
@@ -129,12 +133,20 @@ private function shouldSkipFromParam(Expr $expr) : bool
if ($this->exprAnalyzer->isNonTypedFromParam($variable)) {
return \true;
}
+ $type = $this->getType($variable);
+ if ($type instanceof IntersectionType) {
+ foreach ($type->getTypes() as $subType) {
+ if ($subType instanceof ArrayType) {
+ return \true;
+ }
+ }
+ }
}
return \false;
}
private function shouldSkipExpr(Expr $expr) : bool
{
- return (bool) $this->betterNodeFinder->findInstancesOf($expr, [PropertyFetch::class, StaticPropertyFetch::class, ArrayDimFetch::class]);
+ return (bool) $this->betterNodeFinder->findInstancesOf($expr, [PropertyFetch::class, StaticPropertyFetch::class, ArrayDimFetch::class, MethodCall::class, StaticCall::class]);
}
private function refactorIfWithBooleanAnd(If_ $if) : ?If_
{
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/If_/RemoveDeadInstanceOfRector.php b/vendor/rector/rector/rules/DeadCode/Rector/If_/RemoveDeadInstanceOfRector.php
index 79bfa6090..e74127643 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/If_/RemoveDeadInstanceOfRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/If_/RemoveDeadInstanceOfRector.php
@@ -19,6 +19,7 @@
use PhpParser\NodeTraverser;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Type\MixedType;
+use PHPStan\Type\ObjectType;
use Rector\NodeManipulator\IfManipulator;
use Rector\Rector\AbstractRector;
use Rector\Reflection\ReflectionResolver;
@@ -140,12 +141,12 @@ private function isInstanceofTheSameType(Instanceof_ $instanceof) : ?bool
if ($classReflection instanceof ClassReflection && $classReflection->isTrait()) {
return null;
}
- $classType = $this->nodeTypeResolver->getType($instanceof->class);
$exprType = $this->nodeTypeResolver->getNativeType($instanceof->expr);
- if ($classType->equals($exprType)) {
- return \true;
+ if (!$exprType instanceof ObjectType) {
+ return null;
}
- return $classType->isSuperTypeOf($exprType)->yes();
+ $className = $instanceof->class->toString();
+ return $exprType->isInstanceOf($className)->yes();
}
private function refactorIfWithBooleanAnd(If_ $if) : ?\PhpParser\Node\Stmt\If_
{
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/If_/UnwrapFutureCompatibleIfPhpVersionRector.php b/vendor/rector/rector/rules/DeadCode/Rector/If_/UnwrapFutureCompatibleIfPhpVersionRector.php
index 71fde31b2..c2d986fc4 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/If_/UnwrapFutureCompatibleIfPhpVersionRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/If_/UnwrapFutureCompatibleIfPhpVersionRector.php
@@ -15,8 +15,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.php.net/manual/en/function.version-compare.php
- *
* @see \Rector\Tests\DeadCode\Rector\If_\UnwrapFutureCompatibleIfPhpVersionRector\UnwrapFutureCompatibleIfPhpVersionRectorTest
*/
final class UnwrapFutureCompatibleIfPhpVersionRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php b/vendor/rector/rector/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php
index 06e7b8a5d..8f93d62a4 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php
@@ -34,8 +34,6 @@
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\Tests\DeadCode\Rector\Node\RemoveNonExistingVarAnnotationRector\RemoveNonExistingVarAnnotationRectorTest
- *
- * @changelog https://github.com/phpstan/phpstan/commit/d17e459fd9b45129c5deafe12bca56f30ea5ee99#diff-9f3541876405623b0d18631259763dc1
*/
final class RemoveNonExistingVarAnnotationRector extends AbstractRector
{
@@ -149,6 +147,9 @@ public function refactor(Node $node) : ?Node
// skip edge case with double comment, as impossible to resolve by PHPStan doc parser
continue;
}
+ if ($this->stmtsManipulator->isVariableUsedInNextStmt($node, $key + 1, $variableName)) {
+ continue;
+ }
$phpDocInfo->removeByType(VarTagValueNode::class);
$this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($stmt);
$hasChanged = \true;
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php b/vendor/rector/rector/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php
index fe11fba18..67cb0ff71 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php
@@ -22,8 +22,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/I0BGs
- *
* @see \Rector\Tests\DeadCode\Rector\Plus\RemoveDeadZeroAndOneOperationRector\RemoveDeadZeroAndOneOperationRectorTest
*/
final class RemoveDeadZeroAndOneOperationRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/DeadCode/Rector/Property/RemoveUselessReadOnlyTagRector.php b/vendor/rector/rector/rules/DeadCode/Rector/Property/RemoveUselessReadOnlyTagRector.php
index 005664bff..cf0b6ff17 100644
--- a/vendor/rector/rector/rules/DeadCode/Rector/Property/RemoveUselessReadOnlyTagRector.php
+++ b/vendor/rector/rector/rules/DeadCode/Rector/Property/RemoveUselessReadOnlyTagRector.php
@@ -13,12 +13,14 @@
use Rector\Comments\NodeDocBlock\DocBlockUpdater;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\Rector\AbstractRector;
+use Rector\ValueObject\PhpVersionFeature;
+use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\Tests\DeadCode\Rector\Property\RemoveUselessReadOnlyTagRector\RemoveUselessReadOnlyTagRectorTest
*/
-final class RemoveUselessReadOnlyTagRector extends AbstractRector
+final class RemoveUselessReadOnlyTagRector extends AbstractRector implements MinPhpVersionInterface
{
/**
* @readonly
@@ -104,4 +106,8 @@ public function refactor(Node $node) : ?Node
$this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);
return $node;
}
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::READONLY_PROPERTY;
+ }
}
diff --git a/vendor/rector/rector/rules/DeadCode/SideEffect/PureFunctionDetector.php b/vendor/rector/rector/rules/DeadCode/SideEffect/PureFunctionDetector.php
index 7ddedb837..4d655ad2b 100644
--- a/vendor/rector/rector/rules/DeadCode/SideEffect/PureFunctionDetector.php
+++ b/vendor/rector/rector/rules/DeadCode/SideEffect/PureFunctionDetector.php
@@ -21,223 +21,6 @@ final class PureFunctionDetector
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
- /**
- * @see https://github.com/vimeo/psalm/blob/d470903722cfcbc1cd04744c5491d3e6d13ec3d9/src/Psalm/Internal/Codebase/Functions.php#L288
- * @var string[]
- */
- private const IMPURE_FUNCTIONS = [
- 'chdir',
- 'chgrp',
- 'chmod',
- 'chown',
- 'chroot',
- 'closedir',
- 'copy',
- 'file_put_contents',
- 'fopen',
- 'fread',
- 'fwrite',
- 'fclose',
- 'touch',
- 'fpassthru',
- 'fputs',
- 'fscanf',
- 'fseek',
- 'ftruncate',
- 'fprintf',
- 'symlink',
- 'mkdir',
- 'unlink',
- 'rename',
- 'rmdir',
- 'popen',
- 'pclose',
- 'fputcsv',
- 'umask',
- 'finfo_close',
- 'readline_add_history',
- 'stream_set_timeout',
- 'fflush',
- // stream/socket io
- 'stream_context_set_option',
- 'socket_write',
- 'stream_set_blocking',
- 'socket_close',
- 'socket_set_option',
- 'stream_set_write_buffer',
- // meta calls
- 'call_user_func',
- 'call_user_func_array',
- 'define',
- 'create_function',
- // http
- 'header',
- 'header_remove',
- 'http_response_code',
- 'setcookie',
- 'file_get_contents',
- // output buffer
- 'ob_start',
- 'ob_end_clean',
- 'ob_get_clean',
- 'readfile',
- 'printf',
- 'var_dump',
- 'phpinfo',
- 'ob_implicit_flush',
- 'vprintf',
- // mcrypt
- 'mcrypt_generic_init',
- 'mcrypt_generic_deinit',
- 'mcrypt_module_close',
- // internal optimisation
- 'opcache_compile_file',
- 'clearstatcache',
- // process-related
- 'pcntl_signal',
- 'posix_kill',
- 'cli_set_process_title',
- 'pcntl_async_signals',
- 'proc_close',
- 'proc_nice',
- 'proc_open',
- 'proc_terminate',
- // curl
- 'curl_setopt',
- 'curl_close',
- 'curl_multi_add_handle',
- 'curl_multi_remove_handle',
- 'curl_multi_select',
- 'curl_multi_close',
- 'curl_setopt_array',
- // apc, apcu
- 'apc_store',
- 'apc_delete',
- 'apc_clear_cache',
- 'apc_add',
- 'apc_inc',
- 'apc_dec',
- 'apc_cas',
- 'apcu_store',
- 'apcu_delete',
- 'apcu_clear_cache',
- 'apcu_add',
- 'apcu_inc',
- 'apcu_dec',
- 'apcu_cas',
- // gz
- 'gzwrite',
- 'gzrewind',
- 'gzseek',
- 'gzclose',
- // newrelic
- 'newrelic_start_transaction',
- 'newrelic_name_transaction',
- 'newrelic_add_custom_parameter',
- 'newrelic_add_custom_tracer',
- 'newrelic_background_job',
- 'newrelic_end_transaction',
- 'newrelic_set_appname',
- // execution
- 'shell_exec',
- 'exec',
- 'system',
- 'passthru',
- 'pcntl_exec',
- // well-known functions
- 'libxml_use_internal_errors',
- 'libxml_disable_entity_loader',
- 'curl_exec',
- 'mt_srand',
- 'openssl_pkcs7_sign',
- 'openssl_sign',
- 'mt_rand',
- 'rand',
- 'random_int',
- 'random_bytes',
- 'wincache_ucache_delete',
- 'wincache_ucache_set',
- 'wincache_ucache_inc',
- 'class_alias',
- // php environment
- 'ini_set',
- 'sleep',
- 'usleep',
- 'register_shutdown_function',
- 'error_reporting',
- 'register_tick_function',
- 'unregister_tick_function',
- 'set_error_handler',
- 'user_error',
- 'trigger_error',
- 'restore_error_handler',
- 'date_default_timezone_set',
- 'assert_options',
- 'setlocale',
- 'set_exception_handler',
- 'set_time_limit',
- 'putenv',
- 'spl_autoload_register',
- 'microtime',
- 'array_rand',
- // logging
- 'openlog',
- 'syslog',
- 'error_log',
- 'define_syslog_variables',
- // session
- 'session_id',
- 'session_name',
- 'session_set_cookie_params',
- 'session_set_save_handler',
- 'session_regenerate_id',
- 'mb_internal_encoding',
- 'session_start',
- // ldap
- 'ldap_set_option',
- // iterators
- 'rewind',
- 'iterator_apply',
- // mysqli
- 'mysqli_select_db',
- 'mysqli_dump_debug_info',
- 'mysqli_kill',
- 'mysqli_multi_query',
- 'mysqli_next_result',
- 'mysqli_options',
- 'mysqli_ping',
- 'mysqli_query',
- 'mysqli_report',
- 'mysqli_rollback',
- 'mysqli_savepoint',
- 'mysqli_set_charset',
- 'mysqli_ssl_set',
- // postgres
- 'pg_exec',
- 'pg_execute',
- 'pg_connect',
- 'pg_query_params',
- // ftp
- 'ftp_close',
- // bcmath
- 'bcscale',
- 'bcdiv',
- // json
- 'json_encode',
- 'json_decode',
- 'json_last_error',
- // array
- 'array_pop',
- 'array_push',
- 'array_shift',
- 'array_splice',
- 'next',
- 'prev',
- 'sort',
- 'ksort',
- // stream
- 'stream_filter_append',
- ];
public function __construct(NodeNameResolver $nodeNameResolver, ReflectionProvider $reflectionProvider)
{
$this->nodeNameResolver = $nodeNameResolver;
@@ -258,6 +41,7 @@ public function detect(FuncCall $funcCall, Scope $scope) : bool
if (!$functionReflection instanceof NativeFunctionReflection) {
return \false;
}
- return !\in_array($funcCallName, self::IMPURE_FUNCTIONS, \true);
+ // yes() and maybe() may have side effect
+ return $functionReflection->hasSideEffects()->no();
}
}
diff --git a/vendor/rector/rector/rules/DeadCode/SideEffect/SideEffectNodeDetector.php b/vendor/rector/rector/rules/DeadCode/SideEffect/SideEffectNodeDetector.php
index 69338fa6e..92cbcb4d7 100644
--- a/vendor/rector/rector/rules/DeadCode/SideEffect/SideEffectNodeDetector.php
+++ b/vendor/rector/rector/rules/DeadCode/SideEffect/SideEffectNodeDetector.php
@@ -3,74 +3,51 @@
declare (strict_types=1);
namespace Rector\DeadCode\SideEffect;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\Assign;
-use PhpParser\Node\Expr\BinaryOp\Concat;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Expr\NullsafeMethodCall;
-use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
-use PhpParser\Node\Scalar\Encapsed;
use PHPStan\Analyser\Scope;
-use PHPStan\Type\ConstantType;
use PHPStan\Type\ObjectType;
-use Rector\NodeTypeResolver\NodeTypeResolver;
+use Rector\PhpParser\Node\BetterNodeFinder;
final class SideEffectNodeDetector
{
- /**
- * @readonly
- * @var \Rector\NodeTypeResolver\NodeTypeResolver
- */
- private $nodeTypeResolver;
/**
* @readonly
* @var \Rector\DeadCode\SideEffect\PureFunctionDetector
*/
private $pureFunctionDetector;
/**
- * @var array>
+ * @readonly
+ * @var \Rector\PhpParser\Node\BetterNodeFinder
*/
- private const SIDE_EFFECT_NODE_TYPES = [Encapsed::class, New_::class, Concat::class, PropertyFetch::class];
+ private $betterNodeFinder;
/**
* @var array>
*/
private const CALL_EXPR_SIDE_EFFECT_NODE_TYPES = [MethodCall::class, New_::class, NullsafeMethodCall::class, StaticCall::class];
- public function __construct(NodeTypeResolver $nodeTypeResolver, \Rector\DeadCode\SideEffect\PureFunctionDetector $pureFunctionDetector)
+ public function __construct(\Rector\DeadCode\SideEffect\PureFunctionDetector $pureFunctionDetector, BetterNodeFinder $betterNodeFinder)
{
- $this->nodeTypeResolver = $nodeTypeResolver;
$this->pureFunctionDetector = $pureFunctionDetector;
+ $this->betterNodeFinder = $betterNodeFinder;
}
public function detect(Expr $expr, Scope $scope) : bool
{
if ($expr instanceof Assign) {
return \true;
}
- foreach (self::SIDE_EFFECT_NODE_TYPES as $sideEffectNodeType) {
- if ($expr instanceof $sideEffectNodeType) {
- return \false;
- }
- }
- $exprStaticType = $this->nodeTypeResolver->getType($expr);
- if ($exprStaticType instanceof ConstantType) {
- return \false;
- }
- if ($expr instanceof FuncCall) {
- return !$this->pureFunctionDetector->detect($expr, $scope);
- }
- if ($expr instanceof Variable || $expr instanceof ArrayDimFetch) {
- $variable = $this->resolveVariable($expr);
- // variables don't have side effects
- return !$variable instanceof Variable;
- }
- return \true;
+ return (bool) $this->betterNodeFinder->findFirst($expr, function (Node $subNode) use($scope) : bool {
+ return $this->detectCallExpr($subNode, $scope);
+ });
}
public function detectCallExpr(Node $node, Scope $scope) : bool
{
@@ -90,6 +67,11 @@ public function detectCallExpr(Node $node, Scope $scope) : bool
if ($node instanceof FuncCall) {
return !$this->pureFunctionDetector->detect($node, $scope);
}
+ if ($node instanceof Variable || $node instanceof ArrayDimFetch) {
+ $variable = $this->resolveVariable($node);
+ // variables don't have side effects
+ return !$variable instanceof Variable;
+ }
return \false;
}
private function isPhpParser(New_ $new) : bool
diff --git a/vendor/rector/rector/rules/EarlyReturn/NodeAnalyzer/IfAndAnalyzer.php b/vendor/rector/rector/rules/EarlyReturn/NodeAnalyzer/IfAndAnalyzer.php
deleted file mode 100644
index 5be20fb06..000000000
--- a/vendor/rector/rector/rules/EarlyReturn/NodeAnalyzer/IfAndAnalyzer.php
+++ /dev/null
@@ -1,49 +0,0 @@
-betterNodeFinder = $betterNodeFinder;
- $this->nodeComparator = $nodeComparator;
- }
- public function isIfAndWithInstanceof(BooleanAnd $booleanAnd) : bool
- {
- if (!$booleanAnd->left instanceof Instanceof_) {
- return \false;
- }
- // only one instanceof check
- return !$booleanAnd->right instanceof Instanceof_;
- }
- public function isIfStmtExprUsedInNextReturn(If_ $if, Return_ $return) : bool
- {
- if (!$return->expr instanceof Expr) {
- return \false;
- }
- $ifExprs = $this->betterNodeFinder->findInstanceOf($if->stmts, Expr::class);
- return (bool) $this->betterNodeFinder->findFirst($return->expr, function (Node $node) use($ifExprs) : bool {
- return $this->nodeComparator->isNodeEqual($node, $ifExprs);
- });
- }
-}
diff --git a/vendor/rector/rector/rules/EarlyReturn/NodeAnalyzer/SimpleScalarAnalyzer.php b/vendor/rector/rector/rules/EarlyReturn/NodeAnalyzer/SimpleScalarAnalyzer.php
deleted file mode 100644
index 77ade0c9f..000000000
--- a/vendor/rector/rector/rules/EarlyReturn/NodeAnalyzer/SimpleScalarAnalyzer.php
+++ /dev/null
@@ -1,20 +0,0 @@
-items === []) {
- return \true;
- }
- // empty string
- return $expr instanceof String_ && $expr->value === '';
- }
-}
diff --git a/vendor/rector/rector/rules/EarlyReturn/NodeFactory/InvertedIfFactory.php b/vendor/rector/rector/rules/EarlyReturn/NodeFactory/InvertedIfFactory.php
deleted file mode 100644
index e9a6704d7..000000000
--- a/vendor/rector/rector/rules/EarlyReturn/NodeFactory/InvertedIfFactory.php
+++ /dev/null
@@ -1,53 +0,0 @@
-conditionInverter = $conditionInverter;
- $this->contextAnalyzer = $contextAnalyzer;
- }
- /**
- * @param Expr[] $conditions
- * @return If_[]
- */
- public function createFromConditions(If_ $if, array $conditions, Return_ $return, ?Stmt $ifNextReturnStmt) : array
- {
- $ifs = [];
- $stmt = $this->contextAnalyzer->isInLoop($if) && !$ifNextReturnStmt instanceof Return_ ? [new Continue_()] : [$return];
- if ($ifNextReturnStmt instanceof Return_) {
- $stmt[0]->setAttribute(AttributeKey::COMMENTS, $ifNextReturnStmt->getAttribute(AttributeKey::COMMENTS));
- }
- if ($ifNextReturnStmt instanceof Return_ && $ifNextReturnStmt->expr instanceof Expr) {
- $return->expr = $ifNextReturnStmt->expr;
- }
- foreach ($conditions as $condition) {
- $invertedCondition = $this->conditionInverter->createInvertedCondition($condition);
- $if = new If_($invertedCondition);
- $if->stmts = $stmt;
- $ifs[] = $if;
- }
- return $ifs;
- }
-}
diff --git a/vendor/rector/rector/rules/EarlyReturn/Rector/If_/ChangeAndIfToEarlyReturnRector.php b/vendor/rector/rector/rules/EarlyReturn/Rector/If_/ChangeAndIfToEarlyReturnRector.php
deleted file mode 100644
index f577791f8..000000000
--- a/vendor/rector/rector/rules/EarlyReturn/Rector/If_/ChangeAndIfToEarlyReturnRector.php
+++ /dev/null
@@ -1,243 +0,0 @@
-ifManipulator = $ifManipulator;
- $this->invertedIfFactory = $invertedIfFactory;
- $this->contextAnalyzer = $contextAnalyzer;
- $this->binaryOpConditionsCollector = $binaryOpConditionsCollector;
- $this->simpleScalarAnalyzer = $simpleScalarAnalyzer;
- $this->ifAndAnalyzer = $ifAndAnalyzer;
- }
- public function getRuleDefinition() : RuleDefinition
- {
- return new RuleDefinition('Changes if && to early return', [new CodeSample(<<<'CODE_SAMPLE'
-class SomeClass
-{
- public function canDrive(Car $car)
- {
- if ($car->hasWheels && $car->hasFuel) {
- return true;
- }
-
- return false;
- }
-}
-CODE_SAMPLE
-, <<<'CODE_SAMPLE'
-class SomeClass
-{
- public function canDrive(Car $car)
- {
- if (! $car->hasWheels) {
- return false;
- }
-
- if (! $car->hasFuel) {
- return false;
- }
-
- return true;
- }
-}
-CODE_SAMPLE
-)]);
- }
- /**
- * @return array>
- */
- public function getNodeTypes() : array
- {
- return [ClassMethod::class, Function_::class, Foreach_::class, Closure::class, FileWithoutNamespace::class, Namespace_::class];
- }
- /**
- * @param Stmt\ClassMethod|Stmt\Function_|Stmt\Foreach_|Expr\Closure|FileWithoutNamespace|Stmt\Namespace_ $node
- */
- public function refactor(Node $node) : ?Node
- {
- $stmts = (array) $node->stmts;
- if ($stmts === []) {
- return null;
- }
- $newStmts = [];
- foreach ($stmts as $key => $stmt) {
- if (!$stmt instanceof If_) {
- // keep natural original order
- $newStmts[] = $stmt;
- continue;
- }
- $nextStmt = $stmts[$key + 1] ?? null;
- if ($this->isComplexReturn($nextStmt)) {
- return null;
- }
- if ($this->shouldSkip($stmt, $nextStmt)) {
- $newStmts[] = $stmt;
- continue;
- }
- if ($nextStmt instanceof Return_) {
- if ($this->ifAndAnalyzer->isIfStmtExprUsedInNextReturn($stmt, $nextStmt)) {
- continue;
- }
- if ($nextStmt->expr instanceof BooleanAnd) {
- continue;
- }
- }
- /** @var BooleanAnd $expr */
- $expr = $stmt->cond;
- $booleanAndConditions = $this->binaryOpConditionsCollector->findConditions($expr, BooleanAnd::class);
- $afterStmts = [];
- if (!$nextStmt instanceof Return_) {
- $afterStmts[] = $stmt->stmts[0];
- $node->stmts = \array_merge($newStmts, $this->processReplaceIfs($stmt, $booleanAndConditions, new Return_(), $afterStmts, $nextStmt));
- return $node;
- }
- // remove next node
- unset($newStmts[$key + 1]);
- $afterStmts[] = $stmt->stmts[0];
- $ifNextReturnClone = $stmt->stmts[0] instanceof Return_ ? clone $stmt->stmts[0] : new Return_();
- if ($this->isInLoopWithoutContinueOrBreak($stmt)) {
- $afterStmts[] = new Return_();
- }
- $changedStmts = $this->processReplaceIfs($stmt, $booleanAndConditions, $ifNextReturnClone, $afterStmts, $nextStmt);
- // update stmts
- $node->stmts = \array_merge($newStmts, $changedStmts);
- return $node;
- }
- return null;
- }
- private function isInLoopWithoutContinueOrBreak(If_ $if) : bool
- {
- if (!$this->contextAnalyzer->isInLoop($if)) {
- return \false;
- }
- if ($if->stmts[0] instanceof Continue_) {
- return \false;
- }
- return !$if->stmts[0] instanceof Break_;
- }
- /**
- * @param Expr[] $conditions
- * @param Stmt[] $afters
- * @return Stmt[]
- */
- private function processReplaceIfs(If_ $if, array $conditions, Return_ $ifNextReturn, array $afters, ?Stmt $nextStmt) : array
- {
- $ifs = $this->invertedIfFactory->createFromConditions($if, $conditions, $ifNextReturn, $nextStmt);
- $this->mirrorComments($ifs[0], $if);
- $result = \array_merge($ifs, $afters);
- if ($if->stmts[0] instanceof Return_) {
- return $result;
- }
- if (!$ifNextReturn->expr instanceof Expr) {
- return $result;
- }
- if ($this->contextAnalyzer->isInLoop($if)) {
- return $result;
- }
- return \array_merge($result, [$ifNextReturn]);
- }
- private function shouldSkip(If_ $if, ?Stmt $nexStmt) : bool
- {
- if (!$this->ifManipulator->isIfWithOnlyOneStmt($if)) {
- return \true;
- }
- if (!$if->cond instanceof BooleanAnd) {
- return \true;
- }
- if (!$this->ifManipulator->isIfWithoutElseAndElseIfs($if)) {
- return \true;
- }
- // is simple return? skip it
- $onlyStmt = $if->stmts[0];
- if ($onlyStmt instanceof Return_ && $onlyStmt->expr instanceof Expr && $this->simpleScalarAnalyzer->isSimpleScalar($onlyStmt->expr)) {
- return \true;
- }
- if ($this->ifAndAnalyzer->isIfAndWithInstanceof($if->cond)) {
- return \true;
- }
- return !$this->isLastIfOrBeforeLastReturn($nexStmt);
- }
- private function isLastIfOrBeforeLastReturn(?Stmt $nextStmt) : bool
- {
- if (!$nextStmt instanceof Stmt) {
- return \true;
- }
- return $nextStmt instanceof Return_;
- }
- private function isComplexReturn(?Stmt $stmt) : bool
- {
- if (!$stmt instanceof Return_) {
- return \false;
- }
- if (!$stmt->expr instanceof Expr) {
- return \false;
- }
- if ($stmt->expr instanceof ConstFetch) {
- return \false;
- }
- return !$stmt->expr instanceof Scalar;
- }
-}
diff --git a/vendor/rector/rector/rules/EarlyReturn/Rector/If_/ChangeIfElseValueAssignToEarlyReturnRector.php b/vendor/rector/rector/rules/EarlyReturn/Rector/If_/ChangeIfElseValueAssignToEarlyReturnRector.php
index f29a833af..bc8071992 100644
--- a/vendor/rector/rector/rules/EarlyReturn/Rector/If_/ChangeIfElseValueAssignToEarlyReturnRector.php
+++ b/vendor/rector/rector/rules/EarlyReturn/Rector/If_/ChangeIfElseValueAssignToEarlyReturnRector.php
@@ -17,8 +17,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://engineering.helpscout.com/reducing-complexity-with-guard-clauses-in-php-and-javascript-74600fd865c7
- *
* @see \Rector\Tests\EarlyReturn\Rector\If_\ChangeIfElseValueAssignToEarlyReturnRector\ChangeIfElseValueAssignToEarlyReturnRectorTest
*/
final class ChangeIfElseValueAssignToEarlyReturnRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/Naming/Contract/RenameParamValueObjectInterface.php b/vendor/rector/rector/rules/Naming/Contract/RenameParamValueObjectInterface.php
deleted file mode 100644
index 778363985..000000000
--- a/vendor/rector/rector/rules/Naming/Contract/RenameParamValueObjectInterface.php
+++ /dev/null
@@ -1,12 +0,0 @@
-nodeNameResolver->getName($property);
// skip if already has suffix
if (\substr_compare($propertyName, $expectedName->getName(), -\strlen($expectedName->getName())) === 0 || \substr_compare($propertyName, \ucfirst($expectedName->getName()), -\strlen(\ucfirst($expectedName->getName()))) === 0) {
return null;
@@ -84,23 +83,15 @@ public function resolve(Property $property, ClassLike $classLike) : ?string
}
private function resolveExpectedName(Property $property) : ?ExpectedName
{
- $phpDocInfo = $this->phpDocInfoFactory->createFromNode($property);
- $isPhpDocInfo = $phpDocInfo instanceof PhpDocInfo;
// property type first
if ($property->type instanceof Node) {
$propertyType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($property->type);
- // not has docblock, use property type
- if (!$isPhpDocInfo) {
- return $this->propertyNaming->getExpectedNameFromType($propertyType);
- }
- // @var type is ObjectType, use property type
- $varType = $phpDocInfo->getVarType();
- if ($varType instanceof ObjectType) {
- return $this->propertyNaming->getExpectedNameFromType($propertyType);
- }
+ return $this->propertyNaming->getExpectedNameFromType($propertyType);
}
// fallback to docblock
- if ($isPhpDocInfo) {
+ $phpDocInfo = $this->phpDocInfoFactory->createFromNode($property);
+ $hasVarTag = $phpDocInfo instanceof PhpDocInfo && $phpDocInfo->getVarTagValueNode() instanceof VarTagValueNode;
+ if ($hasVarTag) {
return $this->propertyNaming->getExpectedNameFromType($phpDocInfo->getVarType());
}
return null;
diff --git a/vendor/rector/rector/rules/Naming/Naming/AliasNameResolver.php b/vendor/rector/rector/rules/Naming/Naming/AliasNameResolver.php
index c817c7130..6c7dd82d5 100644
--- a/vendor/rector/rector/rules/Naming/Naming/AliasNameResolver.php
+++ b/vendor/rector/rector/rules/Naming/Naming/AliasNameResolver.php
@@ -4,7 +4,7 @@
namespace Rector\Naming\Naming;
use PhpParser\Node\Identifier;
-use PhpParser\Node\Name;
+use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\GroupUse;
use PhpParser\Node\Stmt\Use_;
final class AliasNameResolver
@@ -19,19 +19,19 @@ public function __construct(\Rector\Naming\Naming\UseImportsResolver $useImports
$this->useImportsResolver = $useImportsResolver;
}
/**
- * @param Use_[]|GroupUse[] $uses
+ * @param array $uses
*/
- public function resolveByName(Name $name, array $uses) : ?string
+ public function resolveByName(FullyQualified $fullyQualified, array $uses) : ?string
{
- $nameString = $name->toString();
+ $nameString = $fullyQualified->toString();
foreach ($uses as $use) {
$prefix = $this->useImportsResolver->resolvePrefix($use);
foreach ($use->uses as $useUse) {
if (!$useUse->alias instanceof Identifier) {
continue;
}
- $name = $prefix . $useUse->name->toString();
- if ($name !== $nameString) {
+ $fullyQualified = $prefix . $useUse->name->toString();
+ if ($fullyQualified !== $nameString) {
continue;
}
return (string) $useUse->getAlias();
diff --git a/vendor/rector/rector/rules/Naming/Naming/PropertyNaming.php b/vendor/rector/rector/rules/Naming/Naming/PropertyNaming.php
index 8d1ffc7de..4f0942336 100644
--- a/vendor/rector/rector/rules/Naming/Naming/PropertyNaming.php
+++ b/vendor/rector/rector/rules/Naming/Naming/PropertyNaming.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Naming\Naming;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PHPStan\Type\Generic\GenericObjectType;
use PHPStan\Type\ObjectType;
use PHPStan\Type\StaticType;
diff --git a/vendor/rector/rector/rules/Naming/Naming/UseImportsResolver.php b/vendor/rector/rector/rules/Naming/Naming/UseImportsResolver.php
index 938183fea..ed9301192 100644
--- a/vendor/rector/rector/rules/Naming/Naming/UseImportsResolver.php
+++ b/vendor/rector/rector/rules/Naming/Naming/UseImportsResolver.php
@@ -8,14 +8,14 @@
use PhpParser\Node\Stmt\GroupUse;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\Use_;
+use Rector\Application\Provider\CurrentFileProvider;
use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
-use Rector\Provider\CurrentFileProvider;
use Rector\ValueObject\Application\File;
final class UseImportsResolver
{
/**
* @readonly
- * @var \Rector\Provider\CurrentFileProvider
+ * @var \Rector\Application\Provider\CurrentFileProvider
*/
private $currentFileProvider;
public function __construct(CurrentFileProvider $currentFileProvider)
@@ -23,7 +23,7 @@ public function __construct(CurrentFileProvider $currentFileProvider)
$this->currentFileProvider = $currentFileProvider;
}
/**
- * @return Use_[]|GroupUse[]
+ * @return array
*/
public function resolve() : array
{
@@ -70,21 +70,14 @@ private function resolveNamespace()
if ($newStmts === []) {
return null;
}
+ /** @var Namespace_[]|FileWithoutNamespace[] $namespaces */
$namespaces = \array_filter($newStmts, static function (Stmt $stmt) : bool {
- return $stmt instanceof Namespace_;
+ return $stmt instanceof Namespace_ || $stmt instanceof FileWithoutNamespace;
});
// multiple namespaces is not supported
- if (\count($namespaces) > 1) {
+ if (\count($namespaces) !== 1) {
return null;
}
- $currentNamespace = \current($namespaces);
- if ($currentNamespace instanceof Namespace_) {
- return $currentNamespace;
- }
- $currentStmt = \current($newStmts);
- if (!$currentStmt instanceof FileWithoutNamespace) {
- return null;
- }
- return $currentStmt;
+ return \current($namespaces);
}
}
diff --git a/vendor/rector/rector/rules/Naming/Rector/Assign/RenameVariableToMatchMethodCallReturnTypeRector.php b/vendor/rector/rector/rules/Naming/Rector/Assign/RenameVariableToMatchMethodCallReturnTypeRector.php
index e7620d7ac..9352dd679 100644
--- a/vendor/rector/rector/rules/Naming/Rector/Assign/RenameVariableToMatchMethodCallReturnTypeRector.php
+++ b/vendor/rector/rector/rules/Naming/Rector/Assign/RenameVariableToMatchMethodCallReturnTypeRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Naming\Rector\Assign;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\Closure;
@@ -136,6 +136,7 @@ public function refactor(Node $node) : ?Node
if ($node->stmts === null) {
return null;
}
+ $hasChanged = \false;
foreach ($node->stmts as $stmt) {
if (!$stmt instanceof Expression) {
continue;
@@ -146,7 +147,7 @@ public function refactor(Node $node) : ?Node
$assign = $stmt->expr;
$variableAndCallAssign = $this->variableAndCallAssignMatcher->match($assign, $node);
if (!$variableAndCallAssign instanceof VariableAndCallAssign) {
- return null;
+ continue;
}
$call = $variableAndCallAssign->getCall();
$expectedName = $this->expectedNameResolver->resolveForCall($call);
@@ -160,6 +161,9 @@ public function refactor(Node $node) : ?Node
continue;
}
$this->renameVariable($variableAndCallAssign, $expectedName, $stmt);
+ $hasChanged = \true;
+ }
+ if ($hasChanged) {
return $node;
}
return null;
diff --git a/vendor/rector/rector/rules/Naming/RectorNamingInflector.php b/vendor/rector/rector/rules/Naming/RectorNamingInflector.php
index 2c4ac588c..01eca2fb1 100644
--- a/vendor/rector/rector/rules/Naming/RectorNamingInflector.php
+++ b/vendor/rector/rector/rules/Naming/RectorNamingInflector.php
@@ -3,8 +3,8 @@
declare (strict_types=1);
namespace Rector\Naming;
-use RectorPrefix202405\Doctrine\Inflector\Inflector;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Doctrine\Inflector\Inflector;
+use RectorPrefix202410\Nette\Utils\Strings;
final class RectorNamingInflector
{
/**
diff --git a/vendor/rector/rector/rules/Naming/ValueObject/ParamRename.php b/vendor/rector/rector/rules/Naming/ValueObject/ParamRename.php
index 084c7ab4d..1392dcb1a 100644
--- a/vendor/rector/rector/rules/Naming/ValueObject/ParamRename.php
+++ b/vendor/rector/rector/rules/Naming/ValueObject/ParamRename.php
@@ -5,9 +5,7 @@
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\FunctionLike;
-use PhpParser\Node\Param;
-use Rector\Naming\Contract\RenameParamValueObjectInterface;
-final class ParamRename implements RenameParamValueObjectInterface
+final class ParamRename
{
/**
* @readonly
@@ -19,11 +17,6 @@ final class ParamRename implements RenameParamValueObjectInterface
* @var string
*/
private $expectedName;
- /**
- * @readonly
- * @var \PhpParser\Node\Param
- */
- private $param;
/**
* @readonly
* @var \PhpParser\Node\Expr\Variable
@@ -34,11 +27,10 @@ final class ParamRename implements RenameParamValueObjectInterface
* @var \PhpParser\Node\FunctionLike
*/
private $functionLike;
- public function __construct(string $currentName, string $expectedName, Param $param, Variable $variable, FunctionLike $functionLike)
+ public function __construct(string $currentName, string $expectedName, Variable $variable, FunctionLike $functionLike)
{
$this->currentName = $currentName;
$this->expectedName = $expectedName;
- $this->param = $param;
$this->variable = $variable;
$this->functionLike = $functionLike;
}
@@ -54,10 +46,6 @@ public function getFunctionLike() : FunctionLike
{
return $this->functionLike;
}
- public function getParam() : Param
- {
- return $this->param;
- }
public function getVariable() : Variable
{
return $this->variable;
diff --git a/vendor/rector/rector/rules/Naming/ValueObject/PropertyRename.php b/vendor/rector/rector/rules/Naming/ValueObject/PropertyRename.php
index 48a65a809..ff0cc4669 100644
--- a/vendor/rector/rector/rules/Naming/ValueObject/PropertyRename.php
+++ b/vendor/rector/rector/rules/Naming/ValueObject/PropertyRename.php
@@ -6,9 +6,8 @@
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Stmt\PropertyProperty;
-use Rector\Naming\Contract\RenamePropertyValueObjectInterface;
use Rector\Validation\RectorAssert;
-final class PropertyRename implements RenamePropertyValueObjectInterface
+final class PropertyRename
{
/**
* @readonly
diff --git a/vendor/rector/rector/rules/Naming/ValueObjectFactory/ParamRenameFactory.php b/vendor/rector/rector/rules/Naming/ValueObjectFactory/ParamRenameFactory.php
index 9485b7b6d..f45ebc345 100644
--- a/vendor/rector/rector/rules/Naming/ValueObjectFactory/ParamRenameFactory.php
+++ b/vendor/rector/rector/rules/Naming/ValueObjectFactory/ParamRenameFactory.php
@@ -28,6 +28,6 @@ public function createFromResolvedExpectedName(FunctionLike $functionLike, Param
if ($currentName === null) {
return null;
}
- return new ParamRename($currentName, $expectedName, $param, $param->var, $functionLike);
+ return new ParamRename($currentName, $expectedName, $param->var, $functionLike);
}
}
diff --git a/vendor/rector/rector/rules/Naming/ValueObjectFactory/PropertyRenameFactory.php b/vendor/rector/rector/rules/Naming/ValueObjectFactory/PropertyRenameFactory.php
index 9757837d9..64c19ebf6 100644
--- a/vendor/rector/rector/rules/Naming/ValueObjectFactory/PropertyRenameFactory.php
+++ b/vendor/rector/rector/rules/Naming/ValueObjectFactory/PropertyRenameFactory.php
@@ -7,7 +7,7 @@
use PhpParser\Node\Stmt\Property;
use Rector\Naming\ValueObject\PropertyRename;
use Rector\NodeNameResolver\NodeNameResolver;
-use RectorPrefix202405\Webmozart\Assert\InvalidArgumentException;
+use RectorPrefix202410\Webmozart\Assert\InvalidArgumentException;
final class PropertyRenameFactory
{
/**
diff --git a/vendor/rector/rector/rules/Naming/VariableRenamer.php b/vendor/rector/rector/rules/Naming/VariableRenamer.php
index 2e40fc944..10b761abc 100644
--- a/vendor/rector/rector/rules/Naming/VariableRenamer.php
+++ b/vendor/rector/rector/rules/Naming/VariableRenamer.php
@@ -5,16 +5,17 @@
use PhpParser\Node;
use PhpParser\Node\Expr\Assign;
-use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\FunctionLike;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt;
use PhpParser\NodeTraverser;
+use PHPStan\Analyser\MutatingScope;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Naming\PhpDoc\VarTagValueNodeRenamer;
use Rector\NodeNameResolver\NodeNameResolver;
+use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
final class VariableRenamer
{
@@ -53,8 +54,8 @@ public function renameVariableInFunctionLike(FunctionLike $functionLike, string
}
$hasRenamed = \false;
$currentStmt = null;
- $currentClosure = null;
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $functionLike->getStmts(), function (Node $node) use($oldName, $expectedName, $assign, &$isRenamingActive, &$hasRenamed, &$currentStmt, &$currentClosure) {
+ $currentFunctionLike = null;
+ $this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $functionLike->getStmts(), function (Node $node) use($oldName, $expectedName, $assign, &$isRenamingActive, &$hasRenamed, &$currentStmt, &$currentFunctionLike) {
// skip param names
if ($node instanceof Param) {
return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
@@ -66,14 +67,14 @@ public function renameVariableInFunctionLike(FunctionLike $functionLike, string
if ($node instanceof Stmt) {
$currentStmt = $node;
}
- if ($node instanceof Closure) {
- $currentClosure = $node;
+ if ($node instanceof FunctionLike) {
+ $currentFunctionLike = $node;
}
if (!$node instanceof Variable) {
return null;
}
// TODO: Should be implemented in BreakingVariableRenameGuard::shouldSkipParam()
- if ($this->isParamInParentFunction($node, $currentClosure)) {
+ if ($this->isParamInParentFunction($node, $currentFunctionLike)) {
return null;
}
if (!$isRenamingActive) {
@@ -87,16 +88,21 @@ public function renameVariableInFunctionLike(FunctionLike $functionLike, string
});
return $hasRenamed;
}
- private function isParamInParentFunction(Variable $variable, ?Closure $closure) : bool
+ private function isParamInParentFunction(Variable $variable, ?FunctionLike $functionLike) : bool
{
- if (!$closure instanceof Closure) {
+ if (!$functionLike instanceof FunctionLike) {
return \false;
}
$variableName = $this->nodeNameResolver->getName($variable);
if ($variableName === null) {
return \false;
}
- foreach ($closure->params as $param) {
+ $scope = $variable->getAttribute(AttributeKey::SCOPE);
+ $functionLikeScope = $functionLike->getAttribute(AttributeKey::SCOPE);
+ if ($scope instanceof MutatingScope && $functionLikeScope instanceof MutatingScope && $scope->equals($functionLikeScope)) {
+ return \false;
+ }
+ foreach ($functionLike->getParams() as $param) {
if ($this->nodeNameResolver->isName($param, $variableName)) {
return \true;
}
diff --git a/vendor/rector/rector/rules/Php52/Rector/Switch_/ContinueToBreakInSwitchRector.php b/vendor/rector/rector/rules/Php52/Rector/Switch_/ContinueToBreakInSwitchRector.php
index 9b2f02238..77587601b 100644
--- a/vendor/rector/rector/rules/Php52/Rector/Switch_/ContinueToBreakInSwitchRector.php
+++ b/vendor/rector/rector/rules/Php52/Rector/Switch_/ContinueToBreakInSwitchRector.php
@@ -5,13 +5,23 @@
use PhpParser\Node;
use PhpParser\Node\Expr;
+use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\LNumber;
+use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Break_;
+use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Continue_;
+use PhpParser\Node\Stmt\Do_;
+use PhpParser\Node\Stmt\For_;
+use PhpParser\Node\Stmt\Foreach_;
+use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\Switch_;
+use PhpParser\Node\Stmt\While_;
+use PhpParser\NodeTraverser;
use PHPStan\Type\Constant\ConstantIntegerType;
use PHPStan\Type\ConstantType;
+use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
use Rector\PhpParser\Node\Value\ValueResolver;
use Rector\Rector\AbstractRector;
use Rector\ValueObject\PhpVersionFeature;
@@ -19,7 +29,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/a/12349889/1348344
* @see \Rector\Tests\Php52\Rector\Switch_\ContinueToBreakInSwitchRector\ContinueToBreakInSwitchRectorTest
*/
final class ContinueToBreakInSwitchRector extends AbstractRector implements MinPhpVersionInterface
@@ -29,6 +38,10 @@ final class ContinueToBreakInSwitchRector extends AbstractRector implements MinP
* @var \Rector\PhpParser\Node\Value\ValueResolver
*/
private $valueResolver;
+ /**
+ * @var bool
+ */
+ private $hasChanged = \false;
public function __construct(ValueResolver $valueResolver)
{
$this->valueResolver = $valueResolver;
@@ -79,42 +92,50 @@ public function getNodeTypes() : array
*/
public function refactor(Node $node) : ?Switch_
{
- $hasChanged = \false;
+ $this->hasChanged = \false;
foreach ($node->cases as $case) {
- foreach ($case->stmts as $key => $caseStmt) {
- if (!$caseStmt instanceof Continue_) {
- continue;
- }
- $newStmt = $this->processContinueStatement($caseStmt);
- if ($newStmt instanceof Continue_) {
- continue;
- }
- $case->stmts[$key] = $newStmt;
- $hasChanged = \true;
- }
+ $this->processContinueStatement($case);
}
- if (!$hasChanged) {
+ if (!$this->hasChanged) {
return null;
}
return $node;
}
/**
- * @return \PhpParser\Node\Stmt\Break_|\PhpParser\Node\Stmt\Continue_
+ * @param \PhpParser\Node\Stmt|\Rector\Contract\PhpParser\Node\StmtsAwareInterface $stmt
*/
- private function processContinueStatement(Continue_ $continue)
+ private function processContinueStatement($stmt) : void
{
- if (!$continue->num instanceof Expr) {
- return new Break_();
- }
- if ($continue->num instanceof LNumber) {
- $continueNumber = $this->valueResolver->getValue($continue->num);
- if ($continueNumber <= 1) {
+ $this->traverseNodesWithCallable($stmt, function (Node $subNode) {
+ if ($subNode instanceof Class_ || $subNode instanceof Function_ || $subNode instanceof Closure) {
+ return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
+ }
+ // continue is belong to loop
+ if ($subNode instanceof Foreach_ || $subNode instanceof While_ || $subNode instanceof Do_ || $subNode instanceof For_) {
+ return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
+ }
+ if (!$subNode instanceof Continue_) {
+ return null;
+ }
+ if (!$subNode->num instanceof Expr) {
+ $this->hasChanged = \true;
return new Break_();
}
- } elseif ($continue->num instanceof Variable) {
- return $this->processVariableNum($continue, $continue->num);
- }
- return $continue;
+ if ($subNode->num instanceof LNumber) {
+ $continueNumber = $this->valueResolver->getValue($subNode->num);
+ if ($continueNumber <= 1) {
+ $this->hasChanged = \true;
+ return new Break_();
+ }
+ } elseif ($subNode->num instanceof Variable) {
+ $processVariableNum = $this->processVariableNum($subNode, $subNode->num);
+ if ($processVariableNum instanceof Break_) {
+ $this->hasChanged = \true;
+ return $processVariableNum;
+ }
+ }
+ return null;
+ });
}
/**
* @return \PhpParser\Node\Stmt\Continue_|\PhpParser\Node\Stmt\Break_
diff --git a/vendor/rector/rector/rules/Php53/Rector/Ternary/TernaryToElvisRector.php b/vendor/rector/rector/rules/Php53/Rector/Ternary/TernaryToElvisRector.php
index 5800a1706..03a70e716 100644
--- a/vendor/rector/rector/rules/Php53/Rector/Ternary/TernaryToElvisRector.php
+++ b/vendor/rector/rector/rules/Php53/Rector/Ternary/TernaryToElvisRector.php
@@ -12,8 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary https://stackoverflow.com/a/1993455/1348344
- *
* @see \Rector\Tests\Php53\Rector\Ternary\TernaryToElvisRector\TernaryToElvisRectorTest
*/
final class TernaryToElvisRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php53/Rector/Variable/ReplaceHttpServerVarsByServerRector.php b/vendor/rector/rector/rules/Php53/Rector/Variable/ReplaceHttpServerVarsByServerRector.php
index 9f4dd1bd9..f5eff1978 100644
--- a/vendor/rector/rector/rules/Php53/Rector/Variable/ReplaceHttpServerVarsByServerRector.php
+++ b/vendor/rector/rector/rules/Php53/Rector/Variable/ReplaceHttpServerVarsByServerRector.php
@@ -12,7 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\Tests\Php53\Rector\Variable\ReplaceHttpServerVarsByServerRector\ReplaceHttpServerVarsByServerRectorTest
- * @changelog https://blog.tigertech.net/posts/php-5-3-http-server-vars/
*/
final class ReplaceHttpServerVarsByServerRector extends AbstractRector implements MinPhpVersionInterface
{
diff --git a/vendor/rector/rector/rules/Php54/Rector/Array_/LongArrayToShortArrayRector.php b/vendor/rector/rector/rules/Php54/Rector/Array_/LongArrayToShortArrayRector.php
index cf6449bd7..4290bb49a 100644
--- a/vendor/rector/rector/rules/Php54/Rector/Array_/LongArrayToShortArrayRector.php
+++ b/vendor/rector/rector/rules/Php54/Rector/Array_/LongArrayToShortArrayRector.php
@@ -54,6 +54,11 @@ public function getNodeTypes() : array
*/
public function refactor(Node $node) : ?Node
{
+ // no kind attribute yet, it means just created
+ // no need to reprint, it already will be short array by default
+ if (!$node->hasAttribute(AttributeKey::KIND)) {
+ return null;
+ }
if ($node->getAttribute(AttributeKey::KIND) === Array_::KIND_SHORT) {
return null;
}
diff --git a/vendor/rector/rector/rules/Php54/Rector/Break_/RemoveZeroBreakContinueRector.php b/vendor/rector/rector/rules/Php54/Rector/Break_/RemoveZeroBreakContinueRector.php
index faeb2d4fc..934678123 100644
--- a/vendor/rector/rector/rules/Php54/Rector/Break_/RemoveZeroBreakContinueRector.php
+++ b/vendor/rector/rector/rules/Php54/Rector/Break_/RemoveZeroBreakContinueRector.php
@@ -18,8 +18,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.php.net/manual/en/control-structures.continue.php https://www.php.net/manual/en/control-structures.break.php
- *
* @see \Rector\Tests\Php54\Rector\Break_\RemoveZeroBreakContinueRector\RemoveZeroBreakContinueRectorTest
*/
final class RemoveZeroBreakContinueRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php55/Rector/ClassConstFetch/StaticToSelfOnFinalClassRector.php b/vendor/rector/rector/rules/Php55/Rector/ClassConstFetch/StaticToSelfOnFinalClassRector.php
index 9b037d4ef..640994e44 100644
--- a/vendor/rector/rector/rules/Php55/Rector/ClassConstFetch/StaticToSelfOnFinalClassRector.php
+++ b/vendor/rector/rector/rules/Php55/Rector/ClassConstFetch/StaticToSelfOnFinalClassRector.php
@@ -13,8 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/class_name_scalars
- * @changelog https://3v4l.org/AHr9C#v5.5.0
* @see \Rector\Tests\Php55\Rector\ClassConstFetch\StaticToSelfOnFinalClassRector\StaticToSelfOnFinalClassRectorTest
*/
final class StaticToSelfOnFinalClassRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php55/Rector/Class_/ClassConstantToSelfClassRector.php b/vendor/rector/rector/rules/Php55/Rector/Class_/ClassConstantToSelfClassRector.php
index 1e36fd3ae..a0aa20274 100644
--- a/vendor/rector/rector/rules/Php55/Rector/Class_/ClassConstantToSelfClassRector.php
+++ b/vendor/rector/rector/rules/Php55/Rector/Class_/ClassConstantToSelfClassRector.php
@@ -12,8 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecations_php_7_4 (not confirmed yet)
- * @changelog https://3v4l.org/INd7o
* @see \Rector\Tests\Php55\Rector\Class_\ClassConstantToSelfClassRector\ClassConstantToSelfClassRectorTest
*/
final class ClassConstantToSelfClassRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php55/Rector/FuncCall/GetCalledClassToSelfClassRector.php b/vendor/rector/rector/rules/Php55/Rector/FuncCall/GetCalledClassToSelfClassRector.php
index 85dd53b3a..d0293b2ea 100644
--- a/vendor/rector/rector/rules/Php55/Rector/FuncCall/GetCalledClassToSelfClassRector.php
+++ b/vendor/rector/rector/rules/Php55/Rector/FuncCall/GetCalledClassToSelfClassRector.php
@@ -15,8 +15,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.php.net/ChangeLog-5.php#5.5.0
- * @changelog https://3v4l.org/GU9dP
* @see \Rector\Tests\Php55\Rector\FuncCall\GetCalledClassToSelfClassRector\GetCalledClassToSelfClassRectorTest
*/
final class GetCalledClassToSelfClassRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php55/Rector/FuncCall/GetCalledClassToStaticClassRector.php b/vendor/rector/rector/rules/Php55/Rector/FuncCall/GetCalledClassToStaticClassRector.php
index 8021112c6..ed176ff2c 100644
--- a/vendor/rector/rector/rules/Php55/Rector/FuncCall/GetCalledClassToStaticClassRector.php
+++ b/vendor/rector/rector/rules/Php55/Rector/FuncCall/GetCalledClassToStaticClassRector.php
@@ -13,8 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.php.net/ChangeLog-5.php#5.5.0
- * @changelog https://3v4l.org/dJgXd
* @see \Rector\Tests\Php55\Rector\FuncCall\GetCalledClassToStaticClassRector\GetCalledClassToStaticClassRectorTest
*/
final class GetCalledClassToStaticClassRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php55/Rector/FuncCall/PregReplaceEModifierRector.php b/vendor/rector/rector/rules/Php55/Rector/FuncCall/PregReplaceEModifierRector.php
index 0146b0b80..dabac98d9 100644
--- a/vendor/rector/rector/rules/Php55/Rector/FuncCall/PregReplaceEModifierRector.php
+++ b/vendor/rector/rector/rules/Php55/Rector/FuncCall/PregReplaceEModifierRector.php
@@ -17,8 +17,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/remove_preg_replace_eval_modifier https://stackoverflow.com/q/19245205/1348344
- *
* @see \Rector\Tests\Php55\Rector\FuncCall\PregReplaceEModifierRector\PregReplaceEModifierRectorTest
*/
final class PregReplaceEModifierRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php55/Rector/String_/StringClassNameToClassConstantRector.php b/vendor/rector/rector/rules/Php55/Rector/String_/StringClassNameToClassConstantRector.php
index 6aa704074..5512a7e0c 100644
--- a/vendor/rector/rector/rules/Php55/Rector/String_/StringClassNameToClassConstantRector.php
+++ b/vendor/rector/rector/rules/Php55/Rector/String_/StringClassNameToClassConstantRector.php
@@ -18,10 +18,8 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
- * @changelog https://wiki.php.net/rfc/class_name_scalars https://github.com/symfony/symfony/blob/2.8/UPGRADE-2.8.md#form
- *
* @see \Rector\Tests\Php55\Rector\String_\StringClassNameToClassConstantRector\StringClassNameToClassConstantRectorTest
*/
final class StringClassNameToClassConstantRector extends AbstractRector implements MinPhpVersionInterface, ConfigurableRectorInterface
@@ -79,7 +77,7 @@ public function run()
}
}
CODE_SAMPLE
-, ['ClassName', 'AnotherClassName', \Rector\Php55\Rector\String_\StringClassNameToClassConstantRector::SHOULD_KEEP_PRE_SLASH => \false])]);
+, ['ClassName', 'AnotherClassName', self::SHOULD_KEEP_PRE_SLASH => \false])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/Php55/RegexMatcher.php b/vendor/rector/rector/rules/Php55/RegexMatcher.php
index 65243a39e..9fb99c84a 100644
--- a/vendor/rector/rector/rules/Php55/RegexMatcher.php
+++ b/vendor/rector/rector/rules/Php55/RegexMatcher.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Php55;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\BinaryOp\Concat;
use PhpParser\Node\Scalar\String_;
@@ -81,6 +81,10 @@ private function createPatternWithoutE(string $pattern, string $delimiter, strin
}
private function matchConcat(Concat $concat) : ?Concat
{
+ // cause parse error
+ if (!$concat->left instanceof Concat) {
+ return null;
+ }
$lastItem = $concat->right;
if (!$lastItem instanceof String_) {
return null;
diff --git a/vendor/rector/rector/rules/Php70/EregToPcreTransformer.php b/vendor/rector/rector/rules/Php70/EregToPcreTransformer.php
index 1795c3e16..928ccdad8 100644
--- a/vendor/rector/rector/rules/Php70/EregToPcreTransformer.php
+++ b/vendor/rector/rector/rules/Php70/EregToPcreTransformer.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Php70;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use Rector\Php70\Exception\InvalidEregException;
/**
* @changelog https://gist.github.com/lifthrasiir/704754/7e486f43e62fd1c9d3669330c251f8ca4a59a3f8
diff --git a/vendor/rector/rector/rules/Php70/Rector/Assign/ListSplitStringRector.php b/vendor/rector/rector/rules/Php70/Rector/Assign/ListSplitStringRector.php
index a4799b240..17afa376b 100644
--- a/vendor/rector/rector/rules/Php70/Rector/Assign/ListSplitStringRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/Assign/ListSplitStringRector.php
@@ -12,9 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog http://php.net/manual/en/migration70.incompatible.php#migration70.incompatible.variable-handling.list
- *
- * @changelog https://stackoverflow.com/a/47965344/1348344
* @see \Rector\Tests\Php70\Rector\Assign\ListSplitStringRector\ListSplitStringRectorTest
*/
final class ListSplitStringRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/Assign/ListSwapArrayOrderRector.php b/vendor/rector/rector/rules/Php70/Rector/Assign/ListSwapArrayOrderRector.php
index 973284657..137558708 100644
--- a/vendor/rector/rector/rules/Php70/Rector/Assign/ListSwapArrayOrderRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/Assign/ListSwapArrayOrderRector.php
@@ -17,7 +17,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog http://php.net/manual/en/migration70.incompatible.php#migration70.incompatible.variable-handling.list
* @see \Rector\Tests\Php70\Rector\Assign\ListSwapArrayOrderRector\ListSwapArrayOrderRectorTest
*/
final class ListSwapArrayOrderRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/Break_/BreakNotInLoopOrSwitchToReturnRector.php b/vendor/rector/rector/rules/Php70/Rector/Break_/BreakNotInLoopOrSwitchToReturnRector.php
index 04c629bfb..6a4fd4d76 100644
--- a/vendor/rector/rector/rules/Php70/Rector/Break_/BreakNotInLoopOrSwitchToReturnRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/Break_/BreakNotInLoopOrSwitchToReturnRector.php
@@ -18,9 +18,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/questions/3618030/php-fatal-error-cannot-break-continue https://stackoverflow.com/questions/11988281/why-does-cannot-break-continue-1-level-comes-in-php
- *
- * @changelog https://3v4l.org/Qtelt
* @see \Rector\Tests\Php70\Rector\Break_\BreakNotInLoopOrSwitchToReturnRector\BreakNotInLoopOrSwitchToReturnRectorTest
*/
final class BreakNotInLoopOrSwitchToReturnRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/ClassMethod/Php4ConstructorRector.php b/vendor/rector/rector/rules/Php70/Rector/ClassMethod/Php4ConstructorRector.php
index 5041e7fdf..9df393c1f 100644
--- a/vendor/rector/rector/rules/Php70/Rector/ClassMethod/Php4ConstructorRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/ClassMethod/Php4ConstructorRector.php
@@ -25,7 +25,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/remove_php4_constructors
* @see \Rector\Tests\Php70\Rector\ClassMethod\Php4ConstructorRector\Php4ConstructorRectorTest
*/
final class Php4ConstructorRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/FuncCall/EregToPregMatchRector.php b/vendor/rector/rector/rules/Php70/Rector/FuncCall/EregToPregMatchRector.php
index d9447cbcd..eaf2effa1 100644
--- a/vendor/rector/rector/rules/Php70/Rector/FuncCall/EregToPregMatchRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/FuncCall/EregToPregMatchRector.php
@@ -21,9 +21,8 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
- * @changelog http://php.net/reference.pcre.pattern.posix https://stackoverflow.com/a/17033826/1348344 https://docstore.mik.ua/orelly/webprog/pcook/ch13_02.htm
- *
* @see \Rector\Tests\Php70\Rector\FuncCall\EregToPregMatchRector\EregToPregMatchRectorTest
*/
final class EregToPregMatchRector extends AbstractRector implements MinPhpVersionInterface
@@ -91,7 +90,8 @@ private function processStringPattern(FuncCall $funcCall, String_ $string, strin
$pattern = $string->value;
$pattern = $this->eregToPcreTransformer->transform($pattern, $this->isCaseInsensitiveFunction($functionName));
$firstArg = $funcCall->getArgs()[0];
- $firstArg->value = new String_($pattern);
+ Assert::isInstanceOf($firstArg->value, String_::class);
+ $firstArg->value->value = $pattern;
}
private function processVariablePattern(FuncCall $funcCall, Variable $variable, string $functionName) : void
{
diff --git a/vendor/rector/rector/rules/Php70/Rector/FuncCall/RandomFunctionRector.php b/vendor/rector/rector/rules/Php70/Rector/FuncCall/RandomFunctionRector.php
index 73b3065b7..b984924f5 100644
--- a/vendor/rector/rector/rules/Php70/Rector/FuncCall/RandomFunctionRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/FuncCall/RandomFunctionRector.php
@@ -8,6 +8,7 @@
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Name;
use PhpParser\Node\Scalar\LNumber;
+use Rector\PhpParser\Node\Value\ValueResolver;
use Rector\Rector\AbstractRector;
use Rector\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -18,10 +19,19 @@
*/
final class RandomFunctionRector extends AbstractRector implements MinPhpVersionInterface
{
+ /**
+ * @readonly
+ * @var \Rector\PhpParser\Node\Value\ValueResolver
+ */
+ private $valueResolver;
/**
* @var array
*/
private const OLD_TO_NEW_FUNCTION_NAMES = ['getrandmax' => 'mt_getrandmax', 'srand' => 'mt_srand', 'rand' => 'random_int'];
+ public function __construct(ValueResolver $valueResolver)
+ {
+ $this->valueResolver = $valueResolver;
+ }
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Changes rand, srand, and getrandmax to newer alternatives', [new CodeSample('rand();', 'random_int();')]);
@@ -38,13 +48,27 @@ public function getNodeTypes() : array
*/
public function refactor(Node $node) : ?\PhpParser\Node\Expr\FuncCall
{
+ if ($node->isFirstClassCallable()) {
+ return null;
+ }
foreach (self::OLD_TO_NEW_FUNCTION_NAMES as $oldFunctionName => $newFunctionName) {
if ($this->isName($node, $oldFunctionName)) {
$node->name = new Name($newFunctionName);
// special case: random_int(); → random_int(0, getrandmax());
- if ($newFunctionName === 'random_int' && $node->args === []) {
- $node->args[0] = new Arg(new LNumber(0));
- $node->args[1] = new Arg($this->nodeFactory->createFuncCall('mt_getrandmax'));
+ if ($newFunctionName === 'random_int') {
+ $args = $node->getArgs();
+ if ($args === []) {
+ $node->args[0] = new Arg(new LNumber(0));
+ $node->args[1] = new Arg($this->nodeFactory->createFuncCall('mt_getrandmax'));
+ } elseif (\count($args) === 2) {
+ $minValue = $this->valueResolver->getValue($args[0]->value);
+ $maxValue = $this->valueResolver->getValue($args[1]->value);
+ if (\is_int($minValue) && \is_int($maxValue) && $minValue > $maxValue) {
+ $temp = $node->args[0];
+ $node->args[0] = $node->args[1];
+ $node->args[1] = $temp;
+ }
+ }
}
return $node;
}
diff --git a/vendor/rector/rector/rules/Php70/Rector/FuncCall/RenameMktimeWithoutArgsToTimeRector.php b/vendor/rector/rector/rules/Php70/Rector/FuncCall/RenameMktimeWithoutArgsToTimeRector.php
index e1d45616f..e7a049eb5 100644
--- a/vendor/rector/rector/rules/Php70/Rector/FuncCall/RenameMktimeWithoutArgsToTimeRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/FuncCall/RenameMktimeWithoutArgsToTimeRector.php
@@ -12,7 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/F5GE8
* @see \Rector\Tests\Php70\Rector\FuncCall\RenameMktimeWithoutArgsToTimeRector\RenameMktimeWithoutArgsToTimeRectorTest
*/
final class RenameMktimeWithoutArgsToTimeRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/FunctionLike/ExceptionHandlerTypehintRector.php b/vendor/rector/rector/rules/Php70/Rector/FunctionLike/ExceptionHandlerTypehintRector.php
index 0d5bfd7ff..92ab97d62 100644
--- a/vendor/rector/rector/rules/Php70/Rector/FunctionLike/ExceptionHandlerTypehintRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/FunctionLike/ExceptionHandlerTypehintRector.php
@@ -15,8 +15,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/typed_properties_v2#proposal
- *
* @see \Rector\Tests\Php70\Rector\FunctionLike\ExceptionHandlerTypehintRector\ExceptionHandlerTypehintRectorTest
*/
final class ExceptionHandlerTypehintRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/If_/IfToSpaceshipRector.php b/vendor/rector/rector/rules/Php70/Rector/If_/IfToSpaceshipRector.php
index 5e54e5845..de23455e0 100644
--- a/vendor/rector/rector/rules/Php70/Rector/If_/IfToSpaceshipRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/If_/IfToSpaceshipRector.php
@@ -23,8 +23,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/combined-comparison-operator https://3v4l.org/LPbA0
- *
* @see \Rector\Tests\Php70\Rector\If_\IfToSpaceshipRector\IfToSpaceshipRectorTest
*/
final class IfToSpaceshipRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/List_/EmptyListRector.php b/vendor/rector/rector/rules/Php70/Rector/List_/EmptyListRector.php
index 9ba01382d..b906c0087 100644
--- a/vendor/rector/rector/rules/Php70/Rector/List_/EmptyListRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/List_/EmptyListRector.php
@@ -13,7 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog http://php.net/manual/en/migration70.incompatible.php#migration70.incompatible.variable-handling.list
* @see \Rector\Tests\Php70\Rector\List_\EmptyListRector\EmptyListRectorTest
*/
final class EmptyListRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/MethodCall/ThisCallOnStaticMethodToStaticCallRector.php b/vendor/rector/rector/rules/Php70/Rector/MethodCall/ThisCallOnStaticMethodToStaticCallRector.php
index ed6d85cd0..491a2a36d 100644
--- a/vendor/rector/rector/rules/Php70/Rector/MethodCall/ThisCallOnStaticMethodToStaticCallRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/MethodCall/ThisCallOnStaticMethodToStaticCallRector.php
@@ -23,7 +23,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/rkiSC
* @see \Rector\Tests\Php70\Rector\MethodCall\ThisCallOnStaticMethodToStaticCallRector\ThisCallOnStaticMethodToStaticCallRectorTest
*/
final class ThisCallOnStaticMethodToStaticCallRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/StaticCall/StaticCallOnNonStaticToInstanceCallRector.php b/vendor/rector/rector/rules/Php70/Rector/StaticCall/StaticCallOnNonStaticToInstanceCallRector.php
index 91f0a7a00..f296aef61 100644
--- a/vendor/rector/rector/rules/Php70/Rector/StaticCall/StaticCallOnNonStaticToInstanceCallRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/StaticCall/StaticCallOnNonStaticToInstanceCallRector.php
@@ -26,8 +26,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://thephp.cc/news/2017/07/dont-call-instance-methods-statically https://3v4l.org/tQ32f https://3v4l.org/jB9jn
- *
* @see \Rector\Tests\Php70\Rector\StaticCall\StaticCallOnNonStaticToInstanceCallRector\StaticCallOnNonStaticToInstanceCallRectorTest
*/
final class StaticCallOnNonStaticToInstanceCallRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/Switch_/ReduceMultipleDefaultSwitchRector.php b/vendor/rector/rector/rules/Php70/Rector/Switch_/ReduceMultipleDefaultSwitchRector.php
index 6b48d9657..158af75f9 100644
--- a/vendor/rector/rector/rules/Php70/Rector/Switch_/ReduceMultipleDefaultSwitchRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/Switch_/ReduceMultipleDefaultSwitchRector.php
@@ -12,10 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/iGDVW
- *
- * @changelog https://wiki.php.net/rfc/switch.default.multiple https://stackoverflow.com/a/44000794/1348344 https://github.com/franzliedke/wp-mpdf/commit/9dc489215fbd1adcb514810653a73dea71db8e99#diff-2f1f4a51a2dd3a73ca034a48a67a2320L1373
- *
* @see \Rector\Tests\Php70\Rector\Switch_\ReduceMultipleDefaultSwitchRector\ReduceMultipleDefaultSwitchRectorTest
*/
final class ReduceMultipleDefaultSwitchRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/Ternary/TernaryToSpaceshipRector.php b/vendor/rector/rector/rules/Php70/Rector/Ternary/TernaryToSpaceshipRector.php
index dae90bb23..7fd239d9e 100644
--- a/vendor/rector/rector/rules/Php70/Rector/Ternary/TernaryToSpaceshipRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/Ternary/TernaryToSpaceshipRector.php
@@ -16,7 +16,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/combined-comparison-operator
* @see \Rector\Tests\Php70\Rector\Ternary\TernaryToSpaceshipRector\TernaryToSpaceshipRectorTest
*/
final class TernaryToSpaceshipRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php70/Rector/Variable/WrapVariableVariableNameInCurlyBracesRector.php b/vendor/rector/rector/rules/Php70/Rector/Variable/WrapVariableVariableNameInCurlyBracesRector.php
index 31846ae5f..1e1cb2b10 100644
--- a/vendor/rector/rector/rules/Php70/Rector/Variable/WrapVariableVariableNameInCurlyBracesRector.php
+++ b/vendor/rector/rector/rules/Php70/Rector/Variable/WrapVariableVariableNameInCurlyBracesRector.php
@@ -13,7 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\Tests\Php70\Rector\Variable\WrapVariableVariableNameInCurlyBracesRector\WrapVariableVariableNameInCurlyBracesRectorTest
- * @changelog https://www.php.net/manual/en/language.variables.variable.php
*/
final class WrapVariableVariableNameInCurlyBracesRector extends AbstractRector implements MinPhpVersionInterface
{
diff --git a/vendor/rector/rector/rules/Php71/Rector/Assign/AssignArrayToStringRector.php b/vendor/rector/rector/rules/Php71/Rector/Assign/AssignArrayToStringRector.php
index 9255c4380..29fc4ae4e 100644
--- a/vendor/rector/rector/rules/Php71/Rector/Assign/AssignArrayToStringRector.php
+++ b/vendor/rector/rector/rules/Php71/Rector/Assign/AssignArrayToStringRector.php
@@ -26,8 +26,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/a/41000866/1348344 https://3v4l.org/ABDNv
- *
* @see \Rector\Tests\Php71\Rector\Assign\AssignArrayToStringRector\AssignArrayToStringRectorTest
*/
final class AssignArrayToStringRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php71/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php b/vendor/rector/rector/rules/Php71/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php
index 49b81e686..7427b5998 100644
--- a/vendor/rector/rector/rules/Php71/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php
+++ b/vendor/rector/rector/rules/Php71/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php
@@ -10,6 +10,7 @@
use PhpParser\Node\Expr\BinaryOp\Concat;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar;
+use PhpParser\Node\Scalar\DNumber;
use PhpParser\Node\Scalar\LNumber;
use PhpParser\Node\Scalar\MagicConst\Line;
use PhpParser\Node\Scalar\String_;
@@ -21,8 +22,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/XPEEl
- * @changelog https://3v4l.org/ObNQZ
* @see \Rector\Tests\Php71\Rector\BinaryOp\BinaryOpBetweenNumberAndStringRector\BinaryOpBetweenNumberAndStringRectorTest
*/
final class BinaryOpBetweenNumberAndStringRector extends AbstractRector implements MinPhpVersionInterface
@@ -58,7 +57,7 @@ class SomeClass
public function run()
{
$value = 5 + 0;
- $value = 5.0 + 0;
+ $value = 5.0 + 0.0;
}
}
CODE_SAMPLE
@@ -89,11 +88,11 @@ public function refactor(Node $node) : ?Node
return null;
}
if ($this->isStringOrStaticNonNumericString($node->left) && $this->nodeTypeResolver->isNumberType($node->right)) {
- $node->left = new LNumber(0);
+ $node->left = $this->nodeTypeResolver->getNativeType($node->right)->isInteger()->yes() ? new LNumber(0) : new DNumber(0);
return $node;
}
if ($this->isStringOrStaticNonNumericString($node->right) && $this->nodeTypeResolver->isNumberType($node->left)) {
- $node->right = new LNumber(0);
+ $node->right = $this->nodeTypeResolver->getNativeType($node->left)->isInteger()->yes() ? new LNumber(0) : new DNumber(0);
return $node;
}
return null;
diff --git a/vendor/rector/rector/rules/Php71/Rector/ClassConst/PublicConstantVisibilityRector.php b/vendor/rector/rector/rules/Php71/Rector/ClassConst/PublicConstantVisibilityRector.php
index 627f8437c..45e1bbada 100644
--- a/vendor/rector/rector/rules/Php71/Rector/ClassConst/PublicConstantVisibilityRector.php
+++ b/vendor/rector/rector/rules/Php71/Rector/ClassConst/PublicConstantVisibilityRector.php
@@ -5,6 +5,7 @@
use PhpParser\Node;
use PhpParser\Node\Stmt\ClassConst;
+use Rector\Configuration\Deprecation\Contract\DeprecatedInterface;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\Rector\AbstractRector;
use Rector\ValueObject\PhpVersionFeature;
@@ -12,11 +13,10 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/class_const_visibility
- *
* @see \Rector\Tests\Php71\Rector\ClassConst\PublicConstantVisibilityRector\PublicConstantVisibilityRectorTest
+ * @deprecated Since 1.2.4, as adds blindly public to all constants, even local-only ones that should be private. Use scope-based solution instead, e.g. https://tomasvotruba.com/blog/how-to-add-visbility-to-338-class-constants-in-25-seconds
*/
-final class PublicConstantVisibilityRector extends AbstractRector implements MinPhpVersionInterface
+final class PublicConstantVisibilityRector extends AbstractRector implements MinPhpVersionInterface, DeprecatedInterface
{
/**
* @readonly
diff --git a/vendor/rector/rector/rules/Php71/Rector/FuncCall/RemoveExtraParametersRector.php b/vendor/rector/rector/rules/Php71/Rector/FuncCall/RemoveExtraParametersRector.php
index 6a8bec2cf..9e6fed93d 100644
--- a/vendor/rector/rector/rules/Php71/Rector/FuncCall/RemoveExtraParametersRector.php
+++ b/vendor/rector/rector/rules/Php71/Rector/FuncCall/RemoveExtraParametersRector.php
@@ -21,9 +21,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.reddit.com/r/PHP/comments/a1ie7g/is_there_a_linter_for_argumentcounterror_for_php/
- * @changelog http://php.net/manual/en/class.argumentcounterror.php
- *
* @see \Rector\Tests\Php71\Rector\FuncCall\RemoveExtraParametersRector\RemoveExtraParametersRectorTest
*/
final class RemoveExtraParametersRector extends AbstractRector implements MinPhpVersionInterface
@@ -75,6 +72,9 @@ public function refactor(Node $node) : ?Node
return null;
}
if ($functionLikeReflection instanceof PhpMethodReflection) {
+ if ($functionLikeReflection->isAbstract()) {
+ return null;
+ }
$classReflection = $functionLikeReflection->getDeclaringClass();
if ($classReflection->isInterface()) {
return null;
diff --git a/vendor/rector/rector/rules/Php71/Rector/List_/ListToArrayDestructRector.php b/vendor/rector/rector/rules/Php71/Rector/List_/ListToArrayDestructRector.php
index d8f57f796..5ca94cc3e 100644
--- a/vendor/rector/rector/rules/Php71/Rector/List_/ListToArrayDestructRector.php
+++ b/vendor/rector/rector/rules/Php71/Rector/List_/ListToArrayDestructRector.php
@@ -14,8 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/short_list_syntax https://www.php.net/manual/en/migration71.new-features.php#migration71.new-features.symmetric-array-destructuring
- *
* @see \Rector\Tests\Php71\Rector\List_\ListToArrayDestructRector\ListToArrayDestructRectorTest
*/
final class ListToArrayDestructRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php71/Rector/TryCatch/MultiExceptionCatchRector.php b/vendor/rector/rector/rules/Php71/Rector/TryCatch/MultiExceptionCatchRector.php
index 9b1eb71b8..56a0bde7f 100644
--- a/vendor/rector/rector/rules/Php71/Rector/TryCatch/MultiExceptionCatchRector.php
+++ b/vendor/rector/rector/rules/Php71/Rector/TryCatch/MultiExceptionCatchRector.php
@@ -12,8 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/multiple-catch
- *
* @see \Rector\Tests\Php71\Rector\TryCatch\MultiExceptionCatchRector\MultiExceptionCatchRectorTest
*/
final class MultiExceptionCatchRector extends AbstractRector implements MinPhpVersionInterface
@@ -62,20 +60,22 @@ public function refactor(Node $node) : ?Node
if (\count($node->catches) < 2) {
return null;
}
- $printedCatches = [];
$hasChanged = \false;
foreach ($node->catches as $key => $catch) {
+ if (!isset($node->catches[$key + 1])) {
+ break;
+ }
$currentPrintedCatch = $this->betterStandardPrinter->print($catch->stmts);
+ $nextPrintedCatch = $this->betterStandardPrinter->print($node->catches[$key + 1]->stmts);
// already duplicated catch → remove it and join the type
- if (\in_array($currentPrintedCatch, $printedCatches, \true)) {
- // merge type to existing type
- $existingCatchKey = \array_search($currentPrintedCatch, $printedCatches, \true);
- $node->catches[$existingCatchKey]->types[] = $catch->types[0];
+ if ($currentPrintedCatch === $nextPrintedCatch) {
+ // use current var as next var
+ $node->catches[$key + 1]->var = $node->catches[$key]->var;
+ // merge next types as current merge to next types
+ $node->catches[$key + 1]->types = \array_merge($node->catches[$key]->types, $node->catches[$key + 1]->types);
unset($node->catches[$key]);
$hasChanged = \true;
- continue;
}
- $printedCatches[$key] = $currentPrintedCatch;
}
if ($hasChanged) {
return $node;
diff --git a/vendor/rector/rector/rules/Php72/NodeFactory/AnonymousFunctionFactory.php b/vendor/rector/rector/rules/Php72/NodeFactory/AnonymousFunctionFactory.php
index 238560eda..c47312010 100644
--- a/vendor/rector/rector/rules/Php72/NodeFactory/AnonymousFunctionFactory.php
+++ b/vendor/rector/rector/rules/Php72/NodeFactory/AnonymousFunctionFactory.php
@@ -3,46 +3,30 @@
declare (strict_types=1);
namespace Rector\Php72\NodeFactory;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\ComplexType;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\ArrayDimFetch;
-use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\ClosureUse;
-use PhpParser\Node\Expr\MethodCall;
-use PhpParser\Node\Expr\New_;
-use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
-use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\NullableType;
use PhpParser\Node\Param;
use PhpParser\Node\Scalar\LNumber;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt;
-use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\Return_;
use PhpParser\Node\UnionType;
-use PHPStan\Reflection\FunctionVariantWithPhpDocs;
-use PHPStan\Reflection\ParameterReflection;
-use PHPStan\Reflection\ParametersAcceptorSelector;
-use PHPStan\Reflection\Php\PhpMethodReflection;
-use PHPStan\Type\MixedType;
-use PHPStan\Type\Type;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
-use Rector\PhpParser\AstResolver;
use Rector\PhpParser\Node\BetterNodeFinder;
-use Rector\PhpParser\Node\NodeFactory;
use Rector\PhpParser\Parser\InlineCodeParser;
use Rector\PhpParser\Parser\SimplePhpParser;
-use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
-use Rector\StaticTypeMapper\StaticTypeMapper;
final class AnonymousFunctionFactory
{
/**
@@ -55,16 +39,6 @@ final class AnonymousFunctionFactory
* @var \Rector\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
- /**
- * @readonly
- * @var \Rector\PhpParser\Node\NodeFactory
- */
- private $nodeFactory;
- /**
- * @readonly
- * @var \Rector\StaticTypeMapper\StaticTypeMapper
- */
- private $staticTypeMapper;
/**
* @readonly
* @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser
@@ -75,11 +49,6 @@ final class AnonymousFunctionFactory
* @var \Rector\PhpParser\Parser\SimplePhpParser
*/
private $simplePhpParser;
- /**
- * @readonly
- * @var \Rector\PhpParser\AstResolver
- */
- private $astResolver;
/**
* @readonly
* @var \Rector\PhpParser\Parser\InlineCodeParser
@@ -90,15 +59,12 @@ final class AnonymousFunctionFactory
* @see https://regex101.com/r/jkLLlM/2
*/
private const DIM_FETCH_REGEX = '#(\\$|\\\\|\\x0)(?\\d+)#';
- public function __construct(NodeNameResolver $nodeNameResolver, BetterNodeFinder $betterNodeFinder, NodeFactory $nodeFactory, StaticTypeMapper $staticTypeMapper, SimpleCallableNodeTraverser $simpleCallableNodeTraverser, SimplePhpParser $simplePhpParser, AstResolver $astResolver, InlineCodeParser $inlineCodeParser)
+ public function __construct(NodeNameResolver $nodeNameResolver, BetterNodeFinder $betterNodeFinder, SimpleCallableNodeTraverser $simpleCallableNodeTraverser, SimplePhpParser $simplePhpParser, InlineCodeParser $inlineCodeParser)
{
$this->nodeNameResolver = $nodeNameResolver;
$this->betterNodeFinder = $betterNodeFinder;
- $this->nodeFactory = $nodeFactory;
- $this->staticTypeMapper = $staticTypeMapper;
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->simplePhpParser = $simplePhpParser;
- $this->astResolver = $astResolver;
$this->inlineCodeParser = $inlineCodeParser;
}
/**
@@ -124,27 +90,6 @@ public function create(array $params, array $stmts, $returnTypeNode, bool $stati
$anonymousFunctionClosure->stmts = $stmts;
return $anonymousFunctionClosure;
}
- public function createFromPhpMethodReflection(PhpMethodReflection $phpMethodReflection, Expr $expr) : ?Closure
- {
- /** @var FunctionVariantWithPhpDocs $parametersAcceptorWithPhpDocs */
- $parametersAcceptorWithPhpDocs = ParametersAcceptorSelector::selectSingle($phpMethodReflection->getVariants());
- $newParams = $this->createParams($phpMethodReflection, $parametersAcceptorWithPhpDocs->getParameters());
- $innerMethodCall = $this->createInnerMethodCall($phpMethodReflection, $expr, $newParams);
- if ($innerMethodCall === null) {
- return null;
- }
- $returnTypeNode = null;
- if (!$parametersAcceptorWithPhpDocs->getReturnType() instanceof MixedType) {
- $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($parametersAcceptorWithPhpDocs->getReturnType(), TypeKind::RETURN);
- }
- $uses = [];
- if ($expr instanceof Variable && !$this->nodeNameResolver->isName($expr, 'this')) {
- $uses[] = new ClosureUse($expr);
- }
- // does method return something?
- $stmts = $this->resolveStmts($parametersAcceptorWithPhpDocs, $innerMethodCall);
- return new Closure(['params' => $newParams, 'returnType' => $returnTypeNode, 'uses' => $uses, 'stmts' => $stmts]);
- }
public function createAnonymousFunctionFromExpr(Expr $expr) : ?Closure
{
$stringValue = $this->inlineCodeParser->stringify($expr);
@@ -221,116 +166,4 @@ private function createUseVariablesFromParams(array $nodes, array $params) : arr
}
return $filteredVariables;
}
- /**
- * @param ParameterReflection[] $parameterReflections
- * @return Param[]
- */
- private function createParams(PhpMethodReflection $phpMethodReflection, array $parameterReflections) : array
- {
- $classReflection = $phpMethodReflection->getDeclaringClass();
- $className = $classReflection->getName();
- $methodName = $phpMethodReflection->getName();
- /** @var ClassMethod $classMethod */
- $classMethod = $this->astResolver->resolveClassMethod($className, $methodName);
- $params = [];
- foreach ($parameterReflections as $key => $parameterReflection) {
- $variable = new Variable($parameterReflection->getName());
- $defaultExpr = $this->resolveParamDefaultExpr($parameterReflection, $key, $classMethod);
- $type = $this->resolveParamType($parameterReflection);
- $byRef = $parameterReflection->passedByReference()->yes();
- $params[] = new Param($variable, $defaultExpr, $type, $byRef);
- }
- return $params;
- }
- /**
- * @return \PhpParser\Node\Name|\PhpParser\Node\ComplexType|\PhpParser\Node\Identifier|null
- */
- private function resolveParamType(ParameterReflection $parameterReflection)
- {
- if ($parameterReflection->getType() instanceof MixedType) {
- return null;
- }
- return $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($parameterReflection->getType(), TypeKind::PARAM);
- }
- private function resolveParamDefaultExpr(ParameterReflection $parameterReflection, int $key, ClassMethod $classMethod) : ?Expr
- {
- if (!$parameterReflection->getDefaultValue() instanceof Type) {
- return null;
- }
- $paramDefaultExpr = $classMethod->params[$key]->default;
- if (!$paramDefaultExpr instanceof Expr) {
- return null;
- }
- return $this->nodeFactory->createReprintedExpr($paramDefaultExpr);
- }
- /**
- * @param Param[] $params
- * @return \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall|null
- */
- private function createInnerMethodCall(PhpMethodReflection $phpMethodReflection, Expr $expr, array $params)
- {
- if ($phpMethodReflection->isStatic()) {
- $expr = $this->normalizeClassConstFetchForStatic($expr);
- if (!$expr instanceof Node) {
- return null;
- }
- $innerMethodCall = new StaticCall($expr, $phpMethodReflection->getName());
- } else {
- $expr = $this->resolveExpr($expr);
- if (!$expr instanceof Expr) {
- return null;
- }
- $innerMethodCall = new MethodCall($expr, $phpMethodReflection->getName());
- }
- $innerMethodCall->args = $this->nodeFactory->createArgsFromParams($params);
- return $innerMethodCall;
- }
- /**
- * @return null|\PhpParser\Node\Name|\PhpParser\Node\Name\FullyQualified|\PhpParser\Node\Expr
- */
- private function normalizeClassConstFetchForStatic(Expr $expr)
- {
- if (!$expr instanceof ClassConstFetch) {
- return $expr;
- }
- if (!$this->nodeNameResolver->isName($expr->name, 'class')) {
- return $expr;
- }
- // dynamic name, nothing we can do
- $className = $this->nodeNameResolver->getName($expr->class);
- if ($className === null) {
- return null;
- }
- $name = new Name($className);
- if ($name->isSpecialClassName()) {
- return $name;
- }
- return new FullyQualified($className);
- }
- /**
- * @return \PhpParser\Node\Expr\New_|\PhpParser\Node\Expr|null
- */
- private function resolveExpr(Expr $expr)
- {
- if (!$expr instanceof ClassConstFetch) {
- return $expr;
- }
- if (!$this->nodeNameResolver->isName($expr->name, 'class')) {
- return $expr;
- }
- // dynamic name, nothing we can do
- $className = $this->nodeNameResolver->getName($expr->class);
- return $className === null ? null : new New_(new FullyQualified($className));
- }
- /**
- * @return Stmt[]
- * @param \PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\MethodCall $innerMethodCall
- */
- private function resolveStmts(FunctionVariantWithPhpDocs $functionVariantWithPhpDocs, $innerMethodCall) : array
- {
- if ($functionVariantWithPhpDocs->getReturnType()->isVoid()->yes()) {
- return [new Expression($innerMethodCall)];
- }
- return [new Return_($innerMethodCall)];
- }
}
diff --git a/vendor/rector/rector/rules/Php72/Rector/Assign/ListEachRector.php b/vendor/rector/rector/rules/Php72/Rector/Assign/ListEachRector.php
index 4829372f7..782d91aee 100644
--- a/vendor/rector/rector/rules/Php72/Rector/Assign/ListEachRector.php
+++ b/vendor/rector/rector/rules/Php72/Rector/Assign/ListEachRector.php
@@ -17,8 +17,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecations_php_7_2#each
- *
* @see \Rector\Tests\Php72\Rector\Assign\ListEachRector\ListEachRectorTest
*/
final class ListEachRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php72/Rector/FuncCall/CreateFunctionToAnonymousFunctionRector.php b/vendor/rector/rector/rules/Php72/Rector/FuncCall/CreateFunctionToAnonymousFunctionRector.php
index 8059d591a..c953d6d81 100644
--- a/vendor/rector/rector/rules/Php72/Rector/FuncCall/CreateFunctionToAnonymousFunctionRector.php
+++ b/vendor/rector/rector/rules/Php72/Rector/FuncCall/CreateFunctionToAnonymousFunctionRector.php
@@ -26,8 +26,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://stackoverflow.com/q/48161526/1348344 http://php.net/manual/en/migration72.deprecated.php#migration72.deprecated.create_function-function
- *
* @see \Rector\Tests\Php72\Rector\FuncCall\CreateFunctionToAnonymousFunctionRector\CreateFunctionToAnonymousFunctionRectorTest
*/
final class CreateFunctionToAnonymousFunctionRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php72/Rector/FuncCall/GetClassOnNullRector.php b/vendor/rector/rector/rules/Php72/Rector/FuncCall/GetClassOnNullRector.php
index b1e363c19..c1cd45aa4 100644
--- a/vendor/rector/rector/rules/Php72/Rector/FuncCall/GetClassOnNullRector.php
+++ b/vendor/rector/rector/rules/Php72/Rector/FuncCall/GetClassOnNullRector.php
@@ -19,8 +19,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog http://php.net/manual/en/migration72.incompatible.php#migration72.incompatible.no-null-to-get_class https://3v4l.org/sk0fp
- *
* @see \Rector\Tests\Php72\Rector\FuncCall\GetClassOnNullRector\GetClassOnNullRectorTest
*/
final class GetClassOnNullRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php72/Rector/FuncCall/ParseStrWithResultArgumentRector.php b/vendor/rector/rector/rules/Php72/Rector/FuncCall/ParseStrWithResultArgumentRector.php
index 2d4730231..ec4736a9c 100644
--- a/vendor/rector/rector/rules/Php72/Rector/FuncCall/ParseStrWithResultArgumentRector.php
+++ b/vendor/rector/rector/rules/Php72/Rector/FuncCall/ParseStrWithResultArgumentRector.php
@@ -16,8 +16,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://github.com/gueff/blogimus/commit/04086a10320595470efe446c7ddd90e602aa7228 https://github.com/pxgamer/youtube-dl-php/commit/83cb32b8b36844f2e39f82a862a5ab73da77b608
- *
* @see \Rector\Tests\Php72\Rector\FuncCall\ParseStrWithResultArgumentRector\ParseStrWithResultArgumentRectorTest
*/
final class ParseStrWithResultArgumentRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php72/Rector/FuncCall/StringifyDefineRector.php b/vendor/rector/rector/rules/Php72/Rector/FuncCall/StringifyDefineRector.php
index c2d4dbf49..6ab150222 100644
--- a/vendor/rector/rector/rules/Php72/Rector/FuncCall/StringifyDefineRector.php
+++ b/vendor/rector/rector/rules/Php72/Rector/FuncCall/StringifyDefineRector.php
@@ -14,7 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/YiTeP
* @see \Rector\Tests\Php72\Rector\FuncCall\StringifyDefineRector\StringifyDefineRectorTest
*/
final class StringifyDefineRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php72/Rector/FuncCall/StringsAssertNakedRector.php b/vendor/rector/rector/rules/Php72/Rector/FuncCall/StringsAssertNakedRector.php
index 2c6eeea15..1c264b748 100644
--- a/vendor/rector/rector/rules/Php72/Rector/FuncCall/StringsAssertNakedRector.php
+++ b/vendor/rector/rector/rules/Php72/Rector/FuncCall/StringsAssertNakedRector.php
@@ -15,8 +15,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://github.com/simplesamlphp/simplesamlphp/pull/708/files
- *
* @see \Rector\Tests\Php72\Rector\FuncCall\StringsAssertNakedRector\StringsAssertNakedRectorTest
*/
final class StringsAssertNakedRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php72/Rector/While_/WhileEachToForeachRector.php b/vendor/rector/rector/rules/Php72/Rector/While_/WhileEachToForeachRector.php
index 749e9dbaf..efae476e3 100644
--- a/vendor/rector/rector/rules/Php72/Rector/While_/WhileEachToForeachRector.php
+++ b/vendor/rector/rector/rules/Php72/Rector/While_/WhileEachToForeachRector.php
@@ -16,8 +16,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecations_php_7_2#each
- *
* @see \Rector\Tests\Php72\Rector\While_\WhileEachToForeachRector\WhileEachToForeachRectorTest
*/
final class WhileEachToForeachRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php73/Rector/ConstFetch/SensitiveConstantNameRector.php b/vendor/rector/rector/rules/Php73/Rector/ConstFetch/SensitiveConstantNameRector.php
index 3e00721c9..7c07bc440 100644
--- a/vendor/rector/rector/rules/Php73/Rector/ConstFetch/SensitiveConstantNameRector.php
+++ b/vendor/rector/rector/rules/Php73/Rector/ConstFetch/SensitiveConstantNameRector.php
@@ -14,8 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/case_insensitive_constant_deprecation
- *
* @see \Rector\Tests\Php73\Rector\ConstFetch\SensitiveConstantNameRector\SensitiveConstantNameRectorTest
*/
final class SensitiveConstantNameRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php73/Rector/FuncCall/ArrayKeyFirstLastRector.php b/vendor/rector/rector/rules/Php73/Rector/FuncCall/ArrayKeyFirstLastRector.php
index 7948b7694..1cf350d31 100644
--- a/vendor/rector/rector/rules/Php73/Rector/FuncCall/ArrayKeyFirstLastRector.php
+++ b/vendor/rector/rector/rules/Php73/Rector/FuncCall/ArrayKeyFirstLastRector.php
@@ -19,8 +19,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://tomasvotruba.com/blog/2018/08/16/whats-new-in-php-73-in-30-seconds-in-diffs/#2-first-and-last-array-key
- *
* This needs to removed 1 floor above, because only nodes in arrays can be removed why traversing,
* see https://github.com/nikic/PHP-Parser/issues/389
*
diff --git a/vendor/rector/rector/rules/Php73/Rector/FuncCall/JsonThrowOnErrorRector.php b/vendor/rector/rector/rules/Php73/Rector/FuncCall/JsonThrowOnErrorRector.php
index f40ac8837..9d38ef442 100644
--- a/vendor/rector/rector/rules/Php73/Rector/FuncCall/JsonThrowOnErrorRector.php
+++ b/vendor/rector/rector/rules/Php73/Rector/FuncCall/JsonThrowOnErrorRector.php
@@ -19,8 +19,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog http://wiki.php.net/rfc/json_throw_on_error
- * @changelog https://3v4l.org/5HMVE
* @see \Rector\Tests\Php73\Rector\FuncCall\JsonThrowOnErrorRector\JsonThrowOnErrorRectorTest
*/
final class JsonThrowOnErrorRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php73/Rector/FuncCall/RegexDashEscapeRector.php b/vendor/rector/rector/rules/Php73/Rector/FuncCall/RegexDashEscapeRector.php
index 985fe559a..375b4547e 100644
--- a/vendor/rector/rector/rules/Php73/Rector/FuncCall/RegexDashEscapeRector.php
+++ b/vendor/rector/rector/rules/Php73/Rector/FuncCall/RegexDashEscapeRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Php73\Rector\FuncCall;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Scalar\String_;
use Rector\NodeTypeResolver\Node\AttributeKey;
@@ -14,7 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://3v4l.org/dRG8U
* @see \Rector\Tests\Php73\Rector\FuncCall\RegexDashEscapeRector\RegexDashEscapeRectorTest
*/
final class RegexDashEscapeRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php73/Rector/FuncCall/SensitiveDefineRector.php b/vendor/rector/rector/rules/Php73/Rector/FuncCall/SensitiveDefineRector.php
index 151a59bf2..1ea4663e7 100644
--- a/vendor/rector/rector/rules/Php73/Rector/FuncCall/SensitiveDefineRector.php
+++ b/vendor/rector/rector/rules/Php73/Rector/FuncCall/SensitiveDefineRector.php
@@ -11,8 +11,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/case_insensitive_constant_deprecation
- *
* @see \Rector\Tests\Php73\Rector\FuncCall\SensitiveDefineRector\SensitiveDefineRectorTest
*/
final class SensitiveDefineRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php73/Rector/FuncCall/SetCookieRector.php b/vendor/rector/rector/rules/Php73/Rector/FuncCall/SetCookieRector.php
index b8aebf3bd..a30a7dcfc 100644
--- a/vendor/rector/rector/rules/Php73/Rector/FuncCall/SetCookieRector.php
+++ b/vendor/rector/rector/rules/Php73/Rector/FuncCall/SetCookieRector.php
@@ -19,8 +19,6 @@
* Convert legacy setcookie arguments to new array options
*
* @see \Rector\Tests\Php73\Rector\FuncCall\SetcookieRector\SetCookieRectorTest
- *
- * @changelog https://www.php.net/setcookie https://wiki.php.net/rfc/same-site-cookie
*/
final class SetCookieRector extends AbstractRector implements MinPhpVersionInterface
{
diff --git a/vendor/rector/rector/rules/Php73/Rector/FuncCall/StringifyStrNeedlesRector.php b/vendor/rector/rector/rules/Php73/Rector/FuncCall/StringifyStrNeedlesRector.php
index 273abb0ca..d4404b1ae 100644
--- a/vendor/rector/rector/rules/Php73/Rector/FuncCall/StringifyStrNeedlesRector.php
+++ b/vendor/rector/rector/rules/Php73/Rector/FuncCall/StringifyStrNeedlesRector.php
@@ -14,7 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecations_php_7_3#string_search_functions_with_integer_needle
* @see \Rector\Tests\Php73\Rector\FuncCall\StringifyStrNeedlesRector\StringifyStrNeedlesRectorTest
*/
final class StringifyStrNeedlesRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php73/Rector/String_/SensitiveHereNowDocRector.php b/vendor/rector/rector/rules/Php73/Rector/String_/SensitiveHereNowDocRector.php
index b62b2a4ac..f2c371ad1 100644
--- a/vendor/rector/rector/rules/Php73/Rector/String_/SensitiveHereNowDocRector.php
+++ b/vendor/rector/rector/rules/Php73/Rector/String_/SensitiveHereNowDocRector.php
@@ -12,7 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes
* @see \Rector\Tests\Php73\Rector\String_\SensitiveHereNowDocRector\SensitiveHereNowDocRectorTest
*/
final class SensitiveHereNowDocRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/ArrayDimFetch/CurlyToSquareBracketArrayStringRector.php b/vendor/rector/rector/rules/Php74/Rector/ArrayDimFetch/CurlyToSquareBracketArrayStringRector.php
index 5dc0f2daf..4c1dce008 100644
--- a/vendor/rector/rector/rules/Php74/Rector/ArrayDimFetch/CurlyToSquareBracketArrayStringRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/ArrayDimFetch/CurlyToSquareBracketArrayStringRector.php
@@ -13,7 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.php.net/manual/en/migration74.deprecated.php
* @see \Rector\Tests\Php74\Rector\ArrayDimFetch\CurlyToSquareBracketArrayStringRector\CurlyToSquareBracketArrayStringRectorTest
*/
final class CurlyToSquareBracketArrayStringRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/Assign/NullCoalescingOperatorRector.php b/vendor/rector/rector/rules/Php74/Rector/Assign/NullCoalescingOperatorRector.php
index 92dd1bac6..b1d8a8343 100644
--- a/vendor/rector/rector/rules/Php74/Rector/Assign/NullCoalescingOperatorRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/Assign/NullCoalescingOperatorRector.php
@@ -13,7 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/null_coalesce_equal_operator
* @see \Rector\Tests\Php74\Rector\Assign\NullCoalescingOperatorRector\NullCoalescingOperatorRectorTest
*/
final class NullCoalescingOperatorRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/Closure/ClosureToArrowFunctionRector.php b/vendor/rector/rector/rules/Php74/Rector/Closure/ClosureToArrowFunctionRector.php
index 94b0fd45b..d5c4f5fa2 100644
--- a/vendor/rector/rector/rules/Php74/Rector/Closure/ClosureToArrowFunctionRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/Closure/ClosureToArrowFunctionRector.php
@@ -15,8 +15,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/arrow_functions_v2
- *
* @see \Rector\Tests\Php74\Rector\Closure\ClosureToArrowFunctionRector\ClosureToArrowFunctionRectorTest
*/
final class ClosureToArrowFunctionRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/Double/RealToFloatTypeCastRector.php b/vendor/rector/rector/rules/Php74/Rector/Double/RealToFloatTypeCastRector.php
index 6cd1ca716..a1ea3b246 100644
--- a/vendor/rector/rector/rules/Php74/Rector/Double/RealToFloatTypeCastRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/Double/RealToFloatTypeCastRector.php
@@ -12,7 +12,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecations_php_7_4
* @see \Rector\Tests\Php74\Rector\Double\RealToFloatTypeCastRector\RealToFloatTypeCastRectorTest
*/
final class RealToFloatTypeCastRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/FuncCall/ArrayKeyExistsOnPropertyRector.php b/vendor/rector/rector/rules/Php74/Rector/FuncCall/ArrayKeyExistsOnPropertyRector.php
index c5c25827d..a95498b3a 100644
--- a/vendor/rector/rector/rules/Php74/Rector/FuncCall/ArrayKeyExistsOnPropertyRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/FuncCall/ArrayKeyExistsOnPropertyRector.php
@@ -14,8 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecations_php_7_4 (not confirmed yet)
- * @changelog https://3v4l.org/69mpd
* @see \Rector\Tests\Php74\Rector\FuncCall\ArrayKeyExistsOnPropertyRector\ArrayKeyExistsOnPropertyRectorTest
*/
final class ArrayKeyExistsOnPropertyRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/FuncCall/FilterVarToAddSlashesRector.php b/vendor/rector/rector/rules/Php74/Rector/FuncCall/FilterVarToAddSlashesRector.php
index 1646ba032..9c58161d0 100644
--- a/vendor/rector/rector/rules/Php74/Rector/FuncCall/FilterVarToAddSlashesRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/FuncCall/FilterVarToAddSlashesRector.php
@@ -13,8 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecations_php_7_4 (not confirmed yet)
- * @changelog https://3v4l.org/9rLjE
* @see \Rector\Tests\Php74\Rector\FuncCall\FilterVarToAddSlashesRector\FilterVarToAddSlashesRectorTest
*/
final class FilterVarToAddSlashesRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/FuncCall/HebrevcToNl2brHebrevRector.php b/vendor/rector/rector/rules/Php74/Rector/FuncCall/HebrevcToNl2brHebrevRector.php
new file mode 100644
index 000000000..16fbf6e3a
--- /dev/null
+++ b/vendor/rector/rector/rules/Php74/Rector/FuncCall/HebrevcToNl2brHebrevRector.php
@@ -0,0 +1,55 @@
+>
+ */
+ public function getNodeTypes() : array
+ {
+ return [FuncCall::class];
+ }
+ /**
+ * @param FuncCall $node
+ */
+ public function refactor(Node $node) : ?FuncCall
+ {
+ if (!$this->isName($node, 'hebrevc')) {
+ return null;
+ }
+ if ($node->isFirstClassCallable()) {
+ return null;
+ }
+ $node->name = new Name('hebrev');
+ return new FuncCall(new Name('nl2br'), [new Arg($node)]);
+ }
+}
diff --git a/vendor/rector/rector/rules/Php74/Rector/FuncCall/MbStrrposEncodingArgumentPositionRector.php b/vendor/rector/rector/rules/Php74/Rector/FuncCall/MbStrrposEncodingArgumentPositionRector.php
index b6f16cb25..5017b4cc8 100644
--- a/vendor/rector/rector/rules/Php74/Rector/FuncCall/MbStrrposEncodingArgumentPositionRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/FuncCall/MbStrrposEncodingArgumentPositionRector.php
@@ -13,8 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecations_php_7_4 https://3v4l.org/kLdtB
- *
* @see \Rector\Tests\Php74\Rector\FuncCall\MbStrrposEncodingArgumentPositionRector\MbStrrposEncodingArgumentPositionRectorTest
*/
final class MbStrrposEncodingArgumentPositionRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/FuncCall/MoneyFormatToNumberFormatRector.php b/vendor/rector/rector/rules/Php74/Rector/FuncCall/MoneyFormatToNumberFormatRector.php
index 7e93d53b2..0d0764c58 100644
--- a/vendor/rector/rector/rules/Php74/Rector/FuncCall/MoneyFormatToNumberFormatRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/FuncCall/MoneyFormatToNumberFormatRector.php
@@ -19,8 +19,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.php.net/manual/en/function.money-format.php#warning
- *
* @see \Rector\Tests\Php74\Rector\FuncCall\MoneyFormatToNumberFormatRector\MoneyFormatToNumberFormatRectorTest
*/
final class MoneyFormatToNumberFormatRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/FuncCall/RestoreIncludePathToIniRestoreRector.php b/vendor/rector/rector/rules/Php74/Rector/FuncCall/RestoreIncludePathToIniRestoreRector.php
new file mode 100644
index 000000000..a7cc97eee
--- /dev/null
+++ b/vendor/rector/rector/rules/Php74/Rector/FuncCall/RestoreIncludePathToIniRestoreRector.php
@@ -0,0 +1,58 @@
+>
+ */
+ public function getNodeTypes() : array
+ {
+ return [FuncCall::class];
+ }
+ /**
+ * @param FuncCall $node
+ */
+ public function refactor(Node $node) : ?FuncCall
+ {
+ if (!$this->isName($node, 'restore_include_path')) {
+ return null;
+ }
+ if ($node->isFirstClassCallable()) {
+ return null;
+ }
+ $node->name = new Name('ini_restore');
+ $node->args[0] = new Arg(new String_('include_path'));
+ return $node;
+ }
+}
diff --git a/vendor/rector/rector/rules/Php74/Rector/LNumber/AddLiteralSeparatorToNumberRector.php b/vendor/rector/rector/rules/Php74/Rector/LNumber/AddLiteralSeparatorToNumberRector.php
index 084104eb3..eafa6b99c 100644
--- a/vendor/rector/rector/rules/Php74/Rector/LNumber/AddLiteralSeparatorToNumberRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/LNumber/AddLiteralSeparatorToNumberRector.php
@@ -14,13 +14,9 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
- * @changelog https://wiki.php.net/rfc/numeric_literal_separator
- * @changelog https://github.com/nikic/PHP-Parser/pull/615
- *
* @see \Rector\Tests\Php74\Rector\LNumber\AddLiteralSeparatorToNumberRector\AddLiteralSeparatorToNumberRectorTest
- * @changelog https://twitter.com/seldaek/status/1329064983120982022
*
* Taking the most generic use case to the account: https://wiki.php.net/rfc/numeric_literal_separator#should_it_be_the_role_of_an_ide_to_group_digits
* The final check should be done manually
@@ -75,7 +71,7 @@ public function run()
}
}
CODE_SAMPLE
-, [\Rector\Php74\Rector\LNumber\AddLiteralSeparatorToNumberRector::LIMIT_VALUE => 1000000])]);
+, [self::LIMIT_VALUE => 1000000])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/Php74/Rector/StaticCall/ExportToReflectionFunctionRector.php b/vendor/rector/rector/rules/Php74/Rector/StaticCall/ExportToReflectionFunctionRector.php
index 98685280f..b8b6e6749 100644
--- a/vendor/rector/rector/rules/Php74/Rector/StaticCall/ExportToReflectionFunctionRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/StaticCall/ExportToReflectionFunctionRector.php
@@ -17,8 +17,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecations_php_7_4 (not confirmed yet)
- * @changelog https://3v4l.org/RTCUq
* @see \Rector\Tests\Php74\Rector\StaticCall\ExportToReflectionFunctionRector\ExportToReflectionFunctionRectorTest
*/
final class ExportToReflectionFunctionRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php74/Rector/Ternary/ParenthesizeNestedTernaryRector.php b/vendor/rector/rector/rules/Php74/Rector/Ternary/ParenthesizeNestedTernaryRector.php
index e677ca7d4..9f06b71ba 100644
--- a/vendor/rector/rector/rules/Php74/Rector/Ternary/ParenthesizeNestedTernaryRector.php
+++ b/vendor/rector/rector/rules/Php74/Rector/Ternary/ParenthesizeNestedTernaryRector.php
@@ -13,8 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://www.php.net/manual/en/migration74.deprecated.php
- * @changelog https://3v4l.org/vhdlJ
* @see \Rector\Tests\Php74\Rector\Ternary\ParenthesizeNestedTernaryRector\ParenthesizeNestedTernaryRectorTest
*/
final class ParenthesizeNestedTernaryRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php80/MatchAndRefactor/StrStartsWithMatchAndRefactor/SubstrMatchAndRefactor.php b/vendor/rector/rector/rules/Php80/MatchAndRefactor/StrStartsWithMatchAndRefactor/SubstrMatchAndRefactor.php
index ef9bec8af..16ac46d2b 100644
--- a/vendor/rector/rector/rules/Php80/MatchAndRefactor/StrStartsWithMatchAndRefactor/SubstrMatchAndRefactor.php
+++ b/vendor/rector/rector/rules/Php80/MatchAndRefactor/StrStartsWithMatchAndRefactor/SubstrMatchAndRefactor.php
@@ -108,8 +108,8 @@ private function isHardcodedStringWithLNumberLength(StrStartsWith $strStartsWith
if (!$this->valueResolver->isValue($secondArg->value, 0)) {
return \false;
}
- $hardcodedStringNeedle = $strStartsWith->getNeedleExpr();
- if (!$hardcodedStringNeedle instanceof String_) {
+ $expr = $strStartsWith->getNeedleExpr();
+ if (!$expr instanceof String_) {
return \false;
}
if (\count($substrFuncCall->getArgs()) < 3) {
@@ -119,6 +119,6 @@ private function isHardcodedStringWithLNumberLength(StrStartsWith $strStartsWith
if (!$lNumberLength instanceof LNumber) {
return \false;
}
- return $lNumberLength->value === \strlen($hardcodedStringNeedle->value);
+ return $lNumberLength->value === \strlen($expr->value);
}
}
diff --git a/vendor/rector/rector/rules/Php80/NodeAnalyzer/PhpAttributeAnalyzer.php b/vendor/rector/rector/rules/Php80/NodeAnalyzer/PhpAttributeAnalyzer.php
index ba39916e1..4daa42508 100644
--- a/vendor/rector/rector/rules/Php80/NodeAnalyzer/PhpAttributeAnalyzer.php
+++ b/vendor/rector/rector/rules/Php80/NodeAnalyzer/PhpAttributeAnalyzer.php
@@ -15,6 +15,7 @@
use PhpParser\Node\Stmt\Property;
use PHPStan\Reflection\ReflectionProvider;
use Rector\NodeNameResolver\NodeNameResolver;
+use Rector\Php81\Enum\AttributeName;
use Rector\PhpAttribute\Enum\DocTagNodeState;
final class PhpAttributeAnalyzer
{
@@ -48,6 +49,9 @@ public function hasPhpAttribute($node, string $attributeClass) : bool
}
return \false;
}
+ /**
+ * @param AttributeName::* $attributeClass
+ */
public function hasInheritedPhpAttribute(Class_ $class, string $attributeClass) : bool
{
$className = (string) $this->nodeNameResolver->getName($class);
diff --git a/vendor/rector/rector/rules/Php80/Rector/Catch_/RemoveUnusedVariableInCatchRector.php b/vendor/rector/rector/rules/Php80/Rector/Catch_/RemoveUnusedVariableInCatchRector.php
index 6c8a7b522..f7cf1be4f 100644
--- a/vendor/rector/rector/rules/Php80/Rector/Catch_/RemoveUnusedVariableInCatchRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/Catch_/RemoveUnusedVariableInCatchRector.php
@@ -7,6 +7,7 @@
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\TryCatch;
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
+use Rector\DeadCode\NodeAnalyzer\ExprUsedInNodeAnalyzer;
use Rector\NodeManipulator\StmtsManipulator;
use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\Rector\AbstractRector;
@@ -15,8 +16,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/non-capturing_catches
- *
* @see \Rector\Tests\Php80\Rector\Catch_\RemoveUnusedVariableInCatchRector\RemoveUnusedVariableInCatchRectorTest
*/
final class RemoveUnusedVariableInCatchRector extends AbstractRector implements MinPhpVersionInterface
@@ -31,10 +30,16 @@ final class RemoveUnusedVariableInCatchRector extends AbstractRector implements
* @var \Rector\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
- public function __construct(StmtsManipulator $stmtsManipulator, BetterNodeFinder $betterNodeFinder)
+ /**
+ * @readonly
+ * @var \Rector\DeadCode\NodeAnalyzer\ExprUsedInNodeAnalyzer
+ */
+ private $exprUsedInNodeAnalyzer;
+ public function __construct(StmtsManipulator $stmtsManipulator, BetterNodeFinder $betterNodeFinder, ExprUsedInNodeAnalyzer $exprUsedInNodeAnalyzer)
{
$this->stmtsManipulator = $stmtsManipulator;
$this->betterNodeFinder = $betterNodeFinder;
+ $this->exprUsedInNodeAnalyzer = $exprUsedInNodeAnalyzer;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -89,8 +94,10 @@ public function refactor(Node $node) : ?Node
}
/** @var string $variableName */
$variableName = $this->getName($caughtVar);
- $isVariableUsed = (bool) $this->betterNodeFinder->findVariableOfName($catch->stmts, $variableName);
- if ($isVariableUsed) {
+ $isFoundInCatchStmts = (bool) $this->betterNodeFinder->findFirst($catch->stmts, function (Node $subNode) use($caughtVar) : bool {
+ return $this->exprUsedInNodeAnalyzer->isUsed($subNode, $caughtVar);
+ });
+ if ($isFoundInCatchStmts) {
continue;
}
if ($this->stmtsManipulator->isVariableUsedInNextStmt($node, $key + 1, $variableName)) {
diff --git a/vendor/rector/rector/rules/Php80/Rector/ClassConstFetch/ClassOnThisVariableObjectRector.php b/vendor/rector/rector/rules/Php80/Rector/ClassConstFetch/ClassOnThisVariableObjectRector.php
index 9b918f0fb..84e4fc931 100644
--- a/vendor/rector/rector/rules/Php80/Rector/ClassConstFetch/ClassOnThisVariableObjectRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/ClassConstFetch/ClassOnThisVariableObjectRector.php
@@ -19,9 +19,6 @@
* ::class introduced in php 5.5
* while $this::class introduced in php 8.0
*
- * @changelog https://wiki.php.net/rfc/class_name_scalars
- * @changelog https://wiki.php.net/rfc/class_name_literal_on_object
- *
* @see \Rector\Tests\Php80\Rector\ClassConstFetch\ClassOnThisVariableObjectRector\ClassOnThisVariableObjectRectorTest
*/
final class ClassOnThisVariableObjectRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php80/Rector/ClassMethod/AddParamBasedOnParentClassMethodRector.php b/vendor/rector/rector/rules/Php80/Rector/ClassMethod/AddParamBasedOnParentClassMethodRector.php
index 20d4c7958..0eeafe72a 100644
--- a/vendor/rector/rector/rules/Php80/Rector/ClassMethod/AddParamBasedOnParentClassMethodRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/ClassMethod/AddParamBasedOnParentClassMethodRector.php
@@ -27,7 +27,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/lsp_errors
* @see \Rector\Tests\Php80\Rector\ClassMethod\AddParamBasedOnParentClassMethodRector\AddParamBasedOnParentClassMethodRectorTest
*/
final class AddParamBasedOnParentClassMethodRector extends AbstractRector implements MinPhpVersionInterface
@@ -200,7 +199,7 @@ private function processReplaceClassMethodParams(ClassMethod $node, ClassMethod
}
$paramDefault = $parentClassMethodParam->default;
if ($paramDefault instanceof Expr) {
- $paramDefault = $this->nodeFactory->createReprintedExpr($paramDefault);
+ $paramDefault = $this->nodeFactory->createReprintedNode($paramDefault);
}
$paramName = $this->nodeNameResolver->getName($parentClassMethodParam);
$paramType = $this->resolveParamType($parentClassMethodParam);
@@ -220,9 +219,7 @@ private function resolveParamType(Param $param)
if ($param->type === null) {
return null;
}
- $paramType = $param->type;
- $paramType->setAttribute(AttributeKey::ORIGINAL_NODE, null);
- return $paramType;
+ return $this->nodeFactory->createReprintedNode($param->type);
}
/**
* @return string[]
diff --git a/vendor/rector/rector/rules/Php80/Rector/Class_/AnnotationToAttributeRector.php b/vendor/rector/rector/rules/Php80/Rector/Class_/AnnotationToAttributeRector.php
index 1f4bad5be..ef8cbf8cb 100644
--- a/vendor/rector/rector/rules/Php80/Rector/Class_/AnnotationToAttributeRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/Class_/AnnotationToAttributeRector.php
@@ -37,11 +37,8 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
- * @changelog https://wiki.php.net/rfc/attributes_v2
- * @changelog https://wiki.php.net/rfc/new_in_initializers
- *
* @see \Rector\Tests\Php80\Rector\Class_\AnnotationToAttributeRector\AnnotationToAttributeRectorTest
* @see \Rector\Tests\Php80\Rector\Class_\AnnotationToAttributeRector\Php81NestedAttributesRectorTest
*/
diff --git a/vendor/rector/rector/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php b/vendor/rector/rector/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php
index a1b554580..b404f5ef5 100644
--- a/vendor/rector/rector/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php
@@ -38,8 +38,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/constructor_promotion https://github.com/php/php-src/pull/5291
- *
* @see \Rector\Tests\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector\ClassPropertyAssignToConstructorPromotionRectorTest
*/
final class ClassPropertyAssignToConstructorPromotionRector extends AbstractRector implements MinPhpVersionInterface, ConfigurableRectorInterface
@@ -155,7 +153,7 @@ public function __construct(
}
}
CODE_SAMPLE
-, [\Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector::INLINE_PUBLIC => \false, \Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector::RENAME_PROPERTY => \true])]);
+, [self::INLINE_PUBLIC => \false, self::RENAME_PROPERTY => \true])]);
}
public function configure(array $configuration) : void
{
diff --git a/vendor/rector/rector/rules/Php80/Rector/Class_/StringableForToStringRector.php b/vendor/rector/rector/rules/Php80/Rector/Class_/StringableForToStringRector.php
index fc02f2092..b76df8908 100644
--- a/vendor/rector/rector/rules/Php80/Rector/Class_/StringableForToStringRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/Class_/StringableForToStringRector.php
@@ -6,12 +6,15 @@
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Cast\String_ as CastString_;
+use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
+use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\Return_;
+use PhpParser\NodeTraverser;
use Rector\FamilyTree\Reflection\FamilyRelationsAnalyzer;
use Rector\NodeAnalyzer\ClassAnalyzer;
use Rector\PhpParser\Node\BetterNodeFinder;
@@ -23,8 +26,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/stringable
- *
* @see \Rector\Tests\Php80\Rector\Class_\StringableForToStringRector\StringableForToStringRectorTest
*/
final class StringableForToStringRector extends AbstractRector implements MinPhpVersionInterface
@@ -145,7 +146,10 @@ private function processNotStringType(ClassMethod $toStringClassMethod) : void
$this->hasChanged = \true;
return;
}
- $this->traverseNodesWithCallable((array) $toStringClassMethod->stmts, function (Node $subNode) {
+ $this->traverseNodesWithCallable((array) $toStringClassMethod->stmts, function (Node $subNode) : ?int {
+ if ($subNode instanceof Class_ || $subNode instanceof Function_ || $subNode instanceof Closure) {
+ return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
+ }
if (!$subNode instanceof Return_) {
return null;
}
diff --git a/vendor/rector/rector/rules/Php80/Rector/FuncCall/ClassOnObjectRector.php b/vendor/rector/rector/rules/Php80/Rector/FuncCall/ClassOnObjectRector.php
index c8dd7c98a..b65302d45 100644
--- a/vendor/rector/rector/rules/Php80/Rector/FuncCall/ClassOnObjectRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/FuncCall/ClassOnObjectRector.php
@@ -13,8 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/class_name_literal_on_object
- *
* @see \Rector\Tests\Php80\Rector\FuncCall\ClassOnObjectRector\ClassOnObjectRectorTest
*/
final class ClassOnObjectRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php80/Rector/FunctionLike/MixedTypeRector.php b/vendor/rector/rector/rules/Php80/Rector/FunctionLike/MixedTypeRector.php
index a988b1d99..76d93eb81 100644
--- a/vendor/rector/rector/rules/Php80/Rector/FunctionLike/MixedTypeRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/FunctionLike/MixedTypeRector.php
@@ -100,7 +100,7 @@ public function refactor(Node $node) : ?Node
$this->hasChanged = \false;
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
$this->refactorParamTypes($node, $phpDocInfo);
- $hasChanged = $this->paramTagRemover->removeParamTagsIfUseless($phpDocInfo, $node);
+ $hasChanged = $this->paramTagRemover->removeParamTagsIfUseless($phpDocInfo, $node, new MixedType());
if ($this->hasChanged) {
return $node;
}
diff --git a/vendor/rector/rector/rules/Php80/Rector/Identical/StrEndsWithRector.php b/vendor/rector/rector/rules/Php80/Rector/Identical/StrEndsWithRector.php
index 71e80bf6c..7da261144 100644
--- a/vendor/rector/rector/rules/Php80/Rector/Identical/StrEndsWithRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/Identical/StrEndsWithRector.php
@@ -27,8 +27,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions
- *
* @see \Rector\Tests\Php80\Rector\Identical\StrEndsWithRector\StrEndsWithRectorTest
*/
final class StrEndsWithRector extends AbstractRector implements MinPhpVersionInterface, RelatedPolyfillInterface
diff --git a/vendor/rector/rector/rules/Php80/Rector/Identical/StrStartsWithRector.php b/vendor/rector/rector/rules/Php80/Rector/Identical/StrStartsWithRector.php
index 86bc32374..4aafdb0ca 100644
--- a/vendor/rector/rector/rules/Php80/Rector/Identical/StrStartsWithRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/Identical/StrStartsWithRector.php
@@ -21,11 +21,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions
- *
- * @changelog https://3v4l.org/RQHB5 for weak compare
- * @changelog https://3v4l.org/AmLja for weak compare
- *
* @see \Rector\Tests\Php80\Rector\Identical\StrStartsWithRector\StrStartsWithRectorTest
*/
final class StrStartsWithRector extends AbstractRector implements MinPhpVersionInterface, RelatedPolyfillInterface
diff --git a/vendor/rector/rector/rules/Php80/Rector/NotIdentical/StrContainsRector.php b/vendor/rector/rector/rules/Php80/Rector/NotIdentical/StrContainsRector.php
index 820e69987..274a590be 100644
--- a/vendor/rector/rector/rules/Php80/Rector/NotIdentical/StrContainsRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/NotIdentical/StrContainsRector.php
@@ -23,8 +23,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://externals.io/message/108562 https://github.com/php/php-src/pull/5179
- *
* @see \Rector\Tests\Php80\Rector\NotIdentical\StrContainsRector\StrContainsRectorTest
*/
final class StrContainsRector extends AbstractRector implements MinPhpVersionInterface, RelatedPolyfillInterface
diff --git a/vendor/rector/rector/rules/Php80/Rector/Property/NestedAnnotationToAttributeRector.php b/vendor/rector/rector/rules/Php80/Rector/Property/NestedAnnotationToAttributeRector.php
index 7aceb7aa9..2a33e173c 100644
--- a/vendor/rector/rector/rules/Php80/Rector/Property/NestedAnnotationToAttributeRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/Property/NestedAnnotationToAttributeRector.php
@@ -8,6 +8,7 @@
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Property;
+use PhpParser\Node\Stmt\Use_;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
@@ -29,11 +30,9 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Php80\Rector\Property\NestedAnnotationToAttributeRector\NestedAnnotationToAttributeRectorTest
- *
- * @changelog https://www.doctrine-project.org/projects/doctrine-orm/en/2.13/reference/attributes-reference.html#joincolumn-inversejoincolumn
*/
final class NestedAnnotationToAttributeRector extends AbstractRector implements ConfigurableRectorInterface, MinPhpVersionInterface
{
@@ -107,7 +106,7 @@ class SomeEntity
private $collection;
}
CODE_SAMPLE
-, [[new NestedAnnotationToAttribute('Doctrine\\ORM\\Mapping\\JoinTable', [new AnnotationPropertyToAttributeClass('Doctrine\\ORM\\Mapping\\JoinColumn', 'joinColumns'), new AnnotationPropertyToAttributeClass('Doctrine\\ORM\\Mapping\\InverseJoinColumn', 'inverseJoinColumns')])]])]);
+, [new NestedAnnotationToAttribute('Doctrine\\ORM\\Mapping\\JoinTable', [new AnnotationPropertyToAttributeClass('Doctrine\\ORM\\Mapping\\JoinColumn', 'joinColumns'), new AnnotationPropertyToAttributeClass('Doctrine\\ORM\\Mapping\\InverseJoinColumn', 'inverseJoinColumns')])])]);
}
/**
* @return array>
@@ -149,7 +148,7 @@ public function provideMinPhpVersion() : int
return PhpVersion::PHP_80;
}
/**
- * @param Node\Stmt\Use_[] $uses
+ * @param Use_[] $uses
* @return AttributeGroup[]
*/
private function transformDoctrineAnnotationClassesToAttributeGroups(PhpDocInfo $phpDocInfo, array $uses) : array
diff --git a/vendor/rector/rector/rules/Php80/Rector/Switch_/ChangeSwitchToMatchRector.php b/vendor/rector/rector/rules/Php80/Rector/Switch_/ChangeSwitchToMatchRector.php
index afda24fb0..3869993a3 100644
--- a/vendor/rector/rector/rules/Php80/Rector/Switch_/ChangeSwitchToMatchRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/Switch_/ChangeSwitchToMatchRector.php
@@ -22,9 +22,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/match_expression_v2
- * @changelog https://3v4l.org/572T5
- *
* @see \Rector\Tests\Php80\Rector\Switch_\ChangeSwitchToMatchRector\ChangeSwitchToMatchRectorTest
*/
final class ChangeSwitchToMatchRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php80/Rector/Ternary/GetDebugTypeRector.php b/vendor/rector/rector/rules/Php80/Rector/Ternary/GetDebugTypeRector.php
index ff936df95..6b72ebc31 100644
--- a/vendor/rector/rector/rules/Php80/Rector/Ternary/GetDebugTypeRector.php
+++ b/vendor/rector/rector/rules/Php80/Rector/Ternary/GetDebugTypeRector.php
@@ -17,8 +17,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/get_debug_type
- *
* @see \Rector\Tests\Php80\Rector\Ternary\GetDebugTypeRector\GetDebugTypeRectorTest
*/
final class GetDebugTypeRector extends AbstractRector implements MinPhpVersionInterface, RelatedPolyfillInterface
diff --git a/vendor/rector/rector/rules/Php80/ValueObject/AnnotationToAttribute.php b/vendor/rector/rector/rules/Php80/ValueObject/AnnotationToAttribute.php
index 95156b5b1..08b634008 100644
--- a/vendor/rector/rector/rules/Php80/ValueObject/AnnotationToAttribute.php
+++ b/vendor/rector/rector/rules/Php80/ValueObject/AnnotationToAttribute.php
@@ -5,7 +5,7 @@
use Rector\Php80\Contract\ValueObject\AnnotationToAttributeInterface;
use Rector\Validation\RectorAssert;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class AnnotationToAttribute implements AnnotationToAttributeInterface
{
/**
diff --git a/vendor/rector/rector/rules/Php81/NodeFactory/EnumFactory.php b/vendor/rector/rector/rules/Php81/NodeFactory/EnumFactory.php
index 7e9888e0c..884dce1b5 100644
--- a/vendor/rector/rector/rules/Php81/NodeFactory/EnumFactory.php
+++ b/vendor/rector/rector/rules/Php81/NodeFactory/EnumFactory.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Php81\NodeFactory;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\BuilderFactory;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
@@ -15,7 +15,6 @@
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Enum_;
use PhpParser\Node\Stmt\EnumCase;
-use PhpParser\Node\Stmt\Return_;
use PHPStan\PhpDocParser\Ast\PhpDoc\MethodTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
@@ -142,8 +141,7 @@ private function generateMappingFromClass(Class_ $class) : array
if (!$classMethod instanceof ClassMethod) {
return [];
}
- /** @var Return_[] $returns */
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($classMethod, Return_::class);
+ $returns = $this->betterNodeFinder->findReturnsScoped($classMethod);
/** @var array $mapping */
$mapping = [];
foreach ($returns as $return) {
diff --git a/vendor/rector/rector/rules/Php81/Rector/Array_/FirstClassCallableRector.php b/vendor/rector/rector/rules/Php81/Rector/Array_/FirstClassCallableRector.php
index 3e4de9a81..4ef676e4e 100644
--- a/vendor/rector/rector/rules/Php81/Rector/Array_/FirstClassCallableRector.php
+++ b/vendor/rector/rector/rules/Php81/Rector/Array_/FirstClassCallableRector.php
@@ -20,14 +20,13 @@
use Rector\NodeCollector\NodeAnalyzer\ArrayCallableMethodMatcher;
use Rector\NodeCollector\ValueObject\ArrayCallable;
use Rector\Rector\AbstractScopeAwareRector;
+use Rector\Reflection\ReflectionResolver;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use Rector\ValueObject\PhpVersion;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://php.watch/versions/8.1/first-class-callable-syntax
- *
* @see \Rector\Tests\Php81\Rector\Array_\FirstClassCallableRector\FirstClassCallableRectorTest
*/
final class FirstClassCallableRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
@@ -42,13 +41,20 @@ final class FirstClassCallableRector extends AbstractScopeAwareRector implements
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
- public function __construct(ArrayCallableMethodMatcher $arrayCallableMethodMatcher, ReflectionProvider $reflectionProvider)
+ /**
+ * @readonly
+ * @var \Rector\Reflection\ReflectionResolver
+ */
+ private $reflectionResolver;
+ public function __construct(ArrayCallableMethodMatcher $arrayCallableMethodMatcher, ReflectionProvider $reflectionProvider, ReflectionResolver $reflectionResolver)
{
$this->arrayCallableMethodMatcher = $arrayCallableMethodMatcher;
$this->reflectionProvider = $reflectionProvider;
+ $this->reflectionResolver = $reflectionResolver;
}
public function getRuleDefinition() : RuleDefinition
{
+ // see RFC https://wiki.php.net/rfc/first_class_callable_syntax
return new RuleDefinition('Upgrade array callable to first class callable', [new CodeSample(<<<'CODE_SAMPLE'
final class SomeClass
{
@@ -109,7 +115,16 @@ public function refactorWithScope(Node $node, Scope $scope)
}
return new StaticCall($callerExpr->class, $arrayCallable->getMethod(), $args);
}
- return new MethodCall($callerExpr, $arrayCallable->getMethod(), $args);
+ $methodName = $arrayCallable->getMethod();
+ $methodCall = new MethodCall($callerExpr, $methodName, $args);
+ $classReflection = $this->reflectionResolver->resolveClassReflectionSourceObject($methodCall);
+ if ($classReflection instanceof ClassReflection && $classReflection->hasNativeMethod($methodName)) {
+ $method = $classReflection->getNativeMethod($methodName);
+ if (!$method->isPublic()) {
+ return null;
+ }
+ }
+ return $methodCall;
}
public function provideMinPhpVersion() : int
{
diff --git a/vendor/rector/rector/rules/Php81/Rector/ClassConst/FinalizePublicClassConstantRector.php b/vendor/rector/rector/rules/Php81/Rector/ClassConst/FinalizePublicClassConstantRector.php
deleted file mode 100644
index 4a241703d..000000000
--- a/vendor/rector/rector/rules/Php81/Rector/ClassConst/FinalizePublicClassConstantRector.php
+++ /dev/null
@@ -1,62 +0,0 @@
->
- */
- public function getNodeTypes() : array
- {
- return [Class_::class];
- }
- /**
- * @param Class_ $node
- */
- public function refactor(Node $node) : ?Node
- {
- if ($this->hasWarned) {
- return null;
- }
- \trigger_error(\sprintf('The "%s" rule was deprecated, as its functionality caused bugs. Without knowing the full dependency tree, its risky to change.', self::class));
- \sleep(3);
- $this->hasWarned = \true;
- return null;
- }
- public function provideMinPhpVersion() : int
- {
- return PhpVersionFeature::FINAL_CLASS_CONSTANTS;
- }
-}
diff --git a/vendor/rector/rector/rules/Php81/Rector/ClassMethod/NewInInitializerRector.php b/vendor/rector/rector/rules/Php81/Rector/ClassMethod/NewInInitializerRector.php
index 84aa90dfe..3108c5c42 100644
--- a/vendor/rector/rector/rules/Php81/Rector/ClassMethod/NewInInitializerRector.php
+++ b/vendor/rector/rector/rules/Php81/Rector/ClassMethod/NewInInitializerRector.php
@@ -12,6 +12,7 @@
use PhpParser\Node\Stmt\Property;
use PHPStan\Reflection\ClassReflection;
use Rector\FamilyTree\NodeAnalyzer\ClassChildAnalyzer;
+use Rector\NodeManipulator\StmtsManipulator;
use Rector\Php81\NodeAnalyzer\CoalesePropertyAssignMatcher;
use Rector\Rector\AbstractRector;
use Rector\Reflection\ReflectionResolver;
@@ -21,8 +22,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/new_in_initializers
- *
* @see \Rector\Tests\Php81\Rector\ClassMethod\NewInInitializerRector\NewInInitializerRectorTest
*/
final class NewInInitializerRector extends AbstractRector implements MinPhpVersionInterface
@@ -42,11 +41,17 @@ final class NewInInitializerRector extends AbstractRector implements MinPhpVersi
* @var \Rector\Php81\NodeAnalyzer\CoalesePropertyAssignMatcher
*/
private $coalesePropertyAssignMatcher;
- public function __construct(ReflectionResolver $reflectionResolver, ClassChildAnalyzer $classChildAnalyzer, CoalesePropertyAssignMatcher $coalesePropertyAssignMatcher)
+ /**
+ * @readonly
+ * @var \Rector\NodeManipulator\StmtsManipulator
+ */
+ private $stmtsManipulator;
+ public function __construct(ReflectionResolver $reflectionResolver, ClassChildAnalyzer $classChildAnalyzer, CoalesePropertyAssignMatcher $coalesePropertyAssignMatcher, StmtsManipulator $stmtsManipulator)
{
$this->reflectionResolver = $reflectionResolver;
$this->classChildAnalyzer = $classChildAnalyzer;
$this->coalesePropertyAssignMatcher = $coalesePropertyAssignMatcher;
+ $this->stmtsManipulator = $stmtsManipulator;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -100,6 +105,11 @@ public function refactor(Node $node) : ?Node
return null;
}
$hasChanged = \false;
+ // stmts variable defined to avoid unset overlap when used via array_slice() on
+ // StmtsManipulator::isVariableUsedInNextStmt()
+ // @see https://github.com/rectorphp/rector-src/pull/5968
+ // @see https://3v4l.org/eojhk
+ $stmts = (array) $constructClassMethod->stmts;
foreach ((array) $constructClassMethod->stmts as $key => $stmt) {
foreach ($params as $param) {
$paramName = $this->getName($param);
@@ -107,6 +117,9 @@ public function refactor(Node $node) : ?Node
if (!$coalesce instanceof Coalesce) {
continue;
}
+ if ($this->stmtsManipulator->isVariableUsedInNextStmt($stmts, $key + 1, $paramName)) {
+ continue;
+ }
/** @var NullableType $currentParamType */
$currentParamType = $param->type;
$param->type = $currentParamType->type;
diff --git a/vendor/rector/rector/rules/Php81/Rector/Class_/MyCLabsClassToEnumRector.php b/vendor/rector/rector/rules/Php81/Rector/Class_/MyCLabsClassToEnumRector.php
index a9b68102c..79547d9b9 100644
--- a/vendor/rector/rector/rules/Php81/Rector/Class_/MyCLabsClassToEnumRector.php
+++ b/vendor/rector/rector/rules/Php81/Rector/Class_/MyCLabsClassToEnumRector.php
@@ -13,9 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/enumerations
- * @changelog https://github.com/myclabs/php-enum
- *
* @see \Rector\Tests\Php81\Rector\Class_\MyCLabsClassToEnumRector\MyCLabsClassToEnumRectorTest
*/
final class MyCLabsClassToEnumRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php81/Rector/Class_/SpatieEnumClassToEnumRector.php b/vendor/rector/rector/rules/Php81/Rector/Class_/SpatieEnumClassToEnumRector.php
index c7be15a3c..6bba6f0ee 100644
--- a/vendor/rector/rector/rules/Php81/Rector/Class_/SpatieEnumClassToEnumRector.php
+++ b/vendor/rector/rector/rules/Php81/Rector/Class_/SpatieEnumClassToEnumRector.php
@@ -15,9 +15,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/enumerations
- * @changelog https://github.com/spatie/enum
- *
* @see \Rector\Tests\Php81\Rector\Class_\SpatieEnumClassToEnumRector\SpatieEnumClassToEnumRectorTest
*/
final class SpatieEnumClassToEnumRector extends AbstractRector implements MinPhpVersionInterface, ConfigurableRectorInterface
@@ -65,7 +62,7 @@ enum StatusEnum : string
case ARCHIVED = 'archived';
}
CODE_SAMPLE
-, [\Rector\Php81\Rector\Class_\SpatieEnumClassToEnumRector::TO_UPPER_SNAKE_CASE => \false])]);
+, [self::TO_UPPER_SNAKE_CASE => \false])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/Php81/Rector/MethodCall/MyCLabsMethodCallToEnumConstRector.php b/vendor/rector/rector/rules/Php81/Rector/MethodCall/MyCLabsMethodCallToEnumConstRector.php
index 570c72309..c1d0d4e8f 100644
--- a/vendor/rector/rector/rules/Php81/Rector/MethodCall/MyCLabsMethodCallToEnumConstRector.php
+++ b/vendor/rector/rector/rules/Php81/Rector/MethodCall/MyCLabsMethodCallToEnumConstRector.php
@@ -20,9 +20,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/enumerations
- * @changelog https://github.com/myclabs/php-enum
- *
* @see \Rector\Tests\Php81\Rector\MethodCall\MyCLabsMethodCallToEnumConstRector\MyCLabsMethodCallToEnumConstRectorTest
*/
final class MyCLabsMethodCallToEnumConstRector extends AbstractRector implements MinPhpVersionInterface
@@ -132,8 +129,8 @@ private function refactorGetValueMethodCall(MethodCall $methodCall) : ?PropertyF
if ($this->shouldOmitEnumCase($enumCaseName)) {
return null;
}
- $enumConstFetch = $this->nodeFactory->createClassConstFetch($className, $enumCaseName);
- return new PropertyFetch($enumConstFetch, 'value');
+ $classConstFetch = $this->nodeFactory->createClassConstFetch($className, $enumCaseName);
+ return new PropertyFetch($classConstFetch, 'value');
}
private function refactorEqualsMethodCall(MethodCall $methodCall) : ?Identical
{
diff --git a/vendor/rector/rector/rules/Php81/Rector/MethodCall/SpatieEnumMethodCallToEnumConstRector.php b/vendor/rector/rector/rules/Php81/Rector/MethodCall/SpatieEnumMethodCallToEnumConstRector.php
index 9280c415a..a47f5e47f 100644
--- a/vendor/rector/rector/rules/Php81/Rector/MethodCall/SpatieEnumMethodCallToEnumConstRector.php
+++ b/vendor/rector/rector/rules/Php81/Rector/MethodCall/SpatieEnumMethodCallToEnumConstRector.php
@@ -12,18 +12,15 @@
use Rector\Rector\AbstractRector;
use Rector\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
-use RectorPrefix202405\Spatie\Enum\Enum;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/enumerations
- *
* @see \Rector\Tests\Php81\Rector\MethodCall\MyCLabsMethodCallToEnumConstRector\MyCLabsMethodCallToEnumConstRectorTest
*/
final class SpatieEnumMethodCallToEnumConstRector extends AbstractRector implements MinPhpVersionInterface
{
/**
- * @var class-string
+ * @var string
*/
private const SPATIE_FQN = 'Spatie\\Enum\\Enum';
/**
@@ -103,8 +100,8 @@ private function refactorGetterToMethodCall(MethodCall $methodCall, string $prop
return null;
}
$upperCaseName = \strtoupper($enumCaseName);
- $enumConstFetch = $this->nodeFactory->createClassConstFetch($className, $upperCaseName);
- return new PropertyFetch($enumConstFetch, $property);
+ $classConstFetch = $this->nodeFactory->createClassConstFetch($className, $upperCaseName);
+ return new PropertyFetch($classConstFetch, $property);
}
private function refactorMethodCall(MethodCall $methodCall, string $methodName) : ?\PhpParser\Node\Expr\PropertyFetch
{
diff --git a/vendor/rector/rector/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php b/vendor/rector/rector/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php
index 51c175fae..0fcf2aa06 100644
--- a/vendor/rector/rector/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php
+++ b/vendor/rector/rector/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php
@@ -33,8 +33,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/readonly_properties_v2
- *
* @see \Rector\Tests\Php81\Rector\Property\ReadOnlyPropertyRector\ReadOnlyPropertyRectorTest
*/
final class ReadOnlyPropertyRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php82/Rector/Class_/ReadOnlyClassRector.php b/vendor/rector/rector/rules/Php82/Rector/Class_/ReadOnlyClassRector.php
index 397401a26..a4d64529b 100644
--- a/vendor/rector/rector/rules/Php82/Rector/Class_/ReadOnlyClassRector.php
+++ b/vendor/rector/rector/rules/Php82/Rector/Class_/ReadOnlyClassRector.php
@@ -26,8 +26,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/readonly_classes
- *
* @see \Rector\Tests\Php82\Rector\Class_\ReadOnlyClassRector\ReadOnlyClassRectorTest
*/
final class ReadOnlyClassRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
@@ -263,8 +261,8 @@ private function shouldSkipClass(Class_ $class) : bool
private function shouldSkipParams(array $params) : bool
{
foreach ($params as $param) {
- // has non-property promotion, skip
- if (!$this->visibilityManipulator->hasVisibility($param, Visibility::READONLY)) {
+ // has non-readonly property promotion
+ if (!$this->visibilityManipulator->hasVisibility($param, Visibility::READONLY) && $param->flags !== 0) {
return \true;
}
// type is missing, invalid syntax
diff --git a/vendor/rector/rector/rules/Php82/Rector/Encapsed/VariableInStringInterpolationFixerRector.php b/vendor/rector/rector/rules/Php82/Rector/Encapsed/VariableInStringInterpolationFixerRector.php
index f8b66aace..7798055e8 100644
--- a/vendor/rector/rector/rules/Php82/Rector/Encapsed/VariableInStringInterpolationFixerRector.php
+++ b/vendor/rector/rector/rules/Php82/Rector/Encapsed/VariableInStringInterpolationFixerRector.php
@@ -13,8 +13,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation
- *
* @see \Rector\Tests\Php82\Rector\Encapsed\VariableInStringInterpolationFixerRector\VariableInStringInterpolationFixerRectorTest
*/
final class VariableInStringInterpolationFixerRector extends AbstractRector implements MinPhpVersionInterface
diff --git a/vendor/rector/rector/rules/Php82/Rector/FuncCall/Utf8DecodeEncodeToMbConvertEncodingRector.php b/vendor/rector/rector/rules/Php82/Rector/FuncCall/Utf8DecodeEncodeToMbConvertEncodingRector.php
index 6d8c6057d..284eecaab 100644
--- a/vendor/rector/rector/rules/Php82/Rector/FuncCall/Utf8DecodeEncodeToMbConvertEncodingRector.php
+++ b/vendor/rector/rector/rules/Php82/Rector/FuncCall/Utf8DecodeEncodeToMbConvertEncodingRector.php
@@ -14,8 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/remove_utf8_decode_and_utf8_encode
- *
* @see https://3v4l.org/Q14UR
* @see \Rector\Tests\Php82\Rector\FuncCall\Utf8DecodeEncodeToMbConvertEncodingRector\Utf8DecodeEncodeToMbConvertEncodingRectorTest
*/
diff --git a/vendor/rector/rector/rules/Php82/Rector/Param/AddSensitiveParameterAttributeRector.php b/vendor/rector/rector/rules/Php82/Rector/Param/AddSensitiveParameterAttributeRector.php
index 503b6a901..e347351dd 100644
--- a/vendor/rector/rector/rules/Php82/Rector/Param/AddSensitiveParameterAttributeRector.php
+++ b/vendor/rector/rector/rules/Php82/Rector/Param/AddSensitiveParameterAttributeRector.php
@@ -15,7 +15,7 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Php82\Rector\Param\AddSensitiveParameterAttributeRector\AddSensitiveParameterAttributeRectorTest
*/
@@ -78,7 +78,7 @@ public function run(#[\SensitiveParameter] string $password)
}
}
CODE_SAMPLE
-, [\Rector\Php82\Rector\Param\AddSensitiveParameterAttributeRector::SENSITIVE_PARAMETERS => ['password']])]);
+, [self::SENSITIVE_PARAMETERS => ['password']])]);
}
public function provideMinPhpVersion() : int
{
diff --git a/vendor/rector/rector/rules/Php83/Rector/ClassConst/AddTypeToConstRector.php b/vendor/rector/rector/rules/Php83/Rector/ClassConst/AddTypeToConstRector.php
index 1546eea81..2783a1fe5 100644
--- a/vendor/rector/rector/rules/Php83/Rector/ClassConst/AddTypeToConstRector.php
+++ b/vendor/rector/rector/rules/Php83/Rector/ClassConst/AddTypeToConstRector.php
@@ -8,6 +8,7 @@
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\BinaryOp\Concat;
+use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Expr\UnaryMinus;
use PhpParser\Node\Expr\UnaryPlus;
@@ -48,7 +49,7 @@ public function __construct(ReflectionProvider $reflectionProvider, StaticTypeMa
}
public function getRuleDefinition() : RuleDefinition
{
- return new RuleDefinition('Add type to constants', [new CodeSample(<<<'CODE_SAMPLE'
+ return new RuleDefinition('Add type to constants based on their value', [new CodeSample(<<<'CODE_SAMPLE'
final class SomeClass
{
public const TYPE = 'some_type';
@@ -85,7 +86,7 @@ public function refactor(Node $node) : ?Class_
$parentClassReflections = $this->getParentReflections($className);
$hasChanged = \false;
foreach ($classConsts as $classConst) {
- $valueType = null;
+ $valueTypes = [];
// If a type is set, skip
if ($classConst->type !== null) {
continue;
@@ -97,9 +98,20 @@ public function refactor(Node $node) : ?Class_
if ($this->canBeInherited($classConst, $node)) {
continue;
}
- $valueType = $this->findValueType($constNode->value);
+ $valueTypes[] = $this->findValueType($constNode->value);
}
- if (!($valueType ?? null) instanceof Identifier) {
+ if ($valueTypes === []) {
+ continue;
+ }
+ if (\count($valueTypes) > 1) {
+ $valueTypes = \array_unique($valueTypes, \SORT_REGULAR);
+ }
+ // once more verify after uniquate
+ if (\count($valueTypes) > 1) {
+ continue;
+ }
+ $valueType = \current($valueTypes);
+ if (!$valueType instanceof Identifier) {
continue;
}
$classConst->type = $valueType;
@@ -141,8 +153,8 @@ private function findValueType(Expr $expr) : ?Identifier
if ($expr instanceof DNumber) {
return new Identifier('float');
}
- if ($expr instanceof ConstFetch) {
- if ($expr->name->toLowerString() === 'null') {
+ if ($expr instanceof ConstFetch || $expr instanceof ClassConstFetch) {
+ if ($expr instanceof ConstFetch && $expr->name->toLowerString() === 'null') {
return new Identifier('null');
}
$type = $this->nodeTypeResolver->getNativeType($expr);
diff --git a/vendor/rector/rector/rules/Php84/Rector/Param/ExplicitNullableParamTypeRector.php b/vendor/rector/rector/rules/Php84/Rector/Param/ExplicitNullableParamTypeRector.php
index 2e9a37cd4..e7bd64115 100644
--- a/vendor/rector/rector/rules/Php84/Rector/Param/ExplicitNullableParamTypeRector.php
+++ b/vendor/rector/rector/rules/Php84/Rector/Param/ExplicitNullableParamTypeRector.php
@@ -4,8 +4,14 @@
namespace Rector\Php84\Rector\Param;
use PhpParser\Node;
+use PhpParser\Node\ComplexType;
use PhpParser\Node\Expr\ConstFetch;
+use PhpParser\Node\IntersectionType;
+use PhpParser\Node\Name;
+use PhpParser\Node\NullableType;
use PhpParser\Node\Param;
+use PhpParser\Node\UnionType;
+use PHPStan\Type\MixedType;
use PHPStan\Type\TypeCombinator;
use Rector\PhpParser\Node\Value\ValueResolver;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
@@ -64,8 +70,26 @@ public function refactor(Node $node) : ?Param
if (TypeCombinator::containsNull($nodeType)) {
return null;
}
+ // mixed can't be nullable, ref https://3v4l.org/YUkhH/rfc#vgit.master
+ if ($nodeType instanceof MixedType) {
+ return null;
+ }
$newNodeType = TypeCombinator::addNull($nodeType);
- $node->type = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($newNodeType, TypeKind::PARAM);
+ $paramType = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($newNodeType, TypeKind::PARAM);
+ // ensure it process valid Node, otherwise, just return null
+ if (!$paramType instanceof Node) {
+ return null;
+ }
+ // re-use existing node instead of reprint Node that may cause unnecessary FQCN
+ if ($node->type instanceof UnionType) {
+ $node->type->types[] = new Name('null');
+ } elseif ($node->type instanceof ComplexType) {
+ /** @var IntersectionType $nodeType */
+ $nodeType = $node->type;
+ $node->type = new UnionType([$nodeType, new Name('null')]);
+ } else {
+ $node->type = new NullableType($node->type);
+ }
return $node;
}
public function provideMinPhpVersion() : int
diff --git a/vendor/rector/rector/rules/Privatization/NodeManipulator/VisibilityManipulator.php b/vendor/rector/rector/rules/Privatization/NodeManipulator/VisibilityManipulator.php
index a1400cd7d..f0fbd1d44 100644
--- a/vendor/rector/rector/rules/Privatization/NodeManipulator/VisibilityManipulator.php
+++ b/vendor/rector/rector/rules/Privatization/NodeManipulator/VisibilityManipulator.php
@@ -9,7 +9,7 @@
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Property;
use Rector\ValueObject\Visibility;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Privatization\NodeManipulator\VisibilityManipulatorTest
*/
diff --git a/vendor/rector/rector/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php b/vendor/rector/rector/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php
deleted file mode 100644
index 2d7ccfb8c..000000000
--- a/vendor/rector/rector/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php
+++ /dev/null
@@ -1,62 +0,0 @@
->
- */
- public function getNodeTypes() : array
- {
- return [Class_::class];
- }
- /**
- * @param Class_ $node
- */
- public function refactor(Node $node) : ?Node
- {
- if ($this->hasWarned) {
- return null;
- }
- \trigger_error(\sprintf('The "%s" rule was deprecated, as its functionality caused bugs. Without knowing the full dependency tree, its risky to change.', self::class));
- \sleep(3);
- $this->hasWarned = \true;
- return null;
- }
-}
diff --git a/vendor/rector/rector/rules/Removing/NodeManipulator/ComplexNodeRemover.php b/vendor/rector/rector/rules/Removing/NodeManipulator/ComplexNodeRemover.php
index ecee231db..7f924a6c8 100644
--- a/vendor/rector/rector/rules/Removing/NodeManipulator/ComplexNodeRemover.php
+++ b/vendor/rector/rector/rules/Removing/NodeManipulator/ComplexNodeRemover.php
@@ -4,8 +4,40 @@
namespace Rector\Removing\NodeManipulator;
use PhpParser\Node\Stmt\ClassMethod;
+use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode;
+use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
+use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
+use Rector\Comments\NodeDocBlock\DocBlockUpdater;
+use Rector\NodeNameResolver\NodeNameResolver;
final class ComplexNodeRemover
{
+ /**
+ * @readonly
+ * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
+ */
+ private $phpDocInfoFactory;
+ /**
+ * @readonly
+ * @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
+ */
+ private $phpDocTagRemover;
+ /**
+ * @readonly
+ * @var \Rector\NodeNameResolver\NodeNameResolver
+ */
+ private $nodeNameResolver;
+ /**
+ * @readonly
+ * @var \Rector\Comments\NodeDocBlock\DocBlockUpdater
+ */
+ private $docBlockUpdater;
+ public function __construct(PhpDocInfoFactory $phpDocInfoFactory, PhpDocTagRemover $phpDocTagRemover, NodeNameResolver $nodeNameResolver, DocBlockUpdater $docBlockUpdater)
+ {
+ $this->phpDocInfoFactory = $phpDocInfoFactory;
+ $this->phpDocTagRemover = $phpDocTagRemover;
+ $this->nodeNameResolver = $nodeNameResolver;
+ $this->docBlockUpdater = $docBlockUpdater;
+ }
/**
* @param int[] $paramKeysToBeRemoved
* @return int[]
@@ -14,6 +46,7 @@ public function processRemoveParamWithKeys(ClassMethod $classMethod, array $para
{
$totalKeys = \count($classMethod->params) - 1;
$removedParamKeys = [];
+ $phpdocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($classMethod);
foreach ($paramKeysToBeRemoved as $paramKeyToBeRemoved) {
$startNextKey = $paramKeyToBeRemoved + 1;
for ($nextKey = $startNextKey; $nextKey <= $totalKeys; ++$nextKey) {
@@ -27,7 +60,13 @@ public function processRemoveParamWithKeys(ClassMethod $classMethod, array $para
}
return [];
}
+ $paramName = (string) $this->nodeNameResolver->getName($classMethod->params[$paramKeyToBeRemoved]);
unset($classMethod->params[$paramKeyToBeRemoved]);
+ $paramTagValueByName = $phpdocInfo->getParamTagValueByName($paramName);
+ if ($paramTagValueByName instanceof ParamTagValueNode) {
+ $this->phpDocTagRemover->removeTagValueFromNode($phpdocInfo, $paramTagValueByName);
+ $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($classMethod);
+ }
$removedParamKeys[] = $paramKeyToBeRemoved;
}
return $removedParamKeys;
diff --git a/vendor/rector/rector/rules/Removing/Rector/ClassMethod/ArgumentRemoverRector.php b/vendor/rector/rector/rules/Removing/Rector/ClassMethod/ArgumentRemoverRector.php
index 58d2e5560..6f9b4ab28 100644
--- a/vendor/rector/rector/rules/Removing/Rector/ClassMethod/ArgumentRemoverRector.php
+++ b/vendor/rector/rector/rules/Removing/Rector/ClassMethod/ArgumentRemoverRector.php
@@ -15,7 +15,7 @@
use Rector\Removing\ValueObject\ArgumentRemover;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Removing\Rector\ClassMethod\ArgumentRemoverRector\ArgumentRemoverRectorTest
*/
diff --git a/vendor/rector/rector/rules/Removing/Rector/Class_/RemoveInterfacesRector.php b/vendor/rector/rector/rules/Removing/Rector/Class_/RemoveInterfacesRector.php
index e0d59add3..03a7e0300 100644
--- a/vendor/rector/rector/rules/Removing/Rector/Class_/RemoveInterfacesRector.php
+++ b/vendor/rector/rector/rules/Removing/Rector/Class_/RemoveInterfacesRector.php
@@ -9,7 +9,7 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Removing\Rector\Class_\RemoveInterfacesRector\RemoveInterfacesRectorTest
*/
diff --git a/vendor/rector/rector/rules/Removing/Rector/Class_/RemoveTraitUseRector.php b/vendor/rector/rector/rules/Removing/Rector/Class_/RemoveTraitUseRector.php
index 6c98be0e7..3d74897b0 100644
--- a/vendor/rector/rector/rules/Removing/Rector/Class_/RemoveTraitUseRector.php
+++ b/vendor/rector/rector/rules/Removing/Rector/Class_/RemoveTraitUseRector.php
@@ -11,7 +11,7 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Removing\Rector\Class_\RemoveTraitUseRector\RemoveTraitUseRectorTest
*/
diff --git a/vendor/rector/rector/rules/Removing/Rector/FuncCall/RemoveFuncCallArgRector.php b/vendor/rector/rector/rules/Removing/Rector/FuncCall/RemoveFuncCallArgRector.php
index e87a0840a..6b4d6bb8b 100644
--- a/vendor/rector/rector/rules/Removing/Rector/FuncCall/RemoveFuncCallArgRector.php
+++ b/vendor/rector/rector/rules/Removing/Rector/FuncCall/RemoveFuncCallArgRector.php
@@ -11,7 +11,7 @@
use Rector\Removing\ValueObject\RemoveFuncCallArg;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Removing\Rector\FuncCall\RemoveFuncCallArgRector\RemoveFuncCallArgRectorTest
*/
diff --git a/vendor/rector/rector/rules/Removing/Rector/FuncCall/RemoveFuncCallRector.php b/vendor/rector/rector/rules/Removing/Rector/FuncCall/RemoveFuncCallRector.php
index 6d002b25b..730d02607 100644
--- a/vendor/rector/rector/rules/Removing/Rector/FuncCall/RemoveFuncCallRector.php
+++ b/vendor/rector/rector/rules/Removing/Rector/FuncCall/RemoveFuncCallRector.php
@@ -11,7 +11,7 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Removing\Rector\FuncCall\RemoveFuncCallRector\RemoveFuncCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Renaming/NodeManipulator/ClassRenamer.php b/vendor/rector/rector/rules/Renaming/NodeManipulator/ClassRenamer.php
index 37588202a..f6f896ad9 100644
--- a/vendor/rector/rector/rules/Renaming/NodeManipulator/ClassRenamer.php
+++ b/vendor/rector/rector/rules/Renaming/NodeManipulator/ClassRenamer.php
@@ -76,6 +76,7 @@ public function __construct(PhpDocClassRenamer $phpDocClassRenamer, PhpDocInfoFa
}
/**
* @param array $oldToNewClasses
+ * @return ($node is FullyQualified ? FullyQualified : Node)
*/
public function renameNode(Node $node, array $oldToNewClasses, ?Scope $scope) : ?Node
{
@@ -157,10 +158,6 @@ private function refactorClassLike(ClassLike $classLike, array $oldToNewClasses,
$hasChanged = \false;
$classLike->implements = \array_unique($classLike->implements);
foreach ($classLike->implements as $key => $implementName) {
- $virtualNode = (bool) $implementName->getAttribute(AttributeKey::VIRTUAL_NODE);
- if (!$virtualNode) {
- continue;
- }
$namespaceName = $scope instanceof Scope ? $scope->getNamespace() : null;
$fullyQualifiedName = $namespaceName . '\\' . $implementName->toString();
$newName = $oldToNewClasses[$fullyQualifiedName] ?? null;
diff --git a/vendor/rector/rector/rules/Renaming/Rector/ClassConstFetch/RenameClassConstFetchRector.php b/vendor/rector/rector/rules/Renaming/Rector/ClassConstFetch/RenameClassConstFetchRector.php
index cf5697698..2c8d0062d 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/ClassConstFetch/RenameClassConstFetchRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/ClassConstFetch/RenameClassConstFetchRector.php
@@ -14,7 +14,7 @@
use Rector\Renaming\ValueObject\RenameClassConstFetch;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\ClassConstFetch\RenameClassConstFetchRector\RenameClassConstFetchRectorTest
*/
diff --git a/vendor/rector/rector/rules/Renaming/Rector/ClassMethod/RenameAnnotationRector.php b/vendor/rector/rector/rules/Renaming/Rector/ClassMethod/RenameAnnotationRector.php
index 0d971a7fc..771040e15 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/ClassMethod/RenameAnnotationRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/ClassMethod/RenameAnnotationRector.php
@@ -18,7 +18,7 @@
use Rector\Renaming\ValueObject\RenameAnnotationByType;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\ClassMethod\RenameAnnotationRector\RenameAnnotationRectorTest
*/
diff --git a/vendor/rector/rector/rules/Renaming/Rector/Class_/RenameAttributeRector.php b/vendor/rector/rector/rules/Renaming/Rector/Class_/RenameAttributeRector.php
new file mode 100644
index 000000000..881f1f704
--- /dev/null
+++ b/vendor/rector/rector/rules/Renaming/Rector/Class_/RenameAttributeRector.php
@@ -0,0 +1,94 @@
+>
+ */
+ public function getNodeTypes() : array
+ {
+ return [Class_::class, ClassMethod::class, Property::class];
+ }
+ /**
+ * @param Class_|ClassMethod|Property $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ $hasChanged = \false;
+ foreach ($node->attrGroups as $attrGroup) {
+ foreach ($attrGroup->attrs as $attr) {
+ $newAttributeName = $this->matchNewAttributeName($attr);
+ if (!\is_string($newAttributeName)) {
+ continue;
+ }
+ $attr->name = new FullyQualified($newAttributeName);
+ $hasChanged = \true;
+ }
+ }
+ if ($hasChanged) {
+ return $node;
+ }
+ return null;
+ }
+ /**
+ * @param mixed[] $configuration
+ */
+ public function configure(array $configuration) : void
+ {
+ Assert::allIsAOf($configuration, RenameAttribute::class);
+ $this->renameAttributes = $configuration;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::ATTRIBUTES;
+ }
+ private function matchNewAttributeName(Attribute $attribute) : ?string
+ {
+ foreach ($this->renameAttributes as $renameAttribute) {
+ if ($this->isName($attribute->name, $renameAttribute->getOldAttribute())) {
+ return $renameAttribute->getNewAttribute();
+ }
+ }
+ return null;
+ }
+}
diff --git a/vendor/rector/rector/rules/Renaming/Rector/ConstFetch/RenameConstantRector.php b/vendor/rector/rector/rules/Renaming/Rector/ConstFetch/RenameConstantRector.php
index 940222c5b..2c3eed971 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/ConstFetch/RenameConstantRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/ConstFetch/RenameConstantRector.php
@@ -11,7 +11,7 @@
use Rector\Validation\RectorAssert;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\ConstFetch\RenameConstantRector\RenameConstantRectorTest
*/
diff --git a/vendor/rector/rector/rules/Renaming/Rector/FuncCall/RenameFunctionRector.php b/vendor/rector/rector/rules/Renaming/Rector/FuncCall/RenameFunctionRector.php
index a44f269b5..b93fdd9fc 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/FuncCall/RenameFunctionRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/FuncCall/RenameFunctionRector.php
@@ -8,11 +8,10 @@
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
use Rector\Contract\Rector\ConfigurableRectorInterface;
-use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\FuncCall\RenameFunctionRector\RenameFunctionRectorTest
*/
@@ -38,11 +37,6 @@ public function getNodeTypes() : array
*/
public function refactor(Node $node) : ?Node
{
- // not to refactor here
- $isVirtual = (bool) $node->name->getAttribute(AttributeKey::VIRTUAL_NODE);
- if ($isVirtual) {
- return null;
- }
$nodeName = $this->getName($node);
if ($nodeName === null) {
return null;
diff --git a/vendor/rector/rector/rules/Renaming/Rector/FunctionLike/RenameFunctionLikeParamWithinCallLikeArgRector.php b/vendor/rector/rector/rules/Renaming/Rector/FunctionLike/RenameFunctionLikeParamWithinCallLikeArgRector.php
index a6f465fe1..ce70cad33 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/FunctionLike/RenameFunctionLikeParamWithinCallLikeArgRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/FunctionLike/RenameFunctionLikeParamWithinCallLikeArgRector.php
@@ -23,7 +23,7 @@
use Rector\Renaming\ValueObject\RenameFunctionLikeParamWithinCallLikeArg;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\FunctionLike\RenameFunctionLikeParamWithinCallLikeArgRector\RenameFunctionLikeParamWithinCallLikeArgRectorTest
*/
diff --git a/vendor/rector/rector/rules/Renaming/Rector/MethodCall/RenameMethodRector.php b/vendor/rector/rector/rules/Renaming/Rector/MethodCall/RenameMethodRector.php
index 474572ef0..973c76712 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/MethodCall/RenameMethodRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/MethodCall/RenameMethodRector.php
@@ -25,7 +25,7 @@
use Rector\Renaming\ValueObject\MethodCallRenameWithArrayKey;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\RenameMethodRectorTest
*/
@@ -132,7 +132,7 @@ private function shouldKeepForParentInterface(MethodCallRenameInterface $methodC
if (!$classReflection->isInterface()) {
return \false;
}
- return $this->classManipulator->hasParentMethodOrInterface($methodCallRename->getObjectType(), $methodCallRename->getOldMethod(), $methodCallRename->getNewMethod());
+ return $this->classManipulator->hasParentMethodOrInterface($methodCallRename->getObjectType(), $methodCallRename->getOldMethod());
}
/**
* @param \PhpParser\Node\Stmt\Class_|\PhpParser\Node\Stmt\Interface_ $classOrInterface
@@ -151,11 +151,12 @@ private function refactorClass($classOrInterface, Scope $scope)
continue;
}
foreach ($this->methodCallRenames as $methodCallRename) {
- if ($this->shouldSkipRename($methodName, $classMethod, $methodCallRename, $classReflection, $classOrInterface)) {
+ if ($this->shouldSkipRename($methodName, $classMethod, $methodCallRename, $classOrInterface, $classReflection)) {
continue;
}
$classMethod->name = new Identifier($methodCallRename->getNewMethod());
$hasChanged = \true;
+ continue 2;
}
}
if ($hasChanged) {
@@ -166,7 +167,7 @@ private function refactorClass($classOrInterface, Scope $scope)
/**
* @param \PhpParser\Node\Stmt\Class_|\PhpParser\Node\Stmt\Interface_ $classOrInterface
*/
- private function shouldSkipRename(string $methodName, ClassMethod $classMethod, MethodCallRenameInterface $methodCallRename, ClassReflection $classReflection, $classOrInterface) : bool
+ private function shouldSkipRename(string $methodName, ClassMethod $classMethod, MethodCallRenameInterface $methodCallRename, $classOrInterface, ?ClassReflection $classReflection) : bool
{
if (!$this->nodeNameResolver->isStringName($methodName, $methodCallRename->getOldMethod())) {
return \true;
diff --git a/vendor/rector/rector/rules/Renaming/Rector/Name/RenameClassRector.php b/vendor/rector/rector/rules/Renaming/Rector/Name/RenameClassRector.php
index e9c235c7b..739dece65 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/Name/RenameClassRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/Name/RenameClassRector.php
@@ -18,7 +18,7 @@
use Rector\Renaming\NodeManipulator\ClassRenamer;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\Name\RenameClassRector\RenameClassRectorTest
*/
diff --git a/vendor/rector/rector/rules/Renaming/Rector/PropertyFetch/RenamePropertyRector.php b/vendor/rector/rector/rules/Renaming/Rector/PropertyFetch/RenamePropertyRector.php
index f10d31816..9f156ed78 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/PropertyFetch/RenamePropertyRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/PropertyFetch/RenamePropertyRector.php
@@ -15,7 +15,7 @@
use Rector\Renaming\ValueObject\RenameProperty;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\PropertyFetch\RenamePropertyRector\RenamePropertyRectorTest
*/
diff --git a/vendor/rector/rector/rules/Renaming/Rector/StaticCall/RenameStaticMethodRector.php b/vendor/rector/rector/rules/Renaming/Rector/StaticCall/RenameStaticMethodRector.php
index 105cf9c59..83d17a243 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/StaticCall/RenameStaticMethodRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/StaticCall/RenameStaticMethodRector.php
@@ -12,7 +12,7 @@
use Rector\Renaming\ValueObject\RenameStaticMethod;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\StaticCall\RenameStaticMethodRector\RenameStaticMethodRectorTest
*/
diff --git a/vendor/rector/rector/rules/Renaming/Rector/String_/RenameStringRector.php b/vendor/rector/rector/rules/Renaming/Rector/String_/RenameStringRector.php
index d6769cf1f..42fc08c31 100644
--- a/vendor/rector/rector/rules/Renaming/Rector/String_/RenameStringRector.php
+++ b/vendor/rector/rector/rules/Renaming/Rector/String_/RenameStringRector.php
@@ -10,10 +10,8 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
- * @changelog https://github.com/symfony/symfony/pull/35858
- *
* @see \Rector\Tests\Renaming\Rector\String_\RenameStringRector\RenameStringRectorTest
*/
final class RenameStringRector extends AbstractRector implements ConfigurableRectorInterface
diff --git a/vendor/rector/rector/rules/Renaming/ValueObject/RenameAttribute.php b/vendor/rector/rector/rules/Renaming/ValueObject/RenameAttribute.php
new file mode 100644
index 000000000..1bf73addc
--- /dev/null
+++ b/vendor/rector/rector/rules/Renaming/ValueObject/RenameAttribute.php
@@ -0,0 +1,34 @@
+oldAttribute = $oldAttribute;
+ $this->newAttribute = $newAttribute;
+ }
+ public function getOldAttribute() : string
+ {
+ return $this->oldAttribute;
+ }
+ public function getNewAttribute() : string
+ {
+ return $this->newAttribute;
+ }
+}
diff --git a/vendor/rector/rector/rules/Strict/NodeFactory/ExactCompareFactory.php b/vendor/rector/rector/rules/Strict/NodeFactory/ExactCompareFactory.php
index b721844af..428f980ce 100644
--- a/vendor/rector/rector/rules/Strict/NodeFactory/ExactCompareFactory.php
+++ b/vendor/rector/rector/rules/Strict/NodeFactory/ExactCompareFactory.php
@@ -116,22 +116,19 @@ private function createFromUnionType(UnionType $unionType, Expr $expr, bool $tre
*/
private function resolveFromCleanedNullUnionType(UnionType $unionType, Expr $expr, bool $treatAsNotEmpty)
{
- $compareExprs = [];
- foreach ($unionType->getTypes() as $unionedType) {
- $compareExprs[] = $this->createNotIdenticalFalsyCompare($unionedType, $expr, $treatAsNotEmpty);
- }
+ $compareExprs = $this->collectCompareExprs($unionType, $expr, $treatAsNotEmpty, \false);
return $this->createBooleanAnd($compareExprs);
}
/**
* @return array
*/
- private function collectCompareExprs(UnionType $unionType, Expr $expr, bool $treatAsNonEmpty) : array
+ private function collectCompareExprs(UnionType $unionType, Expr $expr, bool $treatAsNonEmpty, bool $identical = \true) : array
{
$compareExprs = [];
foreach ($unionType->getTypes() as $unionedType) {
- $compareExprs[] = $this->createIdenticalFalsyCompare($unionedType, $expr, $treatAsNonEmpty);
+ $compareExprs[] = $identical ? $this->createIdenticalFalsyCompare($unionedType, $expr, $treatAsNonEmpty) : $this->createNotIdenticalFalsyCompare($unionedType, $expr, $treatAsNonEmpty);
}
- return $compareExprs;
+ return \array_unique($compareExprs, \SORT_REGULAR);
}
private function cleanUpPossibleNullableUnionType(UnionType $unionType) : Type
{
diff --git a/vendor/rector/rector/rules/Strict/Rector/AbstractFalsyScalarRuleFixerRector.php b/vendor/rector/rector/rules/Strict/Rector/AbstractFalsyScalarRuleFixerRector.php
index e2b6970f1..281ae4174 100644
--- a/vendor/rector/rector/rules/Strict/Rector/AbstractFalsyScalarRuleFixerRector.php
+++ b/vendor/rector/rector/rules/Strict/Rector/AbstractFalsyScalarRuleFixerRector.php
@@ -5,7 +5,7 @@
use Rector\Contract\Rector\ConfigurableRectorInterface;
use Rector\Rector\AbstractScopeAwareRector;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Strict\Rector\BooleanNot\BooleanInBooleanNotRuleFixerRector\BooleanInBooleanNotRuleFixerRectorTest
*
diff --git a/vendor/rector/rector/rules/Strict/Rector/BooleanNot/BooleanInBooleanNotRuleFixerRector.php b/vendor/rector/rector/rules/Strict/Rector/BooleanNot/BooleanInBooleanNotRuleFixerRector.php
index 976c3d7f1..94c5b8dbb 100644
--- a/vendor/rector/rector/rules/Strict/Rector/BooleanNot/BooleanInBooleanNotRuleFixerRector.php
+++ b/vendor/rector/rector/rules/Strict/Rector/BooleanNot/BooleanInBooleanNotRuleFixerRector.php
@@ -57,7 +57,7 @@ public function run(string|null $name)
}
}
CODE_SAMPLE
-, [\Rector\Strict\Rector\BooleanNot\BooleanInBooleanNotRuleFixerRector::TREAT_AS_NON_EMPTY => \true])]);
+, [self::TREAT_AS_NON_EMPTY => \true])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/Strict/Rector/Empty_/DisallowedEmptyRuleFixerRector.php b/vendor/rector/rector/rules/Strict/Rector/Empty_/DisallowedEmptyRuleFixerRector.php
index 3a5a03f7c..b7c9df1b1 100644
--- a/vendor/rector/rector/rules/Strict/Rector/Empty_/DisallowedEmptyRuleFixerRector.php
+++ b/vendor/rector/rector/rules/Strict/Rector/Empty_/DisallowedEmptyRuleFixerRector.php
@@ -66,7 +66,7 @@ public function run(array $items)
}
}
CODE_SAMPLE
-, [\Rector\Strict\Rector\Empty_\DisallowedEmptyRuleFixerRector::TREAT_AS_NON_EMPTY => \false])]);
+, [self::TREAT_AS_NON_EMPTY => \false])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/Strict/Rector/If_/BooleanInIfConditionRuleFixerRector.php b/vendor/rector/rector/rules/Strict/Rector/If_/BooleanInIfConditionRuleFixerRector.php
index eb6d904db..054512b63 100644
--- a/vendor/rector/rector/rules/Strict/Rector/If_/BooleanInIfConditionRuleFixerRector.php
+++ b/vendor/rector/rector/rules/Strict/Rector/If_/BooleanInIfConditionRuleFixerRector.php
@@ -58,7 +58,7 @@ public function run(string $name)
}
}
CODE_SAMPLE
-, [\Rector\Strict\Rector\If_\BooleanInIfConditionRuleFixerRector::TREAT_AS_NON_EMPTY => \false])]);
+, [self::TREAT_AS_NON_EMPTY => \false])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/Strict/Rector/Ternary/BooleanInTernaryOperatorRuleFixerRector.php b/vendor/rector/rector/rules/Strict/Rector/Ternary/BooleanInTernaryOperatorRuleFixerRector.php
index d042fe867..e665a3951 100644
--- a/vendor/rector/rector/rules/Strict/Rector/Ternary/BooleanInTernaryOperatorRuleFixerRector.php
+++ b/vendor/rector/rector/rules/Strict/Rector/Ternary/BooleanInTernaryOperatorRuleFixerRector.php
@@ -49,7 +49,7 @@ public function run(array $data)
}
}
CODE_SAMPLE
-, [\Rector\Strict\Rector\Ternary\BooleanInTernaryOperatorRuleFixerRector::TREAT_AS_NON_EMPTY => \false])]);
+, [self::TREAT_AS_NON_EMPTY => \false])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/Strict/Rector/Ternary/DisallowedShortTernaryRuleFixerRector.php b/vendor/rector/rector/rules/Strict/Rector/Ternary/DisallowedShortTernaryRuleFixerRector.php
index 4c11a3132..8c62c7153 100644
--- a/vendor/rector/rector/rules/Strict/Rector/Ternary/DisallowedShortTernaryRuleFixerRector.php
+++ b/vendor/rector/rector/rules/Strict/Rector/Ternary/DisallowedShortTernaryRuleFixerRector.php
@@ -54,7 +54,7 @@ public function run(array $array)
}
}
CODE_SAMPLE
-, [\Rector\Strict\Rector\Ternary\DisallowedShortTernaryRuleFixerRector::TREAT_AS_NON_EMPTY => \false])]);
+, [self::TREAT_AS_NON_EMPTY => \false])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/Transform/NodeTypeAnalyzer/TypeProvidingExprFromClassResolver.php b/vendor/rector/rector/rules/Transform/NodeTypeAnalyzer/TypeProvidingExprFromClassResolver.php
index bb20da7b2..b8c354fca 100644
--- a/vendor/rector/rector/rules/Transform/NodeTypeAnalyzer/TypeProvidingExprFromClassResolver.php
+++ b/vendor/rector/rector/rules/Transform/NodeTypeAnalyzer/TypeProvidingExprFromClassResolver.php
@@ -69,7 +69,7 @@ private function resolveMethodCallProvidingType(ClassReflection $classReflection
{
$methodReflections = $this->getClassMethodReflections($classReflection);
foreach ($methodReflections as $methodReflection) {
- $functionVariant = ParametersAcceptorSelector::selectSingle($methodReflection->getVariants());
+ $functionVariant = ParametersAcceptorSelector::combineAcceptors($methodReflection->getVariants());
$returnType = $functionVariant->getReturnType();
if (!$this->isMatchingType($returnType, $objectType)) {
continue;
diff --git a/vendor/rector/rector/rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php b/vendor/rector/rector/rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php
index 3d534ceb6..6f90f2c9a 100644
--- a/vendor/rector/rector/rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php
@@ -7,14 +7,13 @@
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\MethodCall;
-use PhpParser\Node\Expr\Variable;
use PHPStan\Type\ObjectType;
use Rector\Contract\Rector\ConfigurableRectorInterface;
use Rector\Rector\AbstractRector;
use Rector\Transform\ValueObject\ArrayDimFetchToMethodCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\ArrayDimFetch\ArrayDimFetchToMethodCallRector\ArrayDimFetchToMethodCallRectorTest
*/
@@ -43,9 +42,6 @@ public function getNodeTypes() : array
*/
public function refactor(Node $node) : ?MethodCall
{
- if (!$node->var instanceof Variable) {
- return null;
- }
if (!$node->dim instanceof Node) {
return null;
}
diff --git a/vendor/rector/rector/rules/Transform/Rector/Assign/PropertyAssignToMethodCallRector.php b/vendor/rector/rector/rules/Transform/Rector/Assign/PropertyAssignToMethodCallRector.php
index 03f387e32..c6a5ed1ea 100644
--- a/vendor/rector/rector/rules/Transform/Rector/Assign/PropertyAssignToMethodCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/Assign/PropertyAssignToMethodCallRector.php
@@ -12,7 +12,7 @@
use Rector\Transform\ValueObject\PropertyAssignToMethodCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\Assign\PropertyAssignToMethodCallRector\PropertyAssignToMethodCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/Assign/PropertyFetchToMethodCallRector.php b/vendor/rector/rector/rules/Transform/Rector/Assign/PropertyFetchToMethodCallRector.php
index c57f95cfd..6d84f3848 100644
--- a/vendor/rector/rector/rules/Transform/Rector/Assign/PropertyFetchToMethodCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/Assign/PropertyFetchToMethodCallRector.php
@@ -13,7 +13,7 @@
use Rector\Transform\ValueObject\PropertyFetchToMethodCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\Assign\PropertyFetchToMethodCallRector\PropertyFetchToMethodCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/Attribute/AttributeKeyToClassConstFetchRector.php b/vendor/rector/rector/rules/Transform/Rector/Attribute/AttributeKeyToClassConstFetchRector.php
index dce5a9b62..baccd830f 100644
--- a/vendor/rector/rector/rules/Transform/Rector/Attribute/AttributeKeyToClassConstFetchRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/Attribute/AttributeKeyToClassConstFetchRector.php
@@ -22,10 +22,8 @@
use Rector\Transform\ValueObject\AttributeKeyToClassConstFetch;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
- * @changelog https://github.com/doctrine/dbal/blob/3.1.x/src/Types/Types.php
- *
* @api used in rector-doctrine
* @see \Rector\Tests\Transform\Rector\Attribute\AttributeKeyToClassConstFetchRector\AttributeKeyToClassConstFetchRectorTest
*/
@@ -132,11 +130,11 @@ private function processArg(Arg $arg, AttributeKeyToClassConstFetch $attributeKe
if ($constName === null) {
return \false;
}
- $newValue = $this->nodeFactory->createClassConstFetch($attributeKeyToClassConstFetch->getConstantClass(), $constName);
- if ($arg->value instanceof ClassConstFetch && $this->getName($arg->value) === $this->getName($newValue)) {
+ $classConstFetch = $this->nodeFactory->createClassConstFetch($attributeKeyToClassConstFetch->getConstantClass(), $constName);
+ if ($arg->value instanceof ClassConstFetch && $this->getName($arg->value) === $this->getName($classConstFetch)) {
return \false;
}
- $arg->value = $newValue;
+ $arg->value = $classConstFetch;
return \true;
}
}
diff --git a/vendor/rector/rector/rules/Transform/Rector/ClassMethod/ReturnTypeWillChangeRector.php b/vendor/rector/rector/rules/Transform/Rector/ClassMethod/ReturnTypeWillChangeRector.php
index 84788f766..317200098 100644
--- a/vendor/rector/rector/rules/Transform/Rector/ClassMethod/ReturnTypeWillChangeRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/ClassMethod/ReturnTypeWillChangeRector.php
@@ -17,7 +17,7 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\ClassMethod\ReturnTypeWillChangeRector\ReturnTypeWillChangeRectorTest
*/
@@ -89,7 +89,7 @@ public function refactor(Node $node) : ?Node
continue;
}
// the return type is known, no need to add attribute
- if ($classMethod->returnType !== null) {
+ if ($classMethod->returnType instanceof Node) {
continue;
}
foreach ($this->returnTypeChangedClassMethodReferences as $returnTypeChangedClassMethodReference) {
diff --git a/vendor/rector/rector/rules/Transform/Rector/ClassMethod/WrapReturnRector.php b/vendor/rector/rector/rules/Transform/Rector/ClassMethod/WrapReturnRector.php
index 7247cf0b8..0b328fd4c 100644
--- a/vendor/rector/rector/rules/Transform/Rector/ClassMethod/WrapReturnRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/ClassMethod/WrapReturnRector.php
@@ -7,6 +7,7 @@
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
+use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Return_;
use Rector\Contract\Rector\ConfigurableRectorInterface;
@@ -14,7 +15,7 @@
use Rector\Transform\ValueObject\WrapReturn;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\ClassMethod\WrapReturnRector\WrapReturnRectorTest
*/
@@ -51,24 +52,31 @@ public function getItem()
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class];
+ return [Class_::class];
}
/**
- * @param ClassMethod $node
+ * @param Class_ $node
*/
public function refactor(Node $node) : ?Node
{
+ $hasChanged = \false;
foreach ($this->typeMethodWraps as $typeMethodWrap) {
- if (!$this->isName($node, $typeMethodWrap->getMethod())) {
- continue;
- }
if (!$this->isObjectType($node, $typeMethodWrap->getObjectType())) {
continue;
}
- if ($node->stmts === null) {
- continue;
+ foreach ($node->getMethods() as $classMethod) {
+ if (!$this->isName($classMethod, $typeMethodWrap->getMethod())) {
+ continue;
+ }
+ if ($node->stmts === null) {
+ continue;
+ }
+ $this->wrap($classMethod, $typeMethodWrap->isArrayWrap());
+ $hasChanged = \true;
}
- return $this->wrap($node, $typeMethodWrap->isArrayWrap());
+ }
+ if ($hasChanged) {
+ return $node;
}
return null;
}
diff --git a/vendor/rector/rector/rules/Transform/Rector/Class_/AddAllowDynamicPropertiesAttributeRector.php b/vendor/rector/rector/rules/Transform/Rector/Class_/AddAllowDynamicPropertiesAttributeRector.php
index c0bbbe3ae..0f8794356 100644
--- a/vendor/rector/rector/rules/Transform/Rector/Class_/AddAllowDynamicPropertiesAttributeRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/Class_/AddAllowDynamicPropertiesAttributeRector.php
@@ -18,10 +18,8 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
- * @changelog https://wiki.php.net/rfc/deprecate_dynamic_properties
- *
* @see \Rector\Tests\Transform\Rector\Class_\AddAllowDynamicPropertiesAttributeRector\AddAllowDynamicPropertiesAttributeRectorTest
*/
final class AddAllowDynamicPropertiesAttributeRector extends AbstractRector implements MinPhpVersionInterface, ConfigurableRectorInterface
diff --git a/vendor/rector/rector/rules/Transform/Rector/Class_/AddInterfaceByTraitRector.php b/vendor/rector/rector/rules/Transform/Rector/Class_/AddInterfaceByTraitRector.php
index 1b50439a9..e861df615 100644
--- a/vendor/rector/rector/rules/Transform/Rector/Class_/AddInterfaceByTraitRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/Class_/AddInterfaceByTraitRector.php
@@ -12,7 +12,7 @@
use Rector\Rector\AbstractScopeAwareRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @api used in rector-doctrine
* @see \Rector\Tests\Transform\Rector\Class_\AddInterfaceByTraitRector\AddInterfaceByTraitRectorTest
diff --git a/vendor/rector/rector/rules/Transform/Rector/Class_/MergeInterfacesRector.php b/vendor/rector/rector/rules/Transform/Rector/Class_/MergeInterfacesRector.php
index 4f8d60930..8d9d73f99 100644
--- a/vendor/rector/rector/rules/Transform/Rector/Class_/MergeInterfacesRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/Class_/MergeInterfacesRector.php
@@ -11,7 +11,7 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* Covers cases like
* - https://github.com/FriendsOfPHP/PHP-CS-Fixer/commit/a1cdb4d2dd8f45d731244eed406e1d537218cc66
diff --git a/vendor/rector/rector/rules/Transform/Rector/Class_/ParentClassToTraitsRector.php b/vendor/rector/rector/rules/Transform/Rector/Class_/ParentClassToTraitsRector.php
index cd71cd77f..0708007b7 100644
--- a/vendor/rector/rector/rules/Transform/Rector/Class_/ParentClassToTraitsRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/Class_/ParentClassToTraitsRector.php
@@ -14,7 +14,7 @@
use Rector\Transform\ValueObject\ParentClassToTraits;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* Can handle cases like:
* - https://doc.nette.org/en/2.4/migration-2-4#toc-nette-smartobject
diff --git a/vendor/rector/rector/rules/Transform/Rector/ConstFetch/ConstFetchToClassConstFetchRector.php b/vendor/rector/rector/rules/Transform/Rector/ConstFetch/ConstFetchToClassConstFetchRector.php
index 218ee5c7c..1678ad315 100644
--- a/vendor/rector/rector/rules/Transform/Rector/ConstFetch/ConstFetchToClassConstFetchRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/ConstFetch/ConstFetchToClassConstFetchRector.php
@@ -11,7 +11,7 @@
use Rector\Transform\ValueObject\ConstFetchToClassConstFetch;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see Rector\Tests\Transform\Rector\ConstFetch\ConstFetchToClassConstFetchRector\ConstFetchToClassConstFetchTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector.php b/vendor/rector/rector/rules/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector.php
index 015f34e1d..adfcfd3a0 100644
--- a/vendor/rector/rector/rules/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/FileWithoutNamespace/RectorConfigBuilderRector.php
@@ -18,7 +18,7 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\FileWithoutNamespace\RectorConfigBuilderRector\RectorConfigBuilderRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToConstFetchRector.php b/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToConstFetchRector.php
index 8ecd9c5b6..456ed7b2c 100644
--- a/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToConstFetchRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToConstFetchRector.php
@@ -11,7 +11,7 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\FuncCall\FuncCallToConstFetchRector\FunctionCallToConstantRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToMethodCallRector.php b/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToMethodCallRector.php
index 2ae8ec851..0d174770f 100644
--- a/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToMethodCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToMethodCallRector.php
@@ -12,7 +12,7 @@
use Rector\Transform\ValueObject\FuncCallToMethodCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\FuncCall\FuncCallToMethodCallRector\FuncCallToMethodCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToNewRector.php b/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToNewRector.php
index c8bf10be5..5e1f921e8 100644
--- a/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToNewRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToNewRector.php
@@ -11,7 +11,7 @@
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\FuncCall\FuncCallToNewRector\FuncCallToNewRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToStaticCallRector.php b/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToStaticCallRector.php
index cfac9e46a..0933f9558 100644
--- a/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToStaticCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/FuncCall/FuncCallToStaticCallRector.php
@@ -10,7 +10,7 @@
use Rector\Transform\ValueObject\FuncCallToStaticCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\FuncCall\FuncCallToStaticCallRector\FuncCallToStaticCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToFuncCallRector.php b/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToFuncCallRector.php
index dd054e38e..893f2c7f3 100644
--- a/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToFuncCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToFuncCallRector.php
@@ -13,7 +13,7 @@
use Rector\Transform\ValueObject\MethodCallToFuncCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\MethodCall\MethodCallToFuncCallRector\MethodCallToFuncCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToPropertyFetchRector.php b/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToPropertyFetchRector.php
index 5db38dd53..e409eb2e3 100644
--- a/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToPropertyFetchRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToPropertyFetchRector.php
@@ -10,7 +10,7 @@
use Rector\Transform\ValueObject\MethodCallToPropertyFetch;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\MethodCall\MethodCallToPropertyFetchRector\MethodCallToPropertyFetchRectorTest
*/
@@ -22,12 +22,12 @@ final class MethodCallToPropertyFetchRector extends AbstractRector implements Co
private $methodCallsToPropertyFetches = [];
public function getRuleDefinition() : RuleDefinition
{
- return new RuleDefinition('Turns method call "$this->something()" to property fetch "$this->something"', [new ConfiguredCodeSample(<<<'CODE_SAMPLE'
+ return new RuleDefinition('Turns method call "$this->getFirstname()" to property fetch "$this->firstname"', [new ConfiguredCodeSample(<<<'CODE_SAMPLE'
class SomeClass
{
public function run()
{
- $this->someMethod();
+ $this->getFirstname();
}
}
CODE_SAMPLE
@@ -36,11 +36,11 @@ class SomeClass
{
public function run()
{
- $this->someProperty;
+ $this->firstname;
}
}
CODE_SAMPLE
-, ['someMethod' => 'someProperty'])]);
+, [new MethodCallToPropertyFetch('ExamplePersonClass', 'getFirstname', 'firstname')])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToStaticCallRector.php b/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToStaticCallRector.php
index 88c52b202..ab937c428 100644
--- a/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToStaticCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/MethodCall/MethodCallToStaticCallRector.php
@@ -10,7 +10,7 @@
use Rector\Transform\ValueObject\MethodCallToStaticCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\MethodCall\MethodCallToStaticCallRector\MethodCallToStaticCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/MethodCall/ReplaceParentCallByPropertyCallRector.php b/vendor/rector/rector/rules/Transform/Rector/MethodCall/ReplaceParentCallByPropertyCallRector.php
index f876d9a51..3a1ddb0b0 100644
--- a/vendor/rector/rector/rules/Transform/Rector/MethodCall/ReplaceParentCallByPropertyCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/MethodCall/ReplaceParentCallByPropertyCallRector.php
@@ -10,7 +10,7 @@
use Rector\Transform\ValueObject\ReplaceParentCallByPropertyCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\MethodCall\ReplaceParentCallByPropertyCallRector\ReplaceParentCallByPropertyCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/New_/NewToStaticCallRector.php b/vendor/rector/rector/rules/Transform/Rector/New_/NewToStaticCallRector.php
index ca2d69c63..1007bf241 100644
--- a/vendor/rector/rector/rules/Transform/Rector/New_/NewToStaticCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/New_/NewToStaticCallRector.php
@@ -10,7 +10,7 @@
use Rector\Transform\ValueObject\NewToStaticCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\New_\NewToStaticCallRector\NewToStaticCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/Scalar/ScalarValueToConstFetchRector.php b/vendor/rector/rector/rules/Transform/Rector/Scalar/ScalarValueToConstFetchRector.php
new file mode 100644
index 000000000..9ee1f4d73
--- /dev/null
+++ b/vendor/rector/rector/rules/Transform/Rector/Scalar/ScalarValueToConstFetchRector.php
@@ -0,0 +1,61 @@
+scalarValueToConstFetches as $scalarValueToConstFetch) {
+ if ($node->value === $scalarValueToConstFetch->getScalar()->value) {
+ return $scalarValueToConstFetch->getConstFetch();
+ }
+ }
+ return null;
+ }
+ public function configure(array $configuration) : void
+ {
+ Assert::allIsAOf($configuration, ScalarValueToConstFetch::class);
+ $this->scalarValueToConstFetches = $configuration;
+ }
+}
diff --git a/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToFuncCallRector.php b/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToFuncCallRector.php
index fcb25c54a..f1ad80898 100644
--- a/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToFuncCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToFuncCallRector.php
@@ -12,7 +12,7 @@
use Rector\Transform\ValueObject\StaticCallToFuncCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\StaticCall\StaticCallToFuncCallRector\StaticCallToFuncCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php b/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php
index 46fd5c86a..e8ca282aa 100644
--- a/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php
@@ -17,7 +17,7 @@
use Rector\Transform\ValueObject\StaticCallToMethodCall;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\StaticCall\StaticCallToMethodCallRector\StaticCallToMethodCallRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToNewRector.php b/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToNewRector.php
index c3430a0b9..1d53dbe54 100644
--- a/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToNewRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/StaticCall/StaticCallToNewRector.php
@@ -12,10 +12,8 @@
use Rector\Transform\ValueObject\StaticCallToNew;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
- * @changelog https://github.com/symfony/symfony/pull/35308
- *
* @see \Rector\Tests\Transform\Rector\StaticCall\StaticCallToNewRector\StaticCallToNewRectorTest
*/
final class StaticCallToNewRector extends AbstractRector implements ConfigurableRectorInterface
@@ -54,7 +52,7 @@ public function getNodeTypes() : array
return [StaticCall::class];
}
/**
- * @param Node\Expr\StaticCall $node
+ * @param StaticCall $node
*/
public function refactor(Node $node) : ?Node
{
diff --git a/vendor/rector/rector/rules/Transform/Rector/String_/StringToClassConstantRector.php b/vendor/rector/rector/rules/Transform/Rector/String_/StringToClassConstantRector.php
index df2344463..a7fa72869 100644
--- a/vendor/rector/rector/rules/Transform/Rector/String_/StringToClassConstantRector.php
+++ b/vendor/rector/rector/rules/Transform/Rector/String_/StringToClassConstantRector.php
@@ -11,7 +11,7 @@
use Rector\Transform\ValueObject\StringToClassConstant;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Transform\Rector\String_\StringToClassConstantRector\StringToClassConstantRectorTest
*/
diff --git a/vendor/rector/rector/rules/Transform/ValueObject/ParentClassToTraits.php b/vendor/rector/rector/rules/Transform/ValueObject/ParentClassToTraits.php
index bf41074b9..55745ed16 100644
--- a/vendor/rector/rector/rules/Transform/ValueObject/ParentClassToTraits.php
+++ b/vendor/rector/rector/rules/Transform/ValueObject/ParentClassToTraits.php
@@ -4,7 +4,7 @@
namespace Rector\Transform\ValueObject;
use Rector\Validation\RectorAssert;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class ParentClassToTraits
{
/**
diff --git a/vendor/rector/rector/rules/Transform/ValueObject/ScalarValueToConstFetch.php b/vendor/rector/rector/rules/Transform/ValueObject/ScalarValueToConstFetch.php
new file mode 100644
index 000000000..14a839a8d
--- /dev/null
+++ b/vendor/rector/rector/rules/Transform/ValueObject/ScalarValueToConstFetch.php
@@ -0,0 +1,46 @@
+scalar = $scalar;
+ $this->constFetch = $constFetch;
+ }
+ /**
+ * @return \PhpParser\Node\Scalar\DNumber|\PhpParser\Node\Scalar\String_|\PhpParser\Node\Scalar\LNumber
+ */
+ public function getScalar()
+ {
+ return $this->scalar;
+ }
+ /**
+ * @return \PhpParser\Node\Expr\ConstFetch|\PhpParser\Node\Expr\ClassConstFetch
+ */
+ public function getConstFetch()
+ {
+ return $this->constFetch;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Contract/PHPStan/TypeWithClassTypeSpecifierInterface.php b/vendor/rector/rector/rules/TypeDeclaration/Contract/PHPStan/TypeWithClassTypeSpecifierInterface.php
deleted file mode 100644
index 515f3ffa6..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/Contract/PHPStan/TypeWithClassTypeSpecifierInterface.php
+++ /dev/null
@@ -1,13 +0,0 @@
-typeComparator = $typeComparator;
}
/**
- * @param MethodCall[]|StaticCall[]|ArrayCallable[] $calls
+ * @param MethodCall[]|StaticCall[] $calls
* @return array
*/
public function resolveStrictTypesFromCalls(array $calls) : array
{
$staticTypesByArgumentPosition = [];
foreach ($calls as $call) {
- if (!$call instanceof StaticCall && !$call instanceof MethodCall) {
- continue;
- }
foreach ($call->args as $position => $arg) {
- if (!$arg instanceof Arg) {
- continue;
- }
- if ($arg->unpack) {
- continue;
+ // there is first class callable usage, or argument unpack, or named arg
+ // simply returns array marks as unknown as can be anything and in any position
+ if (!$arg instanceof Arg || $arg->unpack || $arg->name instanceof Identifier) {
+ return [];
}
$staticTypesByArgumentPosition[$position][] = $this->resolveStrictArgValueType($arg);
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/CallerParamMatcher.php b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/CallerParamMatcher.php
index 8e170e9f6..11b5fc488 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/CallerParamMatcher.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/CallerParamMatcher.php
@@ -56,25 +56,20 @@ public function __construct(NodeNameResolver $nodeNameResolver, AstResolver $ast
$this->typeComparator = $typeComparator;
}
/**
- * @param \PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\FuncCall $call
* @return null|\PhpParser\Node\Identifier|\PhpParser\Node\Name|\PhpParser\Node\NullableType|\PhpParser\Node\UnionType|\PhpParser\Node\ComplexType
*/
- public function matchCallParamType($call, Param $param, Scope $scope)
+ public function matchCallParamType(Param $param, Param $callParam)
{
- $callParam = $this->matchCallParam($call, $param, $scope);
- if (!$callParam instanceof Param) {
+ if (!$callParam->type instanceof Node) {
return null;
}
if (!$param->default instanceof Expr && !$callParam->default instanceof Expr) {
// skip as mixed is not helpful and possibly requires more precise change elsewhere
- if ($this->isCallParamMixed($callParam)) {
+ if ($this->isCallParamMixed($callParam->type)) {
return null;
}
return $callParam->type;
}
- if (!$callParam->type instanceof Node) {
- return null;
- }
$default = $param->default ?? $callParam->default;
if (!$default instanceof Expr) {
return null;
@@ -114,7 +109,7 @@ public function matchParentParam(StaticCall $parentStaticCall, Param $param, Sco
/**
* @param \PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\FuncCall $call
*/
- private function matchCallParam($call, Param $param, Scope $scope) : ?Param
+ public function matchCallParam($call, Param $param, Scope $scope) : ?Param
{
$callArgPosition = $this->matchCallArgPosition($call, $param);
if ($callArgPosition === null) {
@@ -164,12 +159,9 @@ private function resolveParentMethodParam(Scope $scope, string $methodName, int
}
return null;
}
- private function isCallParamMixed(Param $param) : bool
+ private function isCallParamMixed(Node $node) : bool
{
- if (!$param->type instanceof Node) {
- return \false;
- }
- $callParamType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($param->type);
+ $callParamType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($node);
return $callParamType instanceof MixedType;
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ClassMethodParamTypeCompleter.php b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ClassMethodParamTypeCompleter.php
index 2532b1a80..36f381016 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ClassMethodParamTypeCompleter.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ClassMethodParamTypeCompleter.php
@@ -6,7 +6,6 @@
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Identifier;
-use PhpParser\Node\Name;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Type\CallableType;
@@ -14,12 +13,8 @@
use PHPStan\Type\ObjectType;
use PHPStan\Type\Type;
use PHPStan\Type\UnionType;
-use Rector\NodeTypeResolver\Node\AttributeKey;
-use Rector\Php\PhpVersionProvider;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
-use Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeCommonTypeNarrower;
use Rector\StaticTypeMapper\StaticTypeMapper;
-use Rector\ValueObject\PhpVersionFeature;
use Rector\VendorLocker\NodeVendorLocker\ClassMethodParamVendorLockResolver;
final class ClassMethodParamTypeCompleter
{
@@ -33,22 +28,10 @@ final class ClassMethodParamTypeCompleter
* @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodParamVendorLockResolver
*/
private $classMethodParamVendorLockResolver;
- /**
- * @readonly
- * @var \Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeCommonTypeNarrower
- */
- private $unionTypeCommonTypeNarrower;
- /**
- * @readonly
- * @var \Rector\Php\PhpVersionProvider
- */
- private $phpVersionProvider;
- public function __construct(StaticTypeMapper $staticTypeMapper, ClassMethodParamVendorLockResolver $classMethodParamVendorLockResolver, UnionTypeCommonTypeNarrower $unionTypeCommonTypeNarrower, PhpVersionProvider $phpVersionProvider)
+ public function __construct(StaticTypeMapper $staticTypeMapper, ClassMethodParamVendorLockResolver $classMethodParamVendorLockResolver)
{
$this->staticTypeMapper = $staticTypeMapper;
$this->classMethodParamVendorLockResolver = $classMethodParamVendorLockResolver;
- $this->unionTypeCommonTypeNarrower = $unionTypeCommonTypeNarrower;
- $this->phpVersionProvider = $phpVersionProvider;
}
/**
* @param array $classParameterTypes
@@ -74,9 +57,6 @@ public function complete(ClassMethod $classMethod, array $classParameterTypes, i
if ($param->type instanceof Identifier) {
continue;
}
- if ($param->type instanceof Name && $param->type->getAttribute(AttributeKey::VIRTUAL_NODE) === \true) {
- continue;
- }
// update parameter
$param->type = $phpParserTypeNode;
$hasChanged = \true;
@@ -109,8 +89,6 @@ private function shouldSkipArgumentStaticType(ClassMethod $classMethod, Type $ar
if ($this->isClosureAndCallableType($currentParameterStaticType, $argumentStaticType)) {
return \true;
}
- // narrow union type in case its not supported yet
- $argumentStaticType = $this->narrowUnionTypeIfNotSupported($argumentStaticType);
// too many union types
if ($this->isTooDetailedUnionType($currentParameterStaticType, $argumentStaticType, $maxUnionTypes)) {
return \true;
@@ -150,21 +128,6 @@ private function isTooDetailedUnionType(Type $currentType, Type $newType, int $m
}
return \count($newType->getTypes()) > $maxUnionTypes;
}
- private function narrowUnionTypeIfNotSupported(Type $type) : Type
- {
- if (!$type instanceof UnionType) {
- return $type;
- }
- // union is supported, so it's ok
- if ($this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::UNION_TYPES)) {
- return $type;
- }
- $narrowedObjectType = $this->unionTypeCommonTypeNarrower->narrowToSharedObjectType($type);
- if ($narrowedObjectType instanceof ObjectType) {
- return $narrowedObjectType;
- }
- return $type;
- }
private function isAcceptedByDefault(Param $param, Type $argumentStaticType) : bool
{
if (!$param->default instanceof Expr) {
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnAnalyzer.php
index a43c64a57..548deec22 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnAnalyzer.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnAnalyzer.php
@@ -4,34 +4,41 @@
namespace Rector\TypeDeclaration\NodeAnalyzer;
use PhpParser\Node\Expr;
-use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\Return_;
+use Rector\TypeDeclaration\TypeInferer\SilentVoidResolver;
final class ReturnAnalyzer
{
/**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
+ * @readonly
+ * @var \Rector\TypeDeclaration\TypeInferer\SilentVoidResolver
*/
- public function hasClassMethodRootReturn($functionLike) : bool
+ private $silentVoidResolver;
+ public function __construct(SilentVoidResolver $silentVoidResolver)
{
- foreach ((array) $functionLike->stmts as $stmt) {
- if ($stmt instanceof Return_) {
- return \true;
- }
- }
- return \false;
+ $this->silentVoidResolver = $silentVoidResolver;
}
/**
* @param Return_[] $returns
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
*/
- public function areExclusiveExprReturns(array $returns) : bool
+ public function hasOnlyReturnWithExpr($functionLike, array $returns) : bool
{
+ if ($functionLike->stmts === null) {
+ return \false;
+ }
+ // void or combined with yield/yield from
+ if ($returns === []) {
+ return \false;
+ }
+ // possible void
foreach ($returns as $return) {
if (!$return->expr instanceof Expr) {
return \false;
}
}
- return \true;
+ // possible silent void
+ return !$this->silentVoidResolver->hasSilentVoid($functionLike);
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/AlwaysStrictReturnAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/AlwaysStrictReturnAnalyzer.php
deleted file mode 100644
index cff71f797..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/AlwaysStrictReturnAnalyzer.php
+++ /dev/null
@@ -1,99 +0,0 @@
-betterNodeFinder = $betterNodeFinder;
- $this->returnAnalyzer = $returnAnalyzer;
- }
- /**
- * @return Return_[]
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
- */
- public function matchAlwaysStrictReturns($functionLike) : array
- {
- if ($functionLike->stmts === null) {
- return [];
- }
- if ($this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($functionLike, [Yield_::class, YieldFrom::class])) {
- return [];
- }
- /** @var Return_[] $returns */
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($functionLike, Return_::class);
- if ($returns === []) {
- return [];
- }
- // is one statement depth 3?
- if (!$this->returnAnalyzer->areExclusiveExprReturns($returns)) {
- return [];
- }
- // is one in ifOrElse, other in else?
- if ($this->hasOnlyStmtWithIfAndElse($functionLike)) {
- return $returns;
- }
- // has root return?
- if (!$this->returnAnalyzer->hasClassMethodRootReturn($functionLike)) {
- return [];
- }
- return $returns;
- }
- /**
- * @param \PhpParser\Node\Stmt\If_|\PhpParser\Node\Stmt\Else_ $ifOrElse
- */
- private function hasFirstLevelReturn($ifOrElse) : bool
- {
- foreach ($ifOrElse->stmts as $stmt) {
- if ($stmt instanceof Return_) {
- return \true;
- }
- }
- return \false;
- }
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
- */
- private function hasOnlyStmtWithIfAndElse($functionLike) : bool
- {
- foreach ((array) $functionLike->stmts as $functionLikeStmt) {
- if (!$functionLikeStmt instanceof If_) {
- continue;
- }
- $if = $functionLikeStmt;
- if ($if->elseifs !== []) {
- return \false;
- }
- if (!$if->else instanceof Else_) {
- return \false;
- }
- if (!$this->hasFirstLevelReturn($if)) {
- return \false;
- }
- return $this->hasFirstLevelReturn($if->else);
- }
- return \false;
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictBoolReturnTypeAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictBoolReturnTypeAnalyzer.php
deleted file mode 100644
index d73bd2aac..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictBoolReturnTypeAnalyzer.php
+++ /dev/null
@@ -1,48 +0,0 @@
-alwaysStrictBoolExprAnalyzer = $alwaysStrictBoolExprAnalyzer;
- $this->alwaysStrictReturnAnalyzer = $alwaysStrictReturnAnalyzer;
- }
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
- */
- public function hasAlwaysStrictBoolReturn($functionLike) : bool
- {
- $returns = $this->alwaysStrictReturnAnalyzer->matchAlwaysStrictReturns($functionLike);
- if ($returns === []) {
- return \false;
- }
- foreach ($returns as $return) {
- // we need exact expr return
- if (!$return->expr instanceof Expr) {
- return \false;
- }
- if (!$this->alwaysStrictBoolExprAnalyzer->isStrictBoolExpr($return->expr)) {
- return \false;
- }
- }
- return \true;
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictNativeFunctionReturnTypeAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictNativeFunctionReturnTypeAnalyzer.php
index ea02c321b..daf0d0c34 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictNativeFunctionReturnTypeAnalyzer.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictNativeFunctionReturnTypeAnalyzer.php
@@ -4,12 +4,8 @@
namespace Rector\TypeDeclaration\NodeAnalyzer\ReturnTypeAnalyzer;
use PhpParser\Node\Expr\CallLike;
-use PhpParser\Node\Expr\Closure;
-use PhpParser\Node\Expr\Yield_;
-use PhpParser\Node\Expr\YieldFrom;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
-use PhpParser\Node\Stmt\Return_;
use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
use Rector\TypeDeclaration\NodeAnalyzer\ReturnFilter\ExclusiveNativeCallLikeReturnMatcher;
@@ -38,27 +34,15 @@ public function __construct(BetterNodeFinder $betterNodeFinder, ExclusiveNativeC
}
/**
* @return CallLike[]|null
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
*/
public function matchAlwaysReturnNativeCallLikes($functionLike) : ?array
{
if ($functionLike->stmts === null) {
return null;
}
- if ($this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($functionLike, [Yield_::class, YieldFrom::class])) {
- return null;
- }
- /** @var Return_[] $returns */
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($functionLike, Return_::class);
- if ($returns === []) {
- return null;
- }
- // is one statement depth 3?
- if (!$this->returnAnalyzer->areExclusiveExprReturns($returns)) {
- return null;
- }
- // has root return?
- if (!$this->returnAnalyzer->hasClassMethodRootReturn($functionLike)) {
+ $returns = $this->betterNodeFinder->findReturnsScoped($functionLike);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($functionLike, $returns)) {
return null;
}
return $this->exclusiveNativeCallLikeReturnMatcher->match($returns);
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictReturnNewAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictReturnNewAnalyzer.php
index f11cb6d80..f17183f5e 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictReturnNewAnalyzer.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictReturnNewAnalyzer.php
@@ -7,13 +7,10 @@
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Expr\Variable;
-use PhpParser\Node\Expr\Yield_;
-use PhpParser\Node\Expr\YieldFrom;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\Function_;
-use PhpParser\Node\Stmt\Return_;
use PHPStan\Type\ObjectType;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\NodeTypeResolver;
@@ -50,27 +47,15 @@ public function __construct(BetterNodeFinder $betterNodeFinder, NodeNameResolver
$this->returnAnalyzer = $returnAnalyzer;
}
/**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
*/
public function matchAlwaysReturnVariableNew($functionLike) : ?string
{
if ($functionLike->stmts === null) {
return null;
}
- if ($this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($functionLike, [Yield_::class, YieldFrom::class])) {
- return null;
- }
- /** @var Return_[] $returns */
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($functionLike, Return_::class);
- if ($returns === []) {
- return null;
- }
- // is one statement depth 3?
- if (!$this->returnAnalyzer->areExclusiveExprReturns($returns)) {
- return null;
- }
- // has root return?
- if (!$this->returnAnalyzer->hasClassMethodRootReturn($functionLike)) {
+ $returns = $this->betterNodeFinder->findReturnsScoped($functionLike);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($functionLike, $returns)) {
return null;
}
if (\count($returns) !== 1) {
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictScalarReturnTypeAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictScalarReturnTypeAnalyzer.php
deleted file mode 100644
index 205beca58..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictScalarReturnTypeAnalyzer.php
+++ /dev/null
@@ -1,79 +0,0 @@
-alwaysStrictReturnAnalyzer = $alwaysStrictReturnAnalyzer;
- $this->alwaysStrictScalarExprAnalyzer = $alwaysStrictScalarExprAnalyzer;
- $this->typeFactory = $typeFactory;
- }
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Stmt\Function_ $functionLike
- */
- public function matchAlwaysScalarReturnType($functionLike, bool $hardCodedOnly = \false) : ?Type
- {
- $returns = $this->alwaysStrictReturnAnalyzer->matchAlwaysStrictReturns($functionLike);
- if ($returns === []) {
- return null;
- }
- $scalarTypes = [];
- foreach ($returns as $return) {
- // we need exact expr return
- if (!$return->expr instanceof Expr) {
- return null;
- }
- if ($hardCodedOnly && !$this->isHardCodedExpression($return->expr)) {
- return null;
- }
- $scalarType = $this->alwaysStrictScalarExprAnalyzer->matchStrictScalarExpr($return->expr);
- if (!$scalarType instanceof Type) {
- return null;
- }
- $scalarTypes[] = $scalarType;
- }
- return $this->typeFactory->createMixedPassedOrUnionType($scalarTypes);
- }
- private function isHardCodedExpression(Expr $expr) : bool
- {
- // Normal scalar values like strings, integers and floats
- if ($expr instanceof Scalar) {
- return \true;
- }
- // true / false / null are constants
- if ($expr instanceof ConstFetch && \in_array($expr->name->toLowerString(), ['true', 'false', 'null'], \true)) {
- return \true;
- }
- // Negative numbers are wrapped in UnaryMinus, so check expression inside it
- return ($expr instanceof UnaryMinus || $expr instanceof UnaryPlus) && $expr->expr instanceof Scalar;
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddNeverReturnType.php b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddNeverReturnType.php
new file mode 100644
index 000000000..285a93f40
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddNeverReturnType.php
@@ -0,0 +1,112 @@
+classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->classModifierChecker = $classModifierChecker;
+ $this->betterNodeFinder = $betterNodeFinder;
+ $this->neverFuncCallAnalyzer = $neverFuncCallAnalyzer;
+ $this->nodeNameResolver = $nodeNameResolver;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
+ * @return \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure|null
+ */
+ public function add($node, Scope $scope)
+ {
+ if ($this->shouldSkip($node, $scope)) {
+ return null;
+ }
+ $node->returnType = new Identifier('never');
+ return $node;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
+ */
+ private function shouldSkip($node, Scope $scope) : bool
+ {
+ // already has return type, and non-void
+ // it can be "never" return itself, or other return type
+ if ($node->returnType instanceof Node && !$this->nodeNameResolver->isName($node->returnType, 'void')) {
+ return \true;
+ }
+ if ($this->hasReturnOrYields($node)) {
+ return \true;
+ }
+ if (!$this->hasNeverNodesOrNeverFuncCalls($node)) {
+ return \true;
+ }
+ if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
+ return \true;
+ }
+ if (!$node->returnType instanceof Node) {
+ return \false;
+ }
+ // skip as most likely intentional
+ return !$this->classModifierChecker->isInsideFinalClass($node) && $this->nodeNameResolver->isName($node->returnType, 'void');
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
+ */
+ private function hasReturnOrYields($node) : bool
+ {
+ return $this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($node, \array_merge([Return_::class, Yield_::class, YieldFrom::class], ControlStructure::CONDITIONAL_NODE_SCOPE_TYPES));
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
+ */
+ private function hasNeverNodesOrNeverFuncCalls($node) : bool
+ {
+ $hasNeverNodes = $this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($node, [Throw_::class]);
+ if ($hasNeverNodes) {
+ return \true;
+ }
+ return $this->neverFuncCallAnalyzer->hasNeverFuncCall($node);
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromCast.php b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromCast.php
new file mode 100644
index 000000000..023d08925
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromCast.php
@@ -0,0 +1,76 @@
+betterNodeFinder = $betterNodeFinder;
+ $this->returnTypeInferer = $returnTypeInferer;
+ $this->staticTypeMapper = $staticTypeMapper;
+ $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ * @return \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|null
+ */
+ public function add($functionLike, Scope $scope)
+ {
+ if ($functionLike->returnType instanceof Node) {
+ return null;
+ }
+ if ($functionLike instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($functionLike, $scope)) {
+ return null;
+ }
+ $hasNonCastReturn = (bool) $this->betterNodeFinder->findFirstInFunctionLikeScoped($functionLike, static function (Node $subNode) : bool {
+ return $subNode instanceof Return_ && !$subNode->expr instanceof Cast;
+ });
+ if ($hasNonCastReturn) {
+ return null;
+ }
+ $returnType = $this->returnTypeInferer->inferFunctionLike($functionLike);
+ if ($returnType instanceof UnionType) {
+ return null;
+ }
+ $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($returnType, TypeKind::RETURN);
+ if (!$returnTypeNode instanceof Node) {
+ return null;
+ }
+ $functionLike->returnType = $returnTypeNode;
+ return $functionLike;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromParam.php b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromParam.php
new file mode 100644
index 000000000..540a6addf
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromParam.php
@@ -0,0 +1,163 @@
+nodeNameResolver = $nodeNameResolver;
+ $this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
+ $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->returnTypeInferer = $returnTypeInferer;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ * @return \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|null
+ */
+ public function add($functionLike, Scope $scope)
+ {
+ if ($functionLike->stmts === null) {
+ return null;
+ }
+ if ($this->shouldSkipNode($functionLike, $scope)) {
+ return null;
+ }
+ $return = $this->findCurrentScopeReturn($functionLike->stmts);
+ if (!$return instanceof Return_ || !$return->expr instanceof Expr) {
+ return null;
+ }
+ $returnName = $this->nodeNameResolver->getName($return->expr);
+ $stmts = $functionLike->stmts;
+ foreach ($functionLike->getParams() as $param) {
+ if (!$param->type instanceof Node) {
+ continue;
+ }
+ if ($this->shouldSkipParam($param, $stmts)) {
+ continue;
+ }
+ $paramName = $this->nodeNameResolver->getName($param);
+ if ($returnName !== $paramName) {
+ continue;
+ }
+ $functionLike->returnType = $param->type;
+ return $functionLike;
+ }
+ return null;
+ }
+ /**
+ * @param Stmt[] $stmts
+ */
+ private function findCurrentScopeReturn(array $stmts) : ?Return_
+ {
+ $return = null;
+ $this->simpleCallableNodeTraverser->traverseNodesWithCallable($stmts, static function (Node $node) use(&$return) : ?int {
+ // skip scope nesting
+ if ($node instanceof Class_ || $node instanceof FunctionLike) {
+ $return = null;
+ return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
+ }
+ if (!$node instanceof Return_) {
+ return null;
+ }
+ if (!$node->expr instanceof Variable) {
+ $return = null;
+ return NodeTraverser::STOP_TRAVERSAL;
+ }
+ $return = $node;
+ return null;
+ });
+ return $return;
+ }
+ /**
+ * @param Stmt[] $stmts
+ */
+ private function shouldSkipParam(Param $param, array $stmts) : bool
+ {
+ $paramName = $this->nodeNameResolver->getName($param);
+ $isParamModified = \false;
+ $this->simpleCallableNodeTraverser->traverseNodesWithCallable($stmts, function (Node $node) use($paramName, &$isParamModified) : ?int {
+ // skip scope nesting
+ if ($node instanceof Class_ || $node instanceof FunctionLike) {
+ return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
+ }
+ if ($node instanceof AssignRef && $this->nodeNameResolver->isName($node->expr, $paramName)) {
+ $isParamModified = \true;
+ return NodeTraverser::STOP_TRAVERSAL;
+ }
+ if (!$node instanceof Assign) {
+ return null;
+ }
+ if (!$node->var instanceof Variable) {
+ return null;
+ }
+ if (!$this->nodeNameResolver->isName($node->var, $paramName)) {
+ return null;
+ }
+ $isParamModified = \true;
+ return NodeTraverser::STOP_TRAVERSAL;
+ });
+ return $isParamModified;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ */
+ private function shouldSkipNode($functionLike, Scope $scope) : bool
+ {
+ // type is already known, skip
+ if ($functionLike->returnType instanceof Node) {
+ return \true;
+ }
+ if ($functionLike instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($functionLike, $scope)) {
+ return \true;
+ }
+ $returnType = $this->returnTypeInferer->inferFunctionLike($functionLike);
+ if ($returnType instanceof MixedType) {
+ return \true;
+ }
+ $returnType = TypeCombinator::removeNull($returnType);
+ return $returnType instanceof UnionType;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromStrictNativeCall.php b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromStrictNativeCall.php
new file mode 100644
index 000000000..871ad5be5
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromStrictNativeCall.php
@@ -0,0 +1,86 @@
+staticTypeMapper = $staticTypeMapper;
+ $this->strictNativeFunctionReturnTypeAnalyzer = $strictNativeFunctionReturnTypeAnalyzer;
+ $this->nodeTypeResolver = $nodeTypeResolver;
+ $this->typeFactory = $typeFactory;
+ $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ }
+ /**
+ * @template TFunctionLike as ClassMethod|Function_
+ *
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ * @return TFunctionLike|null
+ */
+ public function add($functionLike, Scope $scope)
+ {
+ // already filled, skip
+ if ($functionLike->returnType instanceof Node) {
+ return null;
+ }
+ if ($functionLike instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($functionLike, $scope)) {
+ return null;
+ }
+ $nativeCallLikes = $this->strictNativeFunctionReturnTypeAnalyzer->matchAlwaysReturnNativeCallLikes($functionLike);
+ if ($nativeCallLikes === null) {
+ return null;
+ }
+ $callLikeTypes = [];
+ foreach ($nativeCallLikes as $nativeCallLike) {
+ $callLikeTypes[] = $this->nodeTypeResolver->getType($nativeCallLike);
+ }
+ $returnType = $this->typeFactory->createMixedPassedOrUnionTypeAndKeepConstant($callLikeTypes);
+ if ($returnType instanceof MixedType) {
+ return null;
+ }
+ $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($returnType, TypeKind::RETURN);
+ if (!$returnTypeNode instanceof Node) {
+ return null;
+ }
+ $functionLike->returnType = $returnTypeNode;
+ return $functionLike;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddUnionReturnType.php b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddUnionReturnType.php
new file mode 100644
index 000000000..2617cc55c
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/NodeManipulator/AddUnionReturnType.php
@@ -0,0 +1,72 @@
+returnTypeInferer = $returnTypeInferer;
+ $this->unionTypeMapper = $unionTypeMapper;
+ $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ }
+ /**
+ * @template TCallLike as ClassMethod|Function_
+ *
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $node
+ * @return TCallLike|null
+ */
+ public function add($node, Scope $scope)
+ {
+ if ($node->stmts === null) {
+ return null;
+ }
+ // type is already known
+ if ($node->returnType instanceof Node) {
+ return null;
+ }
+ if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
+ return null;
+ }
+ $inferReturnType = $this->returnTypeInferer->inferFunctionLike($node);
+ if (!$inferReturnType instanceof UnionType) {
+ return null;
+ }
+ $returnType = $this->unionTypeMapper->mapToPhpParserNode($inferReturnType, TypeKind::RETURN);
+ if (!$returnType instanceof Node) {
+ return null;
+ }
+ // handled by another PHP 7.1 rule with broader scope
+ if ($returnType instanceof NullableType) {
+ return null;
+ }
+ $node->returnType = $returnType;
+ return $node;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php b/vendor/rector/rector/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php
index 3fde6dab5..5a76114fc 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\TypeDeclaration\PHPStan;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt\GroupUse;
@@ -22,9 +22,6 @@
use Rector\StaticTypeMapper\ValueObject\Type\NonExistingObjectType;
use Rector\StaticTypeMapper\ValueObject\Type\ShortenedGenericObjectType;
use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType;
-use Rector\TypeDeclaration\Contract\PHPStan\TypeWithClassTypeSpecifierInterface;
-use Rector\TypeDeclaration\PHPStan\TypeSpecifier\SameNamespacedTypeSpecifier;
-use Rector\TypeDeclaration\PHPStan\TypeSpecifier\SelfStaticParentTypeSpecifier;
final class ObjectTypeSpecifier
{
/**
@@ -37,35 +34,17 @@ final class ObjectTypeSpecifier
* @var \Rector\Naming\Naming\UseImportsResolver
*/
private $useImportsResolver;
- /**
- * @var TypeWithClassTypeSpecifierInterface[]
- */
- private $typeWithClassTypeSpecifiers = [];
- public function __construct(ReflectionProvider $reflectionProvider, UseImportsResolver $useImportsResolver, SelfStaticParentTypeSpecifier $selfStaticParentTypeSpecifier, SameNamespacedTypeSpecifier $sameNamespacedTypeSpecifier)
+ public function __construct(ReflectionProvider $reflectionProvider, UseImportsResolver $useImportsResolver)
{
$this->reflectionProvider = $reflectionProvider;
$this->useImportsResolver = $useImportsResolver;
- $this->typeWithClassTypeSpecifiers = [$selfStaticParentTypeSpecifier, $sameNamespacedTypeSpecifier];
}
/**
* @return \PHPStan\Type\TypeWithClassName|\Rector\StaticTypeMapper\ValueObject\Type\NonExistingObjectType|\PHPStan\Type\UnionType|\PHPStan\Type\MixedType
*/
public function narrowToFullyQualifiedOrAliasedObjectType(Node $node, ObjectType $objectType, ?\PHPStan\Analyser\Scope $scope)
{
- if ($scope instanceof Scope) {
- foreach ($this->typeWithClassTypeSpecifiers as $typeWithClassTypeSpecifier) {
- if ($typeWithClassTypeSpecifier->match($objectType, $scope)) {
- return $typeWithClassTypeSpecifier->resolveObjectReferenceType($objectType, $scope);
- }
- }
- }
$uses = $this->useImportsResolver->resolve();
- if ($uses === []) {
- if (!$this->reflectionProvider->hasClass($objectType->getClassName())) {
- return new NonExistingObjectType($objectType->getClassName());
- }
- return new FullyQualifiedObjectType($objectType->getClassName(), null, $objectType->getClassReflection());
- }
$aliasedObjectType = $this->matchAliasedObjectType($objectType, $uses);
if ($aliasedObjectType instanceof AliasedObjectType) {
return $aliasedObjectType;
@@ -78,11 +57,21 @@ public function narrowToFullyQualifiedOrAliasedObjectType(Node $node, ObjectType
if ($this->reflectionProvider->hasClass($className)) {
return new FullyQualifiedObjectType($className);
}
+ // probably in same namespace
+ if ($scope instanceof Scope) {
+ $namespaceName = $scope->getNamespace();
+ if ($namespaceName !== null) {
+ $newClassName = $namespaceName . '\\' . $className;
+ if ($this->reflectionProvider->hasClass($newClassName)) {
+ return new FullyQualifiedObjectType($newClassName);
+ }
+ }
+ }
// invalid type
return new NonExistingObjectType($className);
}
/**
- * @param Use_[]|GroupUse[] $uses
+ * @param array $uses
*/
private function matchAliasedObjectType(ObjectType $objectType, array $uses) : ?AliasedObjectType
{
@@ -120,7 +109,7 @@ private function processAliasedObject(string $alias, string $className, string $
return null;
}
/**
- * @param Use_[]|GroupUse[] $uses
+ * @param array $uses
* @return \Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType|\Rector\StaticTypeMapper\ValueObject\Type\ShortenedGenericObjectType|null
*/
private function matchShortenedObjectType(ObjectType $objectType, array $uses)
diff --git a/vendor/rector/rector/rules/TypeDeclaration/PHPStan/TypeSpecifier/SameNamespacedTypeSpecifier.php b/vendor/rector/rector/rules/TypeDeclaration/PHPStan/TypeSpecifier/SameNamespacedTypeSpecifier.php
deleted file mode 100644
index 4172c9143..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/PHPStan/TypeSpecifier/SameNamespacedTypeSpecifier.php
+++ /dev/null
@@ -1,37 +0,0 @@
-reflectionProvider = $reflectionProvider;
- }
- public function match(ObjectType $objectType, Scope $scope) : bool
- {
- $namespaceName = $scope->getNamespace();
- if ($namespaceName === null) {
- return \false;
- }
- $namespacedClassName = $namespaceName . '\\' . \ltrim($objectType->getClassName(), '\\');
- return $this->reflectionProvider->hasClass($namespacedClassName);
- }
- public function resolveObjectReferenceType(ObjectType $objectType, Scope $scope) : TypeWithClassName
- {
- $namespacedClassName = $scope->getNamespace() . '\\' . \ltrim($objectType->getClassName(), '\\');
- return new FullyQualifiedObjectType($namespacedClassName);
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/PHPStan/TypeSpecifier/SelfStaticParentTypeSpecifier.php b/vendor/rector/rector/rules/TypeDeclaration/PHPStan/TypeSpecifier/SelfStaticParentTypeSpecifier.php
deleted file mode 100644
index cf6f18cac..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/PHPStan/TypeSpecifier/SelfStaticParentTypeSpecifier.php
+++ /dev/null
@@ -1,45 +0,0 @@
-getClassReflection();
- if (!$classReflection instanceof ClassReflection) {
- return \false;
- }
- return \in_array($objectType->getClassName(), [ObjectReference::STATIC, ObjectReference::PARENT, ObjectReference::SELF], \true);
- }
- public function resolveObjectReferenceType(ObjectType $objectType, Scope $scope) : TypeWithClassName
- {
- $classReflection = $scope->getClassReflection();
- if (!$classReflection instanceof ClassReflection) {
- throw new ShouldNotHappenException();
- }
- $className = $objectType->getClassName();
- if ($className === ObjectReference::STATIC) {
- return new StaticType($classReflection);
- }
- if ($className === ObjectReference::SELF) {
- return new SelfObjectType($className, null, $classReflection);
- }
- $parentClassReflection = $classReflection->getParentClass();
- if (!$parentClassReflection instanceof ClassReflection) {
- throw new ShouldNotHappenException();
- }
- return new ParentStaticType($parentClassReflection);
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/PhpDocParser/TypeExpressionFromVarTagResolver.php b/vendor/rector/rector/rules/TypeDeclaration/PhpDocParser/TypeExpressionFromVarTagResolver.php
new file mode 100644
index 000000000..b43d86f44
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/PhpDocParser/TypeExpressionFromVarTagResolver.php
@@ -0,0 +1,148 @@
+scalarStringToTypeMapper = $scalarStringToTypeMapper;
+ }
+ public function resolveTypeExpressionFromVarTag(TypeNode $typeNode, Variable $variable) : ?Expr
+ {
+ if ($typeNode instanceof IdentifierTypeNode) {
+ $scalarType = $this->scalarStringToTypeMapper->mapScalarStringToType($typeNode->name);
+ $scalarTypeFunction = $this->getScalarTypeFunction(\get_class($scalarType));
+ if ($scalarTypeFunction !== null) {
+ $arg = new Arg($variable);
+ return new FuncCall(new Name($scalarTypeFunction), [$arg]);
+ }
+ if ($scalarType instanceof NullType) {
+ return new Identical($variable, new ConstFetch(new Name('null')));
+ }
+ if ($scalarType instanceof ConstantBooleanType) {
+ return new Identical($variable, new ConstFetch(new Name($scalarType->getValue() ? 'true' : 'false')));
+ }
+ if ($scalarType instanceof MixedType && !$scalarType->isExplicitMixed()) {
+ return new Instanceof_($variable, new Name($typeNode->name));
+ }
+ } elseif ($typeNode instanceof NullableTypeNode) {
+ $unionExpressions = [];
+ $nullableTypeExpression = $this->resolveTypeExpressionFromVarTag($typeNode->type, $variable);
+ if (!$nullableTypeExpression instanceof Expr) {
+ return null;
+ }
+ $unionExpressions[] = $nullableTypeExpression;
+ $nullExpression = $this->resolveTypeExpressionFromVarTag(new IdentifierTypeNode('null'), $variable);
+ \assert($nullExpression instanceof Expr);
+ $unionExpressions[] = $nullExpression;
+ return $this->generateOrExpression($unionExpressions);
+ } elseif ($typeNode instanceof BracketsAwareUnionTypeNode) {
+ $unionExpressions = [];
+ foreach ($typeNode->types as $typeNode) {
+ $unionExpression = $this->resolveTypeExpressionFromVarTag($typeNode, $variable);
+ if (!$unionExpression instanceof Expr) {
+ return null;
+ }
+ $unionExpressions[] = $unionExpression;
+ }
+ return $this->generateOrExpression($unionExpressions);
+ } elseif ($typeNode instanceof BracketsAwareIntersectionTypeNode) {
+ $intersectionExpressions = [];
+ foreach ($typeNode->types as $typeNode) {
+ $intersectionExpression = $this->resolveTypeExpressionFromVarTag($typeNode, $variable);
+ if (!$intersectionExpression instanceof Expr) {
+ return null;
+ }
+ $intersectionExpressions[] = $intersectionExpression;
+ }
+ return $this->generateAndExpression($intersectionExpressions);
+ }
+ return null;
+ }
+ /**
+ * @param Expr[] $unionExpressions
+ * @return BooleanOr
+ */
+ private function generateOrExpression(array $unionExpressions)
+ {
+ $booleanOr = new BooleanOr($unionExpressions[0], $unionExpressions[1]);
+ if (\count($unionExpressions) == 2) {
+ return $booleanOr;
+ }
+ \array_splice($unionExpressions, 0, 2, [$booleanOr]);
+ return $this->generateOrExpression($unionExpressions);
+ }
+ /**
+ * @param Expr[] $intersectionExpressions
+ * @return BooleanAnd
+ */
+ private function generateAndExpression(array $intersectionExpressions)
+ {
+ $booleanAnd = new BooleanAnd($intersectionExpressions[0], $intersectionExpressions[1]);
+ if (\count($intersectionExpressions) == 2) {
+ return $booleanAnd;
+ }
+ \array_splice($intersectionExpressions, 0, 2, [$booleanAnd]);
+ return $this->generateAndExpression($intersectionExpressions);
+ }
+ /**
+ * @param class-string $className
+ */
+ private function getScalarTypeFunction(string $className) : ?string
+ {
+ switch ($className) {
+ case IntegerType::class:
+ return 'is_int';
+ case BooleanType::class:
+ return 'is_bool';
+ case FloatType::class:
+ return 'is_float';
+ case StringType::class:
+ return 'is_string';
+ case ArrayType::class:
+ return 'is_array';
+ case CallableType::class:
+ return 'is_callable';
+ case ObjectWithoutClassType::class:
+ return 'is_object';
+ case IterableType::class:
+ return 'is_iterable';
+ default:
+ return null;
+ }
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php
index 8dc47ed0b..322748495 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php
@@ -48,10 +48,11 @@ public function getNodeTypes() : array
*/
public function refactor(Node $node) : ?Node
{
- if ($node->returnType !== null) {
+ if ($node->returnType instanceof Node) {
return null;
}
$type = $this->nodeTypeResolver->getNativeType($node->expr);
+ // not valid to add explicit type in PHP
if ($type->isVoid()->yes()) {
return null;
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddMethodCallBasedStrictParamTypeRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddMethodCallBasedStrictParamTypeRector.php
index 08dc436b6..fb1572d89 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddMethodCallBasedStrictParamTypeRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddMethodCallBasedStrictParamTypeRector.php
@@ -14,8 +14,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://github.com/symplify/phpstan-rules/blob/master/docs/rules_overview.md#checktypehintcallertyperule
- *
* @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\AddMethodCallBasedStrictParamTypeRector\AddMethodCallBasedStrictParamTypeRectorTest
*/
final class AddMethodCallBasedStrictParamTypeRector extends AbstractRector
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamArrayDocblockBasedOnCallableNativeFuncCallRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamArrayDocblockBasedOnCallableNativeFuncCallRector.php
new file mode 100644
index 000000000..c8291a813
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamArrayDocblockBasedOnCallableNativeFuncCallRector.php
@@ -0,0 +1,230 @@
+>
+ */
+ private const NATIVE_FUNC_CALLS_WITH_POSITION = ['array_walk' => ['array' => 0, 'callback' => 1], 'array_map' => ['array' => 1, 'callback' => 0], 'usort' => ['array' => 0, 'callback' => 1], 'array_filter' => ['array' => 0, 'callback' => 1]];
+ public function __construct(PhpDocInfoFactory $phpDocInfoFactory, ArgsAnalyzer $argsAnalyzer, PhpDocTypeChanger $phpDocTypeChanger, StaticTypeMapper $staticTypeMapper)
+ {
+ $this->phpDocInfoFactory = $phpDocInfoFactory;
+ $this->argsAnalyzer = $argsAnalyzer;
+ $this->phpDocTypeChanger = $phpDocTypeChanger;
+ $this->staticTypeMapper = $staticTypeMapper;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add param array docblock based on callable native function call', [new CodeSample(<<<'CODE_SAMPLE'
+function process(array $items): void
+{
+ array_walk($items, function (stdClass $item) {
+ echo $item->value;
+ });
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+/**
+ * @param stdClass[] $items
+ */
+function process(array $items): void
+{
+ array_walk($items, function (stdClass $item) {
+ echo $item->value;
+ });
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class, Function_::class];
+ }
+ /**
+ * @param ClassMethod|Function_ $node
+ * @return null|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_
+ */
+ public function refactor(Node $node)
+ {
+ if ($node->params === []) {
+ return null;
+ }
+ if ($node->stmts === null) {
+ return null;
+ }
+ $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
+ $variableNamesWithArrayType = $this->collectVariableNamesWithArrayType($node, $phpDocInfo);
+ if ($variableNamesWithArrayType === []) {
+ return null;
+ }
+ $paramsWithType = [];
+ $this->traverseNodesWithCallable($node->stmts, function (Node $subNode) use($variableNamesWithArrayType, $node, &$paramsWithType) : ?int {
+ if ($subNode instanceof Class_ || $subNode instanceof Function_) {
+ return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
+ }
+ if (!$subNode instanceof FuncCall) {
+ return null;
+ }
+ if (!$this->isNames($subNode, \array_keys(self::NATIVE_FUNC_CALLS_WITH_POSITION))) {
+ return null;
+ }
+ if ($subNode->isFirstClassCallable()) {
+ return null;
+ }
+ $args = $subNode->getArgs();
+ if ($this->argsAnalyzer->hasNamedArg($args)) {
+ return null;
+ }
+ if (\count($args) < 2) {
+ return null;
+ }
+ $funcCallName = (string) $this->getName($subNode);
+ $arrayArgValue = $args[self::NATIVE_FUNC_CALLS_WITH_POSITION[$funcCallName]['array']]->value;
+ if (!$arrayArgValue instanceof Variable) {
+ return null;
+ }
+ // defined on param provided
+ if (!$this->isNames($arrayArgValue, $variableNamesWithArrayType)) {
+ return null;
+ }
+ $arrayArgValueType = $this->nodeTypeResolver->getNativeType($arrayArgValue);
+ // type changed, eg: by reassign
+ if (!$arrayArgValueType->isArray()->yes()) {
+ return null;
+ }
+ $callbackArgValue = $args[self::NATIVE_FUNC_CALLS_WITH_POSITION[$funcCallName]['callback']]->value;
+ if (!$callbackArgValue instanceof ArrowFunction && !$callbackArgValue instanceof Closure) {
+ return null;
+ }
+ // no params or more than 2 params
+ if ($callbackArgValue->params === [] || \count($callbackArgValue->params) > 2) {
+ return null;
+ }
+ foreach ($callbackArgValue->params as $callbackArgValueParam) {
+ // not typed
+ if (!$callbackArgValueParam->type instanceof Node) {
+ return null;
+ }
+ }
+ if (isset($callbackArgValue->params[1]) && !$this->nodeComparator->areNodesEqual($callbackArgValue->params[0]->type, $callbackArgValue->params[1]->type)) {
+ return null;
+ }
+ if (!$callbackArgValue->params[0]->type instanceof Node) {
+ return null;
+ }
+ $arrayArgValueName = (string) $this->getName($arrayArgValue);
+ $paramToUpdate = $this->getParamByName($node, $arrayArgValueName);
+ if (!$paramToUpdate instanceof Param) {
+ return null;
+ }
+ $paramType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($callbackArgValue->params[0]->type);
+ if ($paramType instanceof MixedType) {
+ return null;
+ }
+ $paramsWithType[$this->getName($paramToUpdate)] = \array_unique(\array_merge($paramsWithType[$this->getName($paramToUpdate)] ?? [], [$paramType]), \SORT_REGULAR);
+ return null;
+ });
+ $hasChanged = \false;
+ foreach ($paramsWithType as $paramName => $type) {
+ $type = \count($type) > 1 ? TypeCombinator::union(...$type) : \current($type);
+ /** @var Param $paramByName */
+ $paramByName = $this->getParamByName($node, $paramName);
+ $this->phpDocTypeChanger->changeParamType($node, $phpDocInfo, new ArrayType(new MixedType(), $type), $paramByName, $paramName);
+ $hasChanged = \true;
+ }
+ if (!$hasChanged) {
+ return null;
+ }
+ return $node;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $node
+ */
+ private function getParamByName($node, string $paramName) : ?Param
+ {
+ foreach ($node->params as $param) {
+ if ($this->isName($param, $paramName)) {
+ return $param;
+ }
+ }
+ return null;
+ }
+ /**
+ * @return string[]
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $node
+ */
+ private function collectVariableNamesWithArrayType($node, PhpDocInfo $phpDocInfo) : array
+ {
+ $variableNamesWithArrayType = [];
+ foreach ($node->params as $param) {
+ if (!$param->type instanceof Identifier) {
+ continue;
+ }
+ if ($param->type->toString() !== 'array') {
+ continue;
+ }
+ if (!$param->var instanceof Variable) {
+ continue;
+ }
+ $paramName = $this->getName($param);
+ $paramTag = $phpDocInfo->getParamTagValueByName($paramName);
+ if ($paramTag instanceof ParamTagValueNode) {
+ continue;
+ }
+ $variableNamesWithArrayType[] = $paramName;
+ }
+ return $variableNamesWithArrayType;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php
index ee49f2048..0aa7fd49e 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\TypeDeclaration\Rector\ClassMethod;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Attribute;
use PhpParser\Node\AttributeGroup;
@@ -165,8 +165,7 @@ private function inferParam(Class_ $class, int $parameterPosition, $dataProvider
if (!$dataProviderClassMethod instanceof ClassMethod) {
return new MixedType();
}
- /** @var Return_[] $returns */
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($dataProviderClassMethod, Return_::class);
+ $returns = $this->betterNodeFinder->findReturnsScoped($dataProviderClassMethod);
if ($returns !== []) {
return $this->resolveReturnStaticArrayTypeByParameterPosition($returns, $parameterPosition);
}
@@ -308,6 +307,9 @@ private function refactorClassMethod(ClassMethod $classMethod, Class_ $class, ar
if ($param->type instanceof Node) {
continue;
}
+ if ($param->variadic) {
+ continue;
+ }
$paramTypes = [];
foreach ($dataProviderNodes as $dataProviderNode) {
$paramTypes[] = $this->inferParam($class, $parameterPosition, $dataProviderNode);
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeDeclarationRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeDeclarationRector.php
index 6f534ed10..c44201271 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeDeclarationRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeDeclarationRector.php
@@ -21,7 +21,7 @@
use Rector\ValueObject\PhpVersionFeature;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\AddParamTypeDeclarationRector\AddParamTypeDeclarationRectorTest
*/
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnArrayDocblockBasedOnArrayMapRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnArrayDocblockBasedOnArrayMapRector.php
new file mode 100644
index 000000000..f6a031e5d
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnArrayDocblockBasedOnArrayMapRector.php
@@ -0,0 +1,171 @@
+betterNodeFinder = $betterNodeFinder;
+ $this->returnAnalyzer = $returnAnalyzer;
+ $this->staticTypeMapper = $staticTypeMapper;
+ $this->typeFactory = $typeFactory;
+ $this->phpDocTypeChanger = $phpDocTypeChanger;
+ $this->phpDocInfoFactory = $phpDocInfoFactory;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add @return array docblock based on array_map() return strict type', [new CodeSample(<<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function getItems(array $items)
+ {
+ return array_map(function ($item): int {
+ return $item->id;
+ }, $items);
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+class SomeClass
+{
+ /**
+ * @return int[]
+ */
+ public function getItems(array $items)
+ {
+ return array_map(function ($item): int {
+ return $item->id;
+ }, $items);
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class, Function_::class];
+ }
+ /**
+ * @param ClassMethod|Function_ $node
+ * @return null|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Stmt\ClassMethod
+ */
+ public function refactor(Node $node)
+ {
+ $returnsScoped = $this->betterNodeFinder->findReturnsScoped($node);
+ if ($this->hasNonArrayReturnType($node)) {
+ return null;
+ }
+ // nothing to return? skip it
+ if ($returnsScoped === []) {
+ return null;
+ }
+ // only returns with expr and no void
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returnsScoped)) {
+ return null;
+ }
+ $closureReturnTypes = [];
+ foreach ($returnsScoped as $returnScoped) {
+ if (!$returnScoped->expr instanceof FuncCall) {
+ return null;
+ }
+ $arrayMapClosure = $this->matchArrayMapClosure($returnScoped->expr);
+ if (!$arrayMapClosure instanceof FunctionLike) {
+ return null;
+ }
+ if (!$arrayMapClosure->returnType instanceof Node) {
+ return null;
+ }
+ $closureReturnTypes[] = $this->staticTypeMapper->mapPhpParserNodePHPStanType($arrayMapClosure->returnType);
+ }
+ $returnType = $this->typeFactory->createMixedPassedOrUnionType($closureReturnTypes);
+ $arrayType = new ArrayType(new MixedType(), $returnType);
+ $functionLikePhpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
+ $hasChanged = $this->phpDocTypeChanger->changeReturnType($node, $functionLikePhpDocInfo, $arrayType);
+ if ($hasChanged) {
+ return null;
+ }
+ return $node;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ */
+ private function hasNonArrayReturnType($functionLike) : bool
+ {
+ if (!$functionLike->returnType instanceof Identifier) {
+ return \false;
+ }
+ return $functionLike->returnType->toLowerString() !== 'array';
+ }
+ /**
+ * @return \PhpParser\Node\Expr\Closure|\PhpParser\Node\Expr\ArrowFunction|null
+ */
+ private function matchArrayMapClosure(FuncCall $funcCall)
+ {
+ if (!$this->isName($funcCall, 'array_map')) {
+ return null;
+ }
+ if ($funcCall->isFirstClassCallable()) {
+ return null;
+ }
+ // lets infer strict array_map() type
+ $firstArg = $funcCall->getArgs()[0];
+ if (!$firstArg->value instanceof Closure && !$firstArg->value instanceof ArrowFunction) {
+ return null;
+ }
+ return $firstArg->value;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationBasedOnParentClassMethodRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationBasedOnParentClassMethodRector.php
index 1e1702ac7..ea1ccd4c3 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationBasedOnParentClassMethodRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationBasedOnParentClassMethodRector.php
@@ -8,7 +8,6 @@
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Reflection\MethodReflection;
use PHPStan\Reflection\ParametersAcceptorSelector;
-use PHPStan\Reflection\ParametersAcceptorWithPhpDocs;
use PHPStan\Type\MixedType;
use PHPStan\Type\ObjectType;
use PHPStan\Type\Type;
@@ -23,7 +22,6 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/lsp_errors
* @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationBasedOnParentClassMethodRector\AddReturnTypeDeclarationBasedOnParentClassMethodRectorTest
*/
final class AddReturnTypeDeclarationBasedOnParentClassMethodRector extends AbstractRector implements MinPhpVersionInterface
@@ -120,7 +118,7 @@ public function refactor(Node $node) : ?Node
private function getReturnTypeRecursive(ClassMethod $classMethod) : ?Type
{
$returnType = $classMethod->getReturnType();
- if ($returnType !== null) {
+ if ($returnType instanceof Node) {
return $this->staticTypeMapper->mapPhpParserNodePHPStanType($returnType);
}
$parentMethodReflection = $this->parentClassMethodTypeOverrideGuard->getParentClassMethod($classMethod);
@@ -128,10 +126,7 @@ private function getReturnTypeRecursive(ClassMethod $classMethod) : ?Type
if ($parentMethodReflection->isPrivate()) {
return null;
}
- $parameterAcceptor = ParametersAcceptorSelector::selectSingle($parentMethodReflection->getVariants());
- if (!$parameterAcceptor instanceof ParametersAcceptorWithPhpDocs) {
- return null;
- }
+ $parameterAcceptor = ParametersAcceptorSelector::combineAcceptors($parentMethodReflection->getVariants());
$parentReturnType = $parameterAcceptor->getNativeReturnType();
if (!$parentReturnType instanceof MixedType) {
return $parentReturnType;
@@ -148,7 +143,7 @@ private function processClassMethodReturnType(Class_ $class, ClassMethod $classM
if ($parentType instanceof MixedType) {
$className = (string) $this->nodeNameResolver->getName($class);
$currentObjectType = new ObjectType($className);
- if (!$parentType->equals($currentObjectType) && $classMethod->returnType !== null) {
+ if (!$parentType->equals($currentObjectType) && $classMethod->returnType instanceof Node) {
return null;
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationRector.php
index bacc58a52..d8005ba71 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationRector.php
@@ -20,7 +20,7 @@
use Rector\VendorLocker\ParentClassMethodTypeOverrideGuard;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationRector\AddReturnTypeDeclarationRectorTest
*/
@@ -57,7 +57,6 @@ public function __construct(PhpVersionProvider $phpVersionProvider, ParentClassM
}
public function getRuleDefinition() : RuleDefinition
{
- $arrayType = new ArrayType(new MixedType(), new MixedType());
return new RuleDefinition('Changes defined return typehint of method and class.', [new ConfiguredCodeSample(<<<'CODE_SAMPLE'
class SomeClass
{
@@ -74,7 +73,7 @@ public function getData(): array
}
}
CODE_SAMPLE
-, [new AddReturnTypeDeclaration('SomeClass', 'getData', $arrayType)])]);
+, [new AddReturnTypeDeclaration('SomeClass', 'getData', new ArrayType(new MixedType(), new MixedType()))])]);
}
/**
* @return array>
@@ -119,7 +118,7 @@ private function processClassMethodNodeWithTypehints(ClassMethod $classMethod, C
if ($newType instanceof MixedType) {
$className = (string) $this->nodeNameResolver->getName($class);
$currentObjectType = new ObjectType($className);
- if (!$objectType->equals($currentObjectType) && $classMethod->returnType !== null) {
+ if (!$objectType->equals($currentObjectType) && $classMethod->returnType instanceof Node) {
return;
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddTypeFromResourceDocblockRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddTypeFromResourceDocblockRector.php
new file mode 100644
index 000000000..c13d811d7
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddTypeFromResourceDocblockRector.php
@@ -0,0 +1,196 @@
+phpDocInfoFactory = $phpDocInfoFactory;
+ $this->phpDocTypeChanger = $phpDocTypeChanger;
+ $this->docBlockUpdater = $docBlockUpdater;
+ $this->staticTypeMapper = $staticTypeMapper;
+ $this->phpDocTagRemover = $phpDocTagRemover;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add param and return types on resource docblock', [new ConfiguredCodeSample(<<<'CODE_SAMPLE'
+class SomeClass
+{
+ /**
+ * @param resource|null $resource
+ */
+ public function setResource($resource)
+ {
+ }
+
+ /**
+ * @return resource|null
+ */
+ public function getResource()
+ {
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function setResource(?App\ValueObject\Resource $resource)
+ {
+ }
+
+ public function getResource(): ?App\ValueObject\Resource
+ {
+ }
+}
+CODE_SAMPLE
+, ['App\\ValueObject\\Resource'])]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class];
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::NULLABLE_TYPE;
+ }
+ /**
+ * @param ClassMethod $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ $hasChanged = \false;
+ $phpdocInfo = $this->phpDocInfoFactory->createFromNode($node);
+ if (!$phpdocInfo instanceof PhpDocInfo) {
+ return null;
+ }
+ // for return type
+ if (!$node->returnType instanceof Node) {
+ $returnType = $phpdocInfo->getReturnType();
+ $newType = $this->resolveNewType($returnType);
+ if ($newType instanceof Type) {
+ $returnTagValueNode = $phpdocInfo->getReturnTagValue();
+ if ($returnTagValueNode instanceof ReturnTagValueNode) {
+ if ($returnTagValueNode->description !== '') {
+ $this->phpDocTypeChanger->changeReturnType($node, $phpdocInfo, $newType);
+ } else {
+ $phpdocInfo->removeByType(ReturnTagValueNode::class);
+ $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);
+ }
+ $node->returnType = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($newType, TypeKind::RETURN);
+ $hasChanged = \true;
+ }
+ }
+ }
+ // for param type
+ foreach ($node->params as $param) {
+ if ($param->type instanceof Node) {
+ continue;
+ }
+ $paramName = $this->getName($param);
+ $paramType = $phpdocInfo->getParamType($this->getName($param));
+ $newType = $this->resolveNewType($paramType);
+ if ($newType instanceof Type) {
+ $paramTagValueByName = $phpdocInfo->getParamTagValueByName($paramName);
+ if (!$paramTagValueByName instanceof ParamTagValueNode) {
+ continue;
+ }
+ if ($paramTagValueByName->description !== '') {
+ $this->phpDocTypeChanger->changeParamType($node, $phpdocInfo, $newType, $param, $paramName);
+ } else {
+ $this->phpDocTagRemover->removeTagValueFromNode($phpdocInfo, $paramTagValueByName);
+ $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);
+ }
+ $param->type = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($newType, TypeKind::RETURN);
+ $hasChanged = \true;
+ }
+ }
+ if ($hasChanged) {
+ return $node;
+ }
+ return null;
+ }
+ /**
+ * @param mixed[] $configuration
+ */
+ public function configure(array $configuration) : void
+ {
+ Assert::stringNotEmpty(\current($configuration));
+ $this->newTypeFromResourceDoc = \current($configuration);
+ }
+ private function resolveNewType(Type $type) : ?Type
+ {
+ $newType = null;
+ if ($type instanceof UnionType) {
+ $types = $type->getTypes();
+ foreach ($types as $key => $type) {
+ if ($type instanceof ResourceType) {
+ $types[$key] = new ObjectType($this->newTypeFromResourceDoc);
+ $newType = new UnionType($types);
+ break;
+ }
+ }
+ } elseif ($type instanceof ResourceType) {
+ $newType = new ObjectType($this->newTypeFromResourceDoc);
+ }
+ return $newType;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddVoidReturnTypeWhereNoReturnRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddVoidReturnTypeWhereNoReturnRector.php
index f3590c953..b26b9bc4d 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddVoidReturnTypeWhereNoReturnRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/AddVoidReturnTypeWhereNoReturnRector.php
@@ -7,7 +7,6 @@
use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Throw_;
-use Rector\NodeAnalyzer\MagicClassMethodAnalyzer;
use Rector\Rector\AbstractRector;
use Rector\Reflection\ClassModifierChecker;
use Rector\TypeDeclaration\TypeInferer\SilentVoidResolver;
@@ -31,21 +30,15 @@ final class AddVoidReturnTypeWhereNoReturnRector extends AbstractRector implemen
* @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnVendorLockResolver
*/
private $classMethodReturnVendorLockResolver;
- /**
- * @readonly
- * @var \Rector\NodeAnalyzer\MagicClassMethodAnalyzer
- */
- private $magicClassMethodAnalyzer;
/**
* @readonly
* @var \Rector\Reflection\ClassModifierChecker
*/
private $classModifierChecker;
- public function __construct(SilentVoidResolver $silentVoidResolver, ClassMethodReturnVendorLockResolver $classMethodReturnVendorLockResolver, MagicClassMethodAnalyzer $magicClassMethodAnalyzer, ClassModifierChecker $classModifierChecker)
+ public function __construct(SilentVoidResolver $silentVoidResolver, ClassMethodReturnVendorLockResolver $classMethodReturnVendorLockResolver, ClassModifierChecker $classModifierChecker)
{
$this->silentVoidResolver = $silentVoidResolver;
$this->classMethodReturnVendorLockResolver = $classMethodReturnVendorLockResolver;
- $this->magicClassMethodAnalyzer = $magicClassMethodAnalyzer;
$this->classModifierChecker = $classModifierChecker;
}
public function getRuleDefinition() : RuleDefinition
@@ -106,9 +99,6 @@ public function provideMinPhpVersion() : int
}
private function shouldSkipClassMethod(ClassMethod $classMethod) : bool
{
- if ($this->magicClassMethodAnalyzer->isUnsafeOverridden($classMethod)) {
- return \true;
- }
if ($classMethod->isAbstract()) {
return \true;
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanConstReturnsRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanConstReturnsRector.php
new file mode 100644
index 000000000..3e51b0c2a
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanConstReturnsRector.php
@@ -0,0 +1,140 @@
+valueResolver = $valueResolver;
+ $this->betterNodeFinder = $betterNodeFinder;
+ $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->returnAnalyzer = $returnAnalyzer;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add return bool, based on direct true/false returns', [new CodeSample(<<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function resolve($value)
+ {
+ if ($value) {
+ return false;
+ }
+
+ return true;
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function resolve($value): bool
+ {
+ if ($value) {
+ return false;
+ }
+
+ return true;
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @funcCall array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class, Function_::class];
+ }
+ /**
+ * @param ClassMethod|Function_ $node
+ */
+ public function refactorWithScope(Node $node, Scope $scope) : ?Node
+ {
+ if ($this->shouldSkip($node, $scope)) {
+ return null;
+ }
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
+ return null;
+ }
+ if (!$this->hasOnlyBooleanConstExprs($returns)) {
+ return null;
+ }
+ $node->returnType = new Identifier('bool');
+ return $node;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::SCALAR_TYPES;
+ }
+ /**
+ * @param ClassMethod|Function_|Closure $node
+ */
+ private function shouldSkip(Node $node, Scope $scope) : bool
+ {
+ // already has the type, skip
+ if ($node->returnType instanceof Node) {
+ return \true;
+ }
+ return $node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope);
+ }
+ /**
+ * @param Return_[] $returns
+ */
+ private function hasOnlyBooleanConstExprs(array $returns) : bool
+ {
+ foreach ($returns as $return) {
+ if (!$return->expr instanceof ConstFetch) {
+ return \false;
+ }
+ if (!$this->valueResolver->isTrueOrFalse($return->expr)) {
+ return \false;
+ }
+ }
+ return \true;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromStrictScalarReturnsRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanStrictReturnsRector.php
similarity index 71%
rename from vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromStrictScalarReturnsRector.php
rename to vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanStrictReturnsRector.php
index 81130c48c..b6ad26ef7 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromStrictScalarReturnsRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanStrictReturnsRector.php
@@ -15,8 +15,12 @@
use PhpParser\Node\Expr\BinaryOp\NotIdentical;
use PhpParser\Node\Expr\BinaryOp\Smaller;
use PhpParser\Node\Expr\BinaryOp\SmallerOrEqual;
+use PhpParser\Node\Expr\BooleanNot;
use PhpParser\Node\Expr\Closure;
+use PhpParser\Node\Expr\ConstFetch;
+use PhpParser\Node\Expr\Empty_;
use PhpParser\Node\Expr\FuncCall;
+use PhpParser\Node\Expr\Isset_;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\ClassMethod;
@@ -35,15 +39,10 @@
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromStrictScalarReturnsRector\BoolReturnTypeFromStrictScalarReturnsRectorTest
+ * @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromBooleanStrictReturnsRector\BoolReturnTypeFromBooleanStrictReturnsRectorTest
*/
-final class BoolReturnTypeFromStrictScalarReturnsRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
+final class BoolReturnTypeFromBooleanStrictReturnsRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
{
- /**
- * @readonly
- * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer
- */
- private $returnAnalyzer;
/**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider
@@ -64,25 +63,26 @@ final class BoolReturnTypeFromStrictScalarReturnsRector extends AbstractScopeAwa
* @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard
*/
private $classMethodReturnTypeOverrideGuard;
- public function __construct(ReturnAnalyzer $returnAnalyzer, ReflectionProvider $reflectionProvider, ValueResolver $valueResolver, BetterNodeFinder $betterNodeFinder, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard)
+ /**
+ * @readonly
+ * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer
+ */
+ private $returnAnalyzer;
+ public function __construct(ReflectionProvider $reflectionProvider, ValueResolver $valueResolver, BetterNodeFinder $betterNodeFinder, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnAnalyzer $returnAnalyzer)
{
- $this->returnAnalyzer = $returnAnalyzer;
$this->reflectionProvider = $reflectionProvider;
$this->valueResolver = $valueResolver;
$this->betterNodeFinder = $betterNodeFinder;
$this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->returnAnalyzer = $returnAnalyzer;
}
public function getRuleDefinition() : RuleDefinition
{
- return new RuleDefinition('Change return type based on strict returns type operations', [new CodeSample(<<<'CODE_SAMPLE'
+ return new RuleDefinition('Add bool return type based on strict bool returns type operations', [new CodeSample(<<<'CODE_SAMPLE'
class SomeClass
{
public function resolve($first, $second)
{
- if ($first) {
- return false;
- }
-
return $first > $second;
}
}
@@ -92,10 +92,6 @@ class SomeClass
{
public function resolve($first, $second): bool
{
- if ($first) {
- return false;
- }
-
return $first > $second;
}
}
@@ -107,18 +103,26 @@ public function resolve($first, $second): bool
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class];
+ return [ClassMethod::class, Function_::class];
}
/**
- * @param ClassMethod|Function_|Closure $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
if ($this->shouldSkip($node, $scope)) {
return null;
}
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($node, Return_::class);
- if (!$this->hasOnlyBoolScalarReturnExprs($returns, $node)) {
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
+ return null;
+ }
+ // handled in another rule
+ if ($this->hasOnlyBooleanConstExprs($returns)) {
+ return null;
+ }
+ // handled in another rule
+ if (!$this->hasOnlyBoolScalarReturnExprs($returns)) {
return null;
}
$node->returnType = new Identifier('bool');
@@ -133,6 +137,7 @@ public function provideMinPhpVersion() : int
*/
private function shouldSkip(Node $node, Scope $scope) : bool
{
+ // already has the type, skip
if ($node->returnType instanceof Node) {
return \true;
}
@@ -140,24 +145,14 @@ private function shouldSkip(Node $node, Scope $scope) : bool
}
/**
* @param Return_[] $returns
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
*/
- private function hasOnlyBoolScalarReturnExprs(array $returns, $functionLike) : bool
+ private function hasOnlyBoolScalarReturnExprs(array $returns) : bool
{
- if ($returns === []) {
- return \false;
- }
- if (!$this->returnAnalyzer->hasClassMethodRootReturn($functionLike)) {
- return \false;
- }
foreach ($returns as $return) {
if (!$return->expr instanceof Expr) {
return \false;
}
- if ($this->valueResolver->isTrueOrFalse($return->expr)) {
- continue;
- }
- if ($this->isBooleanBinaryOp($return->expr)) {
+ if ($this->isBooleanOp($return->expr)) {
continue;
}
if ($return->expr instanceof FuncCall && $this->isNativeBooleanReturnTypeFuncCall($return->expr)) {
@@ -173,7 +168,11 @@ private function isNativeBooleanReturnTypeFuncCall(FuncCall $funcCall) : bool
if (!\is_string($functionName)) {
return \false;
}
- $functionReflection = $this->reflectionProvider->getFunction(new Name($functionName), null);
+ $name = new Name($functionName);
+ if (!$this->reflectionProvider->hasFunction($name, null)) {
+ return \false;
+ }
+ $functionReflection = $this->reflectionProvider->getFunction($name, null);
if (!$functionReflection->isBuiltin()) {
return \false;
}
@@ -182,7 +181,7 @@ private function isNativeBooleanReturnTypeFuncCall(FuncCall $funcCall) : bool
}
return \false;
}
- private function isBooleanBinaryOp(Expr $expr) : bool
+ private function isBooleanOp(Expr $expr) : bool
{
if ($expr instanceof Smaller) {
return \true;
@@ -211,6 +210,30 @@ private function isBooleanBinaryOp(Expr $expr) : bool
if ($expr instanceof Equal) {
return \true;
}
- return $expr instanceof NotEqual;
+ if ($expr instanceof NotEqual) {
+ return \true;
+ }
+ if ($expr instanceof Empty_) {
+ return \true;
+ }
+ if ($expr instanceof Isset_) {
+ return \true;
+ }
+ return $expr instanceof BooleanNot;
+ }
+ /**
+ * @param Return_[] $returns
+ */
+ private function hasOnlyBooleanConstExprs(array $returns) : bool
+ {
+ foreach ($returns as $return) {
+ if (!$return->expr instanceof ConstFetch) {
+ return \false;
+ }
+ if (!$this->valueResolver->isTrueOrFalse($return->expr)) {
+ return \false;
+ }
+ }
+ return \true;
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictReturnsRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictReturnsRector.php
new file mode 100644
index 000000000..900bff35e
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictReturnsRector.php
@@ -0,0 +1,165 @@
+classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->betterNodeFinder = $betterNodeFinder;
+ $this->returnAnalyzer = $returnAnalyzer;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add int/float return type based on strict typed returns', [new CodeSample(<<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function increase($value)
+ {
+ return ++$value;
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+class SomeClass
+{
+ public function increase($value): int
+ {
+ return ++$value;
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class, Function_::class];
+ }
+ /**
+ * @param ClassMethod|Function_ $node
+ */
+ public function refactorWithScope(Node $node, Scope $scope) : ?Node
+ {
+ if ($this->shouldSkip($node, $scope)) {
+ return null;
+ }
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
+ return null;
+ }
+ // handled by another rule
+ if ($this->isAlwaysNumeric($returns)) {
+ return null;
+ }
+ $isAlwaysIntType = \true;
+ $isAlwaysFloatType = \true;
+ foreach ($returns as $return) {
+ if (!$return->expr instanceof Expr) {
+ return null;
+ }
+ $exprType = $this->nodeTypeResolver->getNativeType($return->expr);
+ if (!$exprType->isInteger()->yes()) {
+ $isAlwaysIntType = \false;
+ }
+ if (!$exprType->isFloat()->yes()) {
+ $isAlwaysFloatType = \false;
+ }
+ }
+ if ($isAlwaysFloatType) {
+ $node->returnType = new Identifier('float');
+ return $node;
+ }
+ if ($isAlwaysIntType) {
+ $node->returnType = new Identifier('int');
+ return $node;
+ }
+ return null;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::SCALAR_TYPES;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ */
+ private function shouldSkip($functionLike, Scope $scope) : bool
+ {
+ // type is already known, skip
+ if ($functionLike->returnType instanceof Node) {
+ return \true;
+ }
+ // empty, nothing to find
+ if ($functionLike->stmts === null || $functionLike->stmts === []) {
+ return \true;
+ }
+ if (!$functionLike instanceof ClassMethod) {
+ return \false;
+ }
+ return $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($functionLike, $scope);
+ }
+ /**
+ * @param Return_[] $returns
+ */
+ private function isAlwaysNumeric(array $returns) : bool
+ {
+ $isAlwaysFloat = \true;
+ $isAlwaysInt = \true;
+ foreach ($returns as $return) {
+ $epxr = $return->expr;
+ if ($epxr instanceof UnaryMinus) {
+ $epxr = $epxr->expr;
+ }
+ if (!$epxr instanceof DNumber) {
+ $isAlwaysFloat = \false;
+ }
+ if (!$epxr instanceof LNumber) {
+ $isAlwaysInt = \false;
+ }
+ }
+ if ($isAlwaysFloat) {
+ return \true;
+ }
+ return $isAlwaysInt;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictScalarReturnsRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictScalarReturnsRector.php
index a890097a2..28c63012b 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictScalarReturnsRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictScalarReturnsRector.php
@@ -4,13 +4,16 @@
namespace Rector\TypeDeclaration\Rector\ClassMethod;
use PhpParser\Node;
-use PhpParser\Node\Expr\Closure;
+use PhpParser\Node\Expr\UnaryMinus;
use PhpParser\Node\Identifier;
+use PhpParser\Node\Scalar\DNumber;
+use PhpParser\Node\Scalar\LNumber;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
use PHPStan\Analyser\Scope;
+use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\Rector\AbstractScopeAwareRector;
-use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
+use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
use Rector\ValueObject\PhpVersionFeature;
use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -28,31 +31,37 @@ final class NumericReturnTypeFromStrictScalarReturnsRector extends AbstractScope
private $classMethodReturnTypeOverrideGuard;
/**
* @readonly
- * @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
+ * @var \Rector\PhpParser\Node\BetterNodeFinder
*/
- private $returnTypeInferer;
- public function __construct(ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnTypeInferer $returnTypeInferer)
+ private $betterNodeFinder;
+ /**
+ * @readonly
+ * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer
+ */
+ private $returnAnalyzer;
+ public function __construct(ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, BetterNodeFinder $betterNodeFinder, ReturnAnalyzer $returnAnalyzer)
{
$this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
- $this->returnTypeInferer = $returnTypeInferer;
+ $this->betterNodeFinder = $betterNodeFinder;
+ $this->returnAnalyzer = $returnAnalyzer;
}
public function getRuleDefinition() : RuleDefinition
{
- return new RuleDefinition('Change numeric return type based on strict returns type operations', [new CodeSample(<<<'CODE_SAMPLE'
+ return new RuleDefinition('Add int/float return type based on strict scalar returns type', [new CodeSample(<<<'CODE_SAMPLE'
class SomeClass
{
- public function resolve(int $first, int $second)
+ public function getNumber()
{
- return $first - $second;
+ return 200;
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
class SomeClass
{
- public function resolve(int $first, int $second): int
+ public function getNumber(): int
{
- return $first - $second;
+ return 200;
}
}
CODE_SAMPLE
@@ -63,28 +72,39 @@ public function resolve(int $first, int $second): int
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class];
+ return [ClassMethod::class, Function_::class];
}
/**
- * @param ClassMethod|Function_|Closure $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
- if ($node->returnType instanceof Node) {
+ if ($this->shouldSkip($node, $scope)) {
return null;
}
- if ($node->stmts === null) {
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
return null;
}
- if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
- return null;
+ $isAlwaysInt = \true;
+ $isAlwaysFloat = \true;
+ foreach ($returns as $return) {
+ $expr = $return->expr;
+ if ($expr instanceof UnaryMinus) {
+ $expr = $expr->expr;
+ }
+ if (!$expr instanceof DNumber) {
+ $isAlwaysFloat = \false;
+ }
+ if (!$expr instanceof LNumber) {
+ $isAlwaysInt = \false;
+ }
}
- $returnType = $this->returnTypeInferer->inferFunctionLike($node);
- if ($returnType->isFloat()->yes()) {
+ if ($isAlwaysFloat) {
$node->returnType = new Identifier('float');
return $node;
}
- if ($returnType->isInteger()->yes()) {
+ if ($isAlwaysInt) {
$node->returnType = new Identifier('int');
return $node;
}
@@ -94,4 +114,22 @@ public function provideMinPhpVersion() : int
{
return PhpVersionFeature::SCALAR_TYPES;
}
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ */
+ private function shouldSkip($functionLike, Scope $scope) : bool
+ {
+ // type is already known, skip
+ if ($functionLike->returnType instanceof Node) {
+ return \true;
+ }
+ // empty, nothing to ifnd
+ if ($functionLike->stmts === null || $functionLike->stmts === []) {
+ return \true;
+ }
+ if (!$functionLike instanceof ClassMethod) {
+ return \false;
+ }
+ return $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($functionLike, $scope);
+ }
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ParamTypeByMethodCallTypeRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ParamTypeByMethodCallTypeRector.php
index 6f7cca3ef..4d9e5e08f 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ParamTypeByMethodCallTypeRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ParamTypeByMethodCallTypeRector.php
@@ -4,21 +4,19 @@
namespace Rector\TypeDeclaration\Rector\ClassMethod;
use PhpParser\Node;
-use PhpParser\Node\ComplexType;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\StaticCall;
-use PhpParser\Node\Identifier;
-use PhpParser\Node\Name;
-use PhpParser\Node\NullableType;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
-use PhpParser\Node\UnionType;
use PHPStan\Analyser\Scope;
-use Rector\NodeTypeResolver\Node\AttributeKey;
+use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
use Rector\PhpParser\Node\BetterNodeFinder;
+use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\Rector\AbstractScopeAwareRector;
+use Rector\StaticTypeMapper\Mapper\PhpParserNodeMapper;
+use Rector\StaticTypeMapper\StaticTypeMapper;
use Rector\TypeDeclaration\Guard\ParamTypeAddGuard;
use Rector\TypeDeclaration\NodeAnalyzer\CallerParamMatcher;
use Rector\VendorLocker\ParentClassMethodTypeOverrideGuard;
@@ -49,12 +47,30 @@ final class ParamTypeByMethodCallTypeRector extends AbstractScopeAwareRector
* @var \Rector\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
- public function __construct(CallerParamMatcher $callerParamMatcher, ParentClassMethodTypeOverrideGuard $parentClassMethodTypeOverrideGuard, ParamTypeAddGuard $paramTypeAddGuard, BetterNodeFinder $betterNodeFinder)
+ /**
+ * @readonly
+ * @var \Rector\StaticTypeMapper\Mapper\PhpParserNodeMapper
+ */
+ private $phpParserNodeMapper;
+ /**
+ * @readonly
+ * @var \Rector\StaticTypeMapper\StaticTypeMapper
+ */
+ private $staticTypeMapper;
+ /**
+ * @readonly
+ * @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
+ */
+ private $typeFactory;
+ public function __construct(CallerParamMatcher $callerParamMatcher, ParentClassMethodTypeOverrideGuard $parentClassMethodTypeOverrideGuard, ParamTypeAddGuard $paramTypeAddGuard, BetterNodeFinder $betterNodeFinder, PhpParserNodeMapper $phpParserNodeMapper, StaticTypeMapper $staticTypeMapper, TypeFactory $typeFactory)
{
$this->callerParamMatcher = $callerParamMatcher;
$this->parentClassMethodTypeOverrideGuard = $parentClassMethodTypeOverrideGuard;
$this->paramTypeAddGuard = $paramTypeAddGuard;
$this->betterNodeFinder = $betterNodeFinder;
+ $this->phpParserNodeMapper = $phpParserNodeMapper;
+ $this->staticTypeMapper = $staticTypeMapper;
+ $this->typeFactory = $typeFactory;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -138,20 +154,6 @@ private function shouldSkipClassMethod(ClassMethod $classMethod) : bool
}
return $this->parentClassMethodTypeOverrideGuard->hasParentClassMethod($classMethod);
}
- /**
- * @param \PhpParser\Node\Identifier|\PhpParser\Node\Name|\PhpParser\Node\NullableType|\PhpParser\Node\UnionType|\PhpParser\Node\ComplexType $paramType
- */
- private function mirrorParamType(Param $decoratedParam, $paramType) : void
- {
- // mimic type
- $newParamType = $paramType;
- $this->traverseNodesWithCallable($newParamType, static function (Node $node) {
- // original node has to removed to avoid tokens crashing from origin positions
- $node->setAttribute(AttributeKey::ORIGINAL_NODE, null);
- return null;
- });
- $decoratedParam->type = $newParamType;
- }
private function shouldSkipParam(Param $param, ClassMethod $classMethod) : bool
{
// already has type, skip
@@ -173,14 +175,29 @@ private function refactorClassMethod(ClassMethod $classMethod, array $callers, S
if ($this->shouldSkipParam($param, $classMethod)) {
continue;
}
+ $paramTypes = [];
foreach ($callers as $caller) {
- $paramType = $this->callerParamMatcher->matchCallParamType($caller, $param, $scope);
- if ($paramType === null) {
+ $matchCallParam = $this->callerParamMatcher->matchCallParam($caller, $param, $scope);
+ // nothing to do with param, continue
+ if (!$matchCallParam instanceof Param) {
continue;
}
- $this->mirrorParamType($param, $paramType);
+ $paramType = $this->callerParamMatcher->matchCallParamType($param, $matchCallParam);
+ if (!$paramType instanceof Node) {
+ $paramTypes = [];
+ break;
+ }
+ $paramTypes[] = $this->phpParserNodeMapper->mapToPHPStanType($paramType);
$hasChanged = \true;
}
+ if ($paramTypes === []) {
+ continue;
+ }
+ $type = $this->typeFactory->createMixedPassedOrUnionType($paramTypes);
+ $paramNodeType = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($type, TypeKind::PARAM);
+ if ($paramNodeType instanceof Node) {
+ $param->type = $paramNodeType;
+ }
}
return $hasChanged;
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnNeverTypeRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnNeverTypeRector.php
index 3a5811433..da7587c2c 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnNeverTypeRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnNeverTypeRector.php
@@ -4,58 +4,28 @@
namespace Rector\TypeDeclaration\Rector\ClassMethod;
use PhpParser\Node;
-use PhpParser\Node\Expr\Closure;
-use PhpParser\Node\Expr\Yield_;
-use PhpParser\Node\Expr\YieldFrom;
-use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
-use PhpParser\Node\Stmt\Return_;
-use PhpParser\Node\Stmt\Throw_;
use PHPStan\Analyser\Scope;
-use Rector\NodeNestingScope\ValueObject\ControlStructure;
-use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\Rector\AbstractScopeAwareRector;
-use Rector\Reflection\ClassModifierChecker;
-use Rector\TypeDeclaration\NodeAnalyzer\NeverFuncCallAnalyzer;
+use Rector\TypeDeclaration\NodeManipulator\AddNeverReturnType;
use Rector\ValueObject\PhpVersionFeature;
-use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
- * @changelog https://wiki.php.net/rfc/noreturn_type
- *
* @see \Rector\Tests\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector\ReturnNeverTypeRectorTest
*/
final class ReturnNeverTypeRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
{
/**
* @readonly
- * @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard
+ * @var \Rector\TypeDeclaration\NodeManipulator\AddNeverReturnType
*/
- private $classMethodReturnTypeOverrideGuard;
- /**
- * @readonly
- * @var \Rector\PhpParser\Node\BetterNodeFinder
- */
- private $betterNodeFinder;
- /**
- * @readonly
- * @var \Rector\TypeDeclaration\NodeAnalyzer\NeverFuncCallAnalyzer
- */
- private $neverFuncCallAnalyzer;
- /**
- * @readonly
- * @var \Rector\Reflection\ClassModifierChecker
- */
- private $classModifierChecker;
- public function __construct(ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, BetterNodeFinder $betterNodeFinder, NeverFuncCallAnalyzer $neverFuncCallAnalyzer, ClassModifierChecker $classModifierChecker)
+ private $addNeverReturnType;
+ public function __construct(AddNeverReturnType $addNeverReturnType)
{
- $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
- $this->betterNodeFinder = $betterNodeFinder;
- $this->neverFuncCallAnalyzer = $neverFuncCallAnalyzer;
- $this->classModifierChecker = $classModifierChecker;
+ $this->addNeverReturnType = $addNeverReturnType;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -84,68 +54,17 @@ public function run(): never
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class];
+ return [ClassMethod::class, Function_::class];
}
/**
- * @param ClassMethod|Function_|Closure $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
- if ($this->shouldSkip($node, $scope)) {
- return null;
- }
- $node->returnType = new Identifier('never');
- return $node;
+ return $this->addNeverReturnType->add($node, $scope);
}
public function provideMinPhpVersion() : int
{
return PhpVersionFeature::NEVER_TYPE;
}
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
- */
- private function shouldSkip($node, Scope $scope) : bool
- {
- if ($node->returnType instanceof Node && !$this->isName($node->returnType, 'void')) {
- return \true;
- }
- if ($this->hasReturnOrYields($node)) {
- return \true;
- }
- if (!$this->hasNeverNodesOrNeverFuncCalls($node)) {
- return \true;
- }
- if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
- return \true;
- }
- if (!$node->returnType instanceof Node) {
- return \false;
- }
- // skip as most likely intentional
- if (!$this->classModifierChecker->isInsideFinalClass($node) && $this->isName($node->returnType, 'void')) {
- return \true;
- }
- return $this->isName($node->returnType, 'never');
- }
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
- */
- private function hasReturnOrYields($node) : bool
- {
- if ($this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($node, Return_::class)) {
- return \true;
- }
- return $this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($node, \array_merge([Yield_::class, YieldFrom::class], ControlStructure::CONDITIONAL_NODE_SCOPE_TYPES));
- }
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
- */
- private function hasNeverNodesOrNeverFuncCalls($node) : bool
- {
- $hasNeverNodes = $this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($node, [Throw_::class]);
- if ($hasNeverNodes) {
- return \true;
- }
- return $this->neverFuncCallAnalyzer->hasNeverFuncCall($node);
- }
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnNullableTypeRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnNullableTypeRector.php
new file mode 100644
index 000000000..2b5a3b6a7
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnNullableTypeRector.php
@@ -0,0 +1,119 @@
+unionTypeMapper = $unionTypeMapper;
+ $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->returnTypeInferer = $returnTypeInferer;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add basic ? nullable type to class methods and functions, as of PHP 7.1', [new CodeSample(<<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function getData()
+ {
+ if (rand(0, 1)) {
+ return null;
+ }
+
+ return 100;
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function getData(): ?int
+ {
+ if (rand(0, 1)) {
+ return null;
+ }
+
+ return 100;
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class, Function_::class];
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::NULLABLE_TYPE;
+ }
+ /**
+ * @param ClassMethod|Function_ $node
+ */
+ public function refactorWithScope(Node $node, Scope $scope) : ?Node
+ {
+ // empty body, nothing to resolve
+ if ($node->stmts === null || $node->stmts === []) {
+ return null;
+ }
+ // type is already known, skip
+ if ($node->returnType instanceof Node) {
+ return null;
+ }
+ if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
+ return null;
+ }
+ $inferReturnType = $this->returnTypeInferer->inferFunctionLike($node);
+ if (!$inferReturnType instanceof UnionType) {
+ return null;
+ }
+ $returnType = $this->unionTypeMapper->mapToPhpParserNode($inferReturnType, TypeKind::RETURN);
+ if (!$returnType instanceof Node) {
+ return null;
+ }
+ // handled by union PHP 8.0 rule
+ if (!$returnType instanceof NullableType) {
+ return null;
+ }
+ $node->returnType = $returnType;
+ return $node;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromMockObjectRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromMockObjectRector.php
new file mode 100644
index 000000000..d0fb0e49c
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromMockObjectRector.php
@@ -0,0 +1,147 @@
+betterNodeFinder = $betterNodeFinder;
+ $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->returnAnalyzer = $returnAnalyzer;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add known property and return MockObject types', [new CodeSample(<<<'CODE_SAMPLE'
+class SomeTest extends TestCase
+{
+ public function createSomeMock()
+ {
+ $someMock = $this->createMock(SomeClass::class);
+ return $someMock;
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+class SomeTest extends TestCase
+{
+ public function createSomeMock(): \PHPUnit\Framework\MockObject\MockObject
+ {
+ $someMock = $this->createMock(SomeClass::class);
+ return $someMock;
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class];
+ }
+ /**
+ * @param ClassMethod $node
+ */
+ public function refactorWithScope(Node $node, Scope $scope) : ?Node
+ {
+ // type is already known
+ if ($node->returnType instanceof Node) {
+ return null;
+ }
+ if (!$this->isInsideTestCaseClass($scope)) {
+ return null;
+ }
+ if ($this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
+ return null;
+ }
+ // we need exactly 1 return
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (\count($returns) !== 1) {
+ return null;
+ }
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
+ return null;
+ }
+ /** @var Expr $expr */
+ $expr = $returns[0]->expr;
+ $returnType = $this->nodeTypeResolver->getNativeType($expr);
+ if (!$this->isMockObjectType($returnType)) {
+ return null;
+ }
+ $node->returnType = new FullyQualified(self::MOCK_OBJECT_CLASS);
+ return $node;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::SCALAR_TYPES;
+ }
+ private function isIntersectionWithMockObjectType(Type $type) : bool
+ {
+ if (!$type instanceof IntersectionType) {
+ return \false;
+ }
+ if (\count($type->getTypes()) !== 2) {
+ return \false;
+ }
+ return \in_array(self::MOCK_OBJECT_CLASS, $type->getObjectClassNames());
+ }
+ private function isMockObjectType(Type $returnType) : bool
+ {
+ if ($returnType instanceof ObjectType && $returnType->isInstanceOf(self::MOCK_OBJECT_CLASS)->yes()) {
+ return \true;
+ }
+ return $this->isIntersectionWithMockObjectType($returnType);
+ }
+ private function isInsideTestCaseClass(Scope $scope) : bool
+ {
+ $classReflection = $scope->getClassReflection();
+ if (!$classReflection instanceof ClassReflection) {
+ return \false;
+ }
+ // is phpunit test case?
+ return $classReflection->isSubclassOf(self::TESTCASE_CLASS);
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnCastRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnCastRector.php
new file mode 100644
index 000000000..03c9758e1
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnCastRector.php
@@ -0,0 +1,80 @@
+addReturnTypeFromCast = $addReturnTypeFromCast;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add return type to function like with return cast', [new CodeSample(<<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function action($param)
+ {
+ try {
+ return (array) $param;
+ } catch (Exception $exception) {
+ // some logging
+ throw $exception;
+ }
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function action($param): array
+ {
+ try {
+ return (array) $param;
+ } catch (Exception $exception) {
+ // some logging
+ throw $exception;
+ }
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class, Function_::class];
+ }
+ /**
+ * @param ClassMethod|Function_ $node
+ */
+ public function refactorWithScope(Node $node, Scope $scope) : ?Node
+ {
+ return $this->addReturnTypeFromCast->add($node, $scope);
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::SCALAR_TYPES;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnDirectArrayRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnDirectArrayRector.php
index efaa613ed..1909d5659 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnDirectArrayRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnDirectArrayRector.php
@@ -5,8 +5,6 @@
use PhpParser\Node;
use PhpParser\Node\Expr\Array_;
-use PhpParser\Node\Expr\ArrowFunction;
-use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
@@ -66,14 +64,15 @@ public function getArray(): array
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class, ArrowFunction::class];
+ return [ClassMethod::class, Function_::class];
}
/**
- * @param ClassMethod|Function_|ArrowFunction $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
- if ($node->returnType !== null) {
+ // already has return type, skip
+ if ($node->returnType instanceof Node) {
return null;
}
if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
@@ -94,11 +93,11 @@ public function provideMinPhpVersion() : int
return PhpVersionFeature::SCALAR_TYPES;
}
/**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Expr\ArrowFunction $functionLike
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
*/
private function hasReturnArray($functionLike) : bool
{
- $stmts = $functionLike instanceof ArrowFunction ? $functionLike->getStmts() : $functionLike->stmts;
+ $stmts = $functionLike->stmts;
if (!\is_array($stmts)) {
return \false;
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php
index 3e5a761ea..82edaf3c6 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php
@@ -4,8 +4,6 @@
namespace Rector\TypeDeclaration\Rector\ClassMethod;
use PhpParser\Node;
-use PhpParser\Node\Expr\ArrowFunction;
-use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
@@ -19,7 +17,6 @@
use PHPStan\Type\ObjectWithoutClassType;
use PHPStan\Type\StaticType;
use PHPStan\Type\Type;
-use PHPStan\Type\UnionType;
use Rector\Enum\ObjectReference;
use Rector\Exception\ShouldNotHappenException;
use Rector\NodeAnalyzer\ClassAnalyzer;
@@ -31,8 +28,10 @@
use Rector\Reflection\ReflectionResolver;
use Rector\StaticTypeMapper\StaticTypeMapper;
use Rector\StaticTypeMapper\ValueObject\Type\SelfStaticType;
+use Rector\Symfony\CodeQuality\Enum\ResponseClass;
+use Rector\Symfony\TypeAnalyzer\ControllerAnalyzer;
+use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
use Rector\TypeDeclaration\NodeAnalyzer\ReturnTypeAnalyzer\StrictReturnNewAnalyzer;
-use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
use Rector\ValueObject\PhpVersionFeature;
use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -68,11 +67,6 @@ final class ReturnTypeFromReturnNewRector extends AbstractScopeAwareRector imple
* @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard
*/
private $classMethodReturnTypeOverrideGuard;
- /**
- * @readonly
- * @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
- */
- private $returnTypeInferer;
/**
* @readonly
* @var \Rector\NodeAnalyzer\ClassAnalyzer
@@ -93,36 +87,47 @@ final class ReturnTypeFromReturnNewRector extends AbstractScopeAwareRector imple
* @var \Rector\StaticTypeMapper\StaticTypeMapper
*/
private $staticTypeMapper;
- public function __construct(TypeFactory $typeFactory, ReflectionProvider $reflectionProvider, ReflectionResolver $reflectionResolver, StrictReturnNewAnalyzer $strictReturnNewAnalyzer, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnTypeInferer $returnTypeInferer, ClassAnalyzer $classAnalyzer, NewTypeResolver $newTypeResolver, BetterNodeFinder $betterNodeFinder, StaticTypeMapper $staticTypeMapper)
+ /**
+ * @readonly
+ * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer
+ */
+ private $returnAnalyzer;
+ /**
+ * @readonly
+ * @var \Rector\Symfony\TypeAnalyzer\ControllerAnalyzer
+ */
+ private $controllerAnalyzer;
+ public function __construct(TypeFactory $typeFactory, ReflectionProvider $reflectionProvider, ReflectionResolver $reflectionResolver, StrictReturnNewAnalyzer $strictReturnNewAnalyzer, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ClassAnalyzer $classAnalyzer, NewTypeResolver $newTypeResolver, BetterNodeFinder $betterNodeFinder, StaticTypeMapper $staticTypeMapper, ReturnAnalyzer $returnAnalyzer, ControllerAnalyzer $controllerAnalyzer)
{
$this->typeFactory = $typeFactory;
$this->reflectionProvider = $reflectionProvider;
$this->reflectionResolver = $reflectionResolver;
$this->strictReturnNewAnalyzer = $strictReturnNewAnalyzer;
$this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
- $this->returnTypeInferer = $returnTypeInferer;
$this->classAnalyzer = $classAnalyzer;
$this->newTypeResolver = $newTypeResolver;
$this->betterNodeFinder = $betterNodeFinder;
$this->staticTypeMapper = $staticTypeMapper;
+ $this->returnAnalyzer = $returnAnalyzer;
+ $this->controllerAnalyzer = $controllerAnalyzer;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Add return type to function like with return new', [new CodeSample(<<<'CODE_SAMPLE'
final class SomeClass
{
- public function action()
+ public function create()
{
- return new Response();
+ return new Project();
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
final class SomeClass
{
- public function action(): Response
+ public function create(): Project
{
- return new Response();
+ return new Project();
}
}
CODE_SAMPLE
@@ -133,27 +138,30 @@ public function action(): Response
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class, ArrowFunction::class];
+ return [ClassMethod::class, Function_::class];
}
/**
- * @param ClassMethod|Function_|ArrowFunction $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
- if ($node->returnType !== null) {
+ // already filled
+ if ($node->returnType instanceof Node) {
return null;
}
if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
return null;
}
- if (!$node instanceof ArrowFunction) {
- $returnedNewClassName = $this->strictReturnNewAnalyzer->matchAlwaysReturnVariableNew($node);
- if (\is_string($returnedNewClassName)) {
- $node->returnType = new FullyQualified($returnedNewClassName);
- return $node;
- }
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
+ return null;
+ }
+ $returnedNewClassName = $this->strictReturnNewAnalyzer->matchAlwaysReturnVariableNew($node);
+ if (\is_string($returnedNewClassName)) {
+ $node->returnType = new FullyQualified($returnedNewClassName);
+ return $node;
}
- return $this->refactorDirectReturnNew($node);
+ return $this->refactorDirectReturnNew($node, $returns);
}
public function provideMinPhpVersion() : int
{
@@ -185,39 +193,36 @@ private function createObjectTypeFromNew(New_ $new)
}
return new StaticType($classReflection);
}
+ if (!$this->reflectionProvider->hasClass($className)) {
+ return null;
+ }
$classReflection = $this->reflectionProvider->getClass($className);
return new ObjectType($className, null, $classReflection);
}
/**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\ArrowFunction|\PhpParser\Node\Expr\Closure $node
- * @return null|\PhpParser\Node\Expr\ArrowFunction|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Expr\Closure
+ * @template TFunctionLike as ClassMethod|Function_
+ *
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ * @param Return_[] $returns
+ * @return TFunctionLike|null
*/
- private function refactorDirectReturnNew($node)
+ private function refactorDirectReturnNew($functionLike, array $returns)
{
- if ($node instanceof ArrowFunction) {
- $returns = [new Return_($node->expr)];
- } else {
- /** @var Return_[] $returns */
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($node, Return_::class);
- }
- if ($returns === []) {
- return null;
- }
$newTypes = $this->resolveReturnNewType($returns);
if ($newTypes === null) {
return null;
}
$returnType = $this->typeFactory->createMixedPassedOrUnionType($newTypes);
- $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($returnType, TypeKind::RETURN);
- if (!$returnTypeNode instanceof Node) {
+ /** handled by @see \Rector\Symfony\CodeQuality\Rector\ClassMethod\ResponseReturnTypeControllerActionRector earlier */
+ if ($this->isResponseInsideController($returnType, $functionLike)) {
return null;
}
- $returnType = $this->returnTypeInferer->inferFunctionLike($node);
- if ($returnType instanceof UnionType) {
+ $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($returnType, TypeKind::RETURN);
+ if (!$returnTypeNode instanceof Node) {
return null;
}
- $node->returnType = $returnTypeNode;
- return $node;
+ $functionLike->returnType = $returnTypeNode;
+ return $functionLike;
}
/**
* @param Return_[] $returns
@@ -238,4 +243,20 @@ private function resolveReturnNewType(array $returns) : ?array
}
return $newTypes;
}
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ */
+ private function isResponseInsideController(Type $returnType, $functionLike) : bool
+ {
+ if (!$functionLike instanceof ClassMethod) {
+ return \false;
+ }
+ if (!$returnType instanceof ObjectType) {
+ return \false;
+ }
+ if (!$returnType->isInstanceOf(ResponseClass::BASIC)->yes()) {
+ return \false;
+ }
+ return $this->controllerAnalyzer->isInsideController($functionLike);
+ }
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictBoolReturnExprRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictBoolReturnExprRector.php
deleted file mode 100644
index 1ecca6d24..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictBoolReturnExprRector.php
+++ /dev/null
@@ -1,89 +0,0 @@
-strictBoolReturnTypeAnalyzer = $strictBoolReturnTypeAnalyzer;
- $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
- }
- public function getRuleDefinition() : RuleDefinition
- {
- return new RuleDefinition('Add strict return type based on returned strict expr type', [new CodeSample(<<<'CODE_SAMPLE'
-final class SomeClass
-{
- public function run()
- {
- return $this->first() && $this->somethingElse();
- }
-}
-CODE_SAMPLE
-, <<<'CODE_SAMPLE'
-final class SomeClass
-{
- public function run(): bool
- {
- return $this->first() && $this->somethingElse();
- }
-}
-CODE_SAMPLE
-)]);
- }
- /**
- * @return array>
- */
- public function getNodeTypes() : array
- {
- return [ClassMethod::class, Function_::class, Closure::class];
- }
- /**
- * @param ClassMethod|Function_|Closure $node
- */
- public function refactorWithScope(Node $node, Scope $scope) : ?Node
- {
- if ($node->returnType instanceof Node) {
- return null;
- }
- if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
- return null;
- }
- if (!$this->strictBoolReturnTypeAnalyzer->hasAlwaysStrictBoolReturn($node)) {
- return null;
- }
- $node->returnType = new Identifier('bool');
- return $node;
- }
- public function provideMinPhpVersion() : int
- {
- return PhpVersion::PHP_70;
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictConstantReturnRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictConstantReturnRector.php
index cb3fcadfb..7a84591e7 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictConstantReturnRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictConstantReturnRector.php
@@ -4,13 +4,18 @@
namespace Rector\TypeDeclaration\Rector\ClassMethod;
use PhpParser\Node;
+use PhpParser\Node\Expr\ClassConstFetch;
+use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Stmt\ClassMethod;
+use PhpParser\Node\Stmt\Return_;
use PHPStan\Analyser\Scope;
use PHPStan\Type\Type;
+use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
+use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\Rector\AbstractScopeAwareRector;
use Rector\StaticTypeMapper\StaticTypeMapper;
-use Rector\TypeDeclaration\TypeAnalyzer\StrictReturnClassConstReturnTypeAnalyzer;
+use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
use Rector\ValueObject\PhpVersion;
use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -21,11 +26,6 @@
*/
final class ReturnTypeFromStrictConstantReturnRector extends AbstractScopeAwareRector implements MinPhpVersionInterface
{
- /**
- * @readonly
- * @var \Rector\TypeDeclaration\TypeAnalyzer\StrictReturnClassConstReturnTypeAnalyzer
- */
- private $strictReturnClassConstReturnTypeAnalyzer;
/**
* @readonly
* @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard
@@ -36,11 +36,28 @@ final class ReturnTypeFromStrictConstantReturnRector extends AbstractScopeAwareR
* @var \Rector\StaticTypeMapper\StaticTypeMapper
*/
private $staticTypeMapper;
- public function __construct(StrictReturnClassConstReturnTypeAnalyzer $strictReturnClassConstReturnTypeAnalyzer, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, StaticTypeMapper $staticTypeMapper)
+ /**
+ * @readonly
+ * @var \Rector\PhpParser\Node\BetterNodeFinder
+ */
+ private $betterNodeFinder;
+ /**
+ * @readonly
+ * @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
+ */
+ private $typeFactory;
+ /**
+ * @readonly
+ * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer
+ */
+ private $returnAnalyzer;
+ public function __construct(ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, StaticTypeMapper $staticTypeMapper, BetterNodeFinder $betterNodeFinder, TypeFactory $typeFactory, ReturnAnalyzer $returnAnalyzer)
{
- $this->strictReturnClassConstReturnTypeAnalyzer = $strictReturnClassConstReturnTypeAnalyzer;
$this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
$this->staticTypeMapper = $staticTypeMapper;
+ $this->betterNodeFinder = $betterNodeFinder;
+ $this->typeFactory = $typeFactory;
+ $this->returnAnalyzer = $returnAnalyzer;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -83,10 +100,14 @@ public function refactorWithScope(Node $node, Scope $scope) : ?Node
if ($node->returnType instanceof Node) {
return null;
}
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
+ return null;
+ }
if ($this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
return null;
}
- $matchedType = $this->strictReturnClassConstReturnTypeAnalyzer->matchAlwaysReturnConstFetch($node);
+ $matchedType = $this->matchAlwaysReturnConstFetch($returns);
if (!$matchedType instanceof Type) {
return null;
}
@@ -104,4 +125,18 @@ public function provideMinPhpVersion() : int
{
return PhpVersion::PHP_70;
}
+ /**
+ * @param Return_[] $returns
+ */
+ private function matchAlwaysReturnConstFetch(array $returns) : ?Type
+ {
+ $classConstFetchTypes = [];
+ foreach ($returns as $return) {
+ if (!$return->expr instanceof ClassConstFetch && !$return->expr instanceof ConstFetch) {
+ return null;
+ }
+ $classConstFetchTypes[] = $this->nodeTypeResolver->getType($return->expr);
+ }
+ return $this->typeFactory->createMixedPassedOrUnionType($classConstFetchTypes);
+ }
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNativeCallRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNativeCallRector.php
index 9b75dc422..6b45e1821 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNativeCallRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNativeCallRector.php
@@ -4,18 +4,12 @@
namespace Rector\TypeDeclaration\Rector\ClassMethod;
use PhpParser\Node;
-use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
use PHPStan\Analyser\Scope;
-use PHPStan\Type\MixedType;
-use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
-use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\Rector\AbstractScopeAwareRector;
-use Rector\StaticTypeMapper\StaticTypeMapper;
-use Rector\TypeDeclaration\NodeAnalyzer\ReturnTypeAnalyzer\StrictNativeFunctionReturnTypeAnalyzer;
+use Rector\TypeDeclaration\NodeManipulator\AddReturnTypeFromStrictNativeCall;
use Rector\ValueObject\PhpVersion;
-use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@@ -26,34 +20,16 @@ final class ReturnTypeFromStrictNativeCallRector extends AbstractScopeAwareRecto
{
/**
* @readonly
- * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnTypeAnalyzer\StrictNativeFunctionReturnTypeAnalyzer
+ * @var \Rector\TypeDeclaration\NodeManipulator\AddReturnTypeFromStrictNativeCall
*/
- private $strictNativeFunctionReturnTypeAnalyzer;
- /**
- * @readonly
- * @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
- */
- private $typeFactory;
- /**
- * @readonly
- * @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard
- */
- private $classMethodReturnTypeOverrideGuard;
- /**
- * @readonly
- * @var \Rector\StaticTypeMapper\StaticTypeMapper
- */
- private $staticTypeMapper;
- public function __construct(StrictNativeFunctionReturnTypeAnalyzer $strictNativeFunctionReturnTypeAnalyzer, TypeFactory $typeFactory, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, StaticTypeMapper $staticTypeMapper)
+ private $addReturnTypeFromStrictNativeCall;
+ public function __construct(AddReturnTypeFromStrictNativeCall $addReturnTypeFromStrictNativeCall)
{
- $this->strictNativeFunctionReturnTypeAnalyzer = $strictNativeFunctionReturnTypeAnalyzer;
- $this->typeFactory = $typeFactory;
- $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
- $this->staticTypeMapper = $staticTypeMapper;
+ $this->addReturnTypeFromStrictNativeCall = $addReturnTypeFromStrictNativeCall;
}
public function getRuleDefinition() : RuleDefinition
{
- return new RuleDefinition('Add strict return type based native function or class method return', [new CodeSample(<<<'CODE_SAMPLE'
+ return new RuleDefinition('Add strict return type based native function or native method', [new CodeSample(<<<'CODE_SAMPLE'
final class SomeClass
{
public function run()
@@ -78,37 +54,14 @@ public function run(): int
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Closure::class, Function_::class];
+ return [ClassMethod::class, Function_::class];
}
/**
- * @param ClassMethod|Closure|Function_ $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
- if ($node->returnType !== null) {
- return null;
- }
- if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
- return null;
- }
- $nativeCallLikes = $this->strictNativeFunctionReturnTypeAnalyzer->matchAlwaysReturnNativeCallLikes($node);
- if ($nativeCallLikes === null) {
- return null;
- }
- $callLikeTypes = [];
- foreach ($nativeCallLikes as $nativeCallLike) {
- $callLikeTypes[] = $this->getType($nativeCallLike);
- }
- $returnType = $this->typeFactory->createMixedPassedOrUnionTypeAndKeepConstant($callLikeTypes);
- if ($returnType instanceof MixedType) {
- return null;
- }
- $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($returnType, TypeKind::RETURN);
- if (!$returnTypeNode instanceof Node) {
- return null;
- }
- $node->returnType = $returnTypeNode;
- return $node;
+ return $this->addReturnTypeFromStrictNativeCall->add($node, $scope);
}
public function provideMinPhpVersion() : int
{
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNewArrayRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNewArrayRector.php
index e5960af2d..a9e504374 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNewArrayRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNewArrayRector.php
@@ -8,14 +8,11 @@
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Variable;
-use PhpParser\Node\Expr\Yield_;
-use PhpParser\Node\Expr\YieldFrom;
use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\Function_;
-use PhpParser\Node\Stmt\Return_;
use PHPStan\Analyser\Scope;
use PHPStan\Type\ArrayType;
use PHPStan\Type\Constant\ConstantArrayType;
@@ -27,6 +24,7 @@
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\Rector\AbstractScopeAwareRector;
+use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
use Rector\ValueObject\PhpVersion;
use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
@@ -63,13 +61,19 @@ final class ReturnTypeFromStrictNewArrayRector extends AbstractScopeAwareRector
* @var \Rector\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
- public function __construct(PhpDocTypeChanger $phpDocTypeChanger, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnTypeInferer $returnTypeInferer, PhpDocInfoFactory $phpDocInfoFactory, BetterNodeFinder $betterNodeFinder)
+ /**
+ * @readonly
+ * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer
+ */
+ private $returnAnalyzer;
+ public function __construct(PhpDocTypeChanger $phpDocTypeChanger, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnTypeInferer $returnTypeInferer, PhpDocInfoFactory $phpDocInfoFactory, BetterNodeFinder $betterNodeFinder, ReturnAnalyzer $returnAnalyzer)
{
$this->phpDocTypeChanger = $phpDocTypeChanger;
$this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
$this->returnTypeInferer = $returnTypeInferer;
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->betterNodeFinder = $betterNodeFinder;
+ $this->returnAnalyzer = $returnAnalyzer;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -102,10 +106,10 @@ public function run(): array
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class];
+ return [ClassMethod::class, Function_::class];
}
/**
- * @param ClassMethod|Function_|Closure $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
@@ -117,20 +121,16 @@ public function refactorWithScope(Node $node, Scope $scope) : ?Node
if ($stmts === null) {
return null;
}
- $variable = $this->matchArrayAssignedVariable($stmts);
- if (!$variable instanceof Variable) {
+ $variables = $this->matchArrayAssignedVariable($stmts);
+ if ($variables === []) {
return null;
}
- // 2. skip yields
- if ($this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($node, [Yield_::class, YieldFrom::class])) {
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
return null;
}
- /** @var Return_[] $returns */
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($node, Return_::class);
- if ($returns === []) {
- return null;
- }
- if ($this->isVariableOverriddenWithNonArray($node, $variable)) {
+ $variables = $this->matchVariableNotOverriddenByNonArray($node, $variables);
+ if ($variables === []) {
return null;
}
if (\count($returns) > 1) {
@@ -141,6 +141,9 @@ public function refactorWithScope(Node $node, Scope $scope) : ?Node
if (!$onlyReturn->expr instanceof Variable) {
return null;
}
+ if (!$this->nodeComparator->isNodeEqual($onlyReturn->expr, $variables)) {
+ return null;
+ }
$returnType = $this->nodeTypeResolver->getNativeType($onlyReturn->expr);
return $this->processAddArrayReturnType($node, $returnType);
}
@@ -170,7 +173,7 @@ private function processAddArrayReturnType($node, Type $returnType)
*/
private function shouldSkip($node, Scope $scope) : bool
{
- if ($node->returnType !== null) {
+ if ($node->returnType instanceof Node) {
return \true;
}
return $node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope);
@@ -193,9 +196,11 @@ private function changeReturnType($node, ArrayType $arrayType) : void
$this->phpDocTypeChanger->changeReturnType($node, $phpDocInfo, $narrowArrayType);
}
/**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
+ * @param Variable[] $variables
+ * @return Variable[]
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
*/
- private function isVariableOverriddenWithNonArray($functionLike, Variable $variable) : bool
+ private function matchVariableNotOverriddenByNonArray($functionLike, array $variables) : array
{
// is variable overriden?
/** @var Assign[] $assigns */
@@ -204,24 +209,28 @@ private function isVariableOverriddenWithNonArray($functionLike, Variable $varia
if (!$assign->var instanceof Variable) {
continue;
}
- if (!$this->nodeNameResolver->areNamesEqual($assign->var, $variable)) {
- continue;
- }
- if ($assign->expr instanceof Array_) {
- continue;
- }
- $nativeType = $this->nodeTypeResolver->getNativeType($assign->expr);
- if (!$nativeType->isArray()->yes()) {
- return \true;
+ foreach ($variables as $key => $variable) {
+ if (!$this->nodeNameResolver->areNamesEqual($assign->var, $variable)) {
+ continue;
+ }
+ if ($assign->expr instanceof Array_) {
+ continue;
+ }
+ $nativeType = $this->nodeTypeResolver->getNativeType($assign->expr);
+ if (!$nativeType->isArray()->yes()) {
+ unset($variables[$key]);
+ }
}
}
- return \false;
+ return $variables;
}
/**
* @param Stmt[] $stmts
+ * @return Variable[]
*/
- private function matchArrayAssignedVariable(array $stmts) : ?\PhpParser\Node\Expr\Variable
+ private function matchArrayAssignedVariable(array $stmts) : array
{
+ $variables = [];
foreach ($stmts as $stmt) {
if (!$stmt instanceof Expression) {
continue;
@@ -235,10 +244,10 @@ private function matchArrayAssignedVariable(array $stmts) : ?\PhpParser\Node\Exp
}
$nativeType = $this->nodeTypeResolver->getNativeType($assign->expr);
if ($nativeType->isArray()->yes()) {
- return $assign->var;
+ $variables[] = $assign->var;
}
}
- return null;
+ return $variables;
}
private function shouldAddReturnArrayDocType(ArrayType $arrayType) : bool
{
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php
index d271fc96b..e03b5f9f0 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php
@@ -4,27 +4,12 @@
namespace Rector\TypeDeclaration\Rector\ClassMethod;
use PhpParser\Node;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Expr\Assign;
-use PhpParser\Node\Expr\AssignRef;
-use PhpParser\Node\Expr\Closure;
-use PhpParser\Node\Expr\Variable;
-use PhpParser\Node\FunctionLike;
-use PhpParser\Node\Param;
-use PhpParser\Node\Stmt;
-use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
-use PhpParser\Node\Stmt\Return_;
-use PhpParser\NodeTraverser;
use PHPStan\Analyser\Scope;
-use PHPStan\Type\MixedType;
-use PHPStan\Type\TypeCombinator;
-use PHPStan\Type\UnionType;
use Rector\Rector\AbstractScopeAwareRector;
-use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
+use Rector\TypeDeclaration\NodeManipulator\AddReturnTypeFromParam;
use Rector\ValueObject\PhpVersionFeature;
-use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@@ -35,18 +20,12 @@ final class ReturnTypeFromStrictParamRector extends AbstractScopeAwareRector imp
{
/**
* @readonly
- * @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard
+ * @var \Rector\TypeDeclaration\NodeManipulator\AddReturnTypeFromParam
*/
- private $classMethodReturnTypeOverrideGuard;
- /**
- * @readonly
- * @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
- */
- private $returnTypeInferer;
- public function __construct(ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnTypeInferer $returnTypeInferer)
+ private $addReturnTypeFromParam;
+ public function __construct(AddReturnTypeFromParam $addReturnTypeFromParam)
{
- $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
- $this->returnTypeInferer = $returnTypeInferer;
+ $this->addReturnTypeFromParam = $addReturnTypeFromParam;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -75,115 +54,17 @@ public function resolve(ParamType $item): ParamType
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class];
+ return [ClassMethod::class, Function_::class];
}
public function provideMinPhpVersion() : int
{
return PhpVersionFeature::NULLABLE_TYPE;
}
/**
- * @param ClassMethod|Function_|Closure $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
- if ($node->stmts === null) {
- return null;
- }
- if ($this->shouldSkipNode($node, $scope)) {
- return null;
- }
- $return = $this->findCurrentScopeReturn($node->stmts);
- if (!$return instanceof Return_ || !$return->expr instanceof Expr) {
- return null;
- }
- $returnName = $this->getName($return->expr);
- $stmts = $node->stmts;
- foreach ($node->getParams() as $param) {
- if (!$param->type instanceof Node) {
- continue;
- }
- if ($this->shouldSkipParam($param, $stmts)) {
- continue;
- }
- $paramName = $this->getName($param);
- if ($returnName !== $paramName) {
- continue;
- }
- $node->returnType = $param->type;
- return $node;
- }
- return null;
- }
- /**
- * @param Stmt[] $stmts
- */
- private function findCurrentScopeReturn(array $stmts) : ?Return_
- {
- $return = null;
- $this->traverseNodesWithCallable($stmts, static function (Node $node) use(&$return) : ?int {
- // skip scope nesting
- if ($node instanceof Class_ || $node instanceof FunctionLike) {
- $return = null;
- return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
- }
- if (!$node instanceof Return_) {
- return null;
- }
- if (!$node->expr instanceof Variable) {
- $return = null;
- return NodeTraverser::STOP_TRAVERSAL;
- }
- $return = $node;
- return null;
- });
- return $return;
- }
- /**
- * @param Stmt[] $stmts
- */
- private function shouldSkipParam(Param $param, array $stmts) : bool
- {
- $paramName = $this->getName($param);
- $isParamModified = \false;
- $this->traverseNodesWithCallable($stmts, function (Node $node) use($paramName, &$isParamModified) : ?int {
- // skip scope nesting
- if ($node instanceof Class_ || $node instanceof FunctionLike) {
- return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
- }
- if ($node instanceof AssignRef && $this->isName($node->expr, $paramName)) {
- $isParamModified = \true;
- return NodeTraverser::STOP_TRAVERSAL;
- }
- if (!$node instanceof Assign) {
- return null;
- }
- if (!$node->var instanceof Variable) {
- return null;
- }
- if (!$this->isName($node->var, $paramName)) {
- return null;
- }
- $isParamModified = \true;
- return NodeTraverser::STOP_TRAVERSAL;
- });
- return $isParamModified;
- }
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
- */
- private function shouldSkipNode($node, Scope $scope) : bool
- {
- if ($node->returnType !== null) {
- return \true;
- }
- if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
- return \true;
- }
- $returnType = $this->returnTypeInferer->inferFunctionLike($node);
- if ($returnType instanceof MixedType) {
- return \true;
- }
- $returnType = TypeCombinator::removeNull($returnType);
- return $returnType instanceof UnionType;
+ return $this->addReturnTypeFromParam->add($node, $scope);
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector.php
deleted file mode 100644
index bff79430c..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector.php
+++ /dev/null
@@ -1,146 +0,0 @@
-strictScalarReturnTypeAnalyzer = $strictScalarReturnTypeAnalyzer;
- $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
- $this->staticTypeMapper = $staticTypeMapper;
- }
- public function getRuleDefinition() : RuleDefinition
- {
- return new RuleDefinition('Change return type based on strict scalar returns - string, int, float or bool', [new ConfiguredCodeSample(<<<'CODE_SAMPLE'
-final class SomeClass
-{
- public function foo($value)
- {
- if ($value) {
- return 'yes';
- }
-
- return 'no';
- }
-
- public function bar(string $value)
- {
- return strlen($value);
- }
-}
-CODE_SAMPLE
-, <<<'CODE_SAMPLE'
-final class SomeClass
-{
- public function foo($value): string
- {
- if ($value) {
- return 'yes';
- }
-
- return 'no';
- }
-
- public function bar(string $value): int
- {
- return strlen($value);
- }
-}
-CODE_SAMPLE
-, [\Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictScalarReturnExprRector::HARD_CODED_ONLY => \false])]);
- }
- /**
- * @return array>
- */
- public function getNodeTypes() : array
- {
- return [ClassMethod::class, Function_::class, Closure::class];
- }
- /**
- * @param ClassMethod|Function_|Closure $node
- */
- public function refactorWithScope(Node $node, Scope $scope) : ?Node
- {
- // already added → skip
- if ($node->returnType instanceof Node) {
- return null;
- }
- $scalarReturnType = $this->strictScalarReturnTypeAnalyzer->matchAlwaysScalarReturnType($node, $this->hardCodedOnly);
- if (!$scalarReturnType instanceof Type) {
- return null;
- }
- // skip null as often placeholder value and not an only type
- if ($scalarReturnType instanceof NullType) {
- return null;
- }
- $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($scalarReturnType, TypeKind::RETURN);
- if (!$returnTypeNode instanceof Node) {
- return null;
- }
- if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
- return null;
- }
- if ($returnTypeNode instanceof UnionType) {
- return null;
- }
- $node->returnType = $returnTypeNode;
- return $node;
- }
- public function provideMinPhpVersion() : int
- {
- return PhpVersion::PHP_70;
- }
- public function configure(array $configuration) : void
- {
- $hardCodedOnly = $configuration[self::HARD_CODED_ONLY] ?? \false;
- Assert::boolean($hardCodedOnly);
- $this->hardCodedOnly = $hardCodedOnly;
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector.php
index 7f1e82a0a..d795a1712 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector.php
@@ -5,9 +5,7 @@
use PhpParser\Node;
use PhpParser\Node\ComplexType;
-use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Closure;
-use PhpParser\Node\FunctionLike;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
@@ -16,13 +14,16 @@
use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\Return_;
use PhpParser\Node\UnionType as PhpParserUnionType;
-use PhpParser\NodeTraverser;
use PHPStan\Analyser\Scope;
use PHPStan\Type\NullType;
use PHPStan\Type\ObjectType;
use PHPStan\Type\UnionType;
use Rector\Php\PhpVersionProvider;
+use Rector\PhpParser\Node\BetterNodeFinder;
+use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\Rector\AbstractScopeAwareRector;
+use Rector\StaticTypeMapper\StaticTypeMapper;
+use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
use Rector\TypeDeclaration\NodeAnalyzer\TypeNodeUnwrapper;
use Rector\TypeDeclaration\TypeAnalyzer\ReturnStrictTypeAnalyzer;
use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
@@ -51,6 +52,11 @@ final class ReturnTypeFromStrictTypedCallRector extends AbstractScopeAwareRector
* @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
*/
private $returnTypeInferer;
+ /**
+ * @readonly
+ * @var \Rector\PhpParser\Node\BetterNodeFinder
+ */
+ private $betterNodeFinder;
/**
* @readonly
* @var \Rector\Php\PhpVersionProvider
@@ -61,13 +67,26 @@ final class ReturnTypeFromStrictTypedCallRector extends AbstractScopeAwareRector
* @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard
*/
private $classMethodReturnTypeOverrideGuard;
- public function __construct(TypeNodeUnwrapper $typeNodeUnwrapper, ReturnStrictTypeAnalyzer $returnStrictTypeAnalyzer, ReturnTypeInferer $returnTypeInferer, PhpVersionProvider $phpVersionProvider, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard)
+ /**
+ * @readonly
+ * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer
+ */
+ private $returnAnalyzer;
+ /**
+ * @readonly
+ * @var \Rector\StaticTypeMapper\StaticTypeMapper
+ */
+ private $staticTypeMapper;
+ public function __construct(TypeNodeUnwrapper $typeNodeUnwrapper, ReturnStrictTypeAnalyzer $returnStrictTypeAnalyzer, ReturnTypeInferer $returnTypeInferer, BetterNodeFinder $betterNodeFinder, PhpVersionProvider $phpVersionProvider, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnAnalyzer $returnAnalyzer, StaticTypeMapper $staticTypeMapper)
{
$this->typeNodeUnwrapper = $typeNodeUnwrapper;
$this->returnStrictTypeAnalyzer = $returnStrictTypeAnalyzer;
$this->returnTypeInferer = $returnTypeInferer;
+ $this->betterNodeFinder = $betterNodeFinder;
$this->phpVersionProvider = $phpVersionProvider;
$this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->returnAnalyzer = $returnAnalyzer;
+ $this->staticTypeMapper = $staticTypeMapper;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -106,35 +125,49 @@ private function getNumber(): int
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class];
+ return [ClassMethod::class, Function_::class];
}
public function provideMinPhpVersion() : int
{
return PhpVersionFeature::SCALAR_TYPES;
}
/**
- * @param ClassMethod|Function_|Closure $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
+ // already filled → skip
+ if ($node->returnType instanceof Node) {
+ return null;
+ }
if ($node->stmts === null) {
return null;
}
if ($this->shouldSkip($node, $scope)) {
return null;
}
- $currentScopeReturns = $this->findCurrentScopeReturns($node);
+ $currentScopeReturns = $this->betterNodeFinder->findReturnsScoped($node);
$returnedStrictTypes = $this->returnStrictTypeAnalyzer->collectStrictReturnTypes($currentScopeReturns, $scope);
if ($returnedStrictTypes === []) {
return null;
}
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $currentScopeReturns)) {
+ return null;
+ }
if (\count($returnedStrictTypes) === 1) {
return $this->refactorSingleReturnType($currentScopeReturns[0], $returnedStrictTypes[0], $node);
}
if ($this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::UNION_TYPES)) {
/** @var PhpParserUnionType[] $returnedStrictTypes */
$unwrappedTypes = $this->typeNodeUnwrapper->unwrapNullableUnionTypes($returnedStrictTypes);
- $node->returnType = new PhpParserUnionType($unwrappedTypes);
+ $unionType = new PhpParserUnionType($unwrappedTypes);
+ $type = $this->staticTypeMapper->mapPhpParserNodePHPStanType($unionType);
+ $returnType = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($type, TypeKind::RETURN);
+ // verify type transformed into node
+ if (!$returnType instanceof Node) {
+ return null;
+ }
+ $node->returnType = $unionType;
return $node;
}
return null;
@@ -170,7 +203,7 @@ private function processSingleUnionType($node, UnionType $unionType, NullableTyp
*/
private function shouldSkip($node, Scope $scope) : bool
{
- if ($node->returnType !== null) {
+ if ($node->returnType instanceof Node) {
return \true;
}
if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
@@ -197,30 +230,4 @@ private function refactorSingleReturnType(Return_ $return, $returnedStrictTypeNo
$functionLike->returnType = $returnType;
return $functionLike;
}
- /**
- * @return Return_[]
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
- */
- private function findCurrentScopeReturns($node) : array
- {
- $currentScopeReturns = [];
- if ($node->stmts === null) {
- return [];
- }
- $this->traverseNodesWithCallable($node->stmts, static function (Node $node) use(&$currentScopeReturns) : ?int {
- // skip scope nesting
- if ($node instanceof FunctionLike) {
- return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
- }
- if (!$node instanceof Return_) {
- return null;
- }
- if (!$node->expr instanceof Expr) {
- return null;
- }
- $currentScopeReturns[] = $node;
- return null;
- });
- return $currentScopeReturns;
- }
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedPropertyRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedPropertyRector.php
index cd8f41d84..37c8a913f 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedPropertyRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedPropertyRector.php
@@ -8,7 +8,6 @@
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\StaticPropertyFetch;
use PhpParser\Node\Stmt\ClassMethod;
-use PhpParser\Node\Stmt\Return_;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\Php\PhpPropertyReflection;
use PHPStan\Type\MixedType;
@@ -19,6 +18,7 @@
use Rector\Rector\AbstractScopeAwareRector;
use Rector\Reflection\ReflectionResolver;
use Rector\StaticTypeMapper\StaticTypeMapper;
+use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
use Rector\ValueObject\PhpVersionFeature;
use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
@@ -54,13 +54,19 @@ final class ReturnTypeFromStrictTypedPropertyRector extends AbstractScopeAwareRe
* @var \Rector\StaticTypeMapper\StaticTypeMapper
*/
private $staticTypeMapper;
- public function __construct(TypeFactory $typeFactory, ReflectionResolver $reflectionResolver, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, BetterNodeFinder $betterNodeFinder, StaticTypeMapper $staticTypeMapper)
+ /**
+ * @readonly
+ * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer
+ */
+ private $returnAnalyzer;
+ public function __construct(TypeFactory $typeFactory, ReflectionResolver $reflectionResolver, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, BetterNodeFinder $betterNodeFinder, StaticTypeMapper $staticTypeMapper, ReturnAnalyzer $returnAnalyzer)
{
$this->typeFactory = $typeFactory;
$this->reflectionResolver = $reflectionResolver;
$this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
$this->betterNodeFinder = $betterNodeFinder;
$this->staticTypeMapper = $staticTypeMapper;
+ $this->returnAnalyzer = $returnAnalyzer;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -100,7 +106,7 @@ public function getNodeTypes() : array
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
- if ($node->returnType !== null) {
+ if ($node->returnType instanceof Node) {
return null;
}
if ($this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
@@ -131,8 +137,7 @@ public function provideMinPhpVersion() : int
*/
private function resolveReturnPropertyType(ClassMethod $classMethod) : array
{
- /** @var Return_[] $returns */
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($classMethod, Return_::class);
+ $returns = $this->betterNodeFinder->findReturnsScoped($classMethod);
$propertyTypes = [];
foreach ($returns as $return) {
if (!$return->expr instanceof Expr) {
@@ -151,6 +156,9 @@ private function resolveReturnPropertyType(ClassMethod $classMethod) : array
}
$propertyTypes[] = $this->nodeTypeResolver->getNativeType($return->expr);
}
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($classMethod, $returns)) {
+ return [];
+ }
return $propertyTypes;
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromSymfonySerializerRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromSymfonySerializerRector.php
new file mode 100644
index 000000000..b66ceed70
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromSymfonySerializerRector.php
@@ -0,0 +1,129 @@
+classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->valueResolver = $valueResolver;
+ $this->argsAnalyzer = $argsAnalyzer;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add return type from symfony serializer', [new CodeSample(<<<'CODE_SAMPLE'
+final class SomeClass
+{
+ private \Symfony\Component\Serializer\Serializer $serializer;
+
+ public function resolveEntity($data)
+ {
+ return $this->serializer->deserialize($data, SomeType::class, 'json');
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+final class SomeClass
+{
+ private \Symfony\Component\Serializer\Serializer $serializer;
+
+ public function resolveEntity($data): SomeType
+ {
+ return $this->serializer->deserialize($data, SomeType::class, 'json');
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class];
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::HAS_RETURN_TYPE;
+ }
+ /**
+ * @param ClassMethod $node
+ */
+ public function refactorWithScope(Node $node, Scope $scope) : ?Node
+ {
+ if ($node->stmts === null) {
+ return null;
+ }
+ if ($node->returnType instanceof Node) {
+ return null;
+ }
+ if ($this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
+ return null;
+ }
+ if (\count($node->stmts) !== 1) {
+ return null;
+ }
+ if (!$node->stmts[0] instanceof Return_ || !$node->stmts[0]->expr instanceof MethodCall) {
+ return null;
+ }
+ /** @var MethodCall $returnExpr */
+ $returnExpr = $node->stmts[0]->expr;
+ if (!$this->nodeNameResolver->isName($returnExpr->name, 'deserialize')) {
+ return null;
+ }
+ if ($returnExpr->isFirstClassCallable()) {
+ return null;
+ }
+ if (!$this->isObjectType($returnExpr->var, new ObjectType('Symfony\\Component\\Serializer\\Serializer'))) {
+ return null;
+ }
+ $args = $returnExpr->getArgs();
+ if ($this->argsAnalyzer->hasNamedArg($args)) {
+ return null;
+ }
+ if (\count($args) !== 3) {
+ return null;
+ }
+ $type = $this->valueResolver->getValue($args[1]->value);
+ if (!\is_string($type)) {
+ return null;
+ }
+ $node->returnType = new FullyQualified($type);
+ return $node;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnUnionTypeRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnUnionTypeRector.php
index 8ae1ff71f..506faea95 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnUnionTypeRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/ReturnUnionTypeRector.php
@@ -4,23 +4,12 @@
namespace Rector\TypeDeclaration\Rector\ClassMethod;
use PhpParser\Node;
-use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
use PHPStan\Analyser\Scope;
-use PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode;
-use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
-use PHPStan\Type\Constant\ConstantBooleanType;
-use PHPStan\Type\UnionType;
-use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
-use Rector\BetterPhpDocParser\ValueObject\Type\BracketsAwareUnionTypeNode;
-use Rector\Comments\NodeDocBlock\DocBlockUpdater;
-use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
-use Rector\PHPStanStaticTypeMapper\TypeMapper\UnionTypeMapper;
use Rector\Rector\AbstractScopeAwareRector;
-use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
+use Rector\TypeDeclaration\NodeManipulator\AddUnionReturnType;
use Rector\ValueObject\PhpVersionFeature;
-use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@@ -31,36 +20,12 @@ final class ReturnUnionTypeRector extends AbstractScopeAwareRector implements Mi
{
/**
* @readonly
- * @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
+ * @var \Rector\TypeDeclaration\NodeManipulator\AddUnionReturnType
*/
- private $returnTypeInferer;
- /**
- * @readonly
- * @var \Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard
- */
- private $classMethodReturnTypeOverrideGuard;
- /**
- * @readonly
- * @var \Rector\PHPStanStaticTypeMapper\TypeMapper\UnionTypeMapper
- */
- private $unionTypeMapper;
- /**
- * @readonly
- * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
- */
- private $phpDocInfoFactory;
- /**
- * @readonly
- * @var \Rector\Comments\NodeDocBlock\DocBlockUpdater
- */
- private $docBlockUpdater;
- public function __construct(ReturnTypeInferer $returnTypeInferer, ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, UnionTypeMapper $unionTypeMapper, PhpDocInfoFactory $phpDocInfoFactory, DocBlockUpdater $docBlockUpdater)
+ private $addUnionReturnType;
+ public function __construct(AddUnionReturnType $addUnionReturnType)
{
- $this->returnTypeInferer = $returnTypeInferer;
- $this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
- $this->unionTypeMapper = $unionTypeMapper;
- $this->phpDocInfoFactory = $phpDocInfoFactory;
- $this->docBlockUpdater = $docBlockUpdater;
+ $this->addUnionReturnType = $addUnionReturnType;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -105,67 +70,17 @@ public function getData(): null|\DateTime|\stdClass
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class];
+ return [ClassMethod::class, Function_::class];
}
public function provideMinPhpVersion() : int
{
- return PhpVersionFeature::NULLABLE_TYPE;
+ return PhpVersionFeature::UNION_TYPES;
}
/**
- * @param ClassMethod|Function_|Closure $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
- if ($node->stmts === null) {
- return null;
- }
- if ($node->returnType instanceof Node) {
- return null;
- }
- if ($node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope)) {
- return null;
- }
- $inferReturnType = $this->returnTypeInferer->inferFunctionLike($node);
- if (!$inferReturnType instanceof UnionType) {
- return null;
- }
- $returnType = $this->unionTypeMapper->mapToPhpParserNode($inferReturnType, TypeKind::RETURN);
- if (!$returnType instanceof Node) {
- return null;
- }
- $this->mapStandaloneSubType($node, $inferReturnType);
- $node->returnType = $returnType;
- return $node;
- }
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
- */
- private function mapStandaloneSubType($node, UnionType $unionType) : void
- {
- $value = null;
- foreach ($unionType->getTypes() as $type) {
- if ($type instanceof ConstantBooleanType) {
- $value = $type->getValue() ? 'true' : 'false';
- break;
- }
- }
- if ($value === null) {
- return;
- }
- $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
- $returnType = $phpDocInfo->getReturnTagValue();
- if (!$returnType instanceof ReturnTagValueNode) {
- return;
- }
- if (!$returnType->type instanceof BracketsAwareUnionTypeNode) {
- return;
- }
- foreach ($returnType->type->types as $key => $type) {
- if ($type instanceof IdentifierTypeNode && $type->__toString() === 'bool') {
- $returnType->type->types[$key] = new IdentifierTypeNode($value);
- $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);
- break;
- }
- }
+ return $this->addUnionReturnType->add($node, $scope);
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php
index 9799b98b3..170d94e7d 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php
@@ -14,6 +14,7 @@
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Empty_;
use PhpParser\Node\Expr\FuncCall;
+use PhpParser\Node\Expr\Isset_;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\FunctionLike;
@@ -85,6 +86,9 @@ public function refactor(Node $node) : ?Node
if ($param->type instanceof Node) {
continue;
}
+ if ($param->variadic) {
+ continue;
+ }
if ($param->default instanceof Expr && !$this->getType($param->default)->isArray()->yes()) {
continue;
}
@@ -109,11 +113,11 @@ private function isParamAccessedArrayDimFetch(Param $param, $functionLike) : boo
}
$paramName = $this->getName($param);
$isParamAccessedArrayDimFetch = \false;
- $this->traverseNodesWithCallable($functionLike->stmts, function (Node $node) use($paramName, &$isParamAccessedArrayDimFetch) : ?int {
+ $this->traverseNodesWithCallable($functionLike->stmts, function (Node $node) use($param, $paramName, &$isParamAccessedArrayDimFetch) : ?int {
if ($node instanceof Class_ || $node instanceof FunctionLike) {
return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
}
- if ($this->shouldStop($node, $paramName)) {
+ if ($this->shouldStop($node, $param, $paramName)) {
// force set to false to avoid too early replaced
$isParamAccessedArrayDimFetch = \false;
return NodeTraverser::STOP_TRAVERSAL;
@@ -159,9 +163,21 @@ private function isEchoed(Node $node, string $paramName) : bool
}
return \false;
}
- private function shouldStop(Node $node, string $paramName) : bool
+ private function shouldStop(Node $node, Param $param, string $paramName) : bool
{
$nodeToCheck = null;
+ if (!$param->default instanceof Expr) {
+ if ($node instanceof Isset_) {
+ foreach ($node->vars as $var) {
+ if ($var instanceof ArrayDimFetch && $var->var instanceof Variable && $var->var->name === $paramName) {
+ return \true;
+ }
+ }
+ }
+ if ($node instanceof Empty_ && $node->expr instanceof ArrayDimFetch && $node->expr->var instanceof Variable && $node->expr->var->name === $paramName) {
+ return \true;
+ }
+ }
if ($node instanceof FuncCall && !$node->isFirstClassCallable() && $this->isNames($node, ['is_array', 'is_string', 'is_int', 'is_bool', 'is_float'])) {
$firstArg = $node->getArgs()[0];
$nodeToCheck = $firstArg->value;
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StrictStringParamConcatRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StrictStringParamConcatRector.php
index 0462f5663..b6407b5d4 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StrictStringParamConcatRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StrictStringParamConcatRector.php
@@ -97,12 +97,19 @@ public function refactor(Node $node) : ?Node
continue;
}
$nativeType = $this->nodeTypeResolver->getNativeType($variableConcattedFromParam);
- if ($nativeType instanceof MixedType && $nativeType->getSubtractedType() instanceof Type && TypeCombinator::containsNull($nativeType->getSubtractedType())) {
- $param->type = new NullableType(new Identifier('string'));
- } else {
+ if (!$nativeType instanceof MixedType) {
+ continue;
+ }
+ $subtractedType = $nativeType->getSubtractedType();
+ if (!$subtractedType instanceof Type) {
$param->type = new Identifier('string');
+ $hasChanged = \true;
+ continue;
+ }
+ if (TypeCombinator::containsNull($subtractedType)) {
+ $param->type = new NullableType(new Identifier('string'));
+ $hasChanged = \true;
}
- $hasChanged = \true;
}
if ($hasChanged) {
return $node;
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictScalarReturnsRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictScalarReturnsRector.php
new file mode 100644
index 000000000..bad1e2cdb
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictScalarReturnsRector.php
@@ -0,0 +1,123 @@
+classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->betterNodeFinder = $betterNodeFinder;
+ $this->returnAnalyzer = $returnAnalyzer;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add string return type based on returned string scalar values', [new CodeSample(<<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function foo($condition)
+ {
+ if ($condition) {
+ return 'yes';
+ }
+
+ return 'no';
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function foo($condition): string
+ {
+ if ($condition) {
+ return 'yes';
+ }
+
+ return 'no';
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class, Function_::class];
+ }
+ /**
+ * @param ClassMethod|Function_ $node
+ */
+ public function refactorWithScope(Node $node, Scope $scope) : ?Node
+ {
+ // already added → skip
+ if ($node->returnType instanceof Node) {
+ return null;
+ }
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
+ return null;
+ }
+ foreach ($returns as $return) {
+ // we need exact string "value" return
+ if (!$return->expr instanceof String_ && !$return->expr instanceof Encapsed) {
+ return null;
+ }
+ }
+ if ($this->shouldSkipClassMethodForOverride($node, $scope)) {
+ return null;
+ }
+ $node->returnType = new Identifier('string');
+ return $node;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersion::PHP_70;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ */
+ private function shouldSkipClassMethodForOverride($functionLike, Scope $scope) : bool
+ {
+ if (!$functionLike instanceof ClassMethod) {
+ return \false;
+ }
+ return $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($functionLike, $scope);
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictStringReturnsRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictStringReturnsRector.php
new file mode 100644
index 000000000..25566a180
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictStringReturnsRector.php
@@ -0,0 +1,157 @@
+classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
+ $this->betterNodeFinder = $betterNodeFinder;
+ $this->returnAnalyzer = $returnAnalyzer;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add string return type based on returned strict string values', [new CodeSample(<<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function foo($condition, $value)
+ {
+ if ($value) {
+ return 'yes';
+ }
+
+ return strtoupper($value);
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+final class SomeClass
+{
+ public function foo($condition, $value): string;
+ {
+ if ($value) {
+ return 'yes';
+ }
+
+ return strtoupper($value);
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [ClassMethod::class, Function_::class];
+ }
+ /**
+ * @param ClassMethod|Function_ $node
+ */
+ public function refactorWithScope(Node $node, Scope $scope) : ?Node
+ {
+ // already added → skip
+ if ($node->returnType instanceof Node) {
+ return null;
+ }
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
+ return null;
+ }
+ // handled by another rule
+ if ($this->hasAlwaysStringScalarReturn($returns)) {
+ return null;
+ }
+ // anything that return strict string, but no strings only
+ if (!$this->isAlwaysStringStrictType($returns)) {
+ return null;
+ }
+ if ($this->shouldSkipClassMethodForOverride($node, $scope)) {
+ return null;
+ }
+ $node->returnType = new Identifier('string');
+ return $node;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersion::PHP_70;
+ }
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
+ */
+ private function shouldSkipClassMethodForOverride($functionLike, Scope $scope) : bool
+ {
+ if (!$functionLike instanceof ClassMethod) {
+ return \false;
+ }
+ return $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($functionLike, $scope);
+ }
+ /**
+ * @param Return_[] $returns
+ */
+ private function hasAlwaysStringScalarReturn(array $returns) : bool
+ {
+ foreach ($returns as $return) {
+ // we need exact string "value" return
+ if (!$return->expr instanceof String_ && !$return->expr instanceof Encapsed) {
+ return \false;
+ }
+ }
+ return \true;
+ }
+ /**
+ * @param Return_[] $returns
+ */
+ private function isAlwaysStringStrictType(array $returns) : bool
+ {
+ foreach ($returns as $return) {
+ // void return
+ if (!$return->expr instanceof Expr) {
+ return \false;
+ }
+ $exprType = $this->nodeTypeResolver->getNativeType($return->expr);
+ if (!$exprType->isString()->yes()) {
+ return \false;
+ }
+ }
+ return \true;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/MergeDateTimePropertyTypeDeclarationRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/MergeDateTimePropertyTypeDeclarationRector.php
index 892ed5b41..00c769ecb 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/MergeDateTimePropertyTypeDeclarationRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/MergeDateTimePropertyTypeDeclarationRector.php
@@ -88,8 +88,11 @@ public function refactor(Node $node) : ?Node
$varType = $phpDocInfo->getVarType();
$className = $varType instanceof TypeWithClassName ? $this->nodeTypeResolver->getFullyQualifiedClassName($varType) : null;
if ($className === 'DateTimeInterface') {
- $phpDocInfo->removeByType(VarTagValueNode::class);
- $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($property);
+ $varTagvalueNode = $phpDocInfo->getVarTagValueNode();
+ if ($varTagvalueNode instanceof VarTagValueNode && $varTagvalueNode->description === '') {
+ $phpDocInfo->removeByType(VarTagValueNode::class);
+ $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($property);
+ }
$property->type = new FullyQualified('DateTimeInterface');
$hasChanged = \true;
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/PropertyTypeFromStrictSetterGetterRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/PropertyTypeFromStrictSetterGetterRector.php
index 06b2ad1c3..e07438994 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/PropertyTypeFromStrictSetterGetterRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/PropertyTypeFromStrictSetterGetterRector.php
@@ -123,7 +123,8 @@ public function refactor(Node $node) : ?Node
if (!$getterSetterPropertyType instanceof Type) {
continue;
}
- if (!$this->isDefaultExprTypeCompatible($property, $getterSetterPropertyType)) {
+ $hasPropertyDefaultNull = $this->hasPropertyDefaultNull($property);
+ if (!$hasPropertyDefaultNull && !$this->isDefaultExprTypeCompatible($property, $getterSetterPropertyType)) {
continue;
}
if (!$classReflection instanceof ClassReflection) {
@@ -139,7 +140,7 @@ public function refactor(Node $node) : ?Node
if (!$propertyTypeDeclaration instanceof Node) {
continue;
}
- $this->decorateDefaultExpr($getterSetterPropertyType, $property);
+ $this->decorateDefaultExpr($getterSetterPropertyType, $property, $hasPropertyDefaultNull);
$property->type = $propertyTypeDeclaration;
$hasChanged = \true;
}
@@ -184,9 +185,13 @@ private function isDefaultExprTypeCompatible(Property $property, Type $getterSet
$defaultExprType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($defaultExpr);
return $defaultExprType->equals($getterSetterPropertyType);
}
- private function decorateDefaultExpr(Type $getterSetterPropertyType, Property $property) : void
+ private function decorateDefaultExpr(Type $getterSetterPropertyType, Property $property, bool $hasPropertyDefaultNull) : void
{
if (!TypeCombinator::containsNull($getterSetterPropertyType)) {
+ if ($hasPropertyDefaultNull) {
+ // reset to nothign
+ $property->props[0]->default = null;
+ }
return;
}
$propertyProperty = $property->props[0];
@@ -196,4 +201,12 @@ private function decorateDefaultExpr(Type $getterSetterPropertyType, Property $p
}
$propertyProperty->default = new ConstFetch(new Name('null'));
}
+ private function hasPropertyDefaultNull(Property $property) : bool
+ {
+ $defaultExpr = $property->props[0]->default ?? null;
+ if (!$defaultExpr instanceof ConstFetch) {
+ return \false;
+ }
+ return $defaultExpr->name->toLowerString() === 'null';
+ }
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/ReturnTypeFromStrictTernaryRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/ReturnTypeFromStrictTernaryRector.php
index d6920820a..2781e8fb8 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/ReturnTypeFromStrictTernaryRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/ReturnTypeFromStrictTernaryRector.php
@@ -4,11 +4,9 @@
namespace Rector\TypeDeclaration\Rector\Class_;
use PhpParser\Node;
-use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Ternary;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
-use PhpParser\Node\Stmt\Return_;
use PHPStan\Analyser\Scope;
use PHPStan\Type\MixedType;
use PHPStan\Type\TypeCombinator;
@@ -18,6 +16,7 @@
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\Rector\AbstractScopeAwareRector;
use Rector\StaticTypeMapper\StaticTypeMapper;
+use Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer;
use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
use Rector\ValueObject\PhpVersionFeature;
use Rector\VendorLocker\NodeVendorLocker\ClassMethodReturnTypeOverrideGuard;
@@ -49,12 +48,18 @@ final class ReturnTypeFromStrictTernaryRector extends AbstractScopeAwareRector i
* @var \Rector\StaticTypeMapper\StaticTypeMapper
*/
private $staticTypeMapper;
- public function __construct(ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnTypeInferer $returnTypeInferer, BetterNodeFinder $betterNodeFinder, StaticTypeMapper $staticTypeMapper)
+ /**
+ * @readonly
+ * @var \Rector\TypeDeclaration\NodeAnalyzer\ReturnAnalyzer
+ */
+ private $returnAnalyzer;
+ public function __construct(ClassMethodReturnTypeOverrideGuard $classMethodReturnTypeOverrideGuard, ReturnTypeInferer $returnTypeInferer, BetterNodeFinder $betterNodeFinder, StaticTypeMapper $staticTypeMapper, ReturnAnalyzer $returnAnalyzer)
{
$this->classMethodReturnTypeOverrideGuard = $classMethodReturnTypeOverrideGuard;
$this->returnTypeInferer = $returnTypeInferer;
$this->betterNodeFinder = $betterNodeFinder;
$this->staticTypeMapper = $staticTypeMapper;
+ $this->returnAnalyzer = $returnAnalyzer;
}
public function getRuleDefinition() : RuleDefinition
{
@@ -83,10 +88,10 @@ public function getValue($number): int
*/
public function getNodeTypes() : array
{
- return [ClassMethod::class, Function_::class, Closure::class];
+ return [ClassMethod::class, Function_::class];
}
/**
- * @param ClassMethod|Function_|Closure $node
+ * @param ClassMethod|Function_ $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
@@ -96,10 +101,13 @@ public function refactorWithScope(Node $node, Scope $scope) : ?Node
if ($node->stmts === null) {
return null;
}
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($node, Return_::class);
+ $returns = $this->betterNodeFinder->findReturnsScoped($node);
if (\count($returns) !== 1) {
return null;
}
+ if (!$this->returnAnalyzer->hasOnlyReturnWithExpr($node, $returns)) {
+ return null;
+ }
$return = $returns[0];
if (!$return->expr instanceof Ternary) {
return null;
@@ -126,18 +134,19 @@ public function provideMinPhpVersion() : int
return PhpVersionFeature::SCALAR_TYPES;
}
/**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $node
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
*/
- private function shouldSkip($node, Scope $scope) : bool
+ private function shouldSkip($functionLike, Scope $scope) : bool
{
- if ($node->returnType !== null) {
+ // type is already filled, skip
+ if ($functionLike->returnType instanceof Node) {
return \true;
}
- $returnType = $this->returnTypeInferer->inferFunctionLike($node);
+ $returnType = $this->returnTypeInferer->inferFunctionLike($functionLike);
$returnType = TypeCombinator::removeNull($returnType);
if ($returnType instanceof UnionType) {
return \true;
}
- return $node instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($node, $scope);
+ return $functionLike instanceof ClassMethod && $this->classMethodReturnTypeOverrideGuard->shouldSkipClassMethod($functionLike, $scope);
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromCreateMockAssignRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromCreateMockAssignRector.php
new file mode 100644
index 000000000..efb08ef76
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromCreateMockAssignRector.php
@@ -0,0 +1,135 @@
+assignToPropertyTypeInferer = $assignToPropertyTypeInferer;
+ $this->staticTypeMapper = $staticTypeMapper;
+ $this->constructorAssignDetector = $constructorAssignDetector;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add typed property from assigned mock', [new CodeSample(<<<'CODE_SAMPLE'
+use PHPUnit\Framework\TestCase;
+
+final class SomeTest extends TestCase
+{
+ private $someProperty;
+
+ protected function setUp(): void
+ {
+ $this->someProperty = $this->createMock(SomeMockedClass::class);
+ }
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+use PHPUnit\Framework\TestCase;
+
+final class SomeTest extends TestCase
+{
+ private \PHPUnit\Framework\MockObject\MockObject $someProperty;
+
+ protected function setUp(): void
+ {
+ $this->someProperty = $this->createMock(SomeMockedClass::class);
+ }
+}
+CODE_SAMPLE
+)]);
+ }
+ public function getNodeTypes() : array
+ {
+ return [Class_::class];
+ }
+ /**
+ * @param Class_ $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ if (!$this->isObjectType($node, new ObjectType(self::TEST_CASE_CLASS))) {
+ return null;
+ }
+ $hasChanged = \false;
+ foreach ($node->getProperties() as $property) {
+ // already typed
+ if ($property->type instanceof Node) {
+ continue;
+ }
+ if (\count($property->props) !== 1) {
+ continue;
+ }
+ $propertyName = (string) $this->getName($property);
+ $type = $this->assignToPropertyTypeInferer->inferPropertyInClassLike($property, $propertyName, $node);
+ if (!$type instanceof Type) {
+ continue;
+ }
+ $propertyType = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($type, TypeKind::PROPERTY);
+ if (!$propertyType instanceof Node) {
+ continue;
+ }
+ if (!$this->isObjectType($propertyType, new ObjectType(self::MOCK_OBJECT_CLASS))) {
+ continue;
+ }
+ if (!$this->constructorAssignDetector->isPropertyAssigned($node, $propertyName)) {
+ if (!$propertyType instanceof NullableType) {
+ continue;
+ }
+ $property->props[0]->default = $this->nodeFactory->createNull();
+ }
+ $property->type = $propertyType;
+ $hasChanged = \true;
+ }
+ if (!$hasChanged) {
+ return null;
+ }
+ return $node;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::TYPED_PROPERTIES;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromJMSSerializerAttributeTypeRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromJMSSerializerAttributeTypeRector.php
new file mode 100644
index 000000000..28fb1c80e
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromJMSSerializerAttributeTypeRector.php
@@ -0,0 +1,191 @@
+allAssignNodePropertyTypeInferer = $allAssignNodePropertyTypeInferer;
+ $this->makePropertyTypedGuard = $makePropertyTypedGuard;
+ $this->reflectionResolver = $reflectionResolver;
+ $this->valueResolver = $valueResolver;
+ $this->phpAttributeAnalyzer = $phpAttributeAnalyzer;
+ $this->scalarStringToTypeMapper = $scalarStringToTypeMapper;
+ $this->staticTypeMapper = $staticTypeMapper;
+ $this->constructorAssignDetector = $constructorAssignDetector;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add typed property from JMS Serializer Type attribute', [new CodeSample(<<<'CODE_SAMPLE'
+final class SomeClass
+{
+ #[\JMS\Serializer\Annotation\Type('string')]
+ private $name;
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+final class SomeClass
+{
+ #[\JMS\Serializer\Annotation\Type('string')]
+ private ?string $name = null;
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [Class_::class];
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::ATTRIBUTES;
+ }
+ /**
+ * @param Class_ $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ $hasChanged = \false;
+ $classReflection = null;
+ foreach ($node->getProperties() as $property) {
+ if (!$property->isPrivate()) {
+ continue;
+ }
+ if ($property->type instanceof Node) {
+ continue;
+ }
+ if (!$this->phpAttributeAnalyzer->hasPhpAttribute($property, self::JMS_TYPE)) {
+ continue;
+ }
+ if (!$classReflection instanceof ClassReflection) {
+ $classReflection = $this->reflectionResolver->resolveClassReflection($node);
+ }
+ if (!$classReflection instanceof ClassReflection) {
+ return null;
+ }
+ if (!$this->makePropertyTypedGuard->isLegal($property, $classReflection, \false)) {
+ continue;
+ }
+ $inferredType = $this->allAssignNodePropertyTypeInferer->inferProperty($property, $classReflection, $this->file);
+ // has assigned with type
+ if ($inferredType instanceof Type) {
+ continue;
+ }
+ if ($property->props[0]->default instanceof Node) {
+ continue;
+ }
+ $typeValue = null;
+ foreach ($property->attrGroups as $attrGroup) {
+ foreach ($attrGroup->attrs as $attr) {
+ if ($attr->name->toString() === self::JMS_TYPE) {
+ $typeValue = $this->valueResolver->getValue($attr->args[0]->value);
+ break;
+ }
+ }
+ }
+ if (!\is_string($typeValue)) {
+ continue;
+ }
+ $typeValue = Strings::match($typeValue, '#\\w+#');
+ if (isset($typeValue[0]) && \is_string($typeValue[0])) {
+ $type = $this->scalarStringToTypeMapper->mapScalarStringToType($typeValue[0]);
+ if ($type instanceof MixedType) {
+ $type = new ObjectType($typeValue[0]);
+ }
+ $propertyType = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($type, TypeKind::PROPERTY);
+ if (!$propertyType instanceof Identifier && !$propertyType instanceof FullyQualified) {
+ return null;
+ }
+ $isInConstructorAssigned = $this->constructorAssignDetector->isPropertyAssigned($node, $this->getName($property));
+ $type = $isInConstructorAssigned ? $propertyType : new NullableType($propertyType);
+ $property->type = $type;
+ if (!$isInConstructorAssigned) {
+ $property->props[0]->default = new ConstFetch(new Name('null'));
+ }
+ $hasChanged = \true;
+ }
+ }
+ if ($hasChanged) {
+ return $node;
+ }
+ return null;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/AddClosureNeverReturnTypeRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/AddClosureNeverReturnTypeRector.php
new file mode 100644
index 000000000..264def049
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/AddClosureNeverReturnTypeRector.php
@@ -0,0 +1,61 @@
+addNeverReturnType = $addNeverReturnType;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add "never" return-type for closure that never return anything', [new CodeSample(<<<'CODE_SAMPLE'
+function () {
+ throw new InvalidException();
+}
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+function (): never {
+ throw new InvalidException();
+}
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [Closure::class];
+ }
+ /**
+ * @param Closure $node
+ */
+ public function refactorWithScope(Node $node, Scope $scope) : ?Node
+ {
+ return $this->addNeverReturnType->add($node, $scope);
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::NEVER_TYPE;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/AddClosureVoidReturnTypeWhereNoReturnRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/AddClosureVoidReturnTypeWhereNoReturnRector.php
index 83f474198..21d5aaa87 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/AddClosureVoidReturnTypeWhereNoReturnRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/AddClosureVoidReturnTypeWhereNoReturnRector.php
@@ -30,11 +30,11 @@ public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Add closure return type void if there is no return', [new CodeSample(<<<'CODE_SAMPLE'
function () {
-}
+};
CODE_SAMPLE
, <<<'CODE_SAMPLE'
function (): void {
-}
+};
CODE_SAMPLE
)]);
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/ClosureReturnTypeRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/ClosureReturnTypeRector.php
new file mode 100644
index 000000000..0da137c6d
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Closure/ClosureReturnTypeRector.php
@@ -0,0 +1,83 @@
+returnTypeInferer = $returnTypeInferer;
+ $this->staticTypeMapper = $staticTypeMapper;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add return type to closures based on known return values', [new CodeSample(<<<'CODE_SAMPLE'
+function () {
+ return 100;
+};
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+function (): int {
+ return 100;
+};
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [Closure::class];
+ }
+ /**
+ * @param Closure $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ // type is already set
+ if ($node->returnType instanceof Node) {
+ return null;
+ }
+ $closureReturnType = $this->returnTypeInferer->inferFunctionLike($node);
+ // handled by other rules
+ if ($closureReturnType instanceof NeverType) {
+ return null;
+ }
+ $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($closureReturnType, TypeKind::RETURN);
+ if (!$returnTypeNode instanceof Node) {
+ return null;
+ }
+ $node->returnType = $returnTypeNode;
+ return $node;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::SCALAR_TYPES;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Empty_/EmptyOnNullableObjectToInstanceOfRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Empty_/EmptyOnNullableObjectToInstanceOfRector.php
index c6ea6b961..0a3a00366 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/Empty_/EmptyOnNullableObjectToInstanceOfRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Empty_/EmptyOnNullableObjectToInstanceOfRector.php
@@ -9,16 +9,19 @@
use PhpParser\Node\Expr\Empty_;
use PhpParser\Node\Expr\Instanceof_;
use PhpParser\Node\Name;
+use PHPStan\Analyser\Scope;
use PHPStan\Type\ObjectType;
+use PHPStan\Type\TypeCombinator;
+use PHPStan\Type\UnionType;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
-use Rector\Rector\AbstractRector;
+use Rector\Rector\AbstractScopeAwareRector;
use Rector\StaticTypeMapper\StaticTypeMapper;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\Tests\TypeDeclaration\Rector\Empty_\EmptyOnNullableObjectToInstanceOfRector\EmptyOnNullableObjectToInstanceOfRectorTest
*/
-final class EmptyOnNullableObjectToInstanceOfRector extends AbstractRector
+final class EmptyOnNullableObjectToInstanceOfRector extends AbstractScopeAwareRector
{
/**
* @readonly
@@ -68,8 +71,9 @@ public function getNodeTypes() : array
}
/**
* @param Empty_|BooleanNot $node
+ * @return null|\PhpParser\Node\Expr\Instanceof_|\PhpParser\Node\Expr\BooleanNot
*/
- public function refactor(Node $node) : ?Node
+ public function refactorWithScope(Node $node, Scope $scope)
{
if ($node instanceof BooleanNot) {
if (!$node->expr instanceof Empty_) {
@@ -84,7 +88,11 @@ public function refactor(Node $node) : ?Node
if ($empty->expr instanceof ArrayDimFetch) {
return null;
}
- $exprType = $this->nodeTypeResolver->getNativeType($empty->expr);
+ $exprType = $scope->getNativeType($empty->expr);
+ if (!$exprType instanceof UnionType) {
+ return null;
+ }
+ $exprType = TypeCombinator::removeNull($exprType);
if (!$exprType instanceof ObjectType) {
return null;
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Expression/InlineVarDocTagToAssertRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Expression/InlineVarDocTagToAssertRector.php
new file mode 100644
index 000000000..cfe783c86
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Expression/InlineVarDocTagToAssertRector.php
@@ -0,0 +1,112 @@
+phpDocInfoFactory = $phpDocInfoFactory;
+ $this->docBlockUpdater = $docBlockUpdater;
+ $this->typeExpressionFromVarTagResolver = $typeExpressionFromVarTagResolver;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Convert inline @var tags to calls to assert()', [new CodeSample(<<<'CODE_SAMPLE'
+/** @var Foo $foo */
+$foo = createFoo();
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+$foo = createFoo();
+assert($foo instanceof Foo);
+CODE_SAMPLE
+)]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [Expression::class];
+ }
+ /**
+ * @param Expression $node
+ * @return Node[]|null
+ */
+ public function refactor(Node $node) : ?array
+ {
+ if (!$node->expr instanceof Assign) {
+ return null;
+ }
+ if (!$node->expr->var instanceof Variable) {
+ return null;
+ }
+ $docComment = $node->getDocComment();
+ if (!$docComment instanceof Doc) {
+ return null;
+ }
+ $phpDocInfo = $this->phpDocInfoFactory->createFromNode($node);
+ if (!$phpDocInfo instanceof PhpDocInfo || $phpDocInfo->getPhpDocNode()->children === []) {
+ return null;
+ }
+ $expressionVariableName = $node->expr->var->name;
+ foreach ($phpDocInfo->getPhpDocNode()->getVarTagValues() as $varTagValueNode) {
+ //remove $ from variable name
+ $variableName = \substr($varTagValueNode->variableName, 1);
+ if ($variableName === $expressionVariableName && $varTagValueNode->description === '') {
+ $typeExpression = $this->typeExpressionFromVarTagResolver->resolveTypeExpressionFromVarTag($varTagValueNode->type, new Variable($variableName));
+ if ($typeExpression instanceof Expr) {
+ $phpDocInfo->removeByType(VarTagValueNode::class, $variableName);
+ $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);
+ $arg = new Arg($typeExpression);
+ $funcCall = new FuncCall(new Name('assert'), [$arg]);
+ $expression = new Expression($funcCall);
+ return [$node, $expression];
+ }
+ }
+ }
+ return null;
+ }
+ public function provideMinPhpVersion() : int
+ {
+ return PhpVersionFeature::STRING_IN_ASSERT_ARG;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromArgRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromArgRector.php
new file mode 100644
index 000000000..620be9ba5
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromArgRector.php
@@ -0,0 +1,188 @@
+typeComparator = $typeComparator;
+ $this->staticTypeMapper = $staticTypeMapper;
+ $this->reflectionProvider = $reflectionProvider;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add closure param type based on known passed service/string types of method calls', [new ConfiguredCodeSample(<<<'CODE_SAMPLE'
+$app = new Container();
+$app->extend(SomeClass::class, function ($parameter) {});
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+$app = new Container();
+$app->extend(SomeClass::class, function (SomeClass $parameter) {});
+CODE_SAMPLE
+, [new AddClosureParamTypeFromArg('Container', 'extend', 1, 0)])]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [MethodCall::class, StaticCall::class];
+ }
+ /**
+ * @param MethodCall|StaticCall $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ foreach ($this->addClosureParamTypeFromArgs as $addClosureParamTypeFromArg) {
+ if ($node instanceof MethodCall) {
+ $caller = $node->var;
+ } elseif ($node instanceof StaticCall) {
+ $caller = $node->class;
+ } else {
+ continue;
+ }
+ if (!$this->isCallMatch($caller, $addClosureParamTypeFromArg, $node)) {
+ continue;
+ }
+ return $this->processCallLike($node, $addClosureParamTypeFromArg);
+ }
+ return null;
+ }
+ /**
+ * @param mixed[] $configuration
+ */
+ public function configure(array $configuration) : void
+ {
+ Assert::allIsAOf($configuration, AddClosureParamTypeFromArg::class);
+ $this->addClosureParamTypeFromArgs = $configuration;
+ }
+ /**
+ * @param \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall $callLike
+ * @return \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall|null
+ */
+ private function processCallLike($callLike, AddClosureParamTypeFromArg $addClosureParamTypeFromArg)
+ {
+ if ($callLike->isFirstClassCallable()) {
+ return null;
+ }
+ $callLikeArg = $callLike->args[$addClosureParamTypeFromArg->getCallLikePosition()] ?? null;
+ if (!$callLikeArg instanceof Arg) {
+ return null;
+ }
+ // int positions shouldn't have names
+ if ($callLikeArg->name instanceof Identifier) {
+ return null;
+ }
+ $functionLike = $callLikeArg->value;
+ if (!$functionLike instanceof Closure && !$functionLike instanceof ArrowFunction) {
+ return null;
+ }
+ if (!isset($functionLike->params[$addClosureParamTypeFromArg->getFunctionLikePosition()])) {
+ return null;
+ }
+ $callLikeArg = $callLike->getArgs()[self::DEFAULT_CLOSURE_ARG_POSITION] ?? null;
+ if (!$callLikeArg instanceof Arg) {
+ return null;
+ }
+ $hasChanged = $this->refactorParameter($functionLike->params[$addClosureParamTypeFromArg->getFunctionLikePosition()], $callLikeArg);
+ if ($hasChanged) {
+ return $callLike;
+ }
+ return null;
+ }
+ private function refactorParameter(Param $param, Arg $arg) : bool
+ {
+ $closureType = $this->resolveClosureType($arg->value);
+ if (!$closureType instanceof Type) {
+ return \false;
+ }
+ // already set → no change
+ if ($param->type instanceof Node) {
+ $currentParamType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($param->type);
+ if ($this->typeComparator->areTypesEqual($currentParamType, $closureType)) {
+ return \false;
+ }
+ }
+ $paramTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($closureType, TypeKind::PARAM);
+ $param->type = $paramTypeNode;
+ return \true;
+ }
+ /**
+ * @param \PhpParser\Node\Name|\PhpParser\Node\Expr $caller
+ * @param \PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\MethodCall $call
+ */
+ private function isCallMatch($caller, AddClosureParamTypeFromArg $addClosureParamTypeFromArg, $call) : bool
+ {
+ if (!$this->isObjectType($caller, $addClosureParamTypeFromArg->getObjectType())) {
+ return \false;
+ }
+ return $this->isName($call->name, $addClosureParamTypeFromArg->getMethodName());
+ }
+ private function resolveClosureType(Expr $expr) : ?Type
+ {
+ $exprType = $this->nodeTypeResolver->getType($expr);
+ if ($exprType instanceof GenericClassStringType) {
+ return $exprType->getGenericType();
+ }
+ if ($exprType instanceof ConstantStringType) {
+ if ($this->reflectionProvider->hasClass($exprType->getValue())) {
+ return new ObjectType($exprType->getValue());
+ }
+ return new StringType();
+ }
+ return null;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromObjectRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromObjectRector.php
new file mode 100644
index 000000000..4ee8934b6
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromObjectRector.php
@@ -0,0 +1,163 @@
+typeComparator = $typeComparator;
+ $this->staticTypeMapper = $staticTypeMapper;
+ }
+ public function getRuleDefinition() : RuleDefinition
+ {
+ return new RuleDefinition('Add closure param type based on the object of the method call', [new ConfiguredCodeSample(<<<'CODE_SAMPLE'
+$request = new Request();
+$request->when(true, function ($request) {});
+CODE_SAMPLE
+, <<<'CODE_SAMPLE'
+$request = new Request();
+$request->when(true, function (Request $request) {});
+CODE_SAMPLE
+, [new AddClosureParamTypeFromObject('Request', 'when', 1, 0)])]);
+ }
+ /**
+ * @return array>
+ */
+ public function getNodeTypes() : array
+ {
+ return [MethodCall::class, StaticCall::class];
+ }
+ /**
+ * @param MethodCall|StaticCall $node
+ */
+ public function refactor(Node $node) : ?Node
+ {
+ foreach ($this->addClosureParamTypeFromObjects as $addClosureParamTypeFromObject) {
+ if ($node instanceof MethodCall) {
+ $caller = $node->var;
+ } elseif ($node instanceof StaticCall) {
+ $caller = $node->class;
+ } else {
+ continue;
+ }
+ if (!$this->isCallMatch($caller, $addClosureParamTypeFromObject, $node)) {
+ continue;
+ }
+ $type = $this->getType($caller);
+ if (!$type instanceof ObjectType) {
+ continue;
+ }
+ return $this->processCallLike($node, $addClosureParamTypeFromObject, $type);
+ }
+ return null;
+ }
+ /**
+ * @param mixed[] $configuration
+ */
+ public function configure(array $configuration) : void
+ {
+ Assert::allIsAOf($configuration, AddClosureParamTypeFromObject::class);
+ $this->addClosureParamTypeFromObjects = $configuration;
+ }
+ /**
+ * @param \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall $callLike
+ * @return \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall|null
+ */
+ private function processCallLike($callLike, AddClosureParamTypeFromObject $addClosureParamTypeFromArg, ObjectType $objectType)
+ {
+ if ($callLike->isFirstClassCallable()) {
+ return null;
+ }
+ $callLikeArg = $callLike->args[$addClosureParamTypeFromArg->getCallLikePosition()] ?? null;
+ if (!$callLikeArg instanceof Arg) {
+ return null;
+ }
+ // int positions shouldn't have names
+ if ($callLikeArg->name instanceof Identifier) {
+ return null;
+ }
+ $functionLike = $callLikeArg->value;
+ if (!$functionLike instanceof Closure && !$functionLike instanceof ArrowFunction) {
+ return null;
+ }
+ if (!isset($functionLike->params[$addClosureParamTypeFromArg->getFunctionLikePosition()])) {
+ return null;
+ }
+ $callLikeArg = $callLike->getArgs()[self::DEFAULT_CLOSURE_ARG_POSITION] ?? null;
+ if (!$callLikeArg instanceof Arg) {
+ return null;
+ }
+ $hasChanged = $this->refactorParameter($functionLike->params[$addClosureParamTypeFromArg->getFunctionLikePosition()], $objectType);
+ if ($hasChanged) {
+ return $callLike;
+ }
+ return null;
+ }
+ private function refactorParameter(Param $param, ObjectType $objectType) : bool
+ {
+ // already set → no change
+ if ($param->type instanceof Node) {
+ $currentParamType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($param->type);
+ if ($this->typeComparator->areTypesEqual($currentParamType, $objectType)) {
+ return \false;
+ }
+ }
+ $paramTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($objectType, TypeKind::PARAM);
+ $param->type = $paramTypeNode;
+ return \true;
+ }
+ /**
+ * @param \PhpParser\Node\Name|\PhpParser\Node\Expr $name
+ * @param \PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\MethodCall $call
+ */
+ private function isCallMatch($name, AddClosureParamTypeFromObject $addClosureParamTypeFromArg, $call) : bool
+ {
+ if (!$this->isObjectType($name, $addClosureParamTypeFromArg->getObjectType())) {
+ return \false;
+ }
+ return $this->isName($call->name, $addClosureParamTypeFromArg->getMethodName());
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRector.php
index eecc30961..e8d9d369e 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRector.php
@@ -23,7 +23,7 @@
use Rector\ValueObject\PhpVersionFeature;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\TypeDeclaration\Rector\FunctionLike\AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRector\AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRectorTest
*/
@@ -99,10 +99,7 @@ public function refactor(Node $node) : ?Node
if (!$this->isObjectType($type, $addParamTypeForFunctionLikeParamDeclaration->getObjectType())) {
continue;
}
- if (($node->name ?? null) === null) {
- continue;
- }
- if (!$node->name instanceof Identifier) {
+ if (!($node->name ?? null) instanceof Identifier) {
continue;
}
if (!$this->isName($node->name, $addParamTypeForFunctionLikeParamDeclaration->getMethodName())) {
@@ -163,17 +160,18 @@ private function processFunctionLike(CallLike $callLike, AddParamTypeForFunction
}
private function refactorParameter(Param $param, AddParamTypeForFunctionLikeWithinCallLikeArgDeclaration $addParamTypeForFunctionLikeWithinCallLikeArgDeclaration) : void
{
+ $newParameterType = $addParamTypeForFunctionLikeWithinCallLikeArgDeclaration->getParamType();
// already set → no change
if ($param->type !== null) {
$currentParamType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($param->type);
- if ($this->typeComparator->areTypesEqual($currentParamType, $addParamTypeForFunctionLikeWithinCallLikeArgDeclaration->getParamType())) {
+ if ($this->typeComparator->areTypesEqual($currentParamType, $newParameterType)) {
return;
}
}
- $paramTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($addParamTypeForFunctionLikeWithinCallLikeArgDeclaration->getParamType(), TypeKind::PARAM);
+ $paramTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($newParameterType, TypeKind::PARAM);
$this->hasChanged = \true;
// remove it
- if ($addParamTypeForFunctionLikeWithinCallLikeArgDeclaration->getParamType() instanceof MixedType) {
+ if ($newParameterType instanceof MixedType) {
if ($this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::MIXED_TYPE)) {
$param->type = $paramTypeNode;
return;
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddReturnTypeDeclarationFromYieldsRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddReturnTypeDeclarationFromYieldsRector.php
index 716c0e0da..e21f959cd 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddReturnTypeDeclarationFromYieldsRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/FunctionLike/AddReturnTypeDeclarationFromYieldsRector.php
@@ -94,10 +94,10 @@ public function provide(): Iterator
*/
public function getNodeTypes() : array
{
- return [Function_::class, ClassMethod::class, Closure::class];
+ return [Function_::class, ClassMethod::class];
}
/**
- * @param Function_|ClassMethod|Closure $node
+ * @param Function_|ClassMethod $node
*/
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
@@ -184,7 +184,7 @@ private function resolveYieldedTypes(array $yieldNodes) : array
}
/**
* @param array $yieldNodes
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_ $functionLike
* @return \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType|\Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedGenericObjectType
*/
private function resolveYieldType(array $yieldNodes, $functionLike)
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Property/AddPropertyTypeDeclarationRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Property/AddPropertyTypeDeclarationRector.php
index 01c2b5e31..1c8e40ca5 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/Property/AddPropertyTypeDeclarationRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Property/AddPropertyTypeDeclarationRector.php
@@ -16,7 +16,7 @@
use Rector\TypeDeclaration\ValueObject\AddPropertyTypeDeclaration;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\TypeDeclaration\Rector\Property\AddPropertyTypeDeclarationRector\AddPropertyTypeDeclarationRectorTest
*/
@@ -37,7 +37,6 @@ public function __construct(StaticTypeMapper $staticTypeMapper)
}
public function getRuleDefinition() : RuleDefinition
{
- $configuration = [new AddPropertyTypeDeclaration('ParentClass', 'name', new StringType())];
return new RuleDefinition('Add type to property by added rules, mostly public/property by parent type', [new ConfiguredCodeSample(<<<'CODE_SAMPLE'
class SomeClass extends ParentClass
{
@@ -50,7 +49,7 @@ class SomeClass extends ParentClass
public string $name;
}
CODE_SAMPLE
-, $configuration)]);
+, [new AddPropertyTypeDeclaration('ParentClass', 'name', new StringType())])]);
}
/**
* @return array>
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/Property/TypedPropertyFromAssignsRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/Property/TypedPropertyFromAssignsRector.php
index 2977e55f5..ef501e75b 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/Property/TypedPropertyFromAssignsRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/Property/TypedPropertyFromAssignsRector.php
@@ -17,6 +17,9 @@
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Contract\Rector\ConfigurableRectorInterface;
use Rector\DeadCode\PhpDoc\TagRemover\VarTagRemover;
+use Rector\Doctrine\CodeQuality\Enum\CollectionMapping;
+use Rector\Doctrine\Enum\MappingClass;
+use Rector\Doctrine\NodeAnalyzer\AttrinationFinder;
use Rector\Php74\Guard\MakePropertyTypedGuard;
use Rector\PhpParser\Node\Value\ValueResolver;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
@@ -74,6 +77,11 @@ final class TypedPropertyFromAssignsRector extends AbstractRector implements Min
* @var \Rector\StaticTypeMapper\StaticTypeMapper
*/
private $staticTypeMapper;
+ /**
+ * @readonly
+ * @var \Rector\Doctrine\NodeAnalyzer\AttrinationFinder
+ */
+ private $attrinationFinder;
/**
* @api
* @var string
@@ -89,7 +97,7 @@ final class TypedPropertyFromAssignsRector extends AbstractRector implements Min
* @var bool
*/
private $inlinePublic = \false;
- public function __construct(AllAssignNodePropertyTypeInferer $allAssignNodePropertyTypeInferer, PropertyTypeDecorator $propertyTypeDecorator, VarTagRemover $varTagRemover, MakePropertyTypedGuard $makePropertyTypedGuard, ReflectionResolver $reflectionResolver, PhpDocInfoFactory $phpDocInfoFactory, ValueResolver $valueResolver, StaticTypeMapper $staticTypeMapper)
+ public function __construct(AllAssignNodePropertyTypeInferer $allAssignNodePropertyTypeInferer, PropertyTypeDecorator $propertyTypeDecorator, VarTagRemover $varTagRemover, MakePropertyTypedGuard $makePropertyTypedGuard, ReflectionResolver $reflectionResolver, PhpDocInfoFactory $phpDocInfoFactory, ValueResolver $valueResolver, StaticTypeMapper $staticTypeMapper, AttrinationFinder $attrinationFinder)
{
$this->allAssignNodePropertyTypeInferer = $allAssignNodePropertyTypeInferer;
$this->propertyTypeDecorator = $propertyTypeDecorator;
@@ -99,6 +107,7 @@ public function __construct(AllAssignNodePropertyTypeInferer $allAssignNodePrope
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->valueResolver = $valueResolver;
$this->staticTypeMapper = $staticTypeMapper;
+ $this->attrinationFinder = $attrinationFinder;
}
public function configure(array $configuration) : void
{
@@ -128,7 +137,7 @@ public function run()
}
}
CODE_SAMPLE
-, [\Rector\TypeDeclaration\Rector\Property\TypedPropertyFromAssignsRector::INLINE_PUBLIC => \false])]);
+, [self::INLINE_PUBLIC => \false])]);
}
/**
* @return array>
@@ -142,7 +151,7 @@ public function provideMinPhpVersion() : int
return PhpVersionFeature::TYPED_PROPERTIES;
}
/**
- * @param Node\Stmt\Class_ $node
+ * @param Class_ $node
*/
public function refactor(Node $node) : ?Node
{
@@ -153,6 +162,9 @@ public function refactor(Node $node) : ?Node
if (!$property->isPrivate() && !$this->inlinePublic) {
continue;
}
+ if ($this->isDoctrineMappedProperty($property)) {
+ continue;
+ }
if (!$classReflection instanceof ClassReflection) {
$classReflection = $this->reflectionResolver->resolveClassReflection($node);
}
@@ -205,4 +217,12 @@ private function decorateTypeWithNullableIfDefaultPropertyNull(Property $propert
}
return TypeCombinator::addNull($inferredType);
}
+ /**
+ * Doctrine properties are handled in doctrine rules
+ */
+ private function isDoctrineMappedProperty(Property $property) : bool
+ {
+ $mappingClasses = \array_merge(CollectionMapping::TO_MANY_CLASSES, CollectionMapping::TO_ONE_CLASSES, [MappingClass::COLUMN]);
+ return $this->attrinationFinder->hasByMany($property, $mappingClasses);
+ }
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/StmtsAwareInterface/DeclareStrictTypesRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/StmtsAwareInterface/DeclareStrictTypesRector.php
index 1a84df46c..4665cd37d 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/StmtsAwareInterface/DeclareStrictTypesRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/StmtsAwareInterface/DeclareStrictTypesRector.php
@@ -9,6 +9,7 @@
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Declare_;
use PhpParser\Node\Stmt\DeclareDeclare;
+use PhpParser\Node\Stmt\InlineHTML;
use PhpParser\Node\Stmt\Nop;
use Rector\ChangesReporting\ValueObject\RectorWithLineChange;
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
@@ -48,8 +49,8 @@ function someFunction()
)]);
}
/**
- * @param Node[] $nodes
- * @return Node[]|null
+ * @param Stmt[] $nodes
+ * @return Stmt[]|null
*/
public function beforeTraverse(array $nodes) : ?array
{
@@ -58,17 +59,19 @@ public function beforeTraverse(array $nodes) : ?array
if ($this->skipper->shouldSkipElementAndFilePath(self::class, $filePath)) {
return null;
}
- $newStmts = $this->file->getNewStmts();
- if ($newStmts === []) {
+ if ($nodes === []) {
return null;
}
- $rootStmt = \current($newStmts);
+ $rootStmt = \current($nodes);
$stmt = $rootStmt;
if ($rootStmt instanceof FileWithoutNamespace) {
$currentStmt = \current($rootStmt->stmts);
if (!$currentStmt instanceof Stmt) {
return null;
}
+ if ($currentStmt instanceof InlineHTML) {
+ return null;
+ }
$nodes = $rootStmt->stmts;
$stmt = $currentStmt;
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/Rector/StmtsAwareInterface/IncreaseDeclareStrictTypesRector.php b/vendor/rector/rector/rules/TypeDeclaration/Rector/StmtsAwareInterface/IncreaseDeclareStrictTypesRector.php
index cd7b8712f..0e88e3634 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/Rector/StmtsAwareInterface/IncreaseDeclareStrictTypesRector.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/Rector/StmtsAwareInterface/IncreaseDeclareStrictTypesRector.php
@@ -6,6 +6,7 @@
use PhpParser\Node;
use PhpParser\Node\Identifier;
use PhpParser\Node\Scalar\LNumber;
+use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Declare_;
use PhpParser\Node\Stmt\DeclareDeclare;
use PhpParser\Node\Stmt\Nop;
@@ -17,7 +18,7 @@
use Rector\TypeDeclaration\NodeAnalyzer\DeclareStrictTypeFinder;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\TypeDeclaration\Rector\StmtsAwareInterface\IncreaseDeclareStrictTypesRector\IncreaseDeclareStrictTypesRectorTest
*/
@@ -58,17 +59,16 @@ function someFunction()
, [self::LIMIT => 10])]);
}
/**
- * @param Node[] $nodes
- * @return Node[]|null
+ * @param Stmt[] $nodes
+ * @return Stmt[]|null
*/
public function beforeTraverse(array $nodes) : ?array
{
parent::beforeTraverse($nodes);
- $newStmts = $this->file->getNewStmts();
- if ($newStmts === []) {
+ if ($nodes === []) {
return null;
}
- $rootStmt = \current($newStmts);
+ $rootStmt = \current($nodes);
$stmt = $rootStmt;
// skip classes without namespace for safety reasons
if ($rootStmt instanceof FileWithoutNamespace) {
diff --git a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictBoolExprAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictBoolExprAnalyzer.php
deleted file mode 100644
index 4949c341f..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictBoolExprAnalyzer.php
+++ /dev/null
@@ -1,39 +0,0 @@
->
- */
- private const BOOL_TYPE_NODES = [
- // detect strict type here :)
- Empty_::class,
- BooleanAnd::class,
- BooleanOr::class,
- Equal::class,
- NotEqual::class,
- Identical::class,
- NotIdentical::class,
- ];
- public function isStrictBoolExpr(Expr $expr) : bool
- {
- foreach (self::BOOL_TYPE_NODES as $boolTypeNode) {
- if ($expr instanceof $boolTypeNode) {
- return \true;
- }
- }
- return $expr instanceof ConstFetch && \in_array($expr->name->toLowerString(), ['true', 'false'], \true);
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictScalarExprAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictScalarExprAnalyzer.php
deleted file mode 100644
index edf59bf6c..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictScalarExprAnalyzer.php
+++ /dev/null
@@ -1,92 +0,0 @@
-nodeTypeResolver = $nodeTypeResolver;
- }
- public function matchStrictScalarExpr(Expr $expr) : ?Type
- {
- if ($expr instanceof Concat) {
- return new StringType();
- }
- if ($expr instanceof Cast) {
- return $this->resolveCastType($expr);
- }
- if ($expr instanceof Scalar) {
- return $this->resolveTypeFromScalar($expr);
- }
- if ($expr instanceof ConstFetch) {
- $name = $expr->name->toLowerString();
- if ($name === 'null') {
- return new NullType();
- }
- if (\in_array($name, ['true', 'false'], \true)) {
- return new BooleanType();
- }
- return null;
- }
- $exprType = $this->nodeTypeResolver->getNativeType($expr);
- if ($exprType->isScalar()->yes()) {
- return $exprType;
- }
- return null;
- }
- private function resolveCastType(Cast $cast) : ?Type
- {
- $type = $this->nodeTypeResolver->getNativeType($cast);
- if ($type->isScalar()->yes()) {
- return $type;
- }
- return null;
- }
- private function resolveTypeFromScalar(Scalar $scalar) : ?\PHPStan\Type\Type
- {
- if ($scalar instanceof Encapsed) {
- return new StringType();
- }
- if ($scalar instanceof String_) {
- return new StringType();
- }
- if ($scalar instanceof DNumber) {
- return new FloatType();
- }
- if ($scalar instanceof LNumber) {
- return new IntegerType();
- }
- if ($scalar instanceof Line) {
- return new IntegerType();
- }
- if ($scalar instanceof MagicConst) {
- return new StringType();
- }
- return null;
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/GenericClassStringTypeNormalizer.php b/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/GenericClassStringTypeNormalizer.php
index 8d0fc1554..a7654b98d 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/GenericClassStringTypeNormalizer.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/GenericClassStringTypeNormalizer.php
@@ -3,70 +3,10 @@
declare (strict_types=1);
namespace Rector\TypeDeclaration\TypeAnalyzer;
-use PHPStan\Reflection\ReflectionProvider;
-use PHPStan\Type\ArrayType;
-use PHPStan\Type\ClassStringType;
-use PHPStan\Type\Constant\ConstantIntegerType;
-use PHPStan\Type\Constant\ConstantStringType;
use PHPStan\Type\Generic\GenericClassStringType;
-use PHPStan\Type\MixedType;
-use PHPStan\Type\ObjectType;
-use PHPStan\Type\StringType;
-use PHPStan\Type\Type;
-use PHPStan\Type\TypeTraverser;
use PHPStan\Type\UnionType;
-use Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeAnalyzer;
-use Rector\TypeDeclaration\NodeTypeAnalyzer\DetailedTypeAnalyzer;
final class GenericClassStringTypeNormalizer
{
- /**
- * @readonly
- * @var \PHPStan\Reflection\ReflectionProvider
- */
- private $reflectionProvider;
- /**
- * @readonly
- * @var \Rector\TypeDeclaration\NodeTypeAnalyzer\DetailedTypeAnalyzer
- */
- private $detailedTypeAnalyzer;
- /**
- * @readonly
- * @var \Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeAnalyzer
- */
- private $unionTypeAnalyzer;
- public function __construct(ReflectionProvider $reflectionProvider, DetailedTypeAnalyzer $detailedTypeAnalyzer, UnionTypeAnalyzer $unionTypeAnalyzer)
- {
- $this->reflectionProvider = $reflectionProvider;
- $this->detailedTypeAnalyzer = $detailedTypeAnalyzer;
- $this->unionTypeAnalyzer = $unionTypeAnalyzer;
- }
- /**
- * @return \PHPStan\Type\ArrayType|\PHPStan\Type\UnionType|\PHPStan\Type\Type
- */
- public function normalize(Type $type)
- {
- $type = TypeTraverser::map($type, function (Type $type, $callback) : Type {
- if (!$type instanceof ConstantStringType) {
- return $callback($type);
- }
- $value = $type->getValue();
- // skip string that look like classe
- if ($value === 'error') {
- return $callback($type);
- }
- if (!$this->reflectionProvider->hasClass($value)) {
- return $callback($type);
- }
- return $this->resolveStringType($value);
- });
- if ($type instanceof UnionType && !$this->unionTypeAnalyzer->isNullable($type, \true)) {
- return $this->resolveClassStringInUnionType($type);
- }
- if ($type instanceof ArrayType && $type->getKeyType() instanceof UnionType) {
- return $this->resolveArrayTypeWithUnionKeyType($type);
- }
- return $type;
- }
public function isAllGenericClassStringType(UnionType $unionType) : bool
{
foreach ($unionType->getTypes() as $type) {
@@ -76,59 +16,4 @@ public function isAllGenericClassStringType(UnionType $unionType) : bool
}
return \true;
}
- private function resolveArrayTypeWithUnionKeyType(ArrayType $arrayType) : ArrayType
- {
- $itemType = $arrayType->getItemType();
- if (!$itemType instanceof UnionType) {
- return $arrayType;
- }
- $keyType = $arrayType->getKeyType();
- $isAllGenericClassStringType = $this->isAllGenericClassStringType($itemType);
- if (!$isAllGenericClassStringType) {
- return new ArrayType($keyType, new MixedType());
- }
- if ($this->detailedTypeAnalyzer->isTooDetailed($itemType)) {
- return new ArrayType($keyType, new ClassStringType());
- }
- return $arrayType;
- }
- /**
- * @return \PHPStan\Type\UnionType|\PHPStan\Type\ArrayType
- */
- private function resolveClassStringInUnionType(UnionType $type)
- {
- $unionTypes = $type->getTypes();
- foreach ($unionTypes as $unionType) {
- if (!$unionType instanceof ArrayType) {
- return $type;
- }
- $keyType = $unionType->getKeyType();
- $itemType = $unionType->getItemType();
- if (!$keyType instanceof MixedType && !$keyType instanceof ConstantIntegerType) {
- return $type;
- }
- if ($itemType instanceof ArrayType) {
- $arrayType = new ArrayType(new MixedType(), new MixedType());
- return new ArrayType($keyType, $arrayType);
- }
- if (!$itemType instanceof ClassStringType) {
- return $type;
- }
- }
- return new ArrayType(new MixedType(), new ClassStringType());
- }
- /**
- * @return \PHPStan\Type\Generic\GenericClassStringType|\PHPStan\Type\StringType
- */
- private function resolveStringType(string $value)
- {
- $classReflection = $this->reflectionProvider->getClass($value);
- if ($classReflection->isBuiltin()) {
- return new GenericClassStringType(new ObjectType($value));
- }
- if (\strpos($value, '\\') !== \false) {
- return new GenericClassStringType(new ObjectType($value));
- }
- return new StringType();
- }
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php
index a22bd87b0..0cc79cacf 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php
@@ -20,7 +20,9 @@
use PhpParser\Node\Stmt\Return_;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
-use PHPStan\Reflection\FunctionVariantWithPhpDocs;
+use PHPStan\Reflection\Native\NativeFunctionReflection;
+use PHPStan\Reflection\Native\NativeMethodReflection;
+use PHPStan\Reflection\ParametersAcceptorWithPhpDocs;
use PHPStan\Type\MixedType;
use PHPStan\Type\StaticType;
use PHPStan\Type\Type;
@@ -95,6 +97,17 @@ public function collectStrictReturnTypes(array $returns, Scope $scope) : array
* @param \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\FuncCall $call
*/
public function resolveMethodCallReturnNode($call) : ?Node
+ {
+ $returnType = $this->resolveMethodCallReturnType($call);
+ if (!$returnType instanceof Type) {
+ return null;
+ }
+ return $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($returnType, TypeKind::RETURN);
+ }
+ /**
+ * @param \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\FuncCall $call
+ */
+ public function resolveMethodCallReturnType($call) : ?Type
{
$methodReflection = $this->reflectionResolver->resolveFunctionLikeReflectionFromCall($call);
if ($methodReflection === null) {
@@ -105,17 +118,21 @@ public function resolveMethodCallReturnNode($call) : ?Node
return null;
}
$parametersAcceptorWithPhpDocs = ParametersAcceptorSelectorVariantsWrapper::select($methodReflection, $call, $scope);
- if ($parametersAcceptorWithPhpDocs instanceof FunctionVariantWithPhpDocs) {
+ if ($methodReflection instanceof NativeFunctionReflection || $methodReflection instanceof NativeMethodReflection) {
+ $returnType = $parametersAcceptorWithPhpDocs->getReturnType();
+ } elseif ($parametersAcceptorWithPhpDocs instanceof ParametersAcceptorWithPhpDocs) {
// native return type is needed, as docblock can be false
$returnType = $parametersAcceptorWithPhpDocs->getNativeReturnType();
} else {
$returnType = $parametersAcceptorWithPhpDocs->getReturnType();
}
if ($returnType instanceof MixedType) {
+ if ($returnType->isExplicitMixed()) {
+ return $returnType;
+ }
return null;
}
- $returnType = $this->normalizeStaticType($call, $returnType);
- return $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($returnType, TypeKind::RETURN);
+ return $this->normalizeStaticType($call, $returnType);
}
/**
* @param \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\FuncCall $call
diff --git a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/StrictReturnClassConstReturnTypeAnalyzer.php b/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/StrictReturnClassConstReturnTypeAnalyzer.php
deleted file mode 100644
index 92da41624..000000000
--- a/vendor/rector/rector/rules/TypeDeclaration/TypeAnalyzer/StrictReturnClassConstReturnTypeAnalyzer.php
+++ /dev/null
@@ -1,51 +0,0 @@
-alwaysStrictReturnAnalyzer = $alwaysStrictReturnAnalyzer;
- $this->nodeTypeResolver = $nodeTypeResolver;
- $this->typeFactory = $typeFactory;
- }
- public function matchAlwaysReturnConstFetch(ClassMethod $classMethod) : ?Type
- {
- $returns = $this->alwaysStrictReturnAnalyzer->matchAlwaysStrictReturns($classMethod);
- if ($returns === []) {
- return null;
- }
- $classConstFetchTypes = [];
- foreach ($returns as $return) {
- // @todo ~30 mins paid
- if (!$return->expr instanceof ClassConstFetch) {
- return null;
- }
- $classConstFetchTypes[] = $this->nodeTypeResolver->getType($return->expr);
- }
- return $this->typeFactory->createMixedPassedOrUnionType($classConstFetchTypes);
- }
-}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/ReturnTypeInferer.php b/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/ReturnTypeInferer.php
index bee7b563b..3b459b1ae 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/ReturnTypeInferer.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/ReturnTypeInferer.php
@@ -3,34 +3,13 @@
declare (strict_types=1);
namespace Rector\TypeDeclaration\TypeInferer;
-use PhpParser\Node;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Expr\ArrowFunction;
use PhpParser\Node\Expr\Closure;
-use PhpParser\Node\Expr\Yield_;
-use PhpParser\Node\FunctionLike;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
-use PhpParser\Node\Stmt\Return_;
-use PHPStan\Reflection\ClassReflection;
-use PHPStan\Reflection\ReflectionProvider;
-use PHPStan\Type\BenevolentUnionType;
use PHPStan\Type\MixedType;
-use PHPStan\Type\ThisType;
use PHPStan\Type\Type;
-use PHPStan\Type\TypeWithClassName;
-use PHPStan\Type\UnionType;
-use Rector\Enum\ObjectReference;
-use Rector\Exception\ShouldNotHappenException;
-use Rector\NodeTypeResolver\NodeTypeResolver;
-use Rector\Php\PhpVersionProvider;
-use Rector\PhpParser\Node\BetterNodeFinder;
-use Rector\Reflection\ReflectionResolver;
-use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
-use Rector\TypeDeclaration\TypeAnalyzer\GenericClassStringTypeNormalizer;
use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer\ReturnedNodesReturnTypeInfererTypeInferer;
use Rector\TypeDeclaration\TypeNormalizer;
-use Rector\ValueObject\PhpVersionFeature;
/**
* @internal
*/
@@ -46,203 +25,20 @@ final class ReturnTypeInferer
* @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer\ReturnedNodesReturnTypeInfererTypeInferer
*/
private $returnedNodesReturnTypeInfererTypeInferer;
- /**
- * @readonly
- * @var \Rector\TypeDeclaration\TypeAnalyzer\GenericClassStringTypeNormalizer
- */
- private $genericClassStringTypeNormalizer;
- /**
- * @readonly
- * @var \Rector\Php\PhpVersionProvider
- */
- private $phpVersionProvider;
- /**
- * @readonly
- * @var \Rector\PhpParser\Node\BetterNodeFinder
- */
- private $betterNodeFinder;
- /**
- * @readonly
- * @var \Rector\Reflection\ReflectionResolver
- */
- private $reflectionResolver;
- /**
- * @readonly
- * @var \PHPStan\Reflection\ReflectionProvider
- */
- private $reflectionProvider;
- /**
- * @readonly
- * @var \Rector\NodeTypeResolver\NodeTypeResolver
- */
- private $nodeTypeResolver;
- public function __construct(TypeNormalizer $typeNormalizer, ReturnedNodesReturnTypeInfererTypeInferer $returnedNodesReturnTypeInfererTypeInferer, GenericClassStringTypeNormalizer $genericClassStringTypeNormalizer, PhpVersionProvider $phpVersionProvider, BetterNodeFinder $betterNodeFinder, ReflectionResolver $reflectionResolver, ReflectionProvider $reflectionProvider, NodeTypeResolver $nodeTypeResolver)
+ public function __construct(TypeNormalizer $typeNormalizer, ReturnedNodesReturnTypeInfererTypeInferer $returnedNodesReturnTypeInfererTypeInferer)
{
$this->typeNormalizer = $typeNormalizer;
$this->returnedNodesReturnTypeInfererTypeInferer = $returnedNodesReturnTypeInfererTypeInferer;
- $this->genericClassStringTypeNormalizer = $genericClassStringTypeNormalizer;
- $this->phpVersionProvider = $phpVersionProvider;
- $this->betterNodeFinder = $betterNodeFinder;
- $this->reflectionResolver = $reflectionResolver;
- $this->reflectionProvider = $reflectionProvider;
- $this->nodeTypeResolver = $nodeTypeResolver;
}
/**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Expr\ArrowFunction $functionLike
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
*/
public function inferFunctionLike($functionLike) : Type
{
- $isSupportedStaticReturnType = $this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::STATIC_RETURN_TYPE);
$originalType = $this->returnedNodesReturnTypeInfererTypeInferer->inferFunctionLike($functionLike);
if ($originalType instanceof MixedType) {
return new MixedType();
}
- $type = $this->typeNormalizer->normalizeArrayTypeAndArrayNever($originalType);
- // in case of void, check return type of children methods
- if ($type instanceof MixedType) {
- return new MixedType();
- }
- $type = $this->verifyStaticType($type, $isSupportedStaticReturnType);
- if (!$type instanceof Type) {
- return new MixedType();
- }
- $type = $this->verifyThisType($type, $functionLike);
- // normalize ConstStringType to ClassStringType
- $resolvedType = $this->genericClassStringTypeNormalizer->normalize($type);
- return $this->resolveTypeWithVoidHandling($functionLike, $resolvedType);
- }
- private function verifyStaticType(Type $type, bool $isSupportedStaticReturnType) : ?Type
- {
- if ($this->isStaticType($type)) {
- /** @var TypeWithClassName $type */
- return $this->resolveStaticType($isSupportedStaticReturnType, $type);
- }
- if ($type instanceof UnionType) {
- return $this->resolveUnionStaticTypes($type, $isSupportedStaticReturnType);
- }
- return $type;
- }
- private function verifyThisType(Type $type, FunctionLike $functionLike) : Type
- {
- if (!$type instanceof ThisType) {
- return $type;
- }
- $classReflection = $this->reflectionResolver->resolveClassReflection($functionLike);
- $objectType = $type->getStaticObjectType();
- $objectTypeClassName = $objectType->getClassName();
- if (!$classReflection instanceof ClassReflection || !$classReflection->isClass()) {
- return $type;
- }
- if ($classReflection->getName() === $objectTypeClassName) {
- return $type;
- }
- return new MixedType();
- }
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Expr\ArrowFunction $functionLike
- */
- private function resolveTypeWithVoidHandling($functionLike, Type $resolvedType) : Type
- {
- if ($resolvedType->isVoid()->yes()) {
- if ($functionLike instanceof ArrowFunction) {
- return new MixedType();
- }
- $hasReturnValue = (bool) $this->betterNodeFinder->findFirstInFunctionLikeScoped($functionLike, static function (Node $subNode) : bool {
- if (!$subNode instanceof Return_) {
- // yield return is handled on speicific rule: AddReturnTypeDeclarationFromYieldsRector
- return $subNode instanceof Yield_;
- }
- return $subNode->expr instanceof Expr;
- });
- if ($hasReturnValue) {
- return new MixedType();
- }
- }
- if ($resolvedType instanceof UnionType) {
- $benevolentUnionTypeIntegerType = $this->resolveBenevolentUnionTypeInteger($functionLike, $resolvedType);
- if ($benevolentUnionTypeIntegerType->isInteger()->yes()) {
- return $benevolentUnionTypeIntegerType;
- }
- }
- return $resolvedType;
- }
- /**
- * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure|\PhpParser\Node\Expr\ArrowFunction $functionLike
- */
- private function resolveBenevolentUnionTypeInteger($functionLike, UnionType $unionType) : Type
- {
- $types = $unionType->getTypes();
- $countTypes = \count($types);
- if ($countTypes !== 2) {
- return $unionType;
- }
- if (!($types[0]->isInteger()->yes() && $types[1]->isString()->yes())) {
- return $unionType;
- }
- if (!$functionLike instanceof ArrowFunction) {
- $returns = $this->betterNodeFinder->findInstancesOfInFunctionLikeScoped($functionLike, Return_::class);
- $returnsWithExpr = \array_filter($returns, static function (Return_ $return) : bool {
- return $return->expr instanceof Expr;
- });
- } else {
- $returns = $functionLike->getStmts();
- $returnsWithExpr = $returns;
- }
- if ($returns !== $returnsWithExpr) {
- return $unionType;
- }
- if ($returnsWithExpr === []) {
- return $unionType;
- }
- foreach ($returnsWithExpr as $returnWithExpr) {
- /** @var Expr $expr */
- $expr = $returnWithExpr->expr;
- $type = $this->nodeTypeResolver->getNativeType($expr);
- if (!$type instanceof BenevolentUnionType) {
- return $unionType;
- }
- }
- return $types[0];
- }
- private function isStaticType(Type $type) : bool
- {
- if (!$type instanceof TypeWithClassName) {
- return \false;
- }
- return $type->getClassName() === ObjectReference::STATIC;
- }
- private function resolveUnionStaticTypes(UnionType $unionType, bool $isSupportedStaticReturnType) : ?\PHPStan\Type\UnionType
- {
- $resolvedTypes = [];
- $hasStatic = \false;
- foreach ($unionType->getTypes() as $unionedType) {
- if ($this->isStaticType($unionedType)) {
- /** @var FullyQualifiedObjectType $unionedType */
- $classReflection = $this->reflectionProvider->getClass($unionedType->getClassName());
- $resolvedTypes[] = new ThisType($classReflection);
- $hasStatic = \true;
- continue;
- }
- $resolvedTypes[] = $unionedType;
- }
- if (!$hasStatic) {
- return $unionType;
- }
- // has static, but it is not supported
- if (!$isSupportedStaticReturnType) {
- return null;
- }
- return new UnionType($resolvedTypes);
- }
- private function resolveStaticType(bool $isSupportedStaticReturnType, TypeWithClassName $typeWithClassName) : ?ThisType
- {
- if (!$isSupportedStaticReturnType) {
- return null;
- }
- $classReflection = $typeWithClassName->getClassReflection();
- if (!$classReflection instanceof ClassReflection) {
- throw new ShouldNotHappenException();
- }
- return new ThisType($classReflection);
+ return $this->typeNormalizer->normalizeArrayTypeAndArrayNever($originalType);
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/ReturnTypeInferer/ReturnedNodesReturnTypeInfererTypeInferer.php b/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/ReturnTypeInferer/ReturnedNodesReturnTypeInfererTypeInferer.php
index f5f6875c5..9e81c1fd9 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/ReturnTypeInferer/ReturnedNodesReturnTypeInfererTypeInferer.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/ReturnTypeInferer/ReturnedNodesReturnTypeInfererTypeInferer.php
@@ -3,19 +3,17 @@
declare (strict_types=1);
namespace Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
-use PhpParser\Node;
use PhpParser\Node\Expr;
-use PhpParser\Node\FunctionLike;
+use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Stmt\ClassMethod;
-use PhpParser\Node\Stmt\Return_;
-use PhpParser\NodeTraverser;
+use PhpParser\Node\Stmt\Function_;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Type\MixedType;
use PHPStan\Type\Type;
use PHPStan\Type\VoidType;
use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
-use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
+use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\Reflection\ReflectionResolver;
use Rector\TypeDeclaration\TypeInferer\SilentVoidResolver;
use Rector\TypeDeclaration\TypeInferer\SplArrayFixedTypeNarrower;
@@ -31,14 +29,14 @@ final class ReturnedNodesReturnTypeInfererTypeInferer
private $silentVoidResolver;
/**
* @readonly
- * @var \Rector\NodeTypeResolver\NodeTypeResolver
+ * @var \Rector\PhpParser\Node\BetterNodeFinder
*/
- private $nodeTypeResolver;
+ private $betterNodeFinder;
/**
* @readonly
- * @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser
+ * @var \Rector\NodeTypeResolver\NodeTypeResolver
*/
- private $simpleCallableNodeTraverser;
+ private $nodeTypeResolver;
/**
* @readonly
* @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
@@ -54,76 +52,48 @@ final class ReturnedNodesReturnTypeInfererTypeInferer
* @var \Rector\Reflection\ReflectionResolver
*/
private $reflectionResolver;
- public function __construct(SilentVoidResolver $silentVoidResolver, NodeTypeResolver $nodeTypeResolver, SimpleCallableNodeTraverser $simpleCallableNodeTraverser, TypeFactory $typeFactory, SplArrayFixedTypeNarrower $splArrayFixedTypeNarrower, ReflectionResolver $reflectionResolver)
+ public function __construct(SilentVoidResolver $silentVoidResolver, BetterNodeFinder $betterNodeFinder, NodeTypeResolver $nodeTypeResolver, TypeFactory $typeFactory, SplArrayFixedTypeNarrower $splArrayFixedTypeNarrower, ReflectionResolver $reflectionResolver)
{
$this->silentVoidResolver = $silentVoidResolver;
+ $this->betterNodeFinder = $betterNodeFinder;
$this->nodeTypeResolver = $nodeTypeResolver;
- $this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->typeFactory = $typeFactory;
$this->splArrayFixedTypeNarrower = $splArrayFixedTypeNarrower;
$this->reflectionResolver = $reflectionResolver;
}
- public function inferFunctionLike(FunctionLike $functionLike) : Type
+ /**
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
+ */
+ public function inferFunctionLike($functionLike) : Type
{
$classReflection = $this->reflectionResolver->resolveClassReflection($functionLike);
- if (!$classReflection instanceof ClassReflection) {
- return new MixedType();
- }
- if ($functionLike instanceof ClassMethod && $classReflection->isInterface()) {
+ if ($functionLike instanceof ClassMethod && (!$classReflection instanceof ClassReflection || $classReflection->isInterface())) {
return new MixedType();
}
$types = [];
- $localReturnNodes = $this->collectReturns($functionLike);
+ // empty returns can have yield, use MixedType() instead
+ $localReturnNodes = $this->betterNodeFinder->findReturnsScoped($functionLike);
if ($localReturnNodes === []) {
- return $this->resolveNoLocalReturnNodes($classReflection, $functionLike);
+ return new MixedType();
}
+ $hasVoid = \false;
foreach ($localReturnNodes as $localReturnNode) {
- $returnedExprType = $localReturnNode->expr instanceof Expr ? $this->nodeTypeResolver->getNativeType($localReturnNode->expr) : new VoidType();
+ if (!$localReturnNode->expr instanceof Expr) {
+ $hasVoid = \true;
+ $types[] = new VoidType();
+ continue;
+ }
+ $returnedExprType = $this->nodeTypeResolver->getNativeType($localReturnNode->expr);
$types[] = $this->splArrayFixedTypeNarrower->narrow($returnedExprType);
}
- if ($this->silentVoidResolver->hasSilentVoid($functionLike)) {
+ if (!$hasVoid && $this->silentVoidResolver->hasSilentVoid($functionLike)) {
$types[] = new VoidType();
}
- return $this->typeFactory->createMixedPassedOrUnionTypeAndKeepConstant($types);
- }
- /**
- * @return Return_[]
- */
- private function collectReturns(FunctionLike $functionLike) : array
- {
- $returns = [];
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $functionLike->getStmts(), static function (Node $node) use(&$returns) : ?int {
- // skip Return_ nodes in nested functions or switch statements
- if ($node instanceof FunctionLike) {
- return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
- }
- if (!$node instanceof Return_) {
- return null;
- }
- $returns[] = $node;
- return null;
- });
- return $returns;
- }
- /**
- * @return \PHPStan\Type\VoidType|\PHPStan\Type\MixedType
- */
- private function resolveNoLocalReturnNodes(ClassReflection $classReflection, FunctionLike $functionLike)
- {
- // void type
- if (!$this->isAbstractMethod($classReflection, $functionLike)) {
- return new VoidType();
- }
- return new MixedType();
- }
- private function isAbstractMethod(ClassReflection $classReflection, FunctionLike $functionLike) : bool
- {
- if ($functionLike instanceof ClassMethod && $functionLike->isAbstract()) {
- return \true;
- }
- if (!$classReflection->isClass()) {
- return \false;
+ $returnType = $this->typeFactory->createMixedPassedOrUnionTypeAndKeepConstant($types);
+ // only void?
+ if ($returnType->isVoid()->yes()) {
+ return new MixedType();
}
- return $classReflection->isAbstract();
+ return $returnType;
}
}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/SilentVoidResolver.php b/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/SilentVoidResolver.php
index db367d0aa..1ab3fb983 100644
--- a/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/SilentVoidResolver.php
+++ b/vendor/rector/rector/rules/TypeDeclaration/TypeInferer/SilentVoidResolver.php
@@ -80,13 +80,12 @@ public function hasExclusiveVoid($functionLike) : bool
if ($classReflection instanceof ClassReflection && $classReflection->isInterface()) {
return \false;
}
- if ($this->betterNodeFinder->hasInstancesOfInFunctionLikeScoped($functionLike, [Yield_::class, YieldFrom::class])) {
- return \false;
- }
- $return = $this->betterNodeFinder->findFirstInFunctionLikeScoped($functionLike, static function (Node $node) : bool {
- return $node instanceof Return_ && $node->expr instanceof Expr;
+ return !(bool) $this->betterNodeFinder->findFirstInFunctionLikeScoped($functionLike, function (Node $subNode) : bool {
+ if ($subNode instanceof Yield_ || $subNode instanceof YieldFrom) {
+ return \true;
+ }
+ return $subNode instanceof Return_ && $subNode->expr instanceof Expr;
});
- return !$return instanceof Return_;
}
public function hasSilentVoid(FunctionLike $functionLike) : bool
{
diff --git a/vendor/rector/rector/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromArg.php b/vendor/rector/rector/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromArg.php
new file mode 100644
index 000000000..b8ed12cbf
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromArg.php
@@ -0,0 +1,64 @@
+
+ * @readonly
+ */
+ private $callLikePosition;
+ /**
+ * @var int<0, max>
+ * @readonly
+ */
+ private $functionLikePosition;
+ /**
+ * @param int<0, max> $callLikePosition
+ * @param int<0, max> $functionLikePosition
+ */
+ public function __construct(string $className, string $methodName, int $callLikePosition, int $functionLikePosition)
+ {
+ $this->className = $className;
+ $this->methodName = $methodName;
+ $this->callLikePosition = $callLikePosition;
+ $this->functionLikePosition = $functionLikePosition;
+ RectorAssert::className($className);
+ }
+ public function getObjectType() : ObjectType
+ {
+ return new ObjectType($this->className);
+ }
+ public function getMethodName() : string
+ {
+ return $this->methodName;
+ }
+ /**
+ * @return int<0, max>
+ */
+ public function getCallLikePosition() : int
+ {
+ return $this->callLikePosition;
+ }
+ /**
+ * @return int<0, max>
+ */
+ public function getFunctionLikePosition() : int
+ {
+ return $this->functionLikePosition;
+ }
+}
diff --git a/vendor/rector/rector/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromObject.php b/vendor/rector/rector/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromObject.php
new file mode 100644
index 000000000..b9ad8b0f6
--- /dev/null
+++ b/vendor/rector/rector/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromObject.php
@@ -0,0 +1,64 @@
+
+ * @readonly
+ */
+ private $callLikePosition;
+ /**
+ * @var int<0, max>
+ * @readonly
+ */
+ private $functionLikePosition;
+ /**
+ * @param int<0, max> $callLikePosition
+ * @param int<0, max> $functionLikePosition
+ */
+ public function __construct(string $className, string $methodName, int $callLikePosition, int $functionLikePosition)
+ {
+ $this->className = $className;
+ $this->methodName = $methodName;
+ $this->callLikePosition = $callLikePosition;
+ $this->functionLikePosition = $functionLikePosition;
+ RectorAssert::className($className);
+ }
+ public function getObjectType() : ObjectType
+ {
+ return new ObjectType($this->className);
+ }
+ public function getMethodName() : string
+ {
+ return $this->methodName;
+ }
+ /**
+ * @return int<0, max>
+ */
+ public function getCallLikePosition() : int
+ {
+ return $this->callLikePosition;
+ }
+ /**
+ * @return int<0, max>
+ */
+ public function getFunctionLikePosition() : int
+ {
+ return $this->functionLikePosition;
+ }
+}
diff --git a/vendor/rector/rector/rules/Visibility/Rector/ClassConst/ChangeConstantVisibilityRector.php b/vendor/rector/rector/rules/Visibility/Rector/ClassConst/ChangeConstantVisibilityRector.php
index 6259969b7..674dc07d1 100644
--- a/vendor/rector/rector/rules/Visibility/Rector/ClassConst/ChangeConstantVisibilityRector.php
+++ b/vendor/rector/rector/rules/Visibility/Rector/ClassConst/ChangeConstantVisibilityRector.php
@@ -4,7 +4,8 @@
namespace Rector\Visibility\Rector\ClassConst;
use PhpParser\Node;
-use PhpParser\Node\Stmt\ClassConst;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\Interface_;
use Rector\Contract\Rector\ConfigurableRectorInterface;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\Rector\AbstractRector;
@@ -12,7 +13,7 @@
use Rector\Visibility\ValueObject\ChangeConstantVisibility;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Visibility\Rector\ClassConst\ChangeConstantVisibilityRector\ChangeConstantVisibilityRectorTest
*/
@@ -62,21 +63,27 @@ class MyClass extends FrameworkClass
*/
public function getNodeTypes() : array
{
- return [ClassConst::class];
+ return [Class_::class, Interface_::class];
}
/**
- * @param ClassConst $node
+ * @param Class_|Interface_ $node
*/
public function refactor(Node $node) : ?Node
{
+ $hasChanged = \false;
foreach ($this->classConstantVisibilityChanges as $classConstantVisibilityChange) {
- if (!$this->isName($node, $classConstantVisibilityChange->getConstant())) {
- continue;
- }
if (!$this->isObjectType($node, $classConstantVisibilityChange->getObjectType())) {
continue;
}
- $this->visibilityManipulator->changeNodeVisibility($node, $classConstantVisibilityChange->getVisibility());
+ foreach ($node->getConstants() as $classConst) {
+ if (!$this->isName($classConst, $classConstantVisibilityChange->getConstant())) {
+ continue;
+ }
+ $this->visibilityManipulator->changeNodeVisibility($classConst, $classConstantVisibilityChange->getVisibility());
+ $hasChanged = \true;
+ }
+ }
+ if ($hasChanged) {
return $node;
}
return null;
diff --git a/vendor/rector/rector/rules/Visibility/Rector/ClassMethod/ChangeMethodVisibilityRector.php b/vendor/rector/rector/rules/Visibility/Rector/ClassMethod/ChangeMethodVisibilityRector.php
index 44b2d350e..0275b2572 100644
--- a/vendor/rector/rector/rules/Visibility/Rector/ClassMethod/ChangeMethodVisibilityRector.php
+++ b/vendor/rector/rector/rules/Visibility/Rector/ClassMethod/ChangeMethodVisibilityRector.php
@@ -14,7 +14,7 @@
use Rector\Visibility\ValueObject\ChangeMethodVisibility;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Visibility\Rector\ClassMethod\ChangeMethodVisibilityRector\ChangeMethodVisibilityRectorTest
*/
diff --git a/vendor/rector/rector/src/Application/ApplicationFileProcessor.php b/vendor/rector/rector/src/Application/ApplicationFileProcessor.php
index 80f94dcc0..ce95b3bdd 100644
--- a/vendor/rector/rector/src/Application/ApplicationFileProcessor.php
+++ b/vendor/rector/rector/src/Application/ApplicationFileProcessor.php
@@ -3,13 +3,16 @@
declare (strict_types=1);
namespace Rector\Application;
-use RectorPrefix202405\Nette\Utils\FileSystem as UtilsFileSystem;
+use RectorPrefix202410\Nette\Utils\FileSystem as UtilsFileSystem;
+use PHPStan\Parser\ParserErrorsException;
+use Rector\Application\Provider\CurrentFileProvider;
use Rector\Caching\Detector\ChangedFilesDetector;
use Rector\Configuration\Option;
use Rector\Configuration\Parameter\SimpleParameterProvider;
-use Rector\Configuration\VendorMissAnalyseGuard;
+use Rector\FileSystem\FilesFinder;
use Rector\Parallel\Application\ParallelFileProcessor;
-use Rector\Provider\CurrentFileProvider;
+use Rector\PhpParser\Parser\ParserErrors;
+use Rector\Reporting\MissConfigurationReporter;
use Rector\Testing\PHPUnit\StaticPHPUnitEnvironment;
use Rector\Util\ArrayParametersMerger;
use Rector\ValueObject\Application\File;
@@ -18,12 +21,11 @@
use Rector\ValueObject\FileProcessResult;
use Rector\ValueObject\ProcessResult;
use Rector\ValueObject\Reporting\FileDiff;
-use Rector\ValueObjectFactory\Application\FileFactory;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
-use RectorPrefix202405\Symplify\EasyParallel\CpuCoreCountProvider;
-use RectorPrefix202405\Symplify\EasyParallel\Exception\ParallelShouldNotHappenException;
-use RectorPrefix202405\Symplify\EasyParallel\ScheduleFactory;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symplify\EasyParallel\CpuCoreCountProvider;
+use RectorPrefix202410\Symplify\EasyParallel\Exception\ParallelShouldNotHappenException;
+use RectorPrefix202410\Symplify\EasyParallel\ScheduleFactory;
use Throwable;
final class ApplicationFileProcessor
{
@@ -34,9 +36,9 @@ final class ApplicationFileProcessor
private $symfonyStyle;
/**
* @readonly
- * @var \Rector\ValueObjectFactory\Application\FileFactory
+ * @var \Rector\FileSystem\FilesFinder
*/
- private $fileFactory;
+ private $filesFinder;
/**
* @readonly
* @var \Rector\Parallel\Application\ParallelFileProcessor
@@ -59,7 +61,7 @@ final class ApplicationFileProcessor
private $changedFilesDetector;
/**
* @readonly
- * @var \Rector\Provider\CurrentFileProvider
+ * @var \Rector\Application\Provider\CurrentFileProvider
*/
private $currentFileProvider;
/**
@@ -74,9 +76,9 @@ final class ApplicationFileProcessor
private $arrayParametersMerger;
/**
* @readonly
- * @var \Rector\Configuration\VendorMissAnalyseGuard
+ * @var \Rector\Reporting\MissConfigurationReporter
*/
- private $vendorMissAnalyseGuard;
+ private $missConfigurationReporter;
/**
* @var string
*/
@@ -85,10 +87,10 @@ final class ApplicationFileProcessor
* @var SystemError[]
*/
private $systemErrors = [];
- public function __construct(SymfonyStyle $symfonyStyle, FileFactory $fileFactory, ParallelFileProcessor $parallelFileProcessor, ScheduleFactory $scheduleFactory, CpuCoreCountProvider $cpuCoreCountProvider, ChangedFilesDetector $changedFilesDetector, CurrentFileProvider $currentFileProvider, \Rector\Application\FileProcessor $fileProcessor, ArrayParametersMerger $arrayParametersMerger, VendorMissAnalyseGuard $vendorMissAnalyseGuard)
+ public function __construct(SymfonyStyle $symfonyStyle, FilesFinder $filesFinder, ParallelFileProcessor $parallelFileProcessor, ScheduleFactory $scheduleFactory, CpuCoreCountProvider $cpuCoreCountProvider, ChangedFilesDetector $changedFilesDetector, CurrentFileProvider $currentFileProvider, \Rector\Application\FileProcessor $fileProcessor, ArrayParametersMerger $arrayParametersMerger, MissConfigurationReporter $missConfigurationReporter)
{
$this->symfonyStyle = $symfonyStyle;
- $this->fileFactory = $fileFactory;
+ $this->filesFinder = $filesFinder;
$this->parallelFileProcessor = $parallelFileProcessor;
$this->scheduleFactory = $scheduleFactory;
$this->cpuCoreCountProvider = $cpuCoreCountProvider;
@@ -96,15 +98,13 @@ public function __construct(SymfonyStyle $symfonyStyle, FileFactory $fileFactory
$this->currentFileProvider = $currentFileProvider;
$this->fileProcessor = $fileProcessor;
$this->arrayParametersMerger = $arrayParametersMerger;
- $this->vendorMissAnalyseGuard = $vendorMissAnalyseGuard;
+ $this->missConfigurationReporter = $missConfigurationReporter;
}
public function run(Configuration $configuration, InputInterface $input) : ProcessResult
{
- $filePaths = $this->fileFactory->findFilesInPaths($configuration->getPaths(), $configuration);
- if ($this->vendorMissAnalyseGuard->isVendorAnalyzed($filePaths)) {
- $this->symfonyStyle->warning(\sprintf('Rector has detected a "/vendor" directory in your configured paths. If this is Composer\'s vendor directory, this is not necessary as it will be autoloaded. Scanning the Composer vendor directory will cause Rector to run much slower and possibly with errors.%sRemove "/vendor" from Rector paths and run again.', \PHP_EOL . \PHP_EOL));
- \sleep(3);
- }
+ $filePaths = $this->filesFinder->findFilesInPaths($configuration->getPaths(), $configuration);
+ $this->missConfigurationReporter->reportVendorInPaths($filePaths);
+ $this->missConfigurationReporter->reportStartWithShortOpenTag();
// no files found
if ($filePaths === []) {
return new ProcessResult([], []);
@@ -133,7 +133,7 @@ public function run(Configuration $configuration, InputInterface $input) : Proce
$preFileCallback = null;
}
if ($configuration->isParallel()) {
- $processResult = $this->runParallel($filePaths, $configuration, $input, $postFileCallback);
+ $processResult = $this->runParallel($filePaths, $input, $postFileCallback);
} else {
$processResult = $this->processFiles($filePaths, $configuration, $preFileCallback, $postFileCallback);
}
@@ -197,6 +197,9 @@ private function resolveSystemError(Throwable $throwable, string $filePath) : Sy
} else {
$errorMessage .= 'Run Rector with "--debug" option and post the report here: https://github.com/rectorphp/rector/issues/new';
}
+ if ($throwable instanceof ParserErrorsException) {
+ $throwable = new ParserErrors($throwable);
+ }
return new SystemError($errorMessage, $filePath, $throwable->getLine());
}
/**
@@ -226,7 +229,7 @@ private function restoreErrorHandler() : void
* @param string[] $filePaths
* @param callable(int $stepCount): void $postFileCallback
*/
- private function runParallel(array $filePaths, Configuration $configuration, InputInterface $input, callable $postFileCallback) : ProcessResult
+ private function runParallel(array $filePaths, InputInterface $input, callable $postFileCallback) : ProcessResult
{
$schedule = $this->scheduleFactory->create($this->cpuCoreCountProvider->provide(), SimpleParameterProvider::provideIntParameter(Option::PARALLEL_JOB_SIZE), SimpleParameterProvider::provideIntParameter(Option::PARALLEL_MAX_NUMBER_OF_PROCESSES), $filePaths);
$mainScript = $this->resolveCalledRectorBinary();
@@ -234,7 +237,7 @@ private function runParallel(array $filePaths, Configuration $configuration, Inp
throw new ParallelShouldNotHappenException('[parallel] Main script was not found');
}
// mimics see https://github.com/phpstan/phpstan-src/commit/9124c66dcc55a222e21b1717ba5f60771f7dda92#diff-387b8f04e0db7a06678eb52ce0c0d0aff73e0d7d8fc5df834d0a5fbec198e5daR139
- return $this->parallelFileProcessor->process($schedule, $mainScript, $postFileCallback, $input, $configuration);
+ return $this->parallelFileProcessor->process($schedule, $mainScript, $postFileCallback, $input);
}
/**
* Path to called "rector" binary file, e.g. "vendor/bin/rector" returns "vendor/bin/rector" This is needed to re-call the
diff --git a/vendor/rector/rector/src/Application/FileProcessor.php b/vendor/rector/rector/src/Application/FileProcessor.php
index 37bb3186d..ec6028a42 100644
--- a/vendor/rector/rector/src/Application/FileProcessor.php
+++ b/vendor/rector/rector/src/Application/FileProcessor.php
@@ -3,8 +3,10 @@
declare (strict_types=1);
namespace Rector\Application;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\Strings;
use PHPStan\AnalysedCodeException;
+use PHPStan\Parser\ParserErrorsException;
use Rector\Caching\Detector\ChangedFilesDetector;
use Rector\ChangesReporting\ValueObjectFactory\ErrorFactory;
use Rector\ChangesReporting\ValueObjectFactory\FileDiffFactory;
@@ -12,8 +14,9 @@
use Rector\FileSystem\FilePathHelper;
use Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator;
use Rector\PhpParser\NodeTraverser\RectorNodeTraverser;
+use Rector\PhpParser\Parser\ParserErrors;
use Rector\PhpParser\Parser\RectorParser;
-use Rector\PhpParser\Printer\FormatPerservingPrinter;
+use Rector\PhpParser\Printer\BetterStandardPrinter;
use Rector\PostRector\Application\PostFileProcessor;
use Rector\Testing\PHPUnit\StaticPHPUnitEnvironment;
use Rector\ValueObject\Application\File;
@@ -21,15 +24,15 @@
use Rector\ValueObject\Error\SystemError;
use Rector\ValueObject\FileProcessResult;
use Rector\ValueObject\Reporting\FileDiff;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
use Throwable;
final class FileProcessor
{
/**
* @readonly
- * @var \Rector\PhpParser\Printer\FormatPerservingPrinter
+ * @var \Rector\PhpParser\Printer\BetterStandardPrinter
*/
- private $formatPerservingPrinter;
+ private $betterStandardPrinter;
/**
* @readonly
* @var \Rector\PhpParser\NodeTraverser\RectorNodeTraverser
@@ -80,9 +83,9 @@ final class FileProcessor
* @see https://regex101.com/r/llm7XZ/1
*/
private const OPEN_TAG_SPACED_REGEX = '#^[ \\t]+<\\?php#m';
- public function __construct(FormatPerservingPrinter $formatPerservingPrinter, RectorNodeTraverser $rectorNodeTraverser, SymfonyStyle $symfonyStyle, FileDiffFactory $fileDiffFactory, ChangedFilesDetector $changedFilesDetector, ErrorFactory $errorFactory, FilePathHelper $filePathHelper, PostFileProcessor $postFileProcessor, RectorParser $rectorParser, NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator)
+ public function __construct(BetterStandardPrinter $betterStandardPrinter, RectorNodeTraverser $rectorNodeTraverser, SymfonyStyle $symfonyStyle, FileDiffFactory $fileDiffFactory, ChangedFilesDetector $changedFilesDetector, ErrorFactory $errorFactory, FilePathHelper $filePathHelper, PostFileProcessor $postFileProcessor, RectorParser $rectorParser, NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator)
{
- $this->formatPerservingPrinter = $formatPerservingPrinter;
+ $this->betterStandardPrinter = $betterStandardPrinter;
$this->rectorNodeTraverser = $rectorNodeTraverser;
$this->symfonyStyle = $symfonyStyle;
$this->fileDiffFactory = $fileDiffFactory;
@@ -109,7 +112,7 @@ public function processFile(File $file, Configuration $configuration) : FileProc
$file->changeHasChanged(\false);
$newStmts = $this->rectorNodeTraverser->traverse($file->getNewStmts());
// apply post rectors
- $postNewStmts = $this->postFileProcessor->traverse($newStmts, $filePath);
+ $postNewStmts = $this->postFileProcessor->traverse($newStmts, $file);
// this is needed for new tokens added in "afterTraverse()"
$file->changeNewStmts($postNewStmts);
// 3. print to file or string
@@ -149,6 +152,9 @@ private function parseFileAndDecorateNodes(File $file) : ?SystemError
throw $throwable;
}
$relativeFilePath = $this->filePathHelper->relativePath($file->getFilePath());
+ if ($throwable instanceof ParserErrorsException) {
+ $throwable = new ParserErrors($throwable);
+ }
return new SystemError($throwable->getMessage(), $relativeFilePath, $throwable->getLine());
}
return null;
@@ -156,7 +162,7 @@ private function parseFileAndDecorateNodes(File $file) : ?SystemError
private function printFile(File $file, Configuration $configuration, string $filePath) : void
{
// only save to string first, no need to print to file when not needed
- $newContent = $this->formatPerservingPrinter->printParsedStmstAndTokensToString($file);
+ $newContent = $this->betterStandardPrinter->printFormatPreserving($file->getNewStmts(), $file->getOldStmts(), $file->getOldTokens());
/**
* When no diff applied, the PostRector may still change the content, that's why printing still needed
* On printing, the space may be wiped, these below check compare with original file content used to verify
@@ -186,7 +192,7 @@ private function printFile(File $file, Configuration $configuration, string $fil
if (!$file->hasChanged()) {
return;
}
- $this->formatPerservingPrinter->dumpFile($filePath, $newContent);
+ FileSystem::write($filePath, $newContent, null);
}
private function parseFileNodes(File $file) : void
{
diff --git a/vendor/rector/rector/src/Provider/CurrentFileProvider.php b/vendor/rector/rector/src/Application/Provider/CurrentFileProvider.php
similarity index 72%
rename from vendor/rector/rector/src/Provider/CurrentFileProvider.php
rename to vendor/rector/rector/src/Application/Provider/CurrentFileProvider.php
index 385d9de67..17536432d 100644
--- a/vendor/rector/rector/src/Provider/CurrentFileProvider.php
+++ b/vendor/rector/rector/src/Application/Provider/CurrentFileProvider.php
@@ -1,9 +1,12 @@
, string>
*/
- private const TAGS_TYPES_TO_NAMES = [ReturnTagValueNode::class => '@return', ParamTagValueNode::class => '@param', VarTagValueNode::class => '@var', MethodTagValueNode::class => '@method', PropertyTagValueNode::class => '@property'];
+ private const TAGS_TYPES_TO_NAMES = [ReturnTagValueNode::class => '@return', ParamTagValueNode::class => '@param', VarTagValueNode::class => '@var', MethodTagValueNode::class => '@method', PropertyTagValueNode::class => '@property', ExtendsTagValueNode::class => '@extends', ImplementsTagValueNode::class => '@implements'];
/**
* @var bool
*/
@@ -242,11 +244,11 @@ public function findOneByAnnotationClass(string $desiredClass) : ?DoctrineAnnota
* @template T of \PHPStan\PhpDocParser\Ast\Node
* @param class-string $typeToRemove
*/
- public function removeByType(string $typeToRemove) : bool
+ public function removeByType(string $typeToRemove, ?string $name = null) : bool
{
$hasChanged = \false;
$phpDocNodeTraverser = new PhpDocNodeTraverser();
- $phpDocNodeTraverser->traverseWithCallable($this->phpDocNode, '', static function (Node $node) use($typeToRemove, &$hasChanged) : ?int {
+ $phpDocNodeTraverser->traverseWithCallable($this->phpDocNode, '', static function (Node $node) use($typeToRemove, &$hasChanged, $name) : ?int {
if ($node instanceof PhpDocTagNode && $node->value instanceof $typeToRemove) {
// keep special annotation for tools
if (\strncmp($node->name, '@psalm-', \strlen('@psalm-')) === 0) {
@@ -255,6 +257,9 @@ public function removeByType(string $typeToRemove) : bool
if (\strncmp($node->name, '@phpstan-', \strlen('@phpstan-')) === 0) {
return null;
}
+ if ($name !== null && $node->value instanceof VarTagValueNode && $node->value->variableName !== '$' . \ltrim($name, '$')) {
+ return PhpDocNodeTraverser::DONT_TRAVERSE_CHILDREN;
+ }
$hasChanged = \true;
return PhpDocNodeTraverser::NODE_REMOVE;
}
@@ -294,7 +299,7 @@ public function addTagValueNode(PhpDocTagValueNode $phpDocTagValueNode) : void
}
$name = $this->resolveNameForPhpDocTagValueNode($phpDocTagValueNode);
if (!\is_string($name)) {
- return;
+ throw new ShouldNotHappenException(\sprintf('Name could not be resolved for "%s" tag value node. Complete it to %s::TAGS_TYPES_TO_NAMES constant', \get_class($phpDocTagValueNode), self::class));
}
$phpDocTagNode = new PhpDocTagNode($name, $phpDocTagValueNode);
$this->addPhpDocTagNode($phpDocTagNode);
@@ -354,22 +359,6 @@ public function getTemplateNames() : array
}
return $templateNames;
}
- /**
- * @return TemplateTagValueNode[]
- */
- public function getTemplateTagValueNodes() : array
- {
- return $this->phpDocNode->getTemplateTagValues();
- }
- /**
- * @deprecated Change doc block and print directly in the node instead
- * Should be handled by attributes of phpdoc node - if stard_and_end is missing in one of nodes, it has been changed
- *
- * @api
- */
- public function markAsChanged() : void
- {
- }
public function makeMultiLined() : void
{
$this->isSingleLine = \false;
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocInfo/TokenIteratorFactory.php b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocInfo/TokenIteratorFactory.php
index c5f903307..d06001ae4 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocInfo/TokenIteratorFactory.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocInfo/TokenIteratorFactory.php
@@ -6,7 +6,6 @@
use PHPStan\PhpDocParser\Lexer\Lexer;
use PHPStan\PhpDocParser\Parser\TokenIterator;
use Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator;
-use Rector\Util\Reflection\PrivatesAccessor;
final class TokenIteratorFactory
{
/**
@@ -14,19 +13,9 @@ final class TokenIteratorFactory
* @var \PHPStan\PhpDocParser\Lexer\Lexer
*/
private $lexer;
- /**
- * @readonly
- * @var \Rector\Util\Reflection\PrivatesAccessor
- */
- private $privatesAccessor;
- /**
- * @var string
- */
- private const INDEX = 'index';
- public function __construct(Lexer $lexer, PrivatesAccessor $privatesAccessor)
+ public function __construct(Lexer $lexer)
{
$this->lexer = $lexer;
- $this->privatesAccessor = $privatesAccessor;
}
public function create(string $content) : BetterTokenIterator
{
@@ -38,11 +27,9 @@ public function createFromTokenIterator(TokenIterator $tokenIterator) : BetterTo
if ($tokenIterator instanceof BetterTokenIterator) {
return $tokenIterator;
}
- $tokens = $this->privatesAccessor->getPrivateProperty($tokenIterator, 'tokens');
- $betterTokenIterator = new BetterTokenIterator($tokens);
- // keep original position
- $currentIndex = $this->privatesAccessor->getPrivateProperty($tokenIterator, self::INDEX);
- $this->privatesAccessor->setPrivateProperty($betterTokenIterator, self::INDEX, $currentIndex);
- return $betterTokenIterator;
+ // keep original tokens and index position
+ $tokens = $tokenIterator->getTokens();
+ $currentIndex = $tokenIterator->currentTokenIndex();
+ return new BetterTokenIterator($tokens, $currentIndex);
}
}
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php
index 477ecf93e..124514756 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\BetterPhpDocParser\PhpDocManipulator;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use Rector\BetterPhpDocParser\PhpDoc\ArrayItemNode;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocNodeMapper.php b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocNodeMapper.php
index 8291feb66..a595fde67 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocNodeMapper.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocNodeMapper.php
@@ -10,7 +10,7 @@
use Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser;
use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\CloningPhpDocNodeVisitor;
use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\ParentConnectingPhpDocNodeVisitor;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\BetterPhpDocParser\PhpDocNodeMapperTest
*/
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/BetterPhpDocParser.php b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/BetterPhpDocParser.php
index 2cd8c309b..4b5e15e9f 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/BetterPhpDocParser.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/BetterPhpDocParser.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\BetterPhpDocParser\PhpDocParser;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PHPStan\PhpDocParser\Ast\PhpDoc\GenericTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocChildNode;
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/ClassAnnotationMatcher.php b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/ClassAnnotationMatcher.php
index 6df50c7d4..ea9d264bc 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/ClassAnnotationMatcher.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/ClassAnnotationMatcher.php
@@ -50,7 +50,7 @@ public function resolveTagFullyQualifiedName(string $tag, Node $node) : string
}
$tag = \ltrim($tag, '@');
$uses = $this->useImportsResolver->resolve();
- $fullyQualifiedClass = $this->resolveFullyQualifiedClass($uses, $node, $tag, \false);
+ $fullyQualifiedClass = $this->resolveFullyQualifiedClass($uses, $node, $tag);
if ($fullyQualifiedClass === null) {
$fullyQualifiedClass = $tag;
}
@@ -58,9 +58,9 @@ public function resolveTagFullyQualifiedName(string $tag, Node $node) : string
return $fullyQualifiedClass;
}
/**
- * @param Use_[]|GroupUse[] $uses
+ * @param array $uses
*/
- private function resolveFullyQualifiedClass(array $uses, Node $node, string $tag, bool $returnNullOnUnknownClass) : ?string
+ private function resolveFullyQualifiedClass(array $uses, Node $node, string $tag) : ?string
{
$scope = $node->getAttribute(AttributeKey::SCOPE);
if ($scope instanceof Scope) {
@@ -71,7 +71,7 @@ private function resolveFullyQualifiedClass(array $uses, Node $node, string $tag
return $namespacedTag;
}
if (\strpos($tag, '\\') === \false) {
- return $this->resolveAsAliased($uses, $tag, $returnNullOnUnknownClass);
+ return $this->resolveAsAliased($uses, $tag);
}
if ($this->isPreslashedExistingClass($tag)) {
// Global or absolute Class
@@ -79,13 +79,12 @@ private function resolveFullyQualifiedClass(array $uses, Node $node, string $tag
}
}
}
- $class = $this->useImportNameMatcher->matchNameWithUses($tag, $uses);
- return $this->resolveClass($class, $returnNullOnUnknownClass);
+ return $this->useImportNameMatcher->matchNameWithUses($tag, $uses);
}
/**
- * @param Use_[]|GroupUse[] $uses
+ * @param array $uses
*/
- private function resolveAsAliased(array $uses, string $tag, bool $returnNullOnUnknownClass) : ?string
+ private function resolveAsAliased(array $uses, string $tag) : ?string
{
foreach ($uses as $use) {
$prefix = $this->useImportsResolver->resolvePrefix($use);
@@ -94,21 +93,11 @@ private function resolveAsAliased(array $uses, string $tag, bool $returnNullOnUn
continue;
}
if ($useUse->alias->toString() === $tag) {
- $class = $prefix . $useUse->name->toString();
- return $this->resolveClass($class, $returnNullOnUnknownClass);
+ return $prefix . $useUse->name->toString();
}
}
}
- $class = $this->useImportNameMatcher->matchNameWithUses($tag, $uses);
- return $this->resolveClass($class, $returnNullOnUnknownClass);
- }
- private function resolveClass(?string $class, bool $returnNullOnUnknownClass) : ?string
- {
- if ($class === null) {
- return null;
- }
- $resolvedClass = $this->reflectionProvider->hasClass($class) ? $class : null;
- return $returnNullOnUnknownClass ? $resolvedClass : $class;
+ return $this->useImportNameMatcher->matchNameWithUses($tag, $uses);
}
private function isPreslashedExistingClass(string $tag) : bool
{
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/DoctrineAnnotationDecorator.php b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/DoctrineAnnotationDecorator.php
index 00e04c197..836086f7c 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/DoctrineAnnotationDecorator.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/PhpDocParser/DoctrineAnnotationDecorator.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\BetterPhpDocParser\PhpDocParser;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PHPStan\PhpDocParser\Ast\PhpDoc\GenericTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocChildNode;
@@ -21,7 +21,7 @@
use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey;
use Rector\BetterPhpDocParser\ValueObject\StartAndEnd;
use Rector\Util\StringUtils;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class DoctrineAnnotationDecorator implements PhpDocNodeDecoratorInterface
{
/**
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/Printer/DocBlockInliner.php b/vendor/rector/rector/src/BetterPhpDocParser/Printer/DocBlockInliner.php
index 4e92f1a22..6e02d9be2 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/Printer/DocBlockInliner.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/Printer/DocBlockInliner.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\BetterPhpDocParser\Printer;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
final class DocBlockInliner
{
/**
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/Printer/PhpDocInfoPrinter.php b/vendor/rector/rector/src/BetterPhpDocParser/Printer/PhpDocInfoPrinter.php
index 089a86b2b..2f616e3ef 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/Printer/PhpDocInfoPrinter.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/Printer/PhpDocInfoPrinter.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\BetterPhpDocParser\Printer;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Comment;
use PhpParser\Node\Stmt\InlineHTML;
use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode;
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/ValueObject/Parser/BetterTokenIterator.php b/vendor/rector/rector/src/BetterPhpDocParser/ValueObject/Parser/BetterTokenIterator.php
index 703c9f66c..8946693a2 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/ValueObject/Parser/BetterTokenIterator.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/ValueObject/Parser/BetterTokenIterator.php
@@ -5,29 +5,17 @@
use PHPStan\PhpDocParser\Parser\TokenIterator;
use Rector\Exception\ShouldNotHappenException;
-use Rector\Util\Reflection\PrivatesAccessor;
final class BetterTokenIterator extends TokenIterator
{
- /**
- * @var string
- */
- private const TOKENS = 'tokens';
- /**
- * @var string
- */
- private const INDEX = 'index';
/**
* @param array $tokens
*/
public function __construct(array $tokens, int $index = 0)
{
- $privatesAccessor = new PrivatesAccessor();
if ($tokens === []) {
- $privatesAccessor->setPrivateProperty($this, self::TOKENS, []);
- $privatesAccessor->setPrivateProperty($this, self::INDEX, 0);
- } else {
- parent::__construct($tokens, $index);
+ $index = 0;
}
+ parent::__construct($tokens, $index);
}
/**
* @param int[] $types
diff --git a/vendor/rector/rector/src/BetterPhpDocParser/ValueObject/PhpDoc/DoctrineAnnotation/CurlyListNode.php b/vendor/rector/rector/src/BetterPhpDocParser/ValueObject/PhpDoc/DoctrineAnnotation/CurlyListNode.php
index cc41d1ff1..f118cc0ad 100644
--- a/vendor/rector/rector/src/BetterPhpDocParser/ValueObject/PhpDoc/DoctrineAnnotation/CurlyListNode.php
+++ b/vendor/rector/rector/src/BetterPhpDocParser/ValueObject/PhpDoc/DoctrineAnnotation/CurlyListNode.php
@@ -5,7 +5,7 @@
use Rector\BetterPhpDocParser\PhpDoc\ArrayItemNode;
use Stringable;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class CurlyListNode extends \Rector\BetterPhpDocParser\ValueObject\PhpDoc\DoctrineAnnotation\AbstractValuesAwareNode
{
/**
diff --git a/vendor/rector/rector/src/Bootstrap/RectorConfigsResolver.php b/vendor/rector/rector/src/Bootstrap/RectorConfigsResolver.php
index cb844b6c0..6cd353c78 100644
--- a/vendor/rector/rector/src/Bootstrap/RectorConfigsResolver.php
+++ b/vendor/rector/rector/src/Bootstrap/RectorConfigsResolver.php
@@ -4,32 +4,15 @@
namespace Rector\Bootstrap;
use Rector\ValueObject\Bootstrap\BootstrapConfigs;
-use RectorPrefix202405\Symfony\Component\Console\Input\ArgvInput;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Symfony\Component\Console\Input\ArgvInput;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class RectorConfigsResolver
{
public function provide() : BootstrapConfigs
{
$argvInput = new ArgvInput();
$mainConfigFile = $this->resolveFromInputWithFallback($argvInput, 'rector.php');
- $rectorRecipeConfigFile = $this->resolveRectorRecipeConfig($argvInput);
- $configFiles = [];
- if ($rectorRecipeConfigFile !== null) {
- $configFiles[] = $rectorRecipeConfigFile;
- }
- return new BootstrapConfigs($mainConfigFile, $configFiles);
- }
- private function resolveRectorRecipeConfig(ArgvInput $argvInput) : ?string
- {
- if ($argvInput->getFirstArgument() !== 'generate') {
- return null;
- }
- // autoload rector recipe file if present, just for \Rector\RectorGenerator\Command\GenerateCommand
- $rectorRecipeFilePath = \getcwd() . '/rector-recipe.php';
- if (!\file_exists($rectorRecipeFilePath)) {
- return null;
- }
- return $rectorRecipeFilePath;
+ return new BootstrapConfigs($mainConfigFile, []);
}
private function resolveFromInput(ArgvInput $argvInput) : ?string
{
diff --git a/vendor/rector/rector/src/Bridge/SetProviderCollector.php b/vendor/rector/rector/src/Bridge/SetProviderCollector.php
new file mode 100644
index 000000000..8a6d3adf9
--- /dev/null
+++ b/vendor/rector/rector/src/Bridge/SetProviderCollector.php
@@ -0,0 +1,60 @@
+setProviders = \array_merge($setProviders, $extraSetProviders);
+ }
+ /**
+ * @return array
+ */
+ public function provide() : array
+ {
+ return $this->setProviders;
+ }
+ /**
+ * @return array
+ */
+ public function provideSets() : array
+ {
+ $sets = [];
+ foreach ($this->setProviders as $setProvider) {
+ $sets = \array_merge($sets, $setProvider->provide());
+ }
+ return $sets;
+ }
+}
diff --git a/vendor/rector/rector/src/Bridge/SetRectorsResolver.php b/vendor/rector/rector/src/Bridge/SetRectorsResolver.php
new file mode 100644
index 000000000..dfd5634d3
--- /dev/null
+++ b/vendor/rector/rector/src/Bridge/SetRectorsResolver.php
@@ -0,0 +1,35 @@
+>
+ */
+ public function resolveFromFilePath(string $configFilePath) : array
+ {
+ Assert::fileExists($configFilePath);
+ $rectorConfig = new RectorConfig();
+ /** @var callable $configCallable */
+ $configCallable = (require $configFilePath);
+ $configCallable($rectorConfig);
+ // get tagged class-names
+ $tagsReflectionProperty = new ReflectionProperty($rectorConfig, 'tags');
+ $tagsReflectionProperty->setAccessible(\true);
+ $tags = $tagsReflectionProperty->getValue($rectorConfig);
+ $rectorClasses = $tags[RectorInterface::class] ?? [];
+ \sort($rectorClasses);
+ return \array_unique($rectorClasses);
+ }
+}
diff --git a/vendor/rector/rector/src/Caching/Cache.php b/vendor/rector/rector/src/Caching/Cache.php
index 1bebddbb3..c3f4c7983 100644
--- a/vendor/rector/rector/src/Caching/Cache.php
+++ b/vendor/rector/rector/src/Caching/Cache.php
@@ -4,6 +4,7 @@
namespace Rector\Caching;
use Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface;
+use Rector\Caching\Enum\CacheKey;
final class Cache
{
/**
@@ -16,6 +17,7 @@ public function __construct(CacheStorageInterface $cacheStorage)
$this->cacheStorage = $cacheStorage;
}
/**
+ * @param CacheKey::* $variableKey
* @return mixed|null
*/
public function load(string $key, string $variableKey)
@@ -23,6 +25,7 @@ public function load(string $key, string $variableKey)
return $this->cacheStorage->load($key, $variableKey);
}
/**
+ * @param CacheKey::* $variableKey
* @param mixed $data
*/
public function save(string $key, string $variableKey, $data) : void
diff --git a/vendor/rector/rector/src/Caching/CacheFactory.php b/vendor/rector/rector/src/Caching/CacheFactory.php
index 713e165c9..90a716485 100644
--- a/vendor/rector/rector/src/Caching/CacheFactory.php
+++ b/vendor/rector/rector/src/Caching/CacheFactory.php
@@ -7,7 +7,7 @@
use Rector\Caching\ValueObject\Storage\MemoryCacheStorage;
use Rector\Configuration\Option;
use Rector\Configuration\Parameter\SimpleParameterProvider;
-use RectorPrefix202405\Symfony\Component\Filesystem\Filesystem;
+use RectorPrefix202410\Symfony\Component\Filesystem\Filesystem;
final class CacheFactory
{
/**
diff --git a/vendor/rector/rector/src/Caching/UnchangedFilesFilter.php b/vendor/rector/rector/src/Caching/UnchangedFilesFilter.php
index 03dc4aaea..595ba65cf 100644
--- a/vendor/rector/rector/src/Caching/UnchangedFilesFilter.php
+++ b/vendor/rector/rector/src/Caching/UnchangedFilesFilter.php
@@ -19,9 +19,10 @@ public function __construct(ChangedFilesDetector $changedFilesDetector)
* @param string[] $filePaths
* @return string[]
*/
- public function filterFileInfos(array $filePaths) : array
+ public function filterFilePaths(array $filePaths) : array
{
$changedFileInfos = [];
+ $filePaths = \array_unique($filePaths);
foreach ($filePaths as $filePath) {
if (!$this->changedFilesDetector->hasFileChanged($filePath)) {
continue;
@@ -29,6 +30,6 @@ public function filterFileInfos(array $filePaths) : array
$changedFileInfos[] = $filePath;
$this->changedFilesDetector->invalidateFile($filePath);
}
- return \array_unique($changedFileInfos);
+ return $changedFileInfos;
}
}
diff --git a/vendor/rector/rector/src/Caching/ValueObject/Storage/FileCacheStorage.php b/vendor/rector/rector/src/Caching/ValueObject/Storage/FileCacheStorage.php
index 7ced392bf..b4035d2aa 100644
--- a/vendor/rector/rector/src/Caching/ValueObject/Storage/FileCacheStorage.php
+++ b/vendor/rector/rector/src/Caching/ValueObject/Storage/FileCacheStorage.php
@@ -4,8 +4,8 @@
namespace Rector\Caching\ValueObject\Storage;
use FilesystemIterator;
-use RectorPrefix202405\Nette\Utils\FileSystem;
-use RectorPrefix202405\Nette\Utils\Random;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\Random;
use Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface;
use Rector\Caching\ValueObject\CacheFilePaths;
use Rector\Caching\ValueObject\CacheItem;
@@ -26,7 +26,7 @@ final class FileCacheStorage implements CacheStorageInterface
* @var \Symfony\Component\Filesystem\Filesystem
*/
private $filesystem;
- public function __construct(string $directory, \RectorPrefix202405\Symfony\Component\Filesystem\Filesystem $filesystem)
+ public function __construct(string $directory, \RectorPrefix202410\Symfony\Component\Filesystem\Filesystem $filesystem)
{
$this->directory = $directory;
$this->filesystem = $filesystem;
diff --git a/vendor/rector/rector/src/ChangesReporting/Annotation/AnnotationExtractor.php b/vendor/rector/rector/src/ChangesReporting/Annotation/AnnotationExtractor.php
deleted file mode 100644
index cfcd28505..000000000
--- a/vendor/rector/rector/src/ChangesReporting/Annotation/AnnotationExtractor.php
+++ /dev/null
@@ -1,30 +0,0 @@
- $className
- */
- public function extractAnnotationFromClass(string $className, string $annotation) : ?string
- {
- $reflectionClass = new ReflectionClass($className);
- $docComment = $reflectionClass->getDocComment();
- if (!\is_string($docComment)) {
- return null;
- }
- // @see https://3v4l.org/ouYfB
- // uses 'r?\n' instead of '$' because windows compat
- $pattern = '#' . \preg_quote($annotation, '#') . '\\s+(?.*?)\\r?\\n#m';
- $matches = Strings::match($docComment, $pattern);
- return $matches['content'] ?? null;
- }
-}
diff --git a/vendor/rector/rector/src/ChangesReporting/Annotation/RectorsChangelogResolver.php b/vendor/rector/rector/src/ChangesReporting/Annotation/RectorsChangelogResolver.php
deleted file mode 100644
index 8b5788fc5..000000000
--- a/vendor/rector/rector/src/ChangesReporting/Annotation/RectorsChangelogResolver.php
+++ /dev/null
@@ -1,40 +0,0 @@
-annotationExtractor = $annotationExtractor;
- }
- /**
- * @param array> $rectorClasses
- * @return array
- */
- public function resolve(array $rectorClasses) : array
- {
- $rectorClassesToChangelogUrls = $this->resolveIncludingMissing($rectorClasses);
- return \array_filter($rectorClassesToChangelogUrls);
- }
- /**
- * @param array> $rectorClasses
- * @return array
- */
- public function resolveIncludingMissing(array $rectorClasses) : array
- {
- $rectorClassesToChangelogUrls = [];
- foreach ($rectorClasses as $rectorClass) {
- $changelogUrl = $this->annotationExtractor->extractAnnotationFromClass($rectorClass, '@changelog');
- $rectorClassesToChangelogUrls[$rectorClass] = $changelogUrl;
- }
- return $rectorClassesToChangelogUrls;
- }
-}
diff --git a/vendor/rector/rector/src/ChangesReporting/Output/ConsoleOutputFormatter.php b/vendor/rector/rector/src/ChangesReporting/Output/ConsoleOutputFormatter.php
index 6aee11132..b6cf89ebf 100644
--- a/vendor/rector/rector/src/ChangesReporting/Output/ConsoleOutputFormatter.php
+++ b/vendor/rector/rector/src/ChangesReporting/Output/ConsoleOutputFormatter.php
@@ -3,14 +3,13 @@
declare (strict_types=1);
namespace Rector\ChangesReporting\Output;
-use RectorPrefix202405\Nette\Utils\Strings;
-use Rector\ChangesReporting\Annotation\RectorsChangelogResolver;
+use RectorPrefix202410\Nette\Utils\Strings;
use Rector\ChangesReporting\Contract\Output\OutputFormatterInterface;
use Rector\ValueObject\Configuration;
use Rector\ValueObject\Error\SystemError;
use Rector\ValueObject\ProcessResult;
use Rector\ValueObject\Reporting\FileDiff;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
final class ConsoleOutputFormatter implements OutputFormatterInterface
{
/**
@@ -18,11 +17,6 @@ final class ConsoleOutputFormatter implements OutputFormatterInterface
* @var \Symfony\Component\Console\Style\SymfonyStyle
*/
private $symfonyStyle;
- /**
- * @readonly
- * @var \Rector\ChangesReporting\Annotation\RectorsChangelogResolver
- */
- private $rectorsChangelogResolver;
/**
* @var string
*/
@@ -32,17 +26,16 @@ final class ConsoleOutputFormatter implements OutputFormatterInterface
* @see https://regex101.com/r/q8I66g/1
*/
private const ON_LINE_REGEX = '# on line #';
- public function __construct(SymfonyStyle $symfonyStyle, RectorsChangelogResolver $rectorsChangelogResolver)
+ public function __construct(SymfonyStyle $symfonyStyle)
{
$this->symfonyStyle = $symfonyStyle;
- $this->rectorsChangelogResolver = $rectorsChangelogResolver;
}
public function report(ProcessResult $processResult, Configuration $configuration) : void
{
if ($configuration->shouldShowDiffs()) {
- $this->reportFileDiffs($processResult->getFileDiffs());
+ $this->reportFileDiffs($processResult->getFileDiffs(), $configuration->isReportingWithRealPath());
}
- $this->reportErrors($processResult->getSystemErrors());
+ $this->reportErrors($processResult->getSystemErrors(), $configuration->isReportingWithRealPath());
if ($processResult->getSystemErrors() !== []) {
return;
}
@@ -60,7 +53,7 @@ public function getName() : string
/**
* @param FileDiff[] $fileDiffs
*/
- private function reportFileDiffs(array $fileDiffs) : void
+ private function reportFileDiffs(array $fileDiffs, bool $absoluteFilePath) : void
{
if (\count($fileDiffs) <= 0) {
return;
@@ -71,20 +64,19 @@ private function reportFileDiffs(array $fileDiffs) : void
$this->symfonyStyle->title($message);
$i = 0;
foreach ($fileDiffs as $fileDiff) {
- $relativeFilePath = $fileDiff->getRelativeFilePath();
+ $filePath = $absoluteFilePath ? $fileDiff->getAbsoluteFilePath() ?? '' : $fileDiff->getRelativeFilePath();
// append line number for faster file jump in diff
$firstLineNumber = $fileDiff->getFirstLineNumber();
if ($firstLineNumber !== null) {
- $relativeFilePath .= ':' . $firstLineNumber;
+ $filePath .= ':' . $firstLineNumber;
}
- $message = \sprintf('%d) %s>', ++$i, $relativeFilePath);
+ $message = \sprintf('%d) %s>', ++$i, $filePath);
$this->symfonyStyle->writeln($message);
$this->symfonyStyle->newLine();
$this->symfonyStyle->writeln($fileDiff->getDiffConsoleFormatted());
- $rectorsChangelogsLines = $this->createRectorChangelogLines($fileDiff);
if ($fileDiff->getRectorChanges() !== []) {
$this->symfonyStyle->writeln('Applied rules:>');
- $this->symfonyStyle->listing($rectorsChangelogsLines);
+ $this->symfonyStyle->listing($fileDiff->getRectorShortClasses());
$this->symfonyStyle->newLine();
}
}
@@ -92,12 +84,13 @@ private function reportFileDiffs(array $fileDiffs) : void
/**
* @param SystemError[] $errors
*/
- private function reportErrors(array $errors) : void
+ private function reportErrors(array $errors, bool $absoluteFilePath) : void
{
foreach ($errors as $error) {
$errorMessage = $error->getMessage();
$errorMessage = $this->normalizePathsToRelativeWithLine($errorMessage);
- $message = \sprintf('Could not process %s%s, due to: %s"%s".', $error->getFile() !== null ? '"' . $error->getFile() . '" file' : 'some files', $error->getRectorClass() !== null ? ' by "' . $error->getRectorClass() . '"' : '', \PHP_EOL, $errorMessage);
+ $filePath = $absoluteFilePath ? $error->getAbsoluteFilePath() : $error->getRelativeFilePath();
+ $message = \sprintf('Could not process %s%s, due to: %s"%s".', $filePath !== null ? '"' . $filePath . '" file' : 'some files', $error->getRectorClass() !== null ? ' by "' . $error->getRectorClass() . '"' : '', \PHP_EOL, $errorMessage);
if ($error->getLine() !== null) {
$message .= ' On line: ' . $error->getLine();
}
@@ -116,19 +109,6 @@ private function createSuccessMessage(ProcessResult $processResult, Configuratio
if ($changeCount === 0) {
return 'Rector is done!';
}
- return \sprintf('%d file%s %s by Rector', $changeCount, $changeCount > 1 ? 's' : '', $configuration->isDryRun() ? 'would have changed (dry-run)' : ($changeCount === 1 ? 'has' : 'have') . ' been changed');
- }
- /**
- * @return string[]
- */
- private function createRectorChangelogLines(FileDiff $fileDiff) : array
- {
- $rectorsChangelogs = $this->rectorsChangelogResolver->resolveIncludingMissing($fileDiff->getRectorClasses());
- $rectorsChangelogsLines = [];
- foreach ($rectorsChangelogs as $rectorClass => $changelog) {
- $rectorShortClass = (string) Strings::after($rectorClass, '\\', -1);
- $rectorsChangelogsLines[] = $changelog === null ? $rectorShortClass : $rectorShortClass . ' (' . $changelog . ')';
- }
- return $rectorsChangelogsLines;
+ return \sprintf('%d file%s %s by Rector', $changeCount, $changeCount > 1 ? 's' : '', $configuration->isDryRun() ? 'would have been changed (dry-run)' : ($changeCount === 1 ? 'has' : 'have') . ' been changed');
}
}
diff --git a/vendor/rector/rector/src/ChangesReporting/Output/JsonOutputFormatter.php b/vendor/rector/rector/src/ChangesReporting/Output/JsonOutputFormatter.php
index 869eae4ad..ce190ce93 100644
--- a/vendor/rector/rector/src/ChangesReporting/Output/JsonOutputFormatter.php
+++ b/vendor/rector/rector/src/ChangesReporting/Output/JsonOutputFormatter.php
@@ -3,8 +3,7 @@
declare (strict_types=1);
namespace Rector\ChangesReporting\Output;
-use RectorPrefix202405\Nette\Utils\Json;
-use Rector\ChangesReporting\Annotation\RectorsChangelogResolver;
+use RectorPrefix202410\Nette\Utils\Json;
use Rector\ChangesReporting\Contract\Output\OutputFormatterInterface;
use Rector\Parallel\ValueObject\Bridge;
use Rector\ValueObject\Configuration;
@@ -12,19 +11,10 @@
use Rector\ValueObject\ProcessResult;
final class JsonOutputFormatter implements OutputFormatterInterface
{
- /**
- * @readonly
- * @var \Rector\ChangesReporting\Annotation\RectorsChangelogResolver
- */
- private $rectorsChangelogResolver;
/**
* @var string
*/
public const NAME = 'json';
- public function __construct(RectorsChangelogResolver $rectorsChangelogResolver)
- {
- $this->rectorsChangelogResolver = $rectorsChangelogResolver;
- }
public function getName() : string
{
return self::NAME;
@@ -35,15 +25,14 @@ public function report(ProcessResult $processResult, Configuration $configuratio
$fileDiffs = $processResult->getFileDiffs();
\ksort($fileDiffs);
foreach ($fileDiffs as $fileDiff) {
- $relativeFilePath = $fileDiff->getRelativeFilePath();
- $appliedRectorsWithChangelog = $this->rectorsChangelogResolver->resolve($fileDiff->getRectorClasses());
- $errorsJson[Bridge::FILE_DIFFS][] = ['file' => $relativeFilePath, 'diff' => $fileDiff->getDiff(), 'applied_rectors' => $fileDiff->getRectorClasses(), 'applied_rectors_with_changelog' => $appliedRectorsWithChangelog];
+ $filePath = $configuration->isReportingWithRealPath() ? $fileDiff->getAbsoluteFilePath() ?? '' : $fileDiff->getRelativeFilePath();
+ $errorsJson[Bridge::FILE_DIFFS][] = ['file' => $filePath, 'diff' => $fileDiff->getDiff(), 'applied_rectors' => $fileDiff->getRectorClasses()];
// for Rector CI
- $errorsJson['changed_files'][] = $relativeFilePath;
+ $errorsJson['changed_files'][] = $filePath;
}
$systemErrors = $processResult->getSystemErrors();
$errorsJson['totals']['errors'] = \count($systemErrors);
- $errorsData = $this->createErrorsData($systemErrors);
+ $errorsData = $this->createErrorsData($systemErrors, $configuration->isReportingWithRealPath());
if ($errorsData !== []) {
$errorsJson['errors'] = $errorsData;
}
@@ -54,11 +43,11 @@ public function report(ProcessResult $processResult, Configuration $configuratio
* @param SystemError[] $errors
* @return mixed[]
*/
- private function createErrorsData(array $errors) : array
+ private function createErrorsData(array $errors, bool $absoluteFilePath) : array
{
$errorsData = [];
foreach ($errors as $error) {
- $errorDataJson = ['message' => $error->getMessage(), 'file' => $error->getRelativeFilePath()];
+ $errorDataJson = ['message' => $error->getMessage(), 'file' => $absoluteFilePath ? $error->getAbsoluteFilePath() : $error->getRelativeFilePath()];
if ($error->getRectorClass() !== null) {
$errorDataJson['caused_by'] = $error->getRectorClass();
}
diff --git a/vendor/rector/rector/src/ChangesReporting/ValueObject/RectorWithLineChange.php b/vendor/rector/rector/src/ChangesReporting/ValueObject/RectorWithLineChange.php
index ac45ba83b..ac19bd23d 100644
--- a/vendor/rector/rector/src/ChangesReporting/ValueObject/RectorWithLineChange.php
+++ b/vendor/rector/rector/src/ChangesReporting/ValueObject/RectorWithLineChange.php
@@ -4,8 +4,8 @@
namespace Rector\ChangesReporting\ValueObject;
use Rector\Contract\Rector\RectorInterface;
-use RectorPrefix202405\Symplify\EasyParallel\Contract\SerializableInterface;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Symplify\EasyParallel\Contract\SerializableInterface;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class RectorWithLineChange implements SerializableInterface
{
/**
@@ -48,8 +48,9 @@ public function getRectorClass() : string
* @param array $json
* @return $this
*/
- public static function decode(array $json) : \RectorPrefix202405\Symplify\EasyParallel\Contract\SerializableInterface
+ public static function decode(array $json) : \RectorPrefix202410\Symplify\EasyParallel\Contract\SerializableInterface
{
+ /** @var class-string $rectorClass */
$rectorClass = $json[self::KEY_RECTOR_CLASS];
Assert::string($rectorClass);
$line = $json[self::KEY_LINE];
diff --git a/vendor/rector/rector/src/ChangesReporting/ValueObjectFactory/ErrorFactory.php b/vendor/rector/rector/src/ChangesReporting/ValueObjectFactory/ErrorFactory.php
index 7114af22e..df2b6f8b6 100644
--- a/vendor/rector/rector/src/ChangesReporting/ValueObjectFactory/ErrorFactory.php
+++ b/vendor/rector/rector/src/ChangesReporting/ValueObjectFactory/ErrorFactory.php
@@ -4,30 +4,27 @@
namespace Rector\ChangesReporting\ValueObjectFactory;
use PHPStan\AnalysedCodeException;
-use Rector\Error\ExceptionCorrector;
use Rector\FileSystem\FilePathHelper;
use Rector\ValueObject\Error\SystemError;
final class ErrorFactory
{
- /**
- * @readonly
- * @var \Rector\Error\ExceptionCorrector
- */
- private $exceptionCorrector;
/**
* @readonly
* @var \Rector\FileSystem\FilePathHelper
*/
private $filePathHelper;
- public function __construct(ExceptionCorrector $exceptionCorrector, FilePathHelper $filePathHelper)
+ public function __construct(FilePathHelper $filePathHelper)
{
- $this->exceptionCorrector = $exceptionCorrector;
$this->filePathHelper = $filePathHelper;
}
public function createAutoloadError(AnalysedCodeException $analysedCodeException, string $filePath) : SystemError
{
- $message = $this->exceptionCorrector->getAutoloadExceptionMessageAndAddLocation($analysedCodeException);
+ $message = $this->createExceptionMessage($analysedCodeException);
$relativeFilePath = $this->filePathHelper->relativePath($filePath);
return new SystemError($message, $relativeFilePath);
}
+ private function createExceptionMessage(AnalysedCodeException $analysedCodeException) : string
+ {
+ return \sprintf('Analyze error: "%s". Include your files in "$rectorConfig->autoloadPaths([...]);" or "$rectorConfig->bootstrapFiles([...]);" in "rector.php" config.%sSee https://github.com/rectorphp/rector#configuration', $analysedCodeException->getMessage(), \PHP_EOL);
+ }
}
diff --git a/vendor/rector/rector/src/Composer/InstalledPackageResolver.php b/vendor/rector/rector/src/Composer/InstalledPackageResolver.php
new file mode 100644
index 000000000..08753863c
--- /dev/null
+++ b/vendor/rector/rector/src/Composer/InstalledPackageResolver.php
@@ -0,0 +1,43 @@
+
+ */
+ private $resolvedInstalledPackages = [];
+ /**
+ * @return InstalledPackage[]
+ */
+ public function resolve(string $projectDirectory) : array
+ {
+ // cache
+ if (isset($this->resolvedInstalledPackages[$projectDirectory])) {
+ return $this->resolvedInstalledPackages[$projectDirectory];
+ }
+ Assert::directory($projectDirectory);
+ $installedPackagesFilePath = $projectDirectory . '/vendor/composer/installed.json';
+ if (!\file_exists($installedPackagesFilePath)) {
+ throw new ShouldNotHappenException('The installed package json not found. Make sure you run `composer update` and "vendor/composer/installed.json" file exists');
+ }
+ $installedPackageFileContents = FileSystem::read($installedPackagesFilePath);
+ $installedPackagesFilePath = Json::decode($installedPackageFileContents, \true);
+ $installedPackages = [];
+ foreach ($installedPackagesFilePath['packages'] as $installedPackage) {
+ $installedPackages[] = new InstalledPackage($installedPackage['name'], $installedPackage['version_normalized']);
+ }
+ $this->resolvedInstalledPackages[$projectDirectory] = $installedPackages;
+ return $installedPackages;
+ }
+}
diff --git a/vendor/rector/rector/src/Composer/ValueObject/InstalledPackage.php b/vendor/rector/rector/src/Composer/ValueObject/InstalledPackage.php
new file mode 100644
index 000000000..333787701
--- /dev/null
+++ b/vendor/rector/rector/src/Composer/ValueObject/InstalledPackage.php
@@ -0,0 +1,31 @@
+name = $name;
+ $this->version = $version;
+ }
+ public function getName() : string
+ {
+ return $this->name;
+ }
+ public function getVersion() : string
+ {
+ return $this->version;
+ }
+}
diff --git a/vendor/rector/rector/src/Config/Level/CodeQualityLevel.php b/vendor/rector/rector/src/Config/Level/CodeQualityLevel.php
new file mode 100644
index 000000000..da3c9318a
--- /dev/null
+++ b/vendor/rector/rector/src/Config/Level/CodeQualityLevel.php
@@ -0,0 +1,130 @@
+>
+ */
+ public const RULES = [CombinedAssignRector::class, SimplifyEmptyArrayCheckRector::class, ReplaceMultipleBooleanNotRector::class, ForeachToInArrayRector::class, SimplifyForeachToCoalescingRector::class, SimplifyFuncGetArgsCountRector::class, SimplifyInArrayValuesRector::class, SimplifyStrposLowerRector::class, SimplifyArraySearchRector::class, SimplifyConditionsRector::class, SimplifyIfNotNullReturnRector::class, SimplifyIfReturnBoolRector::class, UnnecessaryTernaryExpressionRector::class, RemoveExtraParametersRector::class, SimplifyDeMorganBinaryRector::class, SimplifyTautologyTernaryRector::class, SingleInArrayToCompareRector::class, SimplifyIfElseToTernaryRector::class, JoinStringConcatRector::class, ConsecutiveNullCompareReturnsToNullCoalesceQueueRector::class, ExplicitBoolCompareRector::class, CombineIfRector::class, UseIdenticalOverEqualWithSameTypeRector::class, SimplifyBoolIdenticalTrueRector::class, SimplifyRegexPatternRector::class, BooleanNotIdenticalToNotIdenticalRector::class, AndAssignsToSeparateLinesRector::class, CompactToVariablesRector::class, CompleteDynamicPropertiesRector::class, IsAWithStringWithThirdArgumentRector::class, StrlenZeroToIdenticalEmptyStringRector::class, ThrowWithPreviousExceptionRector::class, RemoveSoleValueSprintfRector::class, ShortenElseIfRector::class, ExplicitReturnNullRector::class, ArrayMergeOfNonArraysToSimpleArrayRector::class, ArrayKeyExistsTernaryThenValueToCoalescingRector::class, AbsolutizeRequireAndIncludePathRector::class, ChangeArrayPushToArrayAssignRector::class, ForRepeatedCountToOwnVariableRector::class, ForeachItemsAssignToEmptyArrayToAssignRector::class, InlineIfToExplicitIfRector::class, UnusedForeachValueToArrayKeysRector::class, CommonNotEqualRector::class, SetTypeToCastRector::class, LogicalToBooleanRector::class, VarToPublicPropertyRector::class, IssetOnPropertyObjectToPropertyExistsRector::class, NewStaticToNewSelfRector::class, UnwrapSprintfOneArgumentRector::class, SwitchNegatedTernaryRector::class, SingularSwitchToIfRector::class, SimplifyIfNullableReturnRector::class, FuncGetArgsToVariadicParamRector::class, CallUserFuncToMethodCallRector::class, CallUserFuncWithArrowFunctionToInlineRector::class, CountArrayToEmptyArrayComparisonRector::class, FlipTypeControlToUseExclusiveTypeRector::class, InlineArrayReturnAssignRector::class, InlineIsAInstanceOfRector::class, TernaryFalseExpressionToIfRector::class, InlineConstructorDefaultToPropertyRector::class, TernaryEmptyArrayArrayDimFetchToCoalesceRector::class, OptionalParametersAfterRequiredRector::class, SimplifyEmptyCheckOnEmptyArrayRector::class, SwitchTrueToIfRector::class, CleanupUnneededNullsafeOperatorRector::class, DisallowedEmptyRuleFixerRector::class, ConvertStaticPrivateConstantToSelfRector::class, LocallyCalledStaticMethodToNonStaticRector::class, NumberCompareToMaxFuncCallRector::class, CompleteMissingIfElseBracketRector::class, RemoveUselessIsObjectCheckRector::class, StaticToSelfStaticMethodCallOnFinalClassRector::class];
+ /**
+ * @var array, mixed[]>
+ */
+ public const RULES_WITH_CONFIGURATION = [RenameFunctionRector::class => [
+ 'split' => 'explode',
+ 'join' => 'implode',
+ 'sizeof' => 'count',
+ # https://www.php.net/manual/en/aliases.php
+ 'chop' => 'rtrim',
+ 'doubleval' => 'floatval',
+ 'gzputs' => 'gzwrites',
+ 'fputs' => 'fwrite',
+ 'ini_alter' => 'ini_set',
+ 'is_double' => 'is_float',
+ 'is_integer' => 'is_int',
+ 'is_long' => 'is_int',
+ 'is_real' => 'is_float',
+ 'is_writeable' => 'is_writable',
+ 'key_exists' => 'array_key_exists',
+ 'pos' => 'current',
+ 'strchr' => 'strstr',
+ # mb
+ 'mbstrcut' => 'mb_strcut',
+ 'mbstrlen' => 'mb_strlen',
+ 'mbstrpos' => 'mb_strpos',
+ 'mbstrrpos' => 'mb_strrpos',
+ 'mbsubstr' => 'mb_substr',
+ ]];
+}
diff --git a/vendor/rector/rector/src/Config/Level/DeadCodeLevel.php b/vendor/rector/rector/src/Config/Level/DeadCodeLevel.php
index d9bf0c0ca..78c614e46 100644
--- a/vendor/rector/rector/src/Config/Level/DeadCodeLevel.php
+++ b/vendor/rector/rector/src/Config/Level/DeadCodeLevel.php
@@ -12,10 +12,12 @@
use Rector\DeadCode\Rector\Cast\RecastingRemovalRector;
use Rector\DeadCode\Rector\ClassConst\RemoveUnusedPrivateClassConstantRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveEmptyClassMethodRector;
+use Rector\DeadCode\Rector\ClassMethod\RemoveNullTagValueNodeRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedConstructorParamRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPrivateMethodParameterRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPrivateMethodRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPromotedPropertyRector;
+use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPublicMethodParameterRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessParamTagRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnExprInConstructRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector;
@@ -90,6 +92,8 @@ final class DeadCodeLevel
RemoveUselessReadOnlyTagRector::class,
RemoveNonExistingVarAnnotationRector::class,
RemoveUselessVarTagRector::class,
+ // prioritize safe belt on RemoveUseless*TagRector that registered previously first
+ RemoveNullTagValueNodeRector::class,
RemovePhpVersionIdCheckRector::class,
RemoveAlwaysTrueIfConditionRector::class,
ReduceAlwaysFalseIfOrRector::class,
@@ -107,6 +111,7 @@ final class DeadCodeLevel
// removing methods could be risky if there is some magic loading them
RemoveUnusedPromotedPropertyRector::class,
RemoveUnusedPrivateMethodParameterRector::class,
+ RemoveUnusedPublicMethodParameterRector::class,
RemoveUnusedPrivateMethodRector::class,
RemoveUnreachableStatementRector::class,
RemoveUnusedVariableAssignRector::class,
diff --git a/vendor/rector/rector/src/Config/Level/TypeDeclarationLevel.php b/vendor/rector/rector/src/Config/Level/TypeDeclarationLevel.php
index 2354f0581..b4346d94f 100644
--- a/vendor/rector/rector/src/Config/Level/TypeDeclarationLevel.php
+++ b/vendor/rector/rector/src/Config/Level/TypeDeclarationLevel.php
@@ -4,37 +4,48 @@
namespace Rector\Config\Level;
use Rector\Contract\Rector\RectorInterface;
+use Rector\Symfony\CodeQuality\Rector\ClassMethod\ResponseReturnTypeControllerActionRector;
use Rector\TypeDeclaration\Rector\ArrowFunction\AddArrowFunctionReturnTypeRector;
use Rector\TypeDeclaration\Rector\Class_\AddTestsVoidReturnTypeWhereNoReturnRector;
use Rector\TypeDeclaration\Rector\Class_\ChildDoctrineRepositoryClassTypeRector;
use Rector\TypeDeclaration\Rector\Class_\MergeDateTimePropertyTypeDeclarationRector;
use Rector\TypeDeclaration\Rector\Class_\PropertyTypeFromStrictSetterGetterRector;
use Rector\TypeDeclaration\Rector\Class_\ReturnTypeFromStrictTernaryRector;
+use Rector\TypeDeclaration\Rector\Class_\TypedPropertyFromCreateMockAssignRector;
+use Rector\TypeDeclaration\Rector\Class_\TypedPropertyFromJMSSerializerAttributeTypeRector;
use Rector\TypeDeclaration\Rector\ClassMethod\AddMethodCallBasedStrictParamTypeRector;
use Rector\TypeDeclaration\Rector\ClassMethod\AddParamTypeBasedOnPHPUnitDataProviderRector;
use Rector\TypeDeclaration\Rector\ClassMethod\AddParamTypeFromPropertyTypeRector;
use Rector\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationBasedOnParentClassMethodRector;
use Rector\TypeDeclaration\Rector\ClassMethod\AddVoidReturnTypeWhereNoReturnRector;
-use Rector\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromStrictScalarReturnsRector;
+use Rector\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromBooleanConstReturnsRector;
+use Rector\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromBooleanStrictReturnsRector;
+use Rector\TypeDeclaration\Rector\ClassMethod\NumericReturnTypeFromStrictReturnsRector;
use Rector\TypeDeclaration\Rector\ClassMethod\NumericReturnTypeFromStrictScalarReturnsRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ParamTypeByMethodCallTypeRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ParamTypeByParentCallTypeRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector;
+use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNullableTypeRector;
+use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromMockObjectRector;
+use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromReturnCastRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromReturnDirectArrayRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromReturnNewRector;
-use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictBoolReturnExprRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictConstantReturnRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictFluentReturnRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictNativeCallRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictNewArrayRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictParamRector;
-use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictScalarReturnExprRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictTypedCallRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictTypedPropertyRector;
+use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromSymfonySerializerRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnUnionTypeRector;
use Rector\TypeDeclaration\Rector\ClassMethod\StrictArrayParamDimFetchRector;
use Rector\TypeDeclaration\Rector\ClassMethod\StrictStringParamConcatRector;
+use Rector\TypeDeclaration\Rector\ClassMethod\StringReturnTypeFromStrictScalarReturnsRector;
+use Rector\TypeDeclaration\Rector\ClassMethod\StringReturnTypeFromStrictStringReturnsRector;
+use Rector\TypeDeclaration\Rector\Closure\AddClosureNeverReturnTypeRector;
use Rector\TypeDeclaration\Rector\Closure\AddClosureVoidReturnTypeWhereNoReturnRector;
+use Rector\TypeDeclaration\Rector\Closure\ClosureReturnTypeRector;
use Rector\TypeDeclaration\Rector\Empty_\EmptyOnNullableObjectToInstanceOfRector;
use Rector\TypeDeclaration\Rector\Function_\AddFunctionVoidReturnTypeWhereNoReturnRector;
use Rector\TypeDeclaration\Rector\FunctionLike\AddParamTypeSplFixedArrayRector;
@@ -51,31 +62,38 @@ final class TypeDeclarationLevel
* @var array>
*/
public const RULES = [
- // php 7.0
- // start with closure first, as safest
+ // php 7.1, start with closure first, as safest
AddClosureVoidReturnTypeWhereNoReturnRector::class,
AddFunctionVoidReturnTypeWhereNoReturnRector::class,
AddTestsVoidReturnTypeWhereNoReturnRector::class,
+ ReturnTypeFromMockObjectRector::class,
+ TypedPropertyFromCreateMockAssignRector::class,
AddArrowFunctionReturnTypeRector::class,
- ReturnTypeFromStrictConstantReturnRector::class,
+ BoolReturnTypeFromBooleanConstReturnsRector::class,
ReturnTypeFromStrictNewArrayRector::class,
- ReturnTypeFromStrictBoolReturnExprRector::class,
+ // scalar and array from constant
+ ReturnTypeFromStrictConstantReturnRector::class,
+ StringReturnTypeFromStrictScalarReturnsRector::class,
NumericReturnTypeFromStrictScalarReturnsRector::class,
- BoolReturnTypeFromStrictScalarReturnsRector::class,
+ BoolReturnTypeFromBooleanStrictReturnsRector::class,
+ StringReturnTypeFromStrictStringReturnsRector::class,
+ NumericReturnTypeFromStrictReturnsRector::class,
ReturnTypeFromStrictTernaryRector::class,
- ReturnTypeFromStrictScalarReturnExprRector::class,
ReturnTypeFromReturnDirectArrayRector::class,
+ ResponseReturnTypeControllerActionRector::class,
ReturnTypeFromReturnNewRector::class,
+ ReturnTypeFromReturnCastRector::class,
+ ReturnTypeFromSymfonySerializerRector::class,
AddVoidReturnTypeWhereNoReturnRector::class,
+ ReturnTypeFromStrictTypedPropertyRector::class,
+ ReturnNullableTypeRector::class,
// php 7.4
EmptyOnNullableObjectToInstanceOfRector::class,
// php 7.4
TypedPropertyFromStrictConstructorRector::class,
- ReturnTypeFromStrictTypedPropertyRector::class,
AddParamTypeSplFixedArrayRector::class,
AddReturnTypeDeclarationFromYieldsRector::class,
AddParamTypeBasedOnPHPUnitDataProviderRector::class,
- // php 7.4
TypedPropertyFromStrictSetUpRector::class,
ReturnTypeFromStrictNativeCallRector::class,
ReturnTypeFromStrictTypedCallRector::class,
@@ -83,7 +101,11 @@ final class TypeDeclarationLevel
// param
AddMethodCallBasedStrictParamTypeRector::class,
ParamTypeByParentCallTypeRector::class,
+ // multi types (nullable, union)
ReturnUnionTypeRector::class,
+ // closures
+ AddClosureNeverReturnTypeRector::class,
+ ClosureReturnTypeRector::class,
// more risky rules
ReturnTypeFromStrictParamRector::class,
AddParamTypeFromPropertyTypeRector::class,
@@ -96,5 +118,6 @@ final class TypeDeclarationLevel
ReturnNeverTypeRector::class,
StrictArrayParamDimFetchRector::class,
StrictStringParamConcatRector::class,
+ TypedPropertyFromJMSSerializerAttributeTypeRector::class,
];
}
diff --git a/vendor/rector/rector/src/Config/RectorConfig.php b/vendor/rector/rector/src/Config/RectorConfig.php
index 3a9102dd8..f52e772b6 100644
--- a/vendor/rector/rector/src/Config/RectorConfig.php
+++ b/vendor/rector/rector/src/Config/RectorConfig.php
@@ -3,12 +3,13 @@
declare (strict_types=1);
namespace Rector\Config;
-use RectorPrefix202405\Illuminate\Container\Container;
+use RectorPrefix202410\Illuminate\Container\Container;
use Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface;
use Rector\Configuration\Option;
use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\Configuration\RectorConfigBuilder;
use Rector\Contract\DependencyInjection\RelatedConfigInterface;
+use Rector\Contract\DependencyInjection\ResetableInterface;
use Rector\Contract\Rector\ConfigurableRectorInterface;
use Rector\Contract\Rector\RectorInterface;
use Rector\DependencyInjection\Laravel\ContainerMemento;
@@ -17,24 +18,24 @@
use Rector\Validation\RectorConfigValidator;
use Rector\ValueObject\PhpVersion;
use Rector\ValueObject\PolyfillPackage;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\ArrayInput;
-use RectorPrefix202405\Symfony\Component\Console\Output\ConsoleOutput;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\ArrayInput;
+use RectorPrefix202410\Symfony\Component\Console\Output\ConsoleOutput;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @api
*/
final class RectorConfig extends Container
{
/**
- * @var array, mixed[]>>
+ * @var array, mixed[]>>
*/
private $ruleConfigurations = [];
/**
* @var string[]
*/
- private $autotagInterfaces = [Command::class];
+ private $autotagInterfaces = [Command::class, ResetableInterface::class];
public static function configure() : RectorConfigBuilder
{
return new RectorConfigBuilder();
@@ -331,4 +332,24 @@ public function singleton($abstract, $concrete = null) : void
$this->tag($abstract, $autotagInterface);
}
}
+ public function reportingRealPath(bool $absolute = \true) : void
+ {
+ SimpleParameterProvider::setParameter(Option::ABSOLUTE_FILE_PATH, $absolute);
+ }
+ /**
+ * @internal Used only for bridge
+ * @return array, mixed>
+ */
+ public function getRuleConfigurations() : array
+ {
+ return $this->ruleConfigurations;
+ }
+ /**
+ * @internal Used only for bridge
+ * @return array>
+ */
+ public function getRectorClasses() : array
+ {
+ return $this->tags[RectorInterface::class] ?? [];
+ }
}
diff --git a/vendor/rector/rector/src/Configuration/ConfigInitializer.php b/vendor/rector/rector/src/Configuration/ConfigInitializer.php
index 8278827c1..1f16a2090 100644
--- a/vendor/rector/rector/src/Configuration/ConfigInitializer.php
+++ b/vendor/rector/rector/src/Configuration/ConfigInitializer.php
@@ -3,13 +3,11 @@
declare (strict_types=1);
namespace Rector\Configuration;
-use RectorPrefix202405\Nette\Utils\FileSystem;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\FileSystem;
use Rector\Contract\Rector\RectorInterface;
use Rector\FileSystem\InitFilePathsResolver;
-use Rector\Php\PhpVersionProvider;
use Rector\PostRector\Contract\Rector\PostRectorInterface;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
final class ConfigInitializer
{
/**
@@ -27,20 +25,14 @@ final class ConfigInitializer
* @var \Symfony\Component\Console\Style\SymfonyStyle
*/
private $symfonyStyle;
- /**
- * @readonly
- * @var \Rector\Php\PhpVersionProvider
- */
- private $phpVersionProvider;
/**
* @param RectorInterface[] $rectors
*/
- public function __construct(array $rectors, InitFilePathsResolver $initFilePathsResolver, SymfonyStyle $symfonyStyle, PhpVersionProvider $phpVersionProvider)
+ public function __construct(array $rectors, InitFilePathsResolver $initFilePathsResolver, SymfonyStyle $symfonyStyle)
{
$this->rectors = $rectors;
$this->initFilePathsResolver = $initFilePathsResolver;
$this->symfonyStyle = $symfonyStyle;
- $this->phpVersionProvider = $phpVersionProvider;
}
public function createConfig(string $projectDirectory) : void
{
@@ -56,7 +48,6 @@ public function createConfig(string $projectDirectory) : void
return;
}
$configContents = FileSystem::read(__DIR__ . '/../../templates/rector.php.dist');
- $configContents = $this->replacePhpLevelContents($configContents);
$configContents = $this->replacePathsContents($configContents, $projectDirectory);
FileSystem::write($commonRectorConfigPath, $configContents, null);
$this->symfonyStyle->success('The config is added now. Re-run command to make Rector do the work!');
@@ -76,12 +67,6 @@ private function filterActiveRectors(array $rectors) : array
return !$rector instanceof PostRectorInterface;
});
}
- private function replacePhpLevelContents(string $rectorPhpTemplateContents) : string
- {
- $fullPHPVersion = (string) $this->phpVersionProvider->provide();
- $phpVersion = Strings::substring($fullPHPVersion, 0, 1) . Strings::substring($fullPHPVersion, 2, 1);
- return \str_replace('LevelSetList::UP_TO_PHP_XY', 'LevelSetList::UP_TO_PHP_' . $phpVersion, $rectorPhpTemplateContents);
- }
private function replacePathsContents(string $rectorPhpTemplateContents, string $projectDirectory) : string
{
$projectPhpDirectories = $this->initFilePathsResolver->resolve($projectDirectory);
diff --git a/vendor/rector/rector/src/Configuration/ConfigurationFactory.php b/vendor/rector/rector/src/Configuration/ConfigurationFactory.php
index 9aa1727ce..f7c8d14ff 100644
--- a/vendor/rector/rector/src/Configuration/ConfigurationFactory.php
+++ b/vendor/rector/rector/src/Configuration/ConfigurationFactory.php
@@ -6,8 +6,8 @@
use Rector\ChangesReporting\Output\ConsoleOutputFormatter;
use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\ValueObject\Configuration;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
/**
* @see \Rector\Tests\Configuration\ConfigurationFactoryTest
*/
@@ -29,7 +29,7 @@ public function __construct(SymfonyStyle $symfonyStyle)
public function createForTests(array $paths) : Configuration
{
$fileExtensions = SimpleParameterProvider::provideArrayParameter(\Rector\Configuration\Option::FILE_EXTENSIONS);
- return new Configuration(\false, \true, \false, ConsoleOutputFormatter::NAME, $fileExtensions, $paths, \true, null, null, \false, null, \false);
+ return new Configuration(\false, \true, \false, ConsoleOutputFormatter::NAME, $fileExtensions, $paths, \true, null, null, \false, null, \false, \false);
}
/**
* Needs to run in the start of the life cycle, since the rest of workflow uses it.
@@ -47,8 +47,13 @@ public function createFromInput(InputInterface $input) : Configuration
$parallelPort = (string) $input->getOption(\Rector\Configuration\Option::PARALLEL_PORT);
$parallelIdentifier = (string) $input->getOption(\Rector\Configuration\Option::PARALLEL_IDENTIFIER);
$isDebug = (bool) $input->getOption(\Rector\Configuration\Option::DEBUG);
+ // using debug disables parallel, so emitting exception is straightforward and easier to debug
+ if ($isDebug) {
+ $isParallel = \false;
+ }
$memoryLimit = $this->resolveMemoryLimit($input);
- return new Configuration($isDryRun, $showProgressBar, $shouldClearCache, $outputFormat, $fileExtensions, $paths, $showDiffs, $parallelPort, $parallelIdentifier, $isParallel, $memoryLimit, $isDebug);
+ $isReportingWithRealPath = SimpleParameterProvider::provideBoolParameter(\Rector\Configuration\Option::ABSOLUTE_FILE_PATH);
+ return new Configuration($isDryRun, $showProgressBar, $shouldClearCache, $outputFormat, $fileExtensions, $paths, $showDiffs, $parallelPort, $parallelIdentifier, $isParallel, $memoryLimit, $isDebug, $isReportingWithRealPath);
}
private function shouldShowProgressBar(InputInterface $input, string $outputFormat) : bool
{
diff --git a/vendor/rector/rector/src/Configuration/Deprecation/Contract/DeprecatedInterface.php b/vendor/rector/rector/src/Configuration/Deprecation/Contract/DeprecatedInterface.php
new file mode 100644
index 000000000..42df7d888
--- /dev/null
+++ b/vendor/rector/rector/src/Configuration/Deprecation/Contract/DeprecatedInterface.php
@@ -0,0 +1,14 @@
+= 0 on %s', $methodName));
+ Assert::allIsAOf($availableRules, RectorInterface::class);
$rulesCount = \count($availableRules);
- Assert::range($level, 0, $rulesCount - 1, 'Level %s is not available "' . $methodName . '" method. Pick one between %2$s (lowest) and %3$s (highest).');
+ if ($availableRules === []) {
+ throw new ShouldNotHappenException(\sprintf('There are no available rules in "%s()", define the available rules first', $methodName));
+ }
+ // start with 0
+ $maxLevel = $rulesCount - 1;
+ if ($level > $maxLevel) {
+ $level = $maxLevel;
+ }
$levelRules = [];
for ($i = 0; $i <= $level; ++$i) {
$levelRules[] = $availableRules[$i];
diff --git a/vendor/rector/rector/src/Configuration/Option.php b/vendor/rector/rector/src/Configuration/Option.php
index cd7197cbf..2047e8d70 100644
--- a/vendor/rector/rector/src/Configuration/Option.php
+++ b/vendor/rector/rector/src/Configuration/Option.php
@@ -200,4 +200,20 @@ final class Option
* @var string
*/
public const REGISTERED_RECTOR_SETS = 'registered_rector_sets';
+ /**
+ * @internal For verify skipped rules exists in registered rules
+ * @var string
+ */
+ public const SKIPPED_RECTOR_RULES = 'skipped_rector_rules';
+ /**
+ * @internal For collect skipped start with short open tag files to be reported
+ * @var string
+ */
+ public const SKIPPED_START_WITH_SHORT_OPEN_TAG_FILES = 'skipped_start_with_short_open_tag_files';
+ /**
+ * @internal For reporting with absolute paths instead of relative paths (default behaviour)
+ * @see \Rector\Config\RectorConfig::reportingRealPath()
+ * @var string
+ */
+ public const ABSOLUTE_FILE_PATH = 'absolute_file_path';
}
diff --git a/vendor/rector/rector/src/Configuration/Parameter/SimpleParameterProvider.php b/vendor/rector/rector/src/Configuration/Parameter/SimpleParameterProvider.php
index a207cf2e1..a0a749b74 100644
--- a/vendor/rector/rector/src/Configuration/Parameter/SimpleParameterProvider.php
+++ b/vendor/rector/rector/src/Configuration/Parameter/SimpleParameterProvider.php
@@ -5,7 +5,7 @@
use Rector\Configuration\Option;
use Rector\Exception\ShouldNotHappenException;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @api
*/
diff --git a/vendor/rector/rector/src/Configuration/PhpLevelSetResolver.php b/vendor/rector/rector/src/Configuration/PhpLevelSetResolver.php
index 6260e0f72..b92b984e9 100644
--- a/vendor/rector/rector/src/Configuration/PhpLevelSetResolver.php
+++ b/vendor/rector/rector/src/Configuration/PhpLevelSetResolver.php
@@ -3,42 +3,32 @@
declare (strict_types=1);
namespace Rector\Configuration;
-use Rector\Exception\Configuration\InvalidConfigurationException;
-use Rector\Set\ValueObject\LevelSetList;
+use Rector\Set\ValueObject\SetList;
+use Rector\Tests\Configuration\PhpLevelSetResolverTest;
use Rector\ValueObject\PhpVersion;
+use RectorPrefix202410\Webmozart\Assert\Assert;
+/**
+ * @see PhpLevelSetResolverTest
+ */
final class PhpLevelSetResolver
{
- public static function resolveFromPhpVersion(int $phpVersion) : string
+ /**
+ * @var array
+ */
+ private const VERSION_LOWER_BOUND_CONFIGS = [PhpVersion::PHP_52 => SetList::PHP_52, PhpVersion::PHP_53 => SetList::PHP_53, PhpVersion::PHP_54 => SetList::PHP_54, PhpVersion::PHP_55 => SetList::PHP_55, PhpVersion::PHP_56 => SetList::PHP_56, PhpVersion::PHP_70 => SetList::PHP_70, PhpVersion::PHP_71 => SetList::PHP_71, PhpVersion::PHP_72 => SetList::PHP_72, PhpVersion::PHP_73 => SetList::PHP_73, PhpVersion::PHP_74 => SetList::PHP_74, PhpVersion::PHP_80 => SetList::PHP_80, PhpVersion::PHP_81 => SetList::PHP_81, PhpVersion::PHP_82 => SetList::PHP_82, PhpVersion::PHP_83 => SetList::PHP_83, PhpVersion::PHP_84 => SetList::PHP_84];
+ /**
+ * @param PhpVersion::* $phpVersion
+ * @return string[]
+ */
+ public static function resolveFromPhpVersion(int $phpVersion) : array
{
- switch ($phpVersion) {
- case PhpVersion::PHP_53:
- return LevelSetList::UP_TO_PHP_53;
- case PhpVersion::PHP_54:
- return LevelSetList::UP_TO_PHP_54;
- case PhpVersion::PHP_55:
- return LevelSetList::UP_TO_PHP_55;
- case PhpVersion::PHP_56:
- return LevelSetList::UP_TO_PHP_56;
- case PhpVersion::PHP_70:
- return LevelSetList::UP_TO_PHP_70;
- case PhpVersion::PHP_71:
- return LevelSetList::UP_TO_PHP_71;
- case PhpVersion::PHP_72:
- return LevelSetList::UP_TO_PHP_72;
- case PhpVersion::PHP_73:
- return LevelSetList::UP_TO_PHP_73;
- case PhpVersion::PHP_74:
- return LevelSetList::UP_TO_PHP_74;
- case PhpVersion::PHP_80:
- return LevelSetList::UP_TO_PHP_80;
- case PhpVersion::PHP_81:
- return LevelSetList::UP_TO_PHP_81;
- case PhpVersion::PHP_82:
- return LevelSetList::UP_TO_PHP_82;
- case PhpVersion::PHP_83:
- return LevelSetList::UP_TO_PHP_83;
- default:
- throw new InvalidConfigurationException(\sprintf('Could not resolve PHP level set list for "%s"', $phpVersion));
+ $configFilePaths = [];
+ foreach (self::VERSION_LOWER_BOUND_CONFIGS as $versionLowerBound => $phpSetFilePath) {
+ if ($versionLowerBound <= $phpVersion) {
+ $configFilePaths[] = $phpSetFilePath;
+ }
}
+ Assert::allFileExists($configFilePaths);
+ return $configFilePaths;
}
}
diff --git a/vendor/rector/rector/src/Configuration/RectorConfigBuilder.php b/vendor/rector/rector/src/Configuration/RectorConfigBuilder.php
index a2ca1f3de..f595a48a8 100644
--- a/vendor/rector/rector/src/Configuration/RectorConfigBuilder.php
+++ b/vendor/rector/rector/src/Configuration/RectorConfigBuilder.php
@@ -3,27 +3,33 @@
declare (strict_types=1);
namespace Rector\Configuration;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use Rector\Bridge\SetProviderCollector;
use Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface;
+use Rector\Config\Level\CodeQualityLevel;
use Rector\Config\Level\DeadCodeLevel;
use Rector\Config\Level\TypeDeclarationLevel;
use Rector\Config\RectorConfig;
use Rector\Config\RegisteredService;
use Rector\Configuration\Levels\LevelRulesResolver;
+use Rector\Console\Notifier;
use Rector\Contract\Rector\ConfigurableRectorInterface;
use Rector\Contract\Rector\RectorInterface;
use Rector\Doctrine\Set\DoctrineSetList;
use Rector\Exception\Configuration\InvalidConfigurationException;
-use Rector\Php\PhpVersionResolver\ProjectComposerJsonPhpVersionResolver;
+use Rector\Php\PhpVersionResolver\ComposerJsonPhpVersionResolver;
use Rector\PHPUnit\Set\PHPUnitSetList;
-use Rector\Set\ValueObject\LevelSetList;
+use Rector\Set\Enum\SetGroup;
+use Rector\Set\SetManager;
+use Rector\Set\ValueObject\DowngradeLevelSetList;
use Rector\Set\ValueObject\SetList;
use Rector\Symfony\Set\FOSRestSetList;
use Rector\Symfony\Set\JMSSetList;
use Rector\Symfony\Set\SensiolabsSetList;
use Rector\Symfony\Set\SymfonySetList;
use Rector\ValueObject\PhpVersion;
-use RectorPrefix202405\Symfony\Component\Finder\Finder;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Symfony\Component\Finder\Finder;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @api
*/
@@ -147,6 +153,10 @@ final class RectorConfigBuilder
* @var bool|null
*/
private $isDeadCodeLevelUsed;
+ /**
+ * @var bool|null
+ */
+ private $isCodeQualityLevelUsed;
/**
* @var bool|null
*/
@@ -155,8 +165,33 @@ final class RectorConfigBuilder
* @var RegisteredService[]
*/
private $registerServices = [];
+ /**
+ * @var array
+ */
+ private $setGroups = [];
+ /**
+ * @var bool|null
+ */
+ private $reportingRealPath;
+ /**
+ * @var string[]
+ */
+ private $groupLoadedSets = [];
+ /**
+ * @api soon to be used
+ * @var bool|null
+ */
+ private $isWithPhpSetsUsed;
public function __invoke(RectorConfig $rectorConfig) : void
{
+ // @experimental 2024-06
+ if ($this->setGroups !== []) {
+ $setProviderCollector = $rectorConfig->make(SetProviderCollector::class);
+ $setManager = new SetManager($setProviderCollector);
+ $this->groupLoadedSets = $setManager->matchBySetGroups($this->setGroups);
+ }
+ // merge sets together
+ $this->sets = \array_merge($this->sets, $this->groupLoadedSets);
$uniqueSets = \array_unique($this->sets);
if (\in_array(SetList::TYPE_DECLARATION, $uniqueSets, \true) && $this->isTypeCoverageLevelUsed === \true) {
throw new InvalidConfigurationException(\sprintf('Your config already enables type declarations set.%sRemove "->withTypeCoverageLevel()" as it only duplicates it, or remove type declaration set.', \PHP_EOL));
@@ -164,6 +199,9 @@ public function __invoke(RectorConfig $rectorConfig) : void
if (\in_array(SetList::DEAD_CODE, $uniqueSets, \true) && $this->isDeadCodeLevelUsed === \true) {
throw new InvalidConfigurationException(\sprintf('Your config already enables dead code set.%sRemove "->withDeadCodeLevel()" as it only duplicates it, or remove dead code set.', \PHP_EOL));
}
+ if (\in_array(SetList::CODE_QUALITY, $uniqueSets, \true) && $this->isCodeQualityLevelUsed === \true) {
+ throw new InvalidConfigurationException(\sprintf('Your config already enables code quality set.%sRemove "->withCodeQualityLevel()" as it only duplicates it, or remove code quality set.', \PHP_EOL));
+ }
if ($uniqueSets !== []) {
$rectorConfig->sets($uniqueSets);
}
@@ -247,6 +285,9 @@ public function __invoke(RectorConfig $rectorConfig) : void
if ($this->isFluentNewLine !== null) {
$rectorConfig->newLineOnFluentCall($this->isFluentNewLine);
}
+ if ($this->reportingRealPath !== null) {
+ $rectorConfig->reportingRealPath($this->reportingRealPath);
+ }
}
/**
* @param string[] $paths
@@ -277,9 +318,41 @@ public function withSkipPath(string $skipPath) : self
*/
public function withRootFiles() : self
{
+ $gitIgnoreContents = [];
+ if (\file_exists(\getcwd() . '/.gitignore')) {
+ $gitIgnoreContents = \array_filter(\iterator_to_array(FileSystem::readLines(\getcwd() . '/.gitignore')), function (string $string) : bool {
+ $string = \trim($string);
+ // new line
+ if ($string === '') {
+ return \false;
+ }
+ // comment
+ if (\strncmp($string, '#', \strlen('#')) === 0) {
+ return \false;
+ }
+ // normalize
+ $string = \ltrim($string, '/\\');
+ // files in deep directory, no need to be in lists
+ if (\strpos($string, '/') !== \false || \strpos($string, '\\') !== \false) {
+ return \false;
+ }
+ // only files
+ return \is_file($string);
+ });
+ // make realpath collection
+ $gitIgnoreContents = \array_map(function (string $string) : string {
+ // normalize
+ $string = \ltrim($string, '/\\');
+ return \realpath($string);
+ }, $gitIgnoreContents);
+ }
$rootPhpFilesFinder = (new Finder())->files()->in(\getcwd())->depth(0)->name('*.php');
foreach ($rootPhpFilesFinder as $rootPhpFileFinder) {
- $this->paths[] = $rootPhpFileFinder->getRealPath();
+ $path = $rootPhpFileFinder->getRealPath();
+ if (\in_array($path, $gitIgnoreContents, \true)) {
+ continue;
+ }
+ $this->paths[] = $path;
}
return $this;
}
@@ -294,89 +367,197 @@ public function withSets(array $sets) : self
/**
* Upgrade your annotations to attributes
*/
- public function withAttributesSets(bool $symfony = \false, bool $doctrine = \false, bool $mongoDb = \false, bool $gedmo = \false, bool $phpunit = \false, bool $fosRest = \false, bool $jms = \false, bool $sensiolabs = \false) : self
+ public function withAttributesSets(bool $symfony = \false, bool $doctrine = \false, bool $mongoDb = \false, bool $gedmo = \false, bool $phpunit = \false, bool $fosRest = \false, bool $jms = \false, bool $sensiolabs = \false, bool $all = \false) : self
{
- if ($symfony) {
+ if ($symfony || $all) {
$this->sets[] = SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES;
}
- if ($doctrine) {
+ if ($doctrine || $all) {
$this->sets[] = DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES;
}
- if ($mongoDb) {
+ if ($mongoDb || $all) {
$this->sets[] = DoctrineSetList::MONGODB__ANNOTATIONS_TO_ATTRIBUTES;
}
- if ($gedmo) {
+ if ($gedmo || $all) {
$this->sets[] = DoctrineSetList::GEDMO_ANNOTATIONS_TO_ATTRIBUTES;
}
- if ($phpunit) {
+ if ($phpunit || $all) {
$this->sets[] = PHPUnitSetList::ANNOTATIONS_TO_ATTRIBUTES;
}
- if ($fosRest) {
+ if ($fosRest || $all) {
$this->sets[] = FOSRestSetList::ANNOTATIONS_TO_ATTRIBUTES;
}
- if ($jms) {
+ if ($jms || $all) {
$this->sets[] = JMSSetList::ANNOTATIONS_TO_ATTRIBUTES;
}
- if ($sensiolabs) {
+ if ($sensiolabs || $all) {
$this->sets[] = SensiolabsSetList::ANNOTATIONS_TO_ATTRIBUTES;
}
return $this;
}
+ /**
+ * make use of polyfill packages in composer.json
+ */
+ public function withPhpPolyfill() : self
+ {
+ $this->sets[] = SetList::PHP_POLYFILLS;
+ return $this;
+ }
/**
* What PHP sets should be applied? By default the same version
* as composer.json has is used
*/
public function withPhpSets(bool $php83 = \false, bool $php82 = \false, bool $php81 = \false, bool $php80 = \false, bool $php74 = \false, bool $php73 = \false, bool $php72 = \false, bool $php71 = \false, bool $php70 = \false, bool $php56 = \false, bool $php55 = \false, bool $php54 = \false, bool $php53 = \false, bool $php84 = \false) : self
{
+ $this->isWithPhpSetsUsed = \true;
$pickedArguments = \array_filter(\func_get_args());
+ if ($pickedArguments !== []) {
+ Notifier::notifyWithPhpSetsNotSuitableForPHP80();
+ }
if (\count($pickedArguments) > 1) {
throw new InvalidConfigurationException(\sprintf('Pick only one version target in "withPhpSets()". All rules up to this version will be used.%sTo use your composer.json PHP version, keep arguments empty.', \PHP_EOL));
}
if ($pickedArguments === []) {
- // use composer.json PHP version
- $projectComposerJsonFilePath = \getcwd() . '/composer.json';
- if (\file_exists($projectComposerJsonFilePath)) {
- $projectPhpVersion = ProjectComposerJsonPhpVersionResolver::resolve($projectComposerJsonFilePath);
- if (\is_int($projectPhpVersion)) {
- $this->sets[] = \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion($projectPhpVersion);
- return $this;
- }
- }
- throw new InvalidConfigurationException(\sprintf('We could not find local "composer.json" to determine your PHP version.%sPlease, fill the PHP version set in withPhpSets() manually.', \PHP_EOL));
+ $projectPhpVersion = ComposerJsonPhpVersionResolver::resolveFromCwdOrFail();
+ $phpLevelSets = \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion($projectPhpVersion);
+ $this->sets = \array_merge($this->sets, $phpLevelSets);
+ return $this;
}
if ($php53) {
- $this->sets[] = LevelSetList::UP_TO_PHP_53;
- } elseif ($php54) {
- $this->sets[] = LevelSetList::UP_TO_PHP_54;
- } elseif ($php55) {
- $this->sets[] = LevelSetList::UP_TO_PHP_55;
- } elseif ($php56) {
- $this->sets[] = LevelSetList::UP_TO_PHP_56;
- } elseif ($php70) {
- $this->sets[] = LevelSetList::UP_TO_PHP_70;
- } elseif ($php71) {
- $this->sets[] = LevelSetList::UP_TO_PHP_71;
- } elseif ($php72) {
- $this->sets[] = LevelSetList::UP_TO_PHP_72;
- } elseif ($php73) {
- $this->sets[] = LevelSetList::UP_TO_PHP_73;
- } elseif ($php74) {
- $this->sets[] = LevelSetList::UP_TO_PHP_74;
- } elseif ($php80) {
- $this->sets[] = LevelSetList::UP_TO_PHP_80;
+ $this->withPhp53Sets();
+ return $this;
+ }
+ if ($php54) {
+ $this->withPhp54Sets();
+ return $this;
+ }
+ if ($php55) {
+ $this->withPhp55Sets();
+ return $this;
+ }
+ if ($php56) {
+ $this->withPhp56Sets();
+ return $this;
+ }
+ if ($php70) {
+ $this->withPhp70Sets();
+ return $this;
+ }
+ if ($php71) {
+ $this->withPhp71Sets();
+ return $this;
+ }
+ if ($php72) {
+ $this->withPhp72Sets();
+ return $this;
+ }
+ if ($php73) {
+ $this->withPhp73Sets();
+ return $this;
+ }
+ if ($php74) {
+ $this->withPhp74Sets();
+ return $this;
+ }
+ if ($php80) {
+ $targetPhpVersion = PhpVersion::PHP_80;
} elseif ($php81) {
- $this->sets[] = LevelSetList::UP_TO_PHP_81;
+ $targetPhpVersion = PhpVersion::PHP_81;
} elseif ($php82) {
- $this->sets[] = LevelSetList::UP_TO_PHP_82;
+ $targetPhpVersion = PhpVersion::PHP_82;
} elseif ($php83) {
- $this->sets[] = LevelSetList::UP_TO_PHP_83;
+ $targetPhpVersion = PhpVersion::PHP_83;
} elseif ($php84) {
- $this->sets[] = LevelSetList::UP_TO_PHP_84;
+ $targetPhpVersion = PhpVersion::PHP_84;
+ } else {
+ throw new InvalidConfigurationException('Invalid PHP version set');
}
+ $phpLevelSets = \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion($targetPhpVersion);
+ $this->sets = \array_merge($this->sets, $phpLevelSets);
+ return $this;
+ }
+ /**
+ * Following methods are suitable for PHP 7.4 and lower, before named args
+ * Let's keep them without warning, in case Rector is run on both PHP 7.4 and PHP 8.0 in CI
+ */
+ public function withPhp53Sets() : self
+ {
+ $this->isWithPhpSetsUsed = \true;
+ $this->sets = \array_merge($this->sets, \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion(PhpVersion::PHP_53));
+ return $this;
+ }
+ public function withPhp54Sets() : self
+ {
+ $this->isWithPhpSetsUsed = \true;
+ $this->sets = \array_merge($this->sets, \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion(PhpVersion::PHP_54));
+ return $this;
+ }
+ public function withPhp55Sets() : self
+ {
+ $this->isWithPhpSetsUsed = \true;
+ $this->sets = \array_merge($this->sets, \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion(PhpVersion::PHP_55));
return $this;
}
- public function withPreparedSets(bool $deadCode = \false, bool $codeQuality = \false, bool $codingStyle = \false, bool $typeDeclarations = \false, bool $privatization = \false, bool $naming = \false, bool $instanceOf = \false, bool $earlyReturn = \false, bool $strictBooleans = \false) : self
+ public function withPhp56Sets() : self
{
+ $this->isWithPhpSetsUsed = \true;
+ $this->sets = \array_merge($this->sets, \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion(PhpVersion::PHP_56));
+ return $this;
+ }
+ public function withPhp70Sets() : self
+ {
+ $this->isWithPhpSetsUsed = \true;
+ $this->sets = \array_merge($this->sets, \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion(PhpVersion::PHP_70));
+ return $this;
+ }
+ public function withPhp71Sets() : self
+ {
+ $this->isWithPhpSetsUsed = \true;
+ $this->sets = \array_merge($this->sets, \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion(PhpVersion::PHP_71));
+ return $this;
+ }
+ public function withPhp72Sets() : self
+ {
+ $this->isWithPhpSetsUsed = \true;
+ $this->sets = \array_merge($this->sets, \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion(PhpVersion::PHP_72));
+ return $this;
+ }
+ public function withPhp73Sets() : self
+ {
+ $this->isWithPhpSetsUsed = \true;
+ $this->sets = \array_merge($this->sets, \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion(PhpVersion::PHP_73));
+ return $this;
+ }
+ public function withPhp74Sets() : self
+ {
+ $this->isWithPhpSetsUsed = \true;
+ $this->sets = \array_merge($this->sets, \Rector\Configuration\PhpLevelSetResolver::resolveFromPhpVersion(PhpVersion::PHP_74));
+ return $this;
+ }
+ // there is no withPhp80Sets() and above,
+ // as we already use PHP 8.0 and should go with withPhpSets() instead
+ public function withPreparedSets(
+ bool $deadCode = \false,
+ bool $codeQuality = \false,
+ bool $codingStyle = \false,
+ bool $typeDeclarations = \false,
+ bool $privatization = \false,
+ bool $naming = \false,
+ bool $instanceOf = \false,
+ bool $earlyReturn = \false,
+ bool $strictBooleans = \false,
+ bool $carbon = \false,
+ bool $rectorPreset = \false,
+ bool $phpunitCodeQuality = \false,
+ bool $doctrineCodeQuality = \false,
+ bool $symfonyCodeQuality = \false,
+ bool $symfonyConfigs = \false,
+ // composer based
+ bool $twig = \false,
+ bool $phpunit = \false
+ ) : self
+ {
+ Notifier::notifyNotSuitableMethodForPHP74(__METHOD__);
if ($deadCode) {
$this->sets[] = SetList::DEAD_CODE;
}
@@ -404,6 +585,31 @@ public function withPreparedSets(bool $deadCode = \false, bool $codeQuality = \f
if ($strictBooleans) {
$this->sets[] = SetList::STRICT_BOOLEANS;
}
+ if ($carbon) {
+ $this->sets[] = SetList::CARBON;
+ }
+ if ($rectorPreset) {
+ $this->sets[] = SetList::RECTOR_PRESET;
+ }
+ if ($phpunitCodeQuality) {
+ $this->sets[] = PHPUnitSetList::PHPUNIT_CODE_QUALITY;
+ }
+ if ($doctrineCodeQuality) {
+ $this->sets[] = DoctrineSetList::DOCTRINE_CODE_QUALITY;
+ }
+ if ($symfonyCodeQuality) {
+ $this->sets[] = SymfonySetList::SYMFONY_CODE_QUALITY;
+ }
+ if ($symfonyConfigs) {
+ $this->sets[] = SymfonySetList::CONFIGS;
+ }
+ // @experimental 2024-06
+ if ($twig) {
+ $this->setGroups[] = SetGroup::TWIG;
+ }
+ if ($phpunit) {
+ $this->setGroups[] = SetGroup::PHPUNIT;
+ }
return $this;
}
/**
@@ -532,8 +738,9 @@ public function withSymfonyContainerPhp(string $symfonyContainerPhpFile) : self
*/
public function withDeadCodeLevel(int $level) : self
{
+ Assert::natural($level);
$this->isDeadCodeLevelUsed = \true;
- $levelRules = LevelRulesResolver::resolve($level, DeadCodeLevel::RULES, 'RectorConfig::withDeadCodeLevel()');
+ $levelRules = LevelRulesResolver::resolve($level, DeadCodeLevel::RULES, __METHOD__);
$this->rules = \array_merge($this->rules, $levelRules);
return $this;
}
@@ -543,11 +750,27 @@ public function withDeadCodeLevel(int $level) : self
*/
public function withTypeCoverageLevel(int $level) : self
{
+ Assert::natural($level);
$this->isTypeCoverageLevelUsed = \true;
- $levelRules = LevelRulesResolver::resolve($level, TypeDeclarationLevel::RULES, 'RectorConfig::withTypeCoverageLevel()');
+ $levelRules = LevelRulesResolver::resolve($level, TypeDeclarationLevel::RULES, __METHOD__);
$this->rules = \array_merge($this->rules, $levelRules);
return $this;
}
+ /**
+ * @experimental Raise your code quality from the safest rules
+ * to more affecting ones, one level at a time
+ */
+ public function withCodeQualityLevel(int $level) : self
+ {
+ Assert::natural($level);
+ $this->isCodeQualityLevelUsed = \true;
+ $levelRules = LevelRulesResolver::resolve($level, CodeQualityLevel::RULES, __METHOD__);
+ $this->rules = \array_merge($this->rules, $levelRules);
+ foreach (CodeQualityLevel::RULES_WITH_CONFIGURATION as $rectorClass => $configuration) {
+ $this->rulesWithConfigurations[$rectorClass][] = $configuration;
+ }
+ return $this;
+ }
public function withFluentCallNewLine(bool $isFluentNewLine = \true) : self
{
$this->isFluentNewLine = $isFluentNewLine;
@@ -558,4 +781,38 @@ public function registerService(string $className, ?string $alias = null, ?strin
$this->registerServices[] = new RegisteredService($className, $alias, $tag);
return $this;
}
+ public function withDowngradeSets(bool $php82 = \false, bool $php81 = \false, bool $php80 = \false, bool $php74 = \false, bool $php73 = \false, bool $php72 = \false, bool $php71 = \false) : self
+ {
+ $pickedArguments = \array_filter(\func_get_args());
+ if (\count($pickedArguments) !== 1) {
+ throw new InvalidConfigurationException('Pick only one PHP version target in "withDowngradeSets()". All rules down to this version will be used.');
+ }
+ if ($php82) {
+ $this->sets[] = DowngradeLevelSetList::DOWN_TO_PHP_82;
+ }
+ if ($php81) {
+ $this->sets[] = DowngradeLevelSetList::DOWN_TO_PHP_81;
+ }
+ if ($php80) {
+ $this->sets[] = DowngradeLevelSetList::DOWN_TO_PHP_80;
+ }
+ if ($php74) {
+ $this->sets[] = DowngradeLevelSetList::DOWN_TO_PHP_74;
+ }
+ if ($php73) {
+ $this->sets[] = DowngradeLevelSetList::DOWN_TO_PHP_73;
+ }
+ if ($php72) {
+ $this->sets[] = DowngradeLevelSetList::DOWN_TO_PHP_72;
+ }
+ if ($php71) {
+ $this->sets[] = DowngradeLevelSetList::DOWN_TO_PHP_71;
+ }
+ return $this;
+ }
+ public function withRealPathReporting(bool $absolutePath = \true) : self
+ {
+ $this->reportingRealPath = $absolutePath;
+ return $this;
+ }
}
diff --git a/vendor/rector/rector/src/Configuration/RenamedClassesDataCollector.php b/vendor/rector/rector/src/Configuration/RenamedClassesDataCollector.php
index 096f89189..f85573cd3 100644
--- a/vendor/rector/rector/src/Configuration/RenamedClassesDataCollector.php
+++ b/vendor/rector/rector/src/Configuration/RenamedClassesDataCollector.php
@@ -15,6 +15,10 @@ public function reset() : void
{
$this->oldToNewClasses = [];
}
+ /**
+ * keep public modifier and use internally on matchClassName() method
+ * to keep API as on Configuration level
+ */
public function hasOldClass(string $oldClass) : bool
{
return isset($this->oldToNewClasses[$oldClass]);
@@ -38,11 +42,10 @@ public function getOldToNewClasses() : array
public function matchClassName(ObjectType $objectType) : ?ObjectType
{
$className = $objectType->getClassName();
- $renamedClassName = $this->oldToNewClasses[$className] ?? null;
- if ($renamedClassName === null) {
+ if (!$this->hasOldClass($className)) {
return null;
}
- return new ObjectType($renamedClassName);
+ return new ObjectType($this->oldToNewClasses[$className]);
}
/**
* @return string[]
diff --git a/vendor/rector/rector/src/Console/Command/CustomRuleCommand.php b/vendor/rector/rector/src/Console/Command/CustomRuleCommand.php
index abe99ca62..e0feb26c2 100644
--- a/vendor/rector/rector/src/Console/Command/CustomRuleCommand.php
+++ b/vendor/rector/rector/src/Console/Command/CustomRuleCommand.php
@@ -7,16 +7,16 @@
use DOMElement;
use DOMXPath;
use Generator;
-use RectorPrefix202405\Nette\Utils\FileSystem;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\Strings;
use Rector\Exception\ShouldNotHappenException;
use Rector\FileSystem\JsonFileSystem;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Output\OutputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
-use RectorPrefix202405\Symfony\Component\Finder\Finder;
-use RectorPrefix202405\Symfony\Component\Finder\SplFileInfo;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Output\OutputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Finder\Finder;
+use RectorPrefix202410\Symfony\Component\Finder\SplFileInfo;
final class CustomRuleCommand extends Command
{
/**
diff --git a/vendor/rector/rector/src/Console/Command/DetectNodeCommand.php b/vendor/rector/rector/src/Console/Command/DetectNodeCommand.php
deleted file mode 100644
index a599357d7..000000000
--- a/vendor/rector/rector/src/Console/Command/DetectNodeCommand.php
+++ /dev/null
@@ -1,70 +0,0 @@
-simplePhpParser = $simplePhpParser;
- $this->nodePrinter = $nodePrinter;
- $this->symfonyStyle = $symfonyStyle;
- parent::__construct();
- }
- protected function configure() : void
- {
- $this->setName('detect-node');
- $this->setDescription('Detects node for provided PHP content');
- $this->addOption('loop', null, InputOption::VALUE_NONE, 'Keep open so you can try multiple inputs');
- $this->setAliases(['dump-node']);
- // @todo invoke https://github.com/matthiasnoback/php-ast-inspector/
- // $this->addOption('file');
- }
- protected function execute(InputInterface $input, OutputInterface $output) : int
- {
- if ((bool) $input->getOption('loop')) {
- while (\true) {
- $this->askQuestionAndDumpNode();
- }
- }
- $this->askQuestionAndDumpNode();
- return self::SUCCESS;
- }
- private function askQuestionAndDumpNode() : void
- {
- $question = new Question('Write short PHP code snippet');
- $phpContents = $this->symfonyStyle->askQuestion($question);
- try {
- $nodes = $this->simplePhpParser->parseString($phpContents);
- } catch (Throwable $exception) {
- $this->symfonyStyle->warning('Provide valid PHP code');
- return;
- }
- $this->nodePrinter->printNodes($nodes);
- }
-}
diff --git a/vendor/rector/rector/src/Console/Command/ListRulesCommand.php b/vendor/rector/rector/src/Console/Command/ListRulesCommand.php
index 829de5b11..3688d629a 100644
--- a/vendor/rector/rector/src/Console/Command/ListRulesCommand.php
+++ b/vendor/rector/rector/src/Console/Command/ListRulesCommand.php
@@ -3,17 +3,17 @@
declare (strict_types=1);
namespace Rector\Console\Command;
-use RectorPrefix202405\Nette\Utils\Json;
+use RectorPrefix202410\Nette\Utils\Json;
use Rector\ChangesReporting\Output\ConsoleOutputFormatter;
use Rector\Configuration\Option;
use Rector\Contract\Rector\RectorInterface;
use Rector\PostRector\Contract\Rector\PostRectorInterface;
use Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputOption;
-use RectorPrefix202405\Symfony\Component\Console\Output\OutputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputOption;
+use RectorPrefix202410\Symfony\Component\Console\Output\OutputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
final class ListRulesCommand extends Command
{
/**
diff --git a/vendor/rector/rector/src/Console/Command/ProcessCommand.php b/vendor/rector/rector/src/Console/Command/ProcessCommand.php
index a1a01cc72..65316e1e2 100644
--- a/vendor/rector/rector/src/Console/Command/ProcessCommand.php
+++ b/vendor/rector/rector/src/Console/Command/ProcessCommand.php
@@ -14,15 +14,17 @@
use Rector\Console\Output\OutputFormatterCollector;
use Rector\Console\ProcessConfigureDecorator;
use Rector\Exception\ShouldNotHappenException;
+use Rector\Reporting\DeprecatedRulesReporter;
+use Rector\Reporting\MissConfigurationReporter;
use Rector\StaticReflection\DynamicSourceLocatorDecorator;
use Rector\Util\MemoryLimiter;
use Rector\ValueObject\Configuration;
use Rector\ValueObject\ProcessResult;
-use RectorPrefix202405\Symfony\Component\Console\Application;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Output\OutputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Application;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Output\OutputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
final class ProcessCommand extends Command
{
/**
@@ -70,7 +72,17 @@ final class ProcessCommand extends Command
* @var \Rector\Configuration\ConfigurationFactory
*/
private $configurationFactory;
- public function __construct(AdditionalAutoloader $additionalAutoloader, ChangedFilesDetector $changedFilesDetector, ConfigInitializer $configInitializer, ApplicationFileProcessor $applicationFileProcessor, DynamicSourceLocatorDecorator $dynamicSourceLocatorDecorator, OutputFormatterCollector $outputFormatterCollector, SymfonyStyle $symfonyStyle, MemoryLimiter $memoryLimiter, ConfigurationFactory $configurationFactory)
+ /**
+ * @readonly
+ * @var \Rector\Reporting\DeprecatedRulesReporter
+ */
+ private $deprecatedRulesReporter;
+ /**
+ * @readonly
+ * @var \Rector\Reporting\MissConfigurationReporter
+ */
+ private $missConfigurationReporter;
+ public function __construct(AdditionalAutoloader $additionalAutoloader, ChangedFilesDetector $changedFilesDetector, ConfigInitializer $configInitializer, ApplicationFileProcessor $applicationFileProcessor, DynamicSourceLocatorDecorator $dynamicSourceLocatorDecorator, OutputFormatterCollector $outputFormatterCollector, SymfonyStyle $symfonyStyle, MemoryLimiter $memoryLimiter, ConfigurationFactory $configurationFactory, DeprecatedRulesReporter $deprecatedRulesReporter, MissConfigurationReporter $missConfigurationReporter)
{
$this->additionalAutoloader = $additionalAutoloader;
$this->changedFilesDetector = $changedFilesDetector;
@@ -81,12 +93,32 @@ public function __construct(AdditionalAutoloader $additionalAutoloader, ChangedF
$this->symfonyStyle = $symfonyStyle;
$this->memoryLimiter = $memoryLimiter;
$this->configurationFactory = $configurationFactory;
+ $this->deprecatedRulesReporter = $deprecatedRulesReporter;
+ $this->missConfigurationReporter = $missConfigurationReporter;
parent::__construct();
}
protected function configure() : void
{
$this->setName('process');
$this->setDescription('Upgrades or refactors source code with provided rectors');
+ $this->setHelp(<<<'EOF'
+The %command.name% command will run Rector main feature:
+
+ %command.full_name%
+
+To specify a folder or a file, you can run:
+
+ %command.full_name% src/Controller
+
+You can also dry run to see the changes that Rector will make with the --dry-run option:
+
+ %command.full_name% src/Controller --dry-run
+
+It's also possible to get debug via the --debug option:
+
+ %command.full_name% src/Controller --dry-run --debug
+EOF
+);
ProcessConfigureDecorator::decorate($this);
parent::configure();
}
@@ -109,7 +141,14 @@ protected function execute(InputInterface $input, OutputInterface $output) : int
// 1. add files and directories to static locator
$this->dynamicSourceLocatorDecorator->addPaths($paths);
if ($this->dynamicSourceLocatorDecorator->isPathsEmpty()) {
- $this->symfonyStyle->error('The given paths do not match any files');
+ // read from rector.php, no paths definition needs withPaths() config
+ if ($paths === []) {
+ $this->symfonyStyle->error('No paths definition in rector configuration, define paths: https://getrector.com/documentation/define-paths');
+ return ExitCode::FAILURE;
+ }
+ // read from cli paths arguments, eg: vendor/bin/rector process A B C which A, B, and C not exists
+ $isSingular = \count($paths) === 1;
+ $this->symfonyStyle->error(\sprintf('The following given path%s do%s not match any file%s or director%s: %s%s', $isSingular ? '' : 's', $isSingular ? 'es' : '', $isSingular ? '' : 's', $isSingular ? 'y' : 'ies', \PHP_EOL . \PHP_EOL . ' - ', \implode(\PHP_EOL . ' - ', $paths)));
return ExitCode::FAILURE;
}
// MAIN PHASE
@@ -121,6 +160,9 @@ protected function execute(InputInterface $input, OutputInterface $output) : int
$outputFormat = $configuration->getOutputFormat();
$outputFormatter = $this->outputFormatterCollector->getByName($outputFormat);
$outputFormatter->report($processResult, $configuration);
+ $this->deprecatedRulesReporter->reportDeprecatedRules();
+ $this->deprecatedRulesReporter->reportDeprecatedSkippedRules();
+ $this->missConfigurationReporter->reportSkippedNeverRegisteredRules();
return $this->resolveReturnCode($processResult, $configuration);
}
protected function initialize(InputInterface $input, OutputInterface $output) : void
diff --git a/vendor/rector/rector/src/Console/Command/SetupCICommand.php b/vendor/rector/rector/src/Console/Command/SetupCICommand.php
index 5fedcc7b9..05334ee88 100644
--- a/vendor/rector/rector/src/Console/Command/SetupCICommand.php
+++ b/vendor/rector/rector/src/Console/Command/SetupCICommand.php
@@ -3,13 +3,13 @@
declare (strict_types=1);
namespace Rector\Console\Command;
-use RectorPrefix202405\Nette\Utils\FileSystem;
-use RectorPrefix202405\OndraM\CiDetector\CiDetector;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use RectorPrefix202410\OndraM\CiDetector\CiDetector;
use Rector\Git\RepositoryHelper;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Output\OutputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Output\OutputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
use function sprintf;
final class SetupCICommand extends Command
{
diff --git a/vendor/rector/rector/src/Console/Command/WorkerCommand.php b/vendor/rector/rector/src/Console/Command/WorkerCommand.php
index 4de75e4f0..f68632c93 100644
--- a/vendor/rector/rector/src/Console/Command/WorkerCommand.php
+++ b/vendor/rector/rector/src/Console/Command/WorkerCommand.php
@@ -3,11 +3,11 @@
declare (strict_types=1);
namespace Rector\Console\Command;
-use RectorPrefix202405\Clue\React\NDJson\Decoder;
-use RectorPrefix202405\Clue\React\NDJson\Encoder;
-use RectorPrefix202405\React\EventLoop\StreamSelectLoop;
-use RectorPrefix202405\React\Socket\ConnectionInterface;
-use RectorPrefix202405\React\Socket\TcpConnector;
+use RectorPrefix202410\Clue\React\NDJson\Decoder;
+use RectorPrefix202410\Clue\React\NDJson\Encoder;
+use RectorPrefix202410\React\EventLoop\StreamSelectLoop;
+use RectorPrefix202410\React\Socket\ConnectionInterface;
+use RectorPrefix202410\React\Socket\TcpConnector;
use Rector\Application\ApplicationFileProcessor;
use Rector\Configuration\ConfigurationFactory;
use Rector\Console\ProcessConfigureDecorator;
@@ -16,14 +16,14 @@
use Rector\Util\MemoryLimiter;
use Rector\ValueObject\Configuration;
use Rector\ValueObject\Error\SystemError;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Output\OutputInterface;
-use RectorPrefix202405\Symplify\EasyParallel\Enum\Action;
-use RectorPrefix202405\Symplify\EasyParallel\Enum\ReactCommand;
-use RectorPrefix202405\Symplify\EasyParallel\Enum\ReactEvent;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Output\OutputInterface;
+use RectorPrefix202410\Symplify\EasyParallel\Enum\Action;
+use RectorPrefix202410\Symplify\EasyParallel\Enum\ReactCommand;
+use RectorPrefix202410\Symplify\EasyParallel\Enum\ReactEvent;
use Throwable;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* Inspired at: https://github.com/phpstan/phpstan-src/commit/9124c66dcc55a222e21b1717ba5f60771f7dda92
* https://github.com/phpstan/phpstan-src/blob/c471c7b050e0929daf432288770de673b394a983/src/Command/WorkerCommand.php
diff --git a/vendor/rector/rector/src/Console/ConsoleApplication.php b/vendor/rector/rector/src/Console/ConsoleApplication.php
index febbdd1d3..2332bc9c9 100644
--- a/vendor/rector/rector/src/Console/ConsoleApplication.php
+++ b/vendor/rector/rector/src/Console/ConsoleApplication.php
@@ -3,17 +3,17 @@
declare (strict_types=1);
namespace Rector\Console;
-use RectorPrefix202405\Composer\XdebugHandler\XdebugHandler;
+use RectorPrefix202410\Composer\XdebugHandler\XdebugHandler;
use Rector\Application\VersionResolver;
use Rector\ChangesReporting\Output\ConsoleOutputFormatter;
use Rector\Configuration\Option;
-use RectorPrefix202405\Symfony\Component\Console\Application;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputDefinition;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputOption;
-use RectorPrefix202405\Symfony\Component\Console\Output\OutputInterface;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Symfony\Component\Console\Application;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputDefinition;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputOption;
+use RectorPrefix202410\Symfony\Component\Console\Output\OutputInterface;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class ConsoleApplication extends Application
{
/**
diff --git a/vendor/rector/rector/src/Console/ExitCode.php b/vendor/rector/rector/src/Console/ExitCode.php
index 0c44f661d..10626eca5 100644
--- a/vendor/rector/rector/src/Console/ExitCode.php
+++ b/vendor/rector/rector/src/Console/ExitCode.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Console;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
/**
* @api
*/
diff --git a/vendor/rector/rector/src/Console/Formatter/ColorConsoleDiffFormatter.php b/vendor/rector/rector/src/Console/Formatter/ColorConsoleDiffFormatter.php
index 52c1648b8..607858148 100644
--- a/vendor/rector/rector/src/Console/Formatter/ColorConsoleDiffFormatter.php
+++ b/vendor/rector/rector/src/Console/Formatter/ColorConsoleDiffFormatter.php
@@ -3,9 +3,9 @@
declare (strict_types=1);
namespace Rector\Console\Formatter;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use Rector\Util\NewLineSplitter;
-use RectorPrefix202405\Symfony\Component\Console\Formatter\OutputFormatter;
+use RectorPrefix202410\Symfony\Component\Console\Formatter\OutputFormatter;
/**
* Inspired by @see https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/master/src/Differ/DiffConsoleFormatter.php to be
* used as standalone class, without need to require whole package by Dariusz Rumiński
diff --git a/vendor/rector/rector/src/Console/Formatter/ConsoleDiffer.php b/vendor/rector/rector/src/Console/Formatter/ConsoleDiffer.php
index 0dbfc405f..6e61a9ffc 100644
--- a/vendor/rector/rector/src/Console/Formatter/ConsoleDiffer.php
+++ b/vendor/rector/rector/src/Console/Formatter/ConsoleDiffer.php
@@ -3,8 +3,8 @@
declare (strict_types=1);
namespace Rector\Console\Formatter;
-use RectorPrefix202405\SebastianBergmann\Diff\Differ;
-use RectorPrefix202405\SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder;
+use RectorPrefix202410\SebastianBergmann\Diff\Differ;
+use RectorPrefix202410\SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder;
final class ConsoleDiffer
{
/**
diff --git a/vendor/rector/rector/src/Console/Notifier.php b/vendor/rector/rector/src/Console/Notifier.php
new file mode 100644
index 000000000..68fabed69
--- /dev/null
+++ b/vendor/rector/rector/src/Console/Notifier.php
@@ -0,0 +1,31 @@
+= 80000) {
+ return;
+ }
+ $message = \sprintf('The "%s()" method uses named arguments. Its suitable for PHP 8.0+. In lower PHP versions, use "withSets([...])" method instead', $calledMethod);
+ $symfonyStyle = new SymfonyStyle(new ArgvInput(), new ConsoleOutput());
+ $symfonyStyle->warning($message);
+ \sleep(3);
+ }
+ public static function notifyWithPhpSetsNotSuitableForPHP80() : void
+ {
+ if (\PHP_VERSION_ID >= 80000) {
+ return;
+ }
+ $message = 'The "withPhpSets()" method uses named arguments. Its suitable for PHP 8.0+. Use more explicit "withPhp53Sets()" ... "withPhp74Sets()" in lower PHP versions instead.';
+ $symfonyStyle = new SymfonyStyle(new ArgvInput(), new ConsoleOutput());
+ $symfonyStyle->warning($message);
+ \sleep(3);
+ }
+}
diff --git a/vendor/rector/rector/src/Console/ProcessConfigureDecorator.php b/vendor/rector/rector/src/Console/ProcessConfigureDecorator.php
index 475486441..2f648c161 100644
--- a/vendor/rector/rector/src/Console/ProcessConfigureDecorator.php
+++ b/vendor/rector/rector/src/Console/ProcessConfigureDecorator.php
@@ -5,9 +5,9 @@
use Rector\ChangesReporting\Output\ConsoleOutputFormatter;
use Rector\Configuration\Option;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputArgument;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputOption;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputArgument;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputOption;
final class ProcessConfigureDecorator
{
public static function decorate(Command $command) : void
diff --git a/vendor/rector/rector/src/Console/Style/RectorStyle.php b/vendor/rector/rector/src/Console/Style/RectorStyle.php
index cf47bedde..2a66df44b 100644
--- a/vendor/rector/rector/src/Console/Style/RectorStyle.php
+++ b/vendor/rector/rector/src/Console/Style/RectorStyle.php
@@ -3,12 +3,12 @@
declare (strict_types=1);
namespace Rector\Console\Style;
-use RectorPrefix202405\OndraM\CiDetector\CiDetector;
-use RectorPrefix202405\Symfony\Component\Console\Exception\RuntimeException;
-use RectorPrefix202405\Symfony\Component\Console\Helper\ProgressBar;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Output\OutputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\OndraM\CiDetector\CiDetector;
+use RectorPrefix202410\Symfony\Component\Console\Exception\RuntimeException;
+use RectorPrefix202410\Symfony\Component\Console\Helper\ProgressBar;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Output\OutputInterface;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
final class RectorStyle extends SymfonyStyle
{
/**
diff --git a/vendor/rector/rector/src/Console/Style/SymfonyStyleFactory.php b/vendor/rector/rector/src/Console/Style/SymfonyStyleFactory.php
index 7c4044fe7..e53788c43 100644
--- a/vendor/rector/rector/src/Console/Style/SymfonyStyleFactory.php
+++ b/vendor/rector/rector/src/Console/Style/SymfonyStyleFactory.php
@@ -4,11 +4,10 @@
namespace Rector\Console\Style;
use Rector\Util\Reflection\PrivatesAccessor;
-use RectorPrefix202405\Symfony\Component\Console\Application;
-use RectorPrefix202405\Symfony\Component\Console\Input\ArgvInput;
-use RectorPrefix202405\Symfony\Component\Console\Output\ConsoleOutput;
-use RectorPrefix202405\Symfony\Component\Console\Output\OutputInterface;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Application;
+use RectorPrefix202410\Symfony\Component\Console\Input\ArgvInput;
+use RectorPrefix202410\Symfony\Component\Console\Output\ConsoleOutput;
+use RectorPrefix202410\Symfony\Component\Console\Output\OutputInterface;
final class SymfonyStyleFactory
{
/**
@@ -23,7 +22,7 @@ public function __construct(PrivatesAccessor $privatesAccessor)
/**
* @api
*/
- public function create() : SymfonyStyle
+ public function create() : \Rector\Console\Style\RectorStyle
{
// to prevent missing argv indexes
if (!isset($_SERVER['argv'])) {
diff --git a/vendor/rector/rector/src/DependencyInjection/Laravel/ContainerMemento.php b/vendor/rector/rector/src/DependencyInjection/Laravel/ContainerMemento.php
index db0455d91..6e29f5120 100644
--- a/vendor/rector/rector/src/DependencyInjection/Laravel/ContainerMemento.php
+++ b/vendor/rector/rector/src/DependencyInjection/Laravel/ContainerMemento.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\DependencyInjection\Laravel;
-use RectorPrefix202405\Illuminate\Container\Container;
+use RectorPrefix202410\Illuminate\Container\Container;
use Rector\Util\Reflection\PrivatesAccessor;
/**
* Helper service to modify Laravel container
diff --git a/vendor/rector/rector/src/DependencyInjection/LazyContainerFactory.php b/vendor/rector/rector/src/DependencyInjection/LazyContainerFactory.php
index 0887fedb1..5cdc61f24 100644
--- a/vendor/rector/rector/src/DependencyInjection/LazyContainerFactory.php
+++ b/vendor/rector/rector/src/DependencyInjection/LazyContainerFactory.php
@@ -3,13 +3,12 @@
declare (strict_types=1);
namespace Rector\DependencyInjection;
-use RectorPrefix202405\Doctrine\Inflector\Inflector;
-use RectorPrefix202405\Doctrine\Inflector\Rules\English\InflectorFactory;
-use RectorPrefix202405\Illuminate\Container\Container;
+use RectorPrefix202410\Doctrine\Inflector\Inflector;
+use RectorPrefix202410\Doctrine\Inflector\Rules\English\InflectorFactory;
+use RectorPrefix202410\Illuminate\Container\Container;
use PhpParser\Lexer;
use PHPStan\Analyser\NodeScopeResolver;
use PHPStan\Analyser\ScopeFactory;
-use PHPStan\File\FileHelper;
use PHPStan\Parser\Parser;
use PHPStan\PhpDoc\TypeNodeResolver;
use PHPStan\PhpDocParser\Parser\ConstExprParser;
@@ -18,9 +17,9 @@
use PHPStan\Reflection\ReflectionProvider;
use Rector\Application\ChangedNodeScopeRefresher;
use Rector\Application\FileProcessor;
+use Rector\Application\Provider\CurrentFileProvider;
use Rector\BetterPhpDocParser\Contract\BasePhpDocNodeVisitorInterface;
use Rector\BetterPhpDocParser\Contract\PhpDocParser\PhpDocNodeDecoratorInterface;
-use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\BetterPhpDocParser\PhpDocNodeMapper;
use Rector\BetterPhpDocParser\PhpDocNodeVisitor\ArrayTypePhpDocNodeVisitor;
use Rector\BetterPhpDocParser\PhpDocNodeVisitor\CallableTypePhpDocNodeVisitor;
@@ -50,7 +49,6 @@
use Rector\Configuration\ConfigInitializer;
use Rector\Configuration\RenamedClassesDataCollector;
use Rector\Console\Command\CustomRuleCommand;
-use Rector\Console\Command\DetectNodeCommand;
use Rector\Console\Command\ListRulesCommand;
use Rector\Console\Command\ProcessCommand;
use Rector\Console\Command\SetupCICommand;
@@ -79,7 +77,7 @@
use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\NodeTypeResolver\NodeTypeResolver\CastTypeResolver;
use Rector\NodeTypeResolver\NodeTypeResolver\ClassAndInterfaceTypeResolver;
-use Rector\NodeTypeResolver\NodeTypeResolver\ClassMethodOrClassConstTypeResolver;
+use Rector\NodeTypeResolver\NodeTypeResolver\ClassConstFetchTypeResolver;
use Rector\NodeTypeResolver\NodeTypeResolver\IdentifierTypeResolver;
use Rector\NodeTypeResolver\NodeTypeResolver\NameTypeResolver;
use Rector\NodeTypeResolver\NodeTypeResolver\NewTypeResolver;
@@ -139,6 +137,7 @@
use Rector\PHPStanStaticTypeMapper\TypeMapper\HasOffsetValueTypeTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\HasPropertyTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\IntegerTypeMapper;
+use Rector\PHPStanStaticTypeMapper\TypeMapper\IntersectionTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\IterableTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\MixedTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\NeverTypeMapper;
@@ -150,26 +149,24 @@
use Rector\PHPStanStaticTypeMapper\TypeMapper\ParentStaticTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\ResourceTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\SelfObjectTypeMapper;
+use Rector\PHPStanStaticTypeMapper\TypeMapper\StaticTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\StrictMixedTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\StringTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\ThisTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\TypeWithClassNameTypeMapper;
+use Rector\PHPStanStaticTypeMapper\TypeMapper\UnionTypeMapper;
use Rector\PHPStanStaticTypeMapper\TypeMapper\VoidTypeMapper;
use Rector\PostRector\Application\PostFileProcessor;
-use Rector\Provider\CurrentFileProvider;
use Rector\Rector\AbstractRector;
-use Rector\Skipper\Contract\SkipVoterInterface;
use Rector\Skipper\Skipper\Skipper;
-use Rector\Skipper\SkipVoter\ClassSkipVoter;
use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface;
use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface;
use Rector\StaticTypeMapper\Mapper\PhpParserNodeMapper;
-use Rector\StaticTypeMapper\Naming\NameScopeFactory;
use Rector\StaticTypeMapper\PhpDoc\PhpDocTypeMapper;
-use Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper;
-use Rector\StaticTypeMapper\PhpDocParser\IntersectionTypeMapper;
-use Rector\StaticTypeMapper\PhpDocParser\NullableTypeMapper;
-use Rector\StaticTypeMapper\PhpDocParser\UnionTypeMapper;
+use Rector\StaticTypeMapper\PhpDocParser\IdentifierPhpDocTypeMapper;
+use Rector\StaticTypeMapper\PhpDocParser\IntersectionPhpDocTypeMapper;
+use Rector\StaticTypeMapper\PhpDocParser\NullablePhpDocTypeMapper;
+use Rector\StaticTypeMapper\PhpDocParser\UnionPhpDocTypeMapper;
use Rector\StaticTypeMapper\PhpParser\ExprNodeMapper;
use Rector\StaticTypeMapper\PhpParser\FullyQualifiedNodeMapper;
use Rector\StaticTypeMapper\PhpParser\IdentifierNodeMapper;
@@ -178,13 +175,10 @@
use Rector\StaticTypeMapper\PhpParser\NullableTypeNodeMapper;
use Rector\StaticTypeMapper\PhpParser\StringNodeMapper;
use Rector\StaticTypeMapper\PhpParser\UnionTypeNodeMapper;
-use Rector\StaticTypeMapper\StaticTypeMapper;
-use Rector\Utils\Command\MissingInSetCommand;
-use Rector\Utils\Command\OutsideAnySetCommand;
-use RectorPrefix202405\Symfony\Component\Console\Application;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Symfony\Component\Console\Application;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class LazyContainerFactory
{
/**
@@ -206,7 +200,7 @@ final class LazyContainerFactory
/**
* @var array>
*/
- private const PHPDOC_TYPE_MAPPER_CLASSES = [IdentifierTypeMapper::class, IntersectionTypeMapper::class, NullableTypeMapper::class, UnionTypeMapper::class];
+ private const PHPDOC_TYPE_MAPPER_CLASSES = [IdentifierPhpDocTypeMapper::class, IntersectionPhpDocTypeMapper::class, NullablePhpDocTypeMapper::class, UnionPhpDocTypeMapper::class];
/**
* @var array>
*/
@@ -214,7 +208,7 @@ final class LazyContainerFactory
/**
* @var array>
*/
- private const TYPE_MAPPER_CLASSES = [AccessoryLiteralStringTypeMapper::class, AccessoryNonEmptyStringTypeMapper::class, AccessoryNonFalsyStringTypeMapper::class, AccessoryNumericStringTypeMapper::class, ArrayTypeMapper::class, BooleanTypeMapper::class, CallableTypeMapper::class, ClassStringTypeMapper::class, ClosureTypeMapper::class, ConditionalTypeForParameterMapper::class, ConditionalTypeMapper::class, FloatTypeMapper::class, GenericClassStringTypeMapper::class, HasMethodTypeMapper::class, HasOffsetTypeMapper::class, HasOffsetValueTypeTypeMapper::class, HasPropertyTypeMapper::class, IntegerTypeMapper::class, \Rector\PHPStanStaticTypeMapper\TypeMapper\IntersectionTypeMapper::class, IterableTypeMapper::class, MixedTypeMapper::class, NeverTypeMapper::class, NonEmptyArrayTypeMapper::class, NullTypeMapper::class, ObjectTypeMapper::class, ObjectWithoutClassTypeMapper::class, OversizedArrayTypeMapper::class, ParentStaticTypeMapper::class, ResourceTypeMapper::class, SelfObjectTypeMapper::class, \Rector\PHPStanStaticTypeMapper\TypeMapper\StaticTypeMapper::class, StrictMixedTypeMapper::class, StringTypeMapper::class, ThisTypeMapper::class, TypeWithClassNameTypeMapper::class, \Rector\PHPStanStaticTypeMapper\TypeMapper\UnionTypeMapper::class, VoidTypeMapper::class];
+ private const TYPE_MAPPER_CLASSES = [AccessoryLiteralStringTypeMapper::class, AccessoryNonEmptyStringTypeMapper::class, AccessoryNonFalsyStringTypeMapper::class, AccessoryNumericStringTypeMapper::class, ArrayTypeMapper::class, BooleanTypeMapper::class, CallableTypeMapper::class, ClassStringTypeMapper::class, ClosureTypeMapper::class, ConditionalTypeForParameterMapper::class, ConditionalTypeMapper::class, FloatTypeMapper::class, GenericClassStringTypeMapper::class, HasMethodTypeMapper::class, HasOffsetTypeMapper::class, HasOffsetValueTypeTypeMapper::class, HasPropertyTypeMapper::class, IntegerTypeMapper::class, IntersectionTypeMapper::class, IterableTypeMapper::class, MixedTypeMapper::class, NeverTypeMapper::class, NonEmptyArrayTypeMapper::class, NullTypeMapper::class, ObjectTypeMapper::class, ObjectWithoutClassTypeMapper::class, OversizedArrayTypeMapper::class, ParentStaticTypeMapper::class, ResourceTypeMapper::class, SelfObjectTypeMapper::class, StaticTypeMapper::class, StrictMixedTypeMapper::class, StringTypeMapper::class, ThisTypeMapper::class, TypeWithClassNameTypeMapper::class, UnionTypeMapper::class, VoidTypeMapper::class];
/**
* @var array>
*/
@@ -222,7 +216,7 @@ final class LazyContainerFactory
/**
* @var array
*/
- private const PUBLIC_PHPSTAN_SERVICE_TYPES = [ScopeFactory::class, TypeNodeResolver::class, FileHelper::class, NodeScopeResolver::class, ReflectionProvider::class, CachingVisitor::class];
+ private const PUBLIC_PHPSTAN_SERVICE_TYPES = [ScopeFactory::class, TypeNodeResolver::class, NodeScopeResolver::class, ReflectionProvider::class, CachingVisitor::class];
/**
* @var array>
*/
@@ -230,15 +224,11 @@ final class LazyContainerFactory
/**
* @var array>
*/
- private const NODE_TYPE_RESOLVER_CLASSES = [CastTypeResolver::class, StaticCallMethodCallTypeResolver::class, ClassAndInterfaceTypeResolver::class, ClassMethodOrClassConstTypeResolver::class, IdentifierTypeResolver::class, NameTypeResolver::class, NewTypeResolver::class, ParamTypeResolver::class, PropertyFetchTypeResolver::class, PropertyTypeResolver::class, ScalarTypeResolver::class, TraitTypeResolver::class];
+ private const NODE_TYPE_RESOLVER_CLASSES = [CastTypeResolver::class, StaticCallMethodCallTypeResolver::class, ClassAndInterfaceTypeResolver::class, IdentifierTypeResolver::class, NameTypeResolver::class, NewTypeResolver::class, ParamTypeResolver::class, PropertyFetchTypeResolver::class, ClassConstFetchTypeResolver::class, PropertyTypeResolver::class, ScalarTypeResolver::class, TraitTypeResolver::class];
/**
* @var array>
*/
private const PHP_PARSER_NODE_MAPPER_CLASSES = [FullyQualifiedNodeMapper::class, IdentifierNodeMapper::class, IntersectionTypeNodeMapper::class, NameNodeMapper::class, NullableTypeNodeMapper::class, StringNodeMapper::class, UnionTypeNodeMapper::class, ExprNodeMapper::class];
- /**
- * @var array>
- */
- private const SKIP_VOTER_CLASSES = [ClassSkipVoter::class];
/**
* @var array>
*/
@@ -269,13 +259,7 @@ public function create() : RectorConfig
$rectorConfig->singleton(SetupCICommand::class);
$rectorConfig->singleton(ListRulesCommand::class);
$rectorConfig->singleton(CustomRuleCommand::class);
- $rectorConfig->singleton(DetectNodeCommand::class);
$rectorConfig->when(ListRulesCommand::class)->needs('$rectors')->giveTagged(RectorInterface::class);
- // dev
- if (\class_exists(MissingInSetCommand::class)) {
- $rectorConfig->singleton(MissingInSetCommand::class);
- $rectorConfig->singleton(OutsideAnySetCommand::class);
- }
$rectorConfig->singleton(FileProcessor::class);
$rectorConfig->singleton(PostFileProcessor::class);
// phpdoc-parser
@@ -289,9 +273,6 @@ public function create() : RectorConfig
$phpStanServicesFactory = $container->make(PHPStanServicesFactory::class);
return $phpStanServicesFactory->createDynamicSourceLocatorProvider();
});
- $rectorConfig->afterResolving(DynamicSourceLocatorProvider::class, static function (DynamicSourceLocatorProvider $dynamicSourceLocatorProvider, Container $container) : void {
- $dynamicSourceLocatorProvider->autowire($container->make(ReflectionProvider::class));
- });
// resetables
$rectorConfig->tag(DynamicSourceLocatorProvider::class, ResetableInterface::class);
$rectorConfig->tag(RenamedClassesDataCollector::class, ResetableInterface::class);
@@ -314,7 +295,7 @@ public function create() : RectorConfig
$phpStanStaticTypeMapper = $container->make(PHPStanStaticTypeMapper::class);
$conditionalTypeMapper->autowire($phpStanStaticTypeMapper);
});
- $rectorConfig->afterResolving(\Rector\PHPStanStaticTypeMapper\TypeMapper\UnionTypeMapper::class, static function (\Rector\PHPStanStaticTypeMapper\TypeMapper\UnionTypeMapper $unionTypeMapper, Container $container) : void {
+ $rectorConfig->afterResolving(UnionTypeMapper::class, static function (UnionTypeMapper $unionTypeMapper, Container $container) : void {
$phpStanStaticTypeMapper = $container->make(PHPStanStaticTypeMapper::class);
$unionTypeMapper->autowire($phpStanStaticTypeMapper);
});
@@ -324,8 +305,6 @@ public function create() : RectorConfig
$rectorConfig->when(NodeTypeResolver::class)->needs('$nodeTypeResolvers')->giveTagged(NodeTypeResolverInterface::class);
// node name resolvers
$rectorConfig->when(NodeNameResolver::class)->needs('$nodeNameResolvers')->giveTagged(NodeNameResolverInterface::class);
- $rectorConfig->when(Skipper::class)->needs('$skipVoters')->giveTagged(SkipVoterInterface::class);
- $this->registerTagged($rectorConfig, self::SKIP_VOTER_CLASSES, SkipVoterInterface::class);
$rectorConfig->when(AttributeGroupNamedArgumentManipulator::class)->needs('$converterAttributeDecorators')->giveTagged(ConverterAttributeDecoratorInterface::class);
$this->registerTagged($rectorConfig, self::CONVERTER_ATTRIBUTE_DECORATOR_CLASSES, ConverterAttributeDecoratorInterface::class);
$rectorConfig->afterResolving(AbstractRector::class, static function (AbstractRector $rector, Container $container) : void {
@@ -359,9 +338,6 @@ public function create() : RectorConfig
$annotationToAttributeMapper = $container->make(AnnotationToAttributeMapper::class);
$arrayItemNodeAnnotationToAttributeMapper->autowire($annotationToAttributeMapper);
});
- $rectorConfig->afterResolving(NameScopeFactory::class, static function (NameScopeFactory $nameScopeFactory, Container $container) : void {
- $nameScopeFactory->autowire($container->make(PhpDocInfoFactory::class), $container->make(StaticTypeMapper::class));
- });
$rectorConfig->afterResolving(PlainValueParser::class, static function (PlainValueParser $plainValueParser, Container $container) : void {
$plainValueParser->autowire($container->make(StaticDoctrineAnnotationParser::class), $container->make(ArrayParser::class));
});
diff --git a/vendor/rector/rector/src/DependencyInjection/RectorContainerFactory.php b/vendor/rector/rector/src/DependencyInjection/RectorContainerFactory.php
index e337da8c7..dd6283ef3 100644
--- a/vendor/rector/rector/src/DependencyInjection/RectorContainerFactory.php
+++ b/vendor/rector/rector/src/DependencyInjection/RectorContainerFactory.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\DependencyInjection;
-use RectorPrefix202405\Illuminate\Container\Container;
+use RectorPrefix202410\Illuminate\Container\Container;
use Rector\Autoloading\BootstrapFilesIncluder;
use Rector\Caching\Detector\ChangedFilesDetector;
use Rector\ValueObject\Bootstrap\BootstrapConfigs;
@@ -29,11 +29,11 @@ public function createFromBootstrapConfigs(BootstrapConfigs $bootstrapConfigs) :
private function createFromConfigs(array $configFiles) : Container
{
$lazyContainerFactory = new \Rector\DependencyInjection\LazyContainerFactory();
- $container = $lazyContainerFactory->create();
+ $rectorConfig = $lazyContainerFactory->create();
foreach ($configFiles as $configFile) {
- $container->import($configFile);
+ $rectorConfig->import($configFile);
}
- $container->boot();
- return $container;
+ $rectorConfig->boot();
+ return $rectorConfig;
}
}
diff --git a/vendor/rector/rector/src/Differ/DefaultDiffer.php b/vendor/rector/rector/src/Differ/DefaultDiffer.php
index b63909dc8..e3539d90c 100644
--- a/vendor/rector/rector/src/Differ/DefaultDiffer.php
+++ b/vendor/rector/rector/src/Differ/DefaultDiffer.php
@@ -3,8 +3,8 @@
declare (strict_types=1);
namespace Rector\Differ;
-use RectorPrefix202405\SebastianBergmann\Diff\Differ;
-use RectorPrefix202405\SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder;
+use RectorPrefix202410\SebastianBergmann\Diff\Differ;
+use RectorPrefix202410\SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder;
final class DefaultDiffer
{
/**
diff --git a/vendor/rector/rector/src/Error/ExceptionCorrector.php b/vendor/rector/rector/src/Error/ExceptionCorrector.php
deleted file mode 100644
index 3222cdf4a..000000000
--- a/vendor/rector/rector/src/Error/ExceptionCorrector.php
+++ /dev/null
@@ -1,13 +0,0 @@
-autoloadPaths([...]);" or "$rectorConfig->bootstrapFiles([...]);" in "rector.php" config.%sSee https://github.com/rectorphp/rector#configuration', $analysedCodeException->getMessage(), \PHP_EOL);
- }
-}
diff --git a/vendor/rector/rector/src/Exception/ShouldNotHappenException.php b/vendor/rector/rector/src/Exception/ShouldNotHappenException.php
index 2d44acf07..d73ceb3ff 100644
--- a/vendor/rector/rector/src/Exception/ShouldNotHappenException.php
+++ b/vendor/rector/rector/src/Exception/ShouldNotHappenException.php
@@ -8,10 +8,9 @@
final class ShouldNotHappenException extends Exception
{
/**
- * @param string $message
* @param int $code
*/
- public function __construct($message = '', $code = 0, ?Throwable $throwable = null)
+ public function __construct(string $message = '', $code = 0, ?Throwable $throwable = null)
{
if ($message === '') {
$message = $this->createDefaultMessageWithLocation();
diff --git a/vendor/rector/rector/src/FamilyTree/NodeAnalyzer/ClassChildAnalyzer.php b/vendor/rector/rector/src/FamilyTree/NodeAnalyzer/ClassChildAnalyzer.php
index 1d62b294d..2da94533f 100644
--- a/vendor/rector/rector/src/FamilyTree/NodeAnalyzer/ClassChildAnalyzer.php
+++ b/vendor/rector/rector/src/FamilyTree/NodeAnalyzer/ClassChildAnalyzer.php
@@ -40,7 +40,7 @@ public function resolveParentClassMethodReturnType(ClassReflection $classReflect
return new MixedType();
}
foreach ($parentClassMethods as $parentClassMethod) {
- $parametersAcceptor = ParametersAcceptorSelector::selectSingle($parentClassMethod->getVariants());
+ $parametersAcceptor = ParametersAcceptorSelector::combineAcceptors($parentClassMethod->getVariants());
$nativeReturnType = $parametersAcceptor->getNativeReturnType();
if (!$nativeReturnType instanceof MixedType) {
return $nativeReturnType;
@@ -53,6 +53,9 @@ public function resolveParentClassMethodReturnType(ClassReflection $classReflect
*/
private function resolveParentClassMethods(ClassReflection $classReflection, string $methodName) : array
{
+ if ($classReflection->hasNativeMethod($methodName) && $classReflection->getNativeMethod($methodName)->isPrivate()) {
+ return [];
+ }
$parentClassMethods = [];
$parents = \array_merge($classReflection->getParents(), $classReflection->getInterfaces());
foreach ($parents as $parent) {
diff --git a/vendor/rector/rector/src/FamilyTree/Reflection/FamilyRelationsAnalyzer.php b/vendor/rector/rector/src/FamilyTree/Reflection/FamilyRelationsAnalyzer.php
index ca433d087..9915012f6 100644
--- a/vendor/rector/rector/src/FamilyTree/Reflection/FamilyRelationsAnalyzer.php
+++ b/vendor/rector/rector/src/FamilyTree/Reflection/FamilyRelationsAnalyzer.php
@@ -9,7 +9,6 @@
use PHPStan\Reflection\ClassReflection;
use PHPStan\Reflection\ReflectionProvider;
use Rector\NodeNameResolver\NodeNameResolver;
-use Rector\Util\Reflection\PrivatesAccessor;
final class FamilyRelationsAnalyzer
{
/**
@@ -22,35 +21,10 @@ final class FamilyRelationsAnalyzer
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
- /**
- * @readonly
- * @var \Rector\Util\Reflection\PrivatesAccessor
- */
- private $privatesAccessor;
- public function __construct(ReflectionProvider $reflectionProvider, NodeNameResolver $nodeNameResolver, PrivatesAccessor $privatesAccessor)
+ public function __construct(ReflectionProvider $reflectionProvider, NodeNameResolver $nodeNameResolver)
{
$this->reflectionProvider = $reflectionProvider;
$this->nodeNameResolver = $nodeNameResolver;
- $this->privatesAccessor = $privatesAccessor;
- }
- /**
- * @return ClassReflection[]
- */
- public function getChildrenOfClassReflection(ClassReflection $desiredClassReflection) : array
- {
- if ($desiredClassReflection->isFinalByKeyword()) {
- return [];
- }
- /** @var ClassReflection[] $classReflections */
- $classReflections = $this->privatesAccessor->getPrivateProperty($this->reflectionProvider, 'classes');
- $childrenClassReflections = [];
- foreach ($classReflections as $classReflection) {
- if (!$classReflection->isSubclassOf($desiredClassReflection->getName())) {
- continue;
- }
- $childrenClassReflections[] = $classReflection;
- }
- return $childrenClassReflections;
}
/**
* @api
diff --git a/vendor/rector/rector/src/FileSystem/FileAndDirectoryFilter.php b/vendor/rector/rector/src/FileSystem/FileAndDirectoryFilter.php
index 43e7d46ca..10f0bedfd 100644
--- a/vendor/rector/rector/src/FileSystem/FileAndDirectoryFilter.php
+++ b/vendor/rector/rector/src/FileSystem/FileAndDirectoryFilter.php
@@ -15,7 +15,7 @@ final class FileAndDirectoryFilter
public function filterDirectories(array $filesAndDirectories) : array
{
$directories = \array_filter($filesAndDirectories, static function (string $path) : bool {
- return \is_dir($path);
+ return \is_dir($path) && \realpath($path) !== \false;
});
return \array_values($directories);
}
@@ -26,7 +26,7 @@ public function filterDirectories(array $filesAndDirectories) : array
public function filterFiles(array $filesAndDirectories) : array
{
$files = \array_filter($filesAndDirectories, static function (string $path) : bool {
- return \is_file($path);
+ return \is_file($path) && \realpath($path) !== \false;
});
return \array_values($files);
}
diff --git a/vendor/rector/rector/src/FileSystem/FilePathHelper.php b/vendor/rector/rector/src/FileSystem/FilePathHelper.php
index 1f3c628c6..3c6215281 100644
--- a/vendor/rector/rector/src/FileSystem/FilePathHelper.php
+++ b/vendor/rector/rector/src/FileSystem/FilePathHelper.php
@@ -3,10 +3,10 @@
declare (strict_types=1);
namespace Rector\FileSystem;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use Rector\Skipper\FileSystem\PathNormalizer;
-use RectorPrefix202405\Symfony\Component\Filesystem\Filesystem;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Symfony\Component\Filesystem\Filesystem;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\FileSystem\FilePathHelperTest
*/
diff --git a/vendor/rector/rector/src/FileSystem/FilesFinder.php b/vendor/rector/rector/src/FileSystem/FilesFinder.php
index 03c88f5bb..750919ab0 100644
--- a/vendor/rector/rector/src/FileSystem/FilesFinder.php
+++ b/vendor/rector/rector/src/FileSystem/FilesFinder.php
@@ -3,9 +3,14 @@
declare (strict_types=1);
namespace Rector\FileSystem;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use Rector\Caching\Detector\ChangedFilesDetector;
use Rector\Caching\UnchangedFilesFilter;
+use Rector\Configuration\Option;
+use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\Skipper\Skipper\PathSkipper;
-use RectorPrefix202405\Symfony\Component\Finder\Finder;
+use Rector\ValueObject\Configuration;
+use RectorPrefix202410\Symfony\Component\Finder\Finder;
/**
* @see \Rector\Tests\FileSystem\FilesFinder\FilesFinderTest
*/
@@ -31,12 +36,24 @@ final class FilesFinder
* @var \Rector\Skipper\Skipper\PathSkipper
*/
private $pathSkipper;
- public function __construct(\Rector\FileSystem\FilesystemTweaker $filesystemTweaker, UnchangedFilesFilter $unchangedFilesFilter, \Rector\FileSystem\FileAndDirectoryFilter $fileAndDirectoryFilter, PathSkipper $pathSkipper)
+ /**
+ * @readonly
+ * @var \Rector\FileSystem\FilePathHelper
+ */
+ private $filePathHelper;
+ /**
+ * @readonly
+ * @var \Rector\Caching\Detector\ChangedFilesDetector
+ */
+ private $changedFilesDetector;
+ public function __construct(\Rector\FileSystem\FilesystemTweaker $filesystemTweaker, UnchangedFilesFilter $unchangedFilesFilter, \Rector\FileSystem\FileAndDirectoryFilter $fileAndDirectoryFilter, PathSkipper $pathSkipper, \Rector\FileSystem\FilePathHelper $filePathHelper, ChangedFilesDetector $changedFilesDetector)
{
$this->filesystemTweaker = $filesystemTweaker;
$this->unchangedFilesFilter = $unchangedFilesFilter;
$this->fileAndDirectoryFilter = $fileAndDirectoryFilter;
$this->pathSkipper = $pathSkipper;
+ $this->filePathHelper = $filePathHelper;
+ $this->changedFilesDetector = $changedFilesDetector;
}
/**
* @param string[] $source
@@ -46,8 +63,12 @@ public function __construct(\Rector\FileSystem\FilesystemTweaker $filesystemTwea
public function findInDirectoriesAndFiles(array $source, array $suffixes = [], bool $sortByName = \true) : array
{
$filesAndDirectories = $this->filesystemTweaker->resolveWithFnmatch($source);
- $files = $this->fileAndDirectoryFilter->filterFiles($filesAndDirectories);
- $filteredFilePaths = \array_filter($files, function (string $filePath) : bool {
+ // filtering files in files collection
+ $filteredFilePaths = $this->fileAndDirectoryFilter->filterFiles($filesAndDirectories);
+ $filteredFilePaths = \array_map(function (string $filePath) : string {
+ return \realpath($filePath);
+ }, $filteredFilePaths);
+ $filteredFilePaths = \array_filter($filteredFilePaths, function (string $filePath) : bool {
return !$this->pathSkipper->shouldSkip($filePath);
});
if ($suffixes !== []) {
@@ -57,10 +78,37 @@ public function findInDirectoriesAndFiles(array $source, array $suffixes = [], b
};
$filteredFilePaths = \array_filter($filteredFilePaths, $fileWithExtensionsFilter);
}
+ $filteredFilePaths = \array_filter($filteredFilePaths, function (string $file) : bool {
+ if ($this->isStartWithShortPHPTag(FileSystem::read($file))) {
+ SimpleParameterProvider::addParameter(Option::SKIPPED_START_WITH_SHORT_OPEN_TAG_FILES, $this->filePathHelper->relativePath($file));
+ return \false;
+ }
+ return \true;
+ });
+ // filtering files in directories collection
$directories = $this->fileAndDirectoryFilter->filterDirectories($filesAndDirectories);
$filteredFilePathsInDirectories = $this->findInDirectories($directories, $suffixes, $sortByName);
$filePaths = \array_merge($filteredFilePaths, $filteredFilePathsInDirectories);
- return $this->unchangedFilesFilter->filterFileInfos($filePaths);
+ return $this->unchangedFilesFilter->filterFilePaths($filePaths);
+ }
+ /**
+ * @param string[] $paths
+ * @return string[]
+ */
+ public function findFilesInPaths(array $paths, Configuration $configuration) : array
+ {
+ if ($configuration->shouldClearCache()) {
+ $this->changedFilesDetector->clear();
+ }
+ $supportedFileExtensions = $configuration->getFileExtensions();
+ return $this->findInDirectoriesAndFiles($paths, $supportedFileExtensions);
+ }
+ /**
+ * Exclude short "=" tags as lead to invalid changes
+ */
+ private function isStartWithShortPHPTag(string $fileContent) : bool
+ {
+ return \strncmp(\ltrim($fileContent), '=', \strlen('=')) === 0;
}
/**
* @param string[] $directories
@@ -92,6 +140,10 @@ private function findInDirectories(array $directories, array $suffixes, bool $so
if ($this->pathSkipper->shouldSkip($path)) {
continue;
}
+ if ($this->isStartWithShortPHPTag($fileInfo->getContents())) {
+ SimpleParameterProvider::addParameter(Option::SKIPPED_START_WITH_SHORT_OPEN_TAG_FILES, $this->filePathHelper->relativePath($path));
+ continue;
+ }
$filePaths[] = $path;
}
return $filePaths;
diff --git a/vendor/rector/rector/src/FileSystem/InitFilePathsResolver.php b/vendor/rector/rector/src/FileSystem/InitFilePathsResolver.php
index 3b913f7cc..0555480be 100644
--- a/vendor/rector/rector/src/FileSystem/InitFilePathsResolver.php
+++ b/vendor/rector/rector/src/FileSystem/InitFilePathsResolver.php
@@ -3,19 +3,24 @@
declare (strict_types=1);
namespace Rector\FileSystem;
-use RectorPrefix202405\Symfony\Component\Finder\Finder;
-use RectorPrefix202405\Symfony\Component\Finder\SplFileInfo;
+use RectorPrefix202410\Symfony\Component\Finder\Finder;
+use RectorPrefix202410\Symfony\Component\Finder\SplFileInfo;
/**
* @see \Rector\Tests\FileSystem\InitFilePathsResolver\InitFilePathsResolverTest
*/
final class InitFilePathsResolver
{
+ /**
+ * @var string
+ * @see https://regex101.com/r/XkQ6Pe/1
+ */
+ private const DO_NOT_INCLUDE_PATHS_REGEX = '#(vendor|var|stubs|temp|templates|tmp|e2e|bin|build|Migrations|data(?:base)?|storage|migrations|writable)#';
/**
* @return string[]
*/
public function resolve(string $projectDirectory) : array
{
- $rootDirectoryFinder = Finder::create()->directories()->depth(0)->notPath('#(vendor|var|stubs|temp|templates|tmp|e2e|bin|build|Migrations|database|storage|migrations)#')->in($projectDirectory)->sortByName();
+ $rootDirectoryFinder = Finder::create()->directories()->depth(0)->notPath(self::DO_NOT_INCLUDE_PATHS_REGEX)->in($projectDirectory)->sortByName();
/** @var SplFileInfo[] $rootDirectoryFileInfos */
$rootDirectoryFileInfos = \iterator_to_array($rootDirectoryFinder);
$projectDirectories = [];
diff --git a/vendor/rector/rector/src/FileSystem/JsonFileSystem.php b/vendor/rector/rector/src/FileSystem/JsonFileSystem.php
index cee87745b..04a466913 100644
--- a/vendor/rector/rector/src/FileSystem/JsonFileSystem.php
+++ b/vendor/rector/rector/src/FileSystem/JsonFileSystem.php
@@ -3,8 +3,8 @@
declare (strict_types=1);
namespace Rector\FileSystem;
-use RectorPrefix202405\Nette\Utils\FileSystem;
-use RectorPrefix202405\Nette\Utils\Json;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\Json;
final class JsonFileSystem
{
/**
diff --git a/vendor/rector/rector/src/Git/RepositoryHelper.php b/vendor/rector/rector/src/Git/RepositoryHelper.php
index 1c5476cc2..c3b73a5e1 100644
--- a/vendor/rector/rector/src/Git/RepositoryHelper.php
+++ b/vendor/rector/rector/src/Git/RepositoryHelper.php
@@ -3,8 +3,8 @@
declare (strict_types=1);
namespace Rector\Git;
-use RectorPrefix202405\Nette\Utils\Strings;
-use RectorPrefix202405\Symfony\Component\Process\Process;
+use RectorPrefix202410\Nette\Utils\Strings;
+use RectorPrefix202410\Symfony\Component\Process\Process;
final class RepositoryHelper
{
/**
diff --git a/vendor/rector/rector/src/NodeAnalyzer/DoctrineEntityAnalyzer.php b/vendor/rector/rector/src/NodeAnalyzer/DoctrineEntityAnalyzer.php
index bc170de61..ac2505626 100644
--- a/vendor/rector/rector/src/NodeAnalyzer/DoctrineEntityAnalyzer.php
+++ b/vendor/rector/rector/src/NodeAnalyzer/DoctrineEntityAnalyzer.php
@@ -9,7 +9,7 @@
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
/**
- * @api
+ * @api used in doctrine
*/
final class DoctrineEntityAnalyzer
{
diff --git a/vendor/rector/rector/src/NodeCollector/NodeAnalyzer/ArrayCallableMethodMatcher.php b/vendor/rector/rector/src/NodeCollector/NodeAnalyzer/ArrayCallableMethodMatcher.php
index 96e0af13b..385e8509e 100644
--- a/vendor/rector/rector/src/NodeCollector/NodeAnalyzer/ArrayCallableMethodMatcher.php
+++ b/vendor/rector/rector/src/NodeCollector/NodeAnalyzer/ArrayCallableMethodMatcher.php
@@ -165,7 +165,7 @@ private function resolveClassContextType($classContext, Scope $scope, ?string $c
return new ObjectType($classConstantReference, null, $classReflection);
}
$extendedMethodReflection = $classReflection->getMethod(MethodName::CONSTRUCT, $scope);
- $parametersAcceptorWithPhpDocs = ParametersAcceptorSelector::selectSingle($extendedMethodReflection->getVariants());
+ $parametersAcceptorWithPhpDocs = ParametersAcceptorSelector::combineAcceptors($extendedMethodReflection->getVariants());
foreach ($parametersAcceptorWithPhpDocs->getParameters() as $parameterReflectionWithPhpDoc) {
if (!$parameterReflectionWithPhpDoc->getDefaultValue() instanceof Type) {
return new MixedType();
diff --git a/vendor/rector/rector/src/NodeManipulator/AssignManipulator.php b/vendor/rector/rector/src/NodeManipulator/AssignManipulator.php
index 36959236a..21e610023 100644
--- a/vendor/rector/rector/src/NodeManipulator/AssignManipulator.php
+++ b/vendor/rector/rector/src/NodeManipulator/AssignManipulator.php
@@ -72,7 +72,10 @@ public function isLeftPartOfAssign(Node $node) : bool
if ($node->getAttribute(AttributeKey::IS_BEING_ASSIGNED) === \true) {
return \true;
}
- return $node->getAttribute(AttributeKey::IS_ASSIGNED_TO) === \true;
+ if ($node->getAttribute(AttributeKey::IS_ASSIGN_REF_EXPR) === \true) {
+ return \true;
+ }
+ return $node->getAttribute(AttributeKey::IS_ASSIGN_OP_VAR) === \true;
}
/**
* @api doctrine
diff --git a/vendor/rector/rector/src/NodeManipulator/ClassManipulator.php b/vendor/rector/rector/src/NodeManipulator/ClassManipulator.php
index 2476b86c7..c3d0be1c1 100644
--- a/vendor/rector/rector/src/NodeManipulator/ClassManipulator.php
+++ b/vendor/rector/rector/src/NodeManipulator/ClassManipulator.php
@@ -24,7 +24,7 @@ public function __construct(NodeNameResolver $nodeNameResolver, ReflectionProvid
$this->nodeNameResolver = $nodeNameResolver;
$this->reflectionProvider = $reflectionProvider;
}
- public function hasParentMethodOrInterface(ObjectType $objectType, string $oldMethod, string $newMethod) : bool
+ public function hasParentMethodOrInterface(ObjectType $objectType, string $oldMethod) : bool
{
if (!$this->reflectionProvider->hasClass($objectType->getClassName())) {
return \false;
diff --git a/vendor/rector/rector/src/NodeManipulator/IfManipulator.php b/vendor/rector/rector/src/NodeManipulator/IfManipulator.php
index 279695401..b2ea3821a 100644
--- a/vendor/rector/rector/src/NodeManipulator/IfManipulator.php
+++ b/vendor/rector/rector/src/NodeManipulator/IfManipulator.php
@@ -157,10 +157,6 @@ public function isIfWithOnly(If_ $if, string $stmtClass) : bool
}
return $this->hasOnlyStmtOfType($if, $stmtClass);
}
- public function isIfWithOnlyOneStmt(If_ $if) : bool
- {
- return \count($if->stmts) === 1;
- }
public function isIfWithoutElseAndElseIfs(If_ $if) : bool
{
if ($if->else instanceof Else_) {
diff --git a/vendor/rector/rector/src/NodeManipulator/PropertyFetchAssignManipulator.php b/vendor/rector/rector/src/NodeManipulator/PropertyFetchAssignManipulator.php
index a503f3e48..847206def 100644
--- a/vendor/rector/rector/src/NodeManipulator/PropertyFetchAssignManipulator.php
+++ b/vendor/rector/rector/src/NodeManipulator/PropertyFetchAssignManipulator.php
@@ -5,6 +5,7 @@
use PhpParser\Node;
use PhpParser\Node\Expr\Assign;
+use PhpParser\Node\Expr\AssignOp;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
@@ -50,7 +51,7 @@ public function isAssignedMultipleTimesInConstructor(Class_ $class, Property $pr
if ($node instanceof Class_ || $node instanceof Function_) {
return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
}
- if (!$node instanceof Assign) {
+ if (!$node instanceof Assign && !$node instanceof AssignOp) {
return null;
}
if (!$this->propertyFetchAnalyzer->isLocalPropertyFetchName($node->var, $propertyName)) {
diff --git a/vendor/rector/rector/src/NodeManipulator/PropertyManipulator.php b/vendor/rector/rector/src/NodeManipulator/PropertyManipulator.php
index f765e5b34..784923d8c 100644
--- a/vendor/rector/rector/src/NodeManipulator/PropertyManipulator.php
+++ b/vendor/rector/rector/src/NodeManipulator/PropertyManipulator.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\NodeManipulator;
-use RectorPrefix202405\Doctrine\ORM\Mapping\Table;
+use RectorPrefix202410\Doctrine\ORM\Mapping\Table;
use PhpParser\Node;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\StaticPropertyFetch;
diff --git a/vendor/rector/rector/src/NodeManipulator/StmtsManipulator.php b/vendor/rector/rector/src/NodeManipulator/StmtsManipulator.php
index 1c0076d6e..2ec893d40 100644
--- a/vendor/rector/rector/src/NodeManipulator/StmtsManipulator.php
+++ b/vendor/rector/rector/src/NodeManipulator/StmtsManipulator.php
@@ -4,10 +4,12 @@
namespace Rector\NodeManipulator;
use PhpParser\Node;
+use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
+use Rector\DeadCode\NodeAnalyzer\ExprUsedInNodeAnalyzer;
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
use Rector\PhpParser\Comparing\NodeComparator;
use Rector\PhpParser\Node\BetterNodeFinder;
@@ -28,11 +30,17 @@ final class StmtsManipulator
* @var \Rector\PhpParser\Comparing\NodeComparator
*/
private $nodeComparator;
- public function __construct(SimpleCallableNodeTraverser $simpleCallableNodeTraverser, BetterNodeFinder $betterNodeFinder, NodeComparator $nodeComparator)
+ /**
+ * @readonly
+ * @var \Rector\DeadCode\NodeAnalyzer\ExprUsedInNodeAnalyzer
+ */
+ private $exprUsedInNodeAnalyzer;
+ public function __construct(SimpleCallableNodeTraverser $simpleCallableNodeTraverser, BetterNodeFinder $betterNodeFinder, NodeComparator $nodeComparator, ExprUsedInNodeAnalyzer $exprUsedInNodeAnalyzer)
{
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->betterNodeFinder = $betterNodeFinder;
$this->nodeComparator = $nodeComparator;
+ $this->exprUsedInNodeAnalyzer = $exprUsedInNodeAnalyzer;
}
/**
* @param Stmt[] $stmts
@@ -65,12 +73,18 @@ public function filterOutExistingStmts(ClassMethod $classMethod, array $stmts) :
});
return $stmts;
}
- public function isVariableUsedInNextStmt(StmtsAwareInterface $stmtsAware, int $jumpToKey, string $variableName) : bool
+ /**
+ * @param StmtsAwareInterface|Stmt[] $stmtsAware
+ */
+ public function isVariableUsedInNextStmt($stmtsAware, int $jumpToKey, string $variableName) : bool
{
- if ($stmtsAware->stmts === null) {
+ if ($stmtsAware instanceof StmtsAwareInterface && $stmtsAware->stmts === null) {
return \false;
}
- $stmts = \array_slice($stmtsAware->stmts, $jumpToKey, null, \true);
- return (bool) $this->betterNodeFinder->findVariableOfName($stmts, $variableName);
+ $stmts = \array_slice($stmtsAware instanceof StmtsAwareInterface ? $stmtsAware->stmts : $stmtsAware, $jumpToKey, null, \true);
+ $variable = new Variable($variableName);
+ return (bool) $this->betterNodeFinder->findFirst($stmts, function (Node $subNode) use($variable) : bool {
+ return $this->exprUsedInNodeAnalyzer->isUsed($subNode, $variable);
+ });
}
}
diff --git a/vendor/rector/rector/src/NodeNameResolver/NodeNameResolver.php b/vendor/rector/rector/src/NodeNameResolver/NodeNameResolver.php
index 03896b366..39fbbe5c9 100644
--- a/vendor/rector/rector/src/NodeNameResolver/NodeNameResolver.php
+++ b/vendor/rector/rector/src/NodeNameResolver/NodeNameResolver.php
@@ -26,6 +26,7 @@
use Rector\NodeAnalyzer\CallAnalyzer;
use Rector\NodeNameResolver\Contract\NodeNameResolverInterface;
use Rector\NodeTypeResolver\Node\AttributeKey;
+use Rector\ValueObject\MethodName;
final class NodeNameResolver
{
/**
@@ -78,6 +79,7 @@ public function isNames(Node $node, array $names) : bool
}
/**
* @param Node|Node[] $node
+ * @param MethodName::*|string $name
*/
public function isName($node, string $name) : bool
{
@@ -89,24 +91,6 @@ public function isName($node, string $name) : bool
}
return \false;
}
- /**
- * @api
- * @deprecated This method is unused and will be removed, go for isName() instead
- */
- public function isCaseSensitiveName(Node $node, string $name) : bool
- {
- if ($name === '') {
- return \false;
- }
- if ($node instanceof CallLike && !$node instanceof FuncCall) {
- return \false;
- }
- $resolvedName = $this->getName($node);
- if ($resolvedName === null) {
- return \false;
- }
- return $name === $resolvedName;
- }
/**
* Some nodes have always-known string name. This makes PHPStan smarter.
* @see https://phpstan.org/writing-php-code/phpdoc-types#conditional-return-types
diff --git a/vendor/rector/rector/src/NodeNameResolver/Regex/RegexPatternDetector.php b/vendor/rector/rector/src/NodeNameResolver/Regex/RegexPatternDetector.php
index 05eaa63e0..d43761b3c 100644
--- a/vendor/rector/rector/src/NodeNameResolver/Regex/RegexPatternDetector.php
+++ b/vendor/rector/rector/src/NodeNameResolver/Regex/RegexPatternDetector.php
@@ -11,6 +11,10 @@ final class RegexPatternDetector
* This prevents miss matching like "aMethoda"
*/
private const POSSIBLE_DELIMITERS = ['#', '~', '/'];
+ /**
+ * @var array
+ */
+ private const START_AND_END_DELIMITERS = ['(' => ')', '{' => '}', '[' => ']', '<' => '>'];
public function isRegexPattern(string $name) : bool
{
if (\strlen($name) <= 2) {
@@ -19,6 +23,15 @@ public function isRegexPattern(string $name) : bool
$firstChar = $name[0];
$lastChar = $name[\strlen($name) - 1];
if ($firstChar !== $lastChar) {
+ foreach (self::START_AND_END_DELIMITERS as $start => $end) {
+ if ($firstChar !== $start) {
+ continue;
+ }
+ if ($lastChar !== $end) {
+ continue;
+ }
+ return \true;
+ }
return \false;
}
return \in_array($firstChar, self::POSSIBLE_DELIMITERS, \true);
diff --git a/vendor/rector/rector/src/NodeTypeResolver/DependencyInjection/PHPStanServicesFactory.php b/vendor/rector/rector/src/NodeTypeResolver/DependencyInjection/PHPStanServicesFactory.php
index 3b3d0ca93..b8407e10c 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/DependencyInjection/PHPStanServicesFactory.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/DependencyInjection/PHPStanServicesFactory.php
@@ -15,11 +15,11 @@
use Rector\Configuration\Option;
use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\DynamicSourceLocatorProvider;
-use RectorPrefix202405\Symfony\Component\Console\Input\ArrayInput;
-use RectorPrefix202405\Symfony\Component\Console\Output\ConsoleOutput;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Input\ArrayInput;
+use RectorPrefix202410\Symfony\Component\Console\Output\ConsoleOutput;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
use Throwable;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* Factory so Symfony app can use services from PHPStan container
*
@@ -141,6 +141,6 @@ private function resolveAdditionalConfigFiles() : array
$additionalConfigFiles[] = __DIR__ . '/../../../config/phpstan/static-reflection.neon';
$additionalConfigFiles[] = __DIR__ . '/../../../config/phpstan/better-infer.neon';
$additionalConfigFiles[] = __DIR__ . '/../../../config/phpstan/parser.neon';
- return \array_filter($additionalConfigFiles, 'file_exists');
+ return \array_filter($additionalConfigFiles, \Closure::fromCallable('file_exists'));
}
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/Node/AttributeKey.php b/vendor/rector/rector/src/NodeTypeResolver/Node/AttributeKey.php
index 9bba67920..9d0c847fa 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/Node/AttributeKey.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/Node/AttributeKey.php
@@ -14,10 +14,6 @@ final class AttributeKey
* @var string
*/
public const RAW_VALUE = 'rawValue';
- /**
- * @var string
- */
- public const VIRTUAL_NODE = 'virtual_node';
/**
* @see Scope
* @var string
@@ -44,21 +40,6 @@ final class AttributeKey
* @var string
*/
public const ORIGINAL_NAME = 'originalName';
- /**
- * @deprecated Refactor to a custom visitors/parent node instead,
- * @see https://phpstan.org/blog/preprocessing-ast-for-custom-rules
- *
- * @internal of php-parser, do not change
- * @see https://github.com/nikic/PHP-Parser/pull/681/files
- * @var string
- *
- * @api for BC layer
- *
- * The parent node can be still enabled by using custom PHPStan configuration,
- * @see https://github.com/rectorphp/rector-src/pull/4458#discussion_r1257478146
- * @see https://github.com/rectorphp/rector-src/pull/4841
- */
- public const PARENT_NODE = 'parent';
/**
* Internal php-parser name.
* Do not change this even if you want!
@@ -172,15 +153,15 @@ final class AttributeKey
/**
* @var string
*/
- public const IS_MULTI_ASSIGN = 'is_multi_assign';
+ public const IS_ASSIGN_OP_VAR = 'is_assign_op_var';
/**
* @var string
*/
- public const STATEMENT_DEPTH = 'statementDepth';
+ public const IS_ASSIGN_REF_EXPR = 'is_assign_ref_expr';
/**
* @var string
*/
- public const EXPRESSION_DEPTH = 'expressionDepth';
+ public const IS_MULTI_ASSIGN = 'is_multi_assign';
/**
* @var string
*/
diff --git a/vendor/rector/rector/src/NodeTypeResolver/NodeScopeAndMetadataDecorator.php b/vendor/rector/rector/src/NodeTypeResolver/NodeScopeAndMetadataDecorator.php
index 63e6fbd72..0c1e3392a 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/NodeScopeAndMetadataDecorator.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/NodeScopeAndMetadataDecorator.php
@@ -7,9 +7,7 @@
use PhpParser\NodeTraverser;
use PhpParser\NodeVisitor\CloningVisitor;
use Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver;
-use Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory;
use Rector\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser;
-use Rector\PHPStan\NodeVisitor\UnreachableStatementNodeVisitor;
final class NodeScopeAndMetadataDecorator
{
/**
@@ -17,11 +15,6 @@ final class NodeScopeAndMetadataDecorator
* @var \Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver
*/
private $phpStanNodeScopeResolver;
- /**
- * @readonly
- * @var \Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory
- */
- private $scopeFactory;
/**
* @readonly
* @var \Rector\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser
@@ -32,10 +25,9 @@ final class NodeScopeAndMetadataDecorator
* @var \PhpParser\NodeTraverser
*/
private $nodeTraverser;
- public function __construct(CloningVisitor $cloningVisitor, PHPStanNodeScopeResolver $phpStanNodeScopeResolver, ScopeFactory $scopeFactory, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
+ public function __construct(CloningVisitor $cloningVisitor, PHPStanNodeScopeResolver $phpStanNodeScopeResolver, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
{
$this->phpStanNodeScopeResolver = $phpStanNodeScopeResolver;
- $this->scopeFactory = $scopeFactory;
$this->fileWithoutNamespaceNodeTraverser = $fileWithoutNamespaceNodeTraverser;
$this->nodeTraverser = new NodeTraverser();
// needed for format preserving printing
@@ -49,19 +41,6 @@ public function decorateNodesFromFile(string $filePath, array $stmts) : array
{
$stmts = $this->fileWithoutNamespaceNodeTraverser->traverse($stmts);
$stmts = $this->phpStanNodeScopeResolver->processNodes($stmts, $filePath);
- if ($this->phpStanNodeScopeResolver->hasUnreachableStatementNode()) {
- $unreachableStatementNodeVisitor = new UnreachableStatementNodeVisitor($this->phpStanNodeScopeResolver, $filePath, $this->scopeFactory);
- $this->nodeTraverser->addVisitor($unreachableStatementNodeVisitor);
- $stmts = $this->nodeTraverser->traverse($stmts);
- /**
- * immediate remove UnreachableStatementNodeVisitor after traverse to avoid
- * re-used in nodeTraverser property in next file
- */
- $this->nodeTraverser->removeVisitor($unreachableStatementNodeVisitor);
- // next file must be init hasUnreachableStatementNode to be false again
- $this->phpStanNodeScopeResolver->resetHasUnreachableStatementNode();
- return $stmts;
- }
return $this->nodeTraverser->traverse($stmts);
}
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeCorrector/AccessoryNonEmptyStringTypeCorrector.php b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeCorrector/AccessoryNonEmptyStringTypeCorrector.php
index 2ec1f8ec3..f122b1195 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeCorrector/AccessoryNonEmptyStringTypeCorrector.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeCorrector/AccessoryNonEmptyStringTypeCorrector.php
@@ -3,9 +3,8 @@
declare (strict_types=1);
namespace Rector\NodeTypeResolver\NodeTypeCorrector;
-use PHPStan\Type\Accessory\AccessoryNonEmptyStringType;
-use PHPStan\Type\Accessory\AccessoryNonFalsyStringType;
use PHPStan\Type\IntersectionType;
+use PHPStan\Type\StringType;
use PHPStan\Type\Type;
final class AccessoryNonEmptyStringTypeCorrector
{
@@ -20,19 +19,6 @@ public function correct(Type $mainType)
if (!$mainType->isNonEmptyString()->yes()) {
return $mainType;
}
- $clearIntersectionedTypes = [];
- foreach ($mainType->getTypes() as $intersectionedType) {
- if ($intersectionedType instanceof AccessoryNonEmptyStringType) {
- continue;
- }
- if ($intersectionedType instanceof AccessoryNonFalsyStringType) {
- continue;
- }
- $clearIntersectionedTypes[] = $intersectionedType;
- }
- if (\count($clearIntersectionedTypes) === 1) {
- return $clearIntersectionedTypes[0];
- }
- return new IntersectionType($clearIntersectionedTypes);
+ return new StringType();
}
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver.php b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver.php
index 1779f7875..cf0bc8a07 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver.php
@@ -8,17 +8,16 @@
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\BinaryOp\Coalesce;
use PhpParser\Node\Expr\ClassConstFetch;
-use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Expr\NullsafeMethodCall;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\Ternary;
-use PhpParser\Node\Name;
-use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\NullableType;
use PhpParser\Node\Scalar\String_;
-use PhpParser\Node\Stmt\Property;
+use PhpParser\Node\Stmt\ClassConst;
+use PhpParser\Node\Stmt\ClassLike;
+use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\UnionType as NodeUnionType;
use PHPStan\Analyser\Scope;
use PHPStan\Broker\ClassAutoloadingException;
@@ -39,6 +38,7 @@
use PHPStan\Type\TypeWithClassName;
use PHPStan\Type\UnionType;
use Rector\Configuration\RenamedClassesDataCollector;
+use Rector\Exception\ShouldNotHappenException;
use Rector\NodeAnalyzer\ClassAnalyzer;
use Rector\NodeTypeResolver\Contract\NodeTypeResolverAwareInterface;
use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface;
@@ -81,6 +81,10 @@ final class NodeTypeResolver
* @var \Rector\Configuration\RenamedClassesDataCollector
*/
private $renamedClassesDataCollector;
+ /**
+ * @var string
+ */
+ private const ERROR_MESSAGE = '%s itself does not have any type. Check the %s node instead';
/**
* @var array, NodeTypeResolverInterface>
*/
@@ -123,6 +127,10 @@ public function isObjectType(Node $node, ObjectType $requiredObjectType) : bool
if ($node instanceof ClassConstFetch) {
return \false;
}
+ // warn about invalid use of this method
+ if ($node instanceof ClassMethod || $node instanceof ClassConst) {
+ throw new ShouldNotHappenException(\sprintf(self::ERROR_MESSAGE, \get_class($node), ClassLike::class));
+ }
$resolvedType = $this->getType($node);
if ($resolvedType instanceof MixedType) {
return \false;
@@ -145,13 +153,7 @@ public function isObjectType(Node $node, ObjectType $requiredObjectType) : bool
}
public function getType(Node $node) : Type
{
- if ($node instanceof Property && $node->type instanceof Node) {
- return $this->getType($node->type);
- }
if ($node instanceof NullableType) {
- if ($node->type instanceof Name && $node->type->hasAttribute(AttributeKey::NAMESPACED_NAME)) {
- $node->type = new FullyQualified($node->type->getAttribute(AttributeKey::NAMESPACED_NAME));
- }
$type = $this->getType($node->type);
if (!$type instanceof MixedType) {
return new UnionType([$type, new NullType()]);
@@ -182,12 +184,6 @@ public function getType(Node $node) : Type
}
$scope = $node->getAttribute(AttributeKey::SCOPE);
if (!$scope instanceof Scope) {
- if ($node instanceof ConstFetch) {
- $name = $node->name->toString();
- if (\strtolower($name) === 'null') {
- return new NullType();
- }
- }
return new MixedType();
}
if ($node instanceof NodeUnionType) {
@@ -233,7 +229,7 @@ public function getNativeType(Expr $expr) : Type
return $type;
}
}
- $type = $scope->getNativeType($expr);
+ $type = $this->resolveNativeTypeWithBuiltinMethodCallFallback($expr, $scope);
if ($expr instanceof ArrayDimFetch) {
$type = $this->resolveArrayDimFetchType($expr, $scope, $type);
}
@@ -463,4 +459,18 @@ private function resolveTernaryType(Ternary $ternary)
}
return new MixedType();
}
+ /**
+ * Method calls on native PHP classes report mixed,
+ * even on strict known type; this fallbacks to getType() that provides correct type
+ */
+ private function resolveNativeTypeWithBuiltinMethodCallFallback(Expr $expr, Scope $scope) : Type
+ {
+ if ($expr instanceof MethodCall) {
+ $callerType = $scope->getType($expr->var);
+ if ($callerType instanceof ObjectType && $callerType->getClassReflection() instanceof ClassReflection && $callerType->getClassReflection()->isBuiltin()) {
+ return $scope->getType($expr);
+ }
+ }
+ return $scope->getNativeType($expr);
+ }
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/ClassConstFetchTypeResolver.php b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/ClassConstFetchTypeResolver.php
new file mode 100644
index 000000000..294fecd11
--- /dev/null
+++ b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/ClassConstFetchTypeResolver.php
@@ -0,0 +1,46 @@
+
+ */
+final class ClassConstFetchTypeResolver implements NodeTypeResolverInterface
+{
+ /**
+ * @return array>
+ */
+ public function getNodeClasses() : array
+ {
+ return [ClassConstFetch::class];
+ }
+ /**
+ * @param ClassConstFetch $node
+ */
+ public function resolve(Node $node) : Type
+ {
+ $scope = $node->getAttribute(AttributeKey::SCOPE);
+ if (!$scope instanceof Scope) {
+ return new MixedType();
+ }
+ if ($node->class instanceof FullyQualified) {
+ return $scope->getType($node);
+ }
+ if ($node->class instanceof Name && $node->class->hasAttribute(AttributeKey::NAMESPACED_NAME)) {
+ $newNode = clone $node;
+ $newNode->class = new FullyQualified($node->class->getAttribute(AttributeKey::NAMESPACED_NAME));
+ return $scope->getType($newNode);
+ }
+ return $scope->getType($node);
+ }
+}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/ClassMethodOrClassConstTypeResolver.php b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/ClassMethodOrClassConstTypeResolver.php
deleted file mode 100644
index ea4631394..000000000
--- a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/ClassMethodOrClassConstTypeResolver.php
+++ /dev/null
@@ -1,45 +0,0 @@
-
- */
-final class ClassMethodOrClassConstTypeResolver implements NodeTypeResolverInterface
-{
- /**
- * @return array>
- */
- public function getNodeClasses() : array
- {
- return [ClassMethod::class, ClassConst::class];
- }
- /**
- * @param ClassMethod|ClassConst $node
- */
- public function resolve(Node $node) : Type
- {
- $scope = $node->getAttribute(AttributeKey::SCOPE);
- if (!$scope instanceof Scope) {
- // anonymous class
- return new ObjectWithoutClassType();
- }
- $classReflection = $scope->getClassReflection();
- if (!$classReflection instanceof ClassReflection || $classReflection->isAnonymous()) {
- // anonymous class
- return new ObjectWithoutClassType();
- }
- return new ObjectType($classReflection->getName());
- }
-}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/NameTypeResolver.php b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/NameTypeResolver.php
index f2d9cf71c..cc6715a9a 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/NameTypeResolver.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/NameTypeResolver.php
@@ -8,7 +8,6 @@
use PhpParser\Node\Name\FullyQualified;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
-use PHPStan\Type\ArrayType;
use PHPStan\Type\MixedType;
use PHPStan\Type\ObjectType;
use PHPStan\Type\Type;
@@ -35,13 +34,14 @@ public function getNodeClasses() : array
*/
public function resolve(Node $node) : Type
{
+ // not instanceof FullyQualified means it is a Name
+ if (!$node instanceof FullyQualified && $node->hasAttribute(AttributeKey::NAMESPACED_NAME)) {
+ return $this->resolve(new FullyQualified($node->getAttribute(AttributeKey::NAMESPACED_NAME)));
+ }
if ($node->toString() === ObjectReference::PARENT) {
return $this->resolveParent($node);
}
$fullyQualifiedName = $this->resolveFullyQualifiedName($node);
- if ($node->toString() === 'array') {
- return new ArrayType(new MixedType(), new MixedType());
- }
return new ObjectType($fullyQualifiedName);
}
/**
@@ -82,7 +82,7 @@ private function resolveParent(Name $name)
private function resolveFullyQualifiedName(Name $name) : string
{
$nameValue = $name->toString();
- if (\in_array($nameValue, [ObjectReference::SELF, ObjectReference::STATIC, 'this'], \true)) {
+ if (\in_array($nameValue, [ObjectReference::SELF, ObjectReference::STATIC], \true)) {
$classReflection = $this->resolveClassReflection($name);
if (!$classReflection instanceof ClassReflection || $classReflection->isAnonymous()) {
return $name->toString();
diff --git a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/PropertyFetchTypeResolver.php b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/PropertyFetchTypeResolver.php
index 966c16192..db70f679e 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/PropertyFetchTypeResolver.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/PropertyFetchTypeResolver.php
@@ -90,7 +90,7 @@ private function getVendorPropertyFetchType(PropertyFetch $propertyFetch) : Type
if (!$propertyFetchScope instanceof Scope) {
return new MixedType();
}
- $propertyReflection = $classReflection->getProperty($propertyName, $propertyFetchScope);
- return $propertyReflection->getReadableType();
+ $extendedPropertyReflection = $classReflection->getProperty($propertyName, $propertyFetchScope);
+ return $extendedPropertyReflection->getReadableType();
}
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/StaticCallMethodCallTypeResolver.php b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/StaticCallMethodCallTypeResolver.php
index a0f68a4b2..4c6f0eef5 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/StaticCallMethodCallTypeResolver.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/NodeTypeResolver/StaticCallMethodCallTypeResolver.php
@@ -17,6 +17,8 @@
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\NodeTypeResolver\PHPStan\ParametersAcceptorSelectorVariantsWrapper;
+use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType;
+use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
/**
* @implements NodeTypeResolverInterface
*/
@@ -69,6 +71,9 @@ public function resolve(Node $node) : Type
} else {
$callerType = $this->nodeTypeResolver->getType($node->class);
}
+ if ($callerType instanceof AliasedObjectType) {
+ $callerType = new FullyQualifiedObjectType($callerType->getFullyQualifiedName());
+ }
foreach ($callerType->getObjectClassReflections() as $objectClassReflection) {
$classMethodReturnType = $this->resolveClassMethodReturnType($objectClassReflection, $node, $methodName, $scope);
if (!$classMethodReturnType instanceof MixedType) {
diff --git a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/ParametersAcceptorSelectorVariantsWrapper.php b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/ParametersAcceptorSelectorVariantsWrapper.php
index 6e32bf53d..1c0898339 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/ParametersAcceptorSelectorVariantsWrapper.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/ParametersAcceptorSelectorVariantsWrapper.php
@@ -23,8 +23,8 @@ public static function select($reflection, $node, Scope $scope) : ParametersAcce
return ParametersAcceptorSelector::combineAcceptors($variants);
}
if ($node->isFirstClassCallable()) {
- return ParametersAcceptorSelector::selectSingle($variants);
+ return ParametersAcceptorSelector::combineAcceptors($variants);
}
- return \count($variants) > 1 ? ParametersAcceptorSelector::selectFromArgs($scope, $node->getArgs(), $variants) : ParametersAcceptorSelector::selectSingle($variants);
+ return ParametersAcceptorSelector::selectFromArgs($scope, $node->getArgs(), $variants);
}
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/NodeVisitor/AssignedToNodeVisitor.php b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/NodeVisitor/AssignedToNodeVisitor.php
index 571467971..4b75dba56 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/NodeVisitor/AssignedToNodeVisitor.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/NodeVisitor/AssignedToNodeVisitor.php
@@ -6,6 +6,7 @@
use PhpParser\Node;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\AssignOp;
+use PhpParser\Node\Expr\AssignRef;
use PhpParser\NodeVisitorAbstract;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\PHPStan\Scope\Contract\NodeVisitor\ScopeResolverNodeVisitorInterface;
@@ -17,7 +18,11 @@ final class AssignedToNodeVisitor extends NodeVisitorAbstract implements ScopeRe
public function enterNode(Node $node) : ?Node
{
if ($node instanceof AssignOp) {
- $node->var->setAttribute(AttributeKey::IS_ASSIGNED_TO, \true);
+ $node->var->setAttribute(AttributeKey::IS_ASSIGN_OP_VAR, \true);
+ return null;
+ }
+ if ($node instanceof AssignRef) {
+ $node->expr->setAttribute(AttributeKey::IS_ASSIGN_REF_EXPR, \true);
return null;
}
if (!$node instanceof Assign) {
diff --git a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/NodeVisitor/StmtKeyNodeVisitor.php b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/NodeVisitor/StmtKeyNodeVisitor.php
index b9ea9109e..17b0af08b 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/NodeVisitor/StmtKeyNodeVisitor.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/NodeVisitor/StmtKeyNodeVisitor.php
@@ -6,39 +6,12 @@
use PhpParser\Node;
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\Declare_;
-use PhpParser\Node\Stmt\Namespace_;
use PhpParser\NodeVisitorAbstract;
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\PHPStan\Scope\Contract\NodeVisitor\ScopeResolverNodeVisitorInterface;
final class StmtKeyNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface
{
- /**
- * @param Node[] $nodes
- */
- public function beforeTraverse(array $nodes) : ?array
- {
- if ($nodes === []) {
- return null;
- }
- if (!$nodes[0] instanceof Declare_ && !$nodes[0] instanceof Namespace_) {
- return null;
- }
- // on target node or no other root stmt, eg: only namespace without declare, no need to index
- if (\count($nodes) === 1) {
- return null;
- }
- // ensure statement depth is 0 to avoid declare in deep statements
- // eg: declare(ticks=1) @see https://www.php.net/manual/en/control-structures.declare.php#123674
- $statementDepth = $nodes[0]->getAttribute(AttributeKey::STATEMENT_DEPTH);
- if ($statementDepth > 0 || $statementDepth === null) {
- return null;
- }
- foreach ($nodes as $key => $node) {
- $node->setAttribute(AttributeKey::STMT_KEY, $key);
- }
- return $nodes;
- }
public function enterNode(Node $node) : ?Node
{
if (!$node instanceof StmtsAwareInterface && !$node instanceof ClassLike && !$node instanceof Declare_) {
diff --git a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php
index 7c4978bb3..44b0d69df 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php
@@ -8,14 +8,17 @@
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
+use PhpParser\Node\Expr\ArrowFunction;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\AssignOp;
use PhpParser\Node\Expr\BinaryOp;
use PhpParser\Node\Expr\CallLike;
use PhpParser\Node\Expr\Cast;
use PhpParser\Node\Expr\ClassConstFetch;
+use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Expr\FuncCall;
+use PhpParser\Node\Expr\Match_;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Expr\NullsafeMethodCall;
@@ -28,14 +31,19 @@
use PhpParser\Node\IntersectionType;
use PhpParser\Node\Name;
use PhpParser\Node\NullableType;
+use PhpParser\Node\Param;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Catch_;
use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\ClassConst;
+use PhpParser\Node\Stmt\ClassLike;
+use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Enum_;
use PhpParser\Node\Stmt\EnumCase;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\Finally_;
use PhpParser\Node\Stmt\Foreach_;
+use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\Interface_;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Stmt\Return_;
@@ -48,20 +56,20 @@
use PHPStan\Analyser\NodeScopeResolver;
use PHPStan\Analyser\ScopeContext;
use PHPStan\Node\UnreachableStatementNode;
+use PHPStan\Node\VirtualNode;
use PHPStan\Reflection\ReflectionProvider;
+use PHPStan\ShouldNotHappenException;
use PHPStan\Type\ObjectType;
use PHPStan\Type\TypeCombinator;
-use Rector\Exception\ShouldNotHappenException;
use Rector\NodeAnalyzer\ClassAnalyzer;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\PHPStan\Scope\Contract\NodeVisitor\ScopeResolverNodeVisitorInterface;
use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
-use Rector\PHPStan\NodeVisitor\ExprScopeFromStmtNodeVisitor;
+use Rector\PHPStan\NodeVisitor\UnreachableStatementNodeVisitor;
use Rector\PHPStan\NodeVisitor\WrappedNodeRestoringNodeVisitor;
use Rector\Util\Reflection\PrivatesAccessor;
-use Throwable;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @inspired by https://github.com/silverstripe/silverstripe-upgrader/blob/532182b23e854d02e0b27e68ebc394f436de0682/src/UpgradeRule/PHP/Visitor/PHPStanScopeVisitor.php
* - https://github.com/silverstripe/silverstripe-upgrader/pull/57/commits/e5c7cfa166ad940d9d4ff69537d9f7608e992359#diff-5e0807bb3dc03d6a8d8b6ad049abd774
@@ -107,10 +115,6 @@ final class PHPStanNodeScopeResolver
* @var \PhpParser\NodeTraverser
*/
private $nodeTraverser;
- /**
- * @var bool
- */
- private $hasUnreachableStatementNode = \false;
/**
* @param ScopeResolverNodeVisitorInterface[] $nodeVisitors
*/
@@ -140,89 +144,147 @@ public function processNodes(array $stmts, string $filePath, ?MutatingScope $for
Assert::allIsInstanceOf($stmts, Stmt::class);
$this->nodeTraverser->traverse($stmts);
$scope = $formerMutatingScope ?? $this->scopeFactory->createFromFile($filePath);
- // skip chain method calls, performance issue: https://github.com/phpstan/phpstan/issues/254
- $nodeCallback = function (Node $node, MutatingScope $mutatingScope) use(&$nodeCallback, $filePath) : void {
- if ($node instanceof FileWithoutNamespace) {
+ $hasUnreachableStatementNode = \false;
+ $nodeCallback = function (Node $node, MutatingScope $mutatingScope) use(&$nodeCallback, $filePath, &$hasUnreachableStatementNode) : void {
+ // the class reflection is resolved AFTER entering to class node
+ // so we need to get it from the first after this one
+ if ($node instanceof Class_ || $node instanceof Interface_ || $node instanceof Enum_) {
+ /** @var MutatingScope $mutatingScope */
+ $mutatingScope = $this->resolveClassOrInterfaceScope($node, $mutatingScope);
$node->setAttribute(AttributeKey::SCOPE, $mutatingScope);
+ return;
+ }
+ if ($node instanceof Trait_) {
+ $this->processTrait($node, $mutatingScope, $nodeCallback);
+ return;
+ }
+ // special case for unreachable nodes
+ // early check here as UnreachableStatementNode is special VirtualNode
+ // so node to be checked inside
+ if ($node instanceof UnreachableStatementNode) {
+ $this->processUnreachableStatementNode($node, $filePath, $mutatingScope);
+ $hasUnreachableStatementNode = \true;
+ return;
+ }
+ // init current Node set Attribute
+ // not a VirtualNode, then set scope attribute
+ // do not return early, as its properties will be checked next
+ if (!$node instanceof VirtualNode) {
+ $node->setAttribute(AttributeKey::SCOPE, $mutatingScope);
+ }
+ if ($node instanceof FileWithoutNamespace) {
$this->nodeScopeResolverProcessNodes($node->stmts, $mutatingScope, $nodeCallback);
return;
}
+ $this->decorateNodeAttrGroups($node, $mutatingScope, $nodeCallback);
if (($node instanceof Expression || $node instanceof Return_ || $node instanceof EnumCase || $node instanceof Cast) && $node->expr instanceof Expr) {
$node->expr->setAttribute(AttributeKey::SCOPE, $mutatingScope);
- } elseif ($node instanceof Assign || $node instanceof AssignOp) {
+ return;
+ }
+ if ($node instanceof Assign || $node instanceof AssignOp) {
$this->processAssign($node, $mutatingScope);
- } elseif ($node instanceof Ternary) {
+ if ($node->var instanceof Variable && $node->var->name instanceof Expr) {
+ $this->nodeScopeResolverProcessNodes([new Expression($node->var), new Expression($node->expr)], $mutatingScope, $nodeCallback);
+ }
+ return;
+ }
+ if ($node instanceof Ternary) {
$this->processTernary($node, $mutatingScope);
- } elseif ($node instanceof BinaryOp) {
+ return;
+ }
+ if ($node instanceof BinaryOp) {
$this->processBinaryOp($node, $mutatingScope);
- } elseif ($node instanceof Arg) {
+ return;
+ }
+ if ($node instanceof Arg) {
$node->value->setAttribute(AttributeKey::SCOPE, $mutatingScope);
- } elseif ($node instanceof Foreach_) {
+ return;
+ }
+ if ($node instanceof Foreach_) {
// decorate value as well
$node->valueVar->setAttribute(AttributeKey::SCOPE, $mutatingScope);
if ($node->valueVar instanceof Array_) {
$this->processArray($node->valueVar, $mutatingScope);
}
- } elseif ($node instanceof Array_) {
+ return;
+ }
+ if ($node instanceof Array_) {
$this->processArray($node, $mutatingScope);
- } elseif ($node instanceof Property) {
+ return;
+ }
+ if ($node instanceof Property) {
$this->processProperty($node, $mutatingScope);
- } elseif ($node instanceof Switch_) {
+ return;
+ }
+ if ($node instanceof Switch_) {
$this->processSwitch($node, $mutatingScope);
- } elseif ($node instanceof TryCatch) {
+ return;
+ }
+ if ($node instanceof TryCatch) {
$this->processTryCatch($node, $mutatingScope);
- } elseif ($node instanceof Catch_) {
+ return;
+ }
+ if ($node instanceof Catch_) {
$this->processCatch($node, $filePath, $mutatingScope);
- } elseif ($node instanceof ArrayItem) {
+ return;
+ }
+ if ($node instanceof ArrayItem) {
$this->processArrayItem($node, $mutatingScope);
- } elseif ($node instanceof NullableType) {
+ return;
+ }
+ if ($node instanceof NullableType) {
$node->type->setAttribute(AttributeKey::SCOPE, $mutatingScope);
- } elseif ($node instanceof UnionType || $node instanceof IntersectionType) {
+ return;
+ }
+ if ($node instanceof UnionType || $node instanceof IntersectionType) {
foreach ($node->types as $type) {
$type->setAttribute(AttributeKey::SCOPE, $mutatingScope);
}
- } elseif ($node instanceof StaticPropertyFetch || $node instanceof ClassConstFetch) {
+ return;
+ }
+ if ($node instanceof StaticPropertyFetch || $node instanceof ClassConstFetch) {
$node->class->setAttribute(AttributeKey::SCOPE, $mutatingScope);
$node->name->setAttribute(AttributeKey::SCOPE, $mutatingScope);
- } elseif ($node instanceof PropertyFetch) {
+ return;
+ }
+ if ($node instanceof PropertyFetch) {
$node->var->setAttribute(AttributeKey::SCOPE, $mutatingScope);
$node->name->setAttribute(AttributeKey::SCOPE, $mutatingScope);
- } elseif ($node instanceof ConstFetch) {
- $node->name->setAttribute(AttributeKey::SCOPE, $mutatingScope);
- } elseif ($node instanceof CallLike) {
- $this->processCallike($node, $mutatingScope);
+ return;
}
- if ($node instanceof Trait_) {
- $this->processTrait($node, $mutatingScope, $nodeCallback);
+ if ($node instanceof ConstFetch) {
+ $node->name->setAttribute(AttributeKey::SCOPE, $mutatingScope);
return;
}
- // the class reflection is resolved AFTER entering to class node
- // so we need to get it from the first after this one
- if ($node instanceof Class_ || $node instanceof Interface_ || $node instanceof Enum_) {
- /** @var MutatingScope $mutatingScope */
- $mutatingScope = $this->resolveClassOrInterfaceScope($node, $mutatingScope);
+ if ($node instanceof CallLike) {
+ $this->processCallike($node, $mutatingScope);
+ return;
}
- // special case for unreachable nodes
- if ($node instanceof UnreachableStatementNode) {
- $this->processUnreachableStatementNode($node, $filePath, $mutatingScope);
- } else {
- $node->setAttribute(AttributeKey::SCOPE, $mutatingScope);
+ if ($node instanceof Match_) {
+ $this->processMatch($node, $mutatingScope);
+ return;
}
};
$this->nodeScopeResolverProcessNodes($stmts, $scope, $nodeCallback);
$nodeTraverser = new NodeTraverser();
$nodeTraverser->addVisitor(new WrappedNodeRestoringNodeVisitor());
- $nodeTraverser->addVisitor(new ExprScopeFromStmtNodeVisitor($this, $filePath, $scope));
+ if ($hasUnreachableStatementNode) {
+ $nodeTraverser->addVisitor(new UnreachableStatementNodeVisitor($this, $filePath, $scope));
+ }
$nodeTraverser->traverse($stmts);
return $stmts;
}
- public function hasUnreachableStatementNode() : bool
+ private function processMatch(Match_ $match, MutatingScope $mutatingScope) : void
{
- return $this->hasUnreachableStatementNode;
- }
- public function resetHasUnreachableStatementNode() : void
- {
- $this->hasUnreachableStatementNode = \false;
+ $match->cond->setAttribute(AttributeKey::SCOPE, $mutatingScope);
+ foreach ($match->arms as $arm) {
+ if ($arm->conds !== null) {
+ foreach ($arm->conds as $cond) {
+ $cond->setAttribute(AttributeKey::SCOPE, $mutatingScope);
+ }
+ }
+ $arm->body->setAttribute(AttributeKey::SCOPE, $mutatingScope);
+ }
}
/**
* @param Stmt[] $stmts
@@ -232,10 +294,7 @@ private function nodeScopeResolverProcessNodes(array $stmts, MutatingScope $muta
{
try {
$this->nodeScopeResolver->processNodes($stmts, $mutatingScope, $nodeCallback);
- } catch (Throwable $throwable) {
- if ($throwable->getMessage() !== 'Internal error.') {
- throw $throwable;
- }
+ } catch (ShouldNotHappenException $exception) {
}
}
private function processCallike(CallLike $callLike, MutatingScope $mutatingScope) : void
@@ -275,12 +334,20 @@ private function processArrayItem(ArrayItem $arrayItem, MutatingScope $mutatingS
}
$arrayItem->value->setAttribute(AttributeKey::SCOPE, $mutatingScope);
}
- private function decorateTraitAttrGroups(Trait_ $trait, MutatingScope $mutatingScope) : void
+ /**
+ * @param callable(Node $trait, MutatingScope $scope): void $nodeCallback
+ */
+ private function decorateNodeAttrGroups(Node $node, MutatingScope $mutatingScope, callable $nodeCallback) : void
{
- foreach ($trait->attrGroups as $attrGroup) {
+ // better to have AttrGroupsAwareInterface for all Node definition with attrGroups property
+ // but because may conflict with StmtsAwareInterface patch, this needs to be here
+ if (!$node instanceof Param && !$node instanceof ArrowFunction && !$node instanceof Closure && !$node instanceof ClassConst && !$node instanceof ClassLike && !$node instanceof ClassMethod && !$node instanceof EnumCase && !$node instanceof Function_ && !$node instanceof Property) {
+ return;
+ }
+ foreach ($node->attrGroups as $attrGroup) {
foreach ($attrGroup->attrs as $attr) {
foreach ($attr->args as $arg) {
- $arg->value->setAttribute(AttributeKey::SCOPE, $mutatingScope);
+ $this->nodeScopeResolverProcessNodes([new Expression($arg->value)], $mutatingScope, $nodeCallback);
}
}
}
@@ -313,7 +380,6 @@ private function processUnreachableStatementNode(UnreachableStatementNode $unrea
$originalStmt->setAttribute(AttributeKey::IS_UNREACHABLE, \true);
$originalStmt->setAttribute(AttributeKey::SCOPE, $mutatingScope);
$this->processNodes([$originalStmt], $filePath, $mutatingScope);
- $this->hasUnreachableStatementNode = \true;
}
private function processProperty(Property $property, MutatingScope $mutatingScope) : void
{
@@ -323,11 +389,6 @@ private function processProperty(Property $property, MutatingScope $mutatingScop
$propertyProperty->default->setAttribute(AttributeKey::SCOPE, $mutatingScope);
}
}
- foreach ($property->attrGroups as $attrGroup) {
- foreach ($attrGroup->attrs as $attribute) {
- $attribute->setAttribute(AttributeKey::SCOPE, $mutatingScope);
- }
- }
}
private function processBinaryOp(BinaryOp $binaryOp, MutatingScope $mutatingScope) : void
{
@@ -346,23 +407,28 @@ private function processTernary(Ternary $ternary, MutatingScope $mutatingScope)
*/
private function resolveClassOrInterfaceScope($classLike, MutatingScope $mutatingScope) : MutatingScope
{
- $className = $this->resolveClassName($classLike);
$isAnonymous = $this->classAnalyzer->isAnonymousClass($classLike);
// is anonymous class? - not possible to enter it since PHPStan 0.12.33, see https://github.com/phpstan/phpstan-src/commit/e87fb0ec26f9c8552bbeef26a868b1e5d8185e91
if ($classLike instanceof Class_ && $isAnonymous) {
$classReflection = $this->reflectionProvider->getAnonymousClassReflection($classLike, $mutatingScope);
- } elseif (!$this->reflectionProvider->hasClass($className)) {
- return $mutatingScope;
} else {
+ $className = $this->resolveClassName($classLike);
+ if (!$this->reflectionProvider->hasClass($className)) {
+ return $mutatingScope;
+ }
$classReflection = $this->reflectionProvider->getClass($className);
}
try {
return $mutatingScope->enterClass($classReflection);
- } catch (\PHPStan\ShouldNotHappenException $exception) {
+ } catch (ShouldNotHappenException $exception) {
}
$context = $this->privatesAccessor->getPrivateProperty($mutatingScope, 'context');
$this->privatesAccessor->setPrivateProperty($context, 'classReflection', null);
- return $mutatingScope->enterClass($classReflection);
+ try {
+ return $mutatingScope->enterClass($classReflection);
+ } catch (ShouldNotHappenException $exception) {
+ }
+ return $mutatingScope;
}
/**
* @param \PhpParser\Node\Stmt\Class_|\PhpParser\Node\Stmt\Interface_|\PhpParser\Node\Stmt\Trait_|\PhpParser\Node\Stmt\Enum_ $classLike
@@ -373,7 +439,7 @@ private function resolveClassName($classLike) : string
return (string) $classLike->namespacedName;
}
if (!$classLike->name instanceof Identifier) {
- throw new ShouldNotHappenException();
+ return '';
}
return $classLike->name->toString();
}
@@ -383,6 +449,12 @@ private function resolveClassName($classLike) : string
private function processTrait(Trait_ $trait, MutatingScope $mutatingScope, callable $nodeCallback) : void
{
$traitName = $this->resolveClassName($trait);
+ if (!$this->reflectionProvider->hasClass($traitName)) {
+ $trait->setAttribute(AttributeKey::SCOPE, $mutatingScope);
+ $this->nodeScopeResolverProcessNodes($trait->stmts, $mutatingScope, $nodeCallback);
+ $this->decorateNodeAttrGroups($trait, $mutatingScope, $nodeCallback);
+ return;
+ }
$traitClassReflection = $this->reflectionProvider->getClass($traitName);
$traitScope = clone $mutatingScope;
/** @var ScopeContext $scopeContext */
@@ -393,6 +465,6 @@ private function processTrait(Trait_ $trait, MutatingScope $mutatingScope, calla
$this->privatesAccessor->setPrivateProperty($traitScope, self::CONTEXT, $traitContext);
$trait->setAttribute(AttributeKey::SCOPE, $traitScope);
$this->nodeScopeResolverProcessNodes($trait->stmts, $traitScope, $nodeCallback);
- $this->decorateTraitAttrGroups($trait, $traitScope);
+ $this->decorateNodeAttrGroups($trait, $traitScope, $nodeCallback);
}
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/TypeHasher.php b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/TypeHasher.php
index 112aeec99..905bcc077 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/PHPStan/TypeHasher.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/PHPStan/TypeHasher.php
@@ -6,7 +6,6 @@
use PHPStan\Type\ArrayType;
use PHPStan\Type\ConstantType;
use PHPStan\Type\Generic\GenericObjectType;
-use PHPStan\Type\IterableType;
use PHPStan\Type\MixedType;
use PHPStan\Type\ObjectType;
use PHPStan\Type\Type;
@@ -40,16 +39,6 @@ public function createTypeHash(Type $type) : string
return \get_class($type);
}
$type = $this->normalizeObjectType($type);
- // normalize iterable
- $type = TypeTraverser::map($type, static function (Type $currentType, callable $traverseCallback) : Type {
- if (!$currentType instanceof ObjectType) {
- return $traverseCallback($currentType);
- }
- if ($currentType->getClassName() === 'iterable') {
- return new IterableType(new MixedType(), new MixedType());
- }
- return $traverseCallback($currentType);
- });
return $type->describe(VerbosityLevel::value());
}
private function resolveUniqueTypeWithClassNameHash(TypeWithClassName $typeWithClassName) : string
diff --git a/vendor/rector/rector/src/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php b/vendor/rector/rector/src/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php
index d10812fb5..bb8f212c7 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php
@@ -78,10 +78,6 @@ public function enterNode(Node $node) : ?Node
}
/** @var \PhpParser\Node $currentPhpNode */
$currentPhpNode = $this->currentPhpNode;
- $virtualNode = $currentPhpNode->getAttribute(AttributeKey::VIRTUAL_NODE);
- if ($virtualNode === \true) {
- return null;
- }
$identifier = clone $node;
$identifier->name = $this->resolveNamespacedName($identifier, $currentPhpNode, $node->name);
$staticType = $this->staticTypeMapper->mapPHPStanPhpDocTypeNodeToPHPStanType($identifier, $currentPhpNode);
@@ -154,7 +150,7 @@ private function resolveNamespacedName(IdentifierTypeNode $identifierTypeNode, P
return $namespaceName . '\\' . $nameFromUse;
}
/**
- * @param Use_[]|GroupUse[] $uses
+ * @param array $uses
*/
private function resolveNamefromUse(array $uses, string $name) : string
{
diff --git a/vendor/rector/rector/src/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php b/vendor/rector/rector/src/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php
index 651f73d47..fb02e9760 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php
@@ -3,13 +3,14 @@
declare (strict_types=1);
namespace Rector\NodeTypeResolver\PhpDocNodeVisitor;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node as PhpParserNode;
use PHPStan\PhpDocParser\Ast\Node;
use PHPStan\PhpDocParser\Ast\PhpDoc\TemplateTagValueNode;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use PHPStan\Reflection\ReflectionProvider;
use PHPStan\Type\ObjectType;
+use Rector\Application\Provider\CurrentFileProvider;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDoc\SpacelessPhpDocTagNode;
use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey;
@@ -19,9 +20,9 @@
use Rector\Exception\ShouldNotHappenException;
use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor;
use Rector\PostRector\Collector\UseNodesToAddCollector;
-use Rector\Provider\CurrentFileProvider;
-use Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper;
+use Rector\StaticTypeMapper\PhpDocParser\IdentifierPhpDocTypeMapper;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
+use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType;
use Rector\ValueObject\Application\File;
final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
{
@@ -37,7 +38,7 @@ final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
private $useNodesToAddCollector;
/**
* @readonly
- * @var \Rector\Provider\CurrentFileProvider
+ * @var \Rector\Application\Provider\CurrentFileProvider
*/
private $currentFileProvider;
/**
@@ -47,9 +48,9 @@ final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
private $reflectionProvider;
/**
* @readonly
- * @var \Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper
+ * @var \Rector\StaticTypeMapper\PhpDocParser\IdentifierPhpDocTypeMapper
*/
- private $identifierTypeMapper;
+ private $identifierPhpDocTypeMapper;
/**
* @var PhpParserNode|null
*/
@@ -58,15 +59,15 @@ final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
* @var bool
*/
private $hasChanged = \false;
- public function __construct(ClassNameImportSkipper $classNameImportSkipper, UseNodesToAddCollector $useNodesToAddCollector, CurrentFileProvider $currentFileProvider, ReflectionProvider $reflectionProvider, IdentifierTypeMapper $identifierTypeMapper)
+ public function __construct(ClassNameImportSkipper $classNameImportSkipper, UseNodesToAddCollector $useNodesToAddCollector, CurrentFileProvider $currentFileProvider, ReflectionProvider $reflectionProvider, IdentifierPhpDocTypeMapper $identifierPhpDocTypeMapper)
{
$this->classNameImportSkipper = $classNameImportSkipper;
$this->useNodesToAddCollector = $useNodesToAddCollector;
$this->currentFileProvider = $currentFileProvider;
$this->reflectionProvider = $reflectionProvider;
- $this->identifierTypeMapper = $identifierTypeMapper;
+ $this->identifierPhpDocTypeMapper = $identifierPhpDocTypeMapper;
}
- public function beforeTraverse(Node $node) : void
+ public function beforeTraverse(\PHPStan\PhpDocParser\Ast\Node $node) : void
{
if (!$this->currentPhpParserNode instanceof PhpParserNode) {
throw new ShouldNotHappenException('Set "$currentPhpParserNode" first');
@@ -84,7 +85,17 @@ public function enterNode(Node $node) : ?Node
if (!$node instanceof IdentifierTypeNode) {
return null;
}
- $staticType = $this->identifierTypeMapper->mapIdentifierTypeNode($node, $this->currentPhpParserNode);
+ if (!$this->currentPhpParserNode instanceof PhpParserNode) {
+ throw new ShouldNotHappenException();
+ }
+ // no \, skip early
+ if (\strpos($node->name, '\\') === \false) {
+ return null;
+ }
+ $staticType = $this->identifierPhpDocTypeMapper->mapIdentifierTypeNode($node, $this->currentPhpParserNode);
+ if ($staticType instanceof ShortenedObjectType) {
+ $staticType = new FullyQualifiedObjectType($staticType->getFullyQualifiedName());
+ }
if (!$staticType instanceof FullyQualifiedObjectType) {
return null;
}
@@ -96,9 +107,6 @@ public function enterNode(Node $node) : ?Node
if (!$file instanceof File) {
return null;
}
- if (!$this->currentPhpParserNode instanceof PhpParserNode) {
- throw new ShouldNotHappenException();
- }
return $this->processFqnNameImport($this->currentPhpParserNode, $node, $staticType, $file);
}
public function setCurrentNode(PhpParserNode $phpParserNode) : void
@@ -176,7 +184,7 @@ private function processDoctrineAnnotationTagValueNode(DoctrineAnnotationTagValu
throw new ShouldNotHappenException();
}
$identifierTypeNode = $doctrineAnnotationTagValueNode->identifierTypeNode;
- $staticType = $this->identifierTypeMapper->mapIdentifierTypeNode($identifierTypeNode, $currentPhpParserNode);
+ $staticType = $this->identifierPhpDocTypeMapper->mapIdentifierTypeNode($identifierTypeNode, $currentPhpParserNode);
if (!$staticType instanceof FullyQualifiedObjectType) {
if (!$staticType instanceof ObjectType) {
return;
@@ -209,7 +217,7 @@ private function enterSpacelessPhpDocTagNode(SpacelessPhpDocTagNode $spacelessPh
if (!$currentPhpParserNode instanceof PhpParserNode) {
throw new ShouldNotHappenException();
}
- $staticType = $this->identifierTypeMapper->mapIdentifierTypeNode(new IdentifierTypeNode($attributeClass), $currentPhpParserNode);
+ $staticType = $this->identifierPhpDocTypeMapper->mapIdentifierTypeNode(new IdentifierTypeNode($attributeClass), $currentPhpParserNode);
if (!$staticType instanceof FullyQualifiedObjectType) {
if (!$staticType instanceof ObjectType) {
return null;
diff --git a/vendor/rector/rector/src/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php b/vendor/rector/rector/src/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php
index 4c82a57cd..a8f465bf5 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php
@@ -3,16 +3,11 @@
declare (strict_types=1);
namespace Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider;
-use PHPStan\BetterReflection\Reflector\DefaultReflector;
use PHPStan\BetterReflection\SourceLocator\Type\AggregateSourceLocator;
use PHPStan\BetterReflection\SourceLocator\Type\SourceLocator;
-use PHPStan\Broker\ClassNotFoundException;
-use PHPStan\File\CouldNotReadFileException;
use PHPStan\Reflection\BetterReflection\SourceLocator\FileNodesFetcher;
-use PHPStan\Reflection\BetterReflection\SourceLocator\NewOptimizedDirectorySourceLocator;
use PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedDirectorySourceLocatorFactory;
use PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedSingleFileSourceLocator;
-use PHPStan\Reflection\ReflectionProvider;
use Rector\Contract\DependencyInjection\ResetableInterface;
use Rector\Testing\PHPUnit\StaticPHPUnitEnvironment;
/**
@@ -42,19 +37,11 @@ final class DynamicSourceLocatorProvider implements ResetableInterface
* @var \PHPStan\BetterReflection\SourceLocator\Type\AggregateSourceLocator|null
*/
private $aggregateSourceLocator;
- /**
- * @var \PHPStan\Reflection\ReflectionProvider
- */
- private $reflectionProvider;
public function __construct(FileNodesFetcher $fileNodesFetcher, OptimizedDirectorySourceLocatorFactory $optimizedDirectorySourceLocatorFactory)
{
$this->fileNodesFetcher = $fileNodesFetcher;
$this->optimizedDirectorySourceLocatorFactory = $optimizedDirectorySourceLocatorFactory;
}
- public function autowire(ReflectionProvider $reflectionProvider) : void
- {
- $this->reflectionProvider = $reflectionProvider;
- }
public function setFilePath(string $filePath) : void
{
$this->filePaths = [$filePath];
@@ -87,9 +74,7 @@ public function provide() : SourceLocator
foreach ($this->directories as $directory) {
$sourceLocators[] = $this->optimizedDirectorySourceLocatorFactory->createByDirectory($directory);
}
- $aggregateSourceLocator = $this->aggregateSourceLocator = new AggregateSourceLocator($sourceLocators);
- $this->collectClasses($aggregateSourceLocator, $sourceLocators);
- return $aggregateSourceLocator;
+ return $this->aggregateSourceLocator = new AggregateSourceLocator($sourceLocators);
}
public function isPathsEmpty() : bool
{
@@ -104,30 +89,4 @@ public function reset() : void
$this->directories = [];
$this->aggregateSourceLocator = null;
}
- /**
- * @param OptimizedSingleFileSourceLocator[]|NewOptimizedDirectorySourceLocator[] $sourceLocators
- */
- private function collectClasses(AggregateSourceLocator $aggregateSourceLocator, array $sourceLocators) : void
- {
- if ($sourceLocators === []) {
- return;
- }
- // no need to collect classes on single file, will auto collected
- if (\count($sourceLocators) === 1 && $sourceLocators[0] instanceof OptimizedSingleFileSourceLocator) {
- return;
- }
- $reflector = new DefaultReflector($aggregateSourceLocator);
- // trigger collect "classes" on get class on locate identifier
- try {
- $reflections = $reflector->reflectAllClasses();
- foreach ($reflections as $reflection) {
- // make 'classes' collection
- try {
- $this->reflectionProvider->getClass($reflection->getName());
- } catch (ClassNotFoundException $exception) {
- }
- }
- } catch (CouldNotReadFileException $exception) {
- }
- }
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/TypeAnalyzer/ArrayTypeAnalyzer.php b/vendor/rector/rector/src/NodeTypeResolver/TypeAnalyzer/ArrayTypeAnalyzer.php
index 8e6ac45c7..ec9d71786 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/TypeAnalyzer/ArrayTypeAnalyzer.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/TypeAnalyzer/ArrayTypeAnalyzer.php
@@ -4,19 +4,7 @@
namespace Rector\NodeTypeResolver\TypeAnalyzer;
use PhpParser\Node\Expr;
-use PhpParser\Node\Expr\Array_;
-use PhpParser\Node\Expr\PropertyFetch;
-use PhpParser\Node\Expr\StaticPropertyFetch;
-use PHPStan\Reflection\ClassReflection;
-use PHPStan\Reflection\Php\PhpPropertyReflection;
-use PHPStan\Type\Accessory\HasOffsetType;
-use PHPStan\Type\Accessory\NonEmptyArrayType;
-use PHPStan\Type\ArrayType;
-use PHPStan\Type\IntersectionType;
-use PHPStan\Type\MixedType;
-use PHPStan\Type\Type;
use Rector\NodeTypeResolver\NodeTypeResolver;
-use Rector\Reflection\ReflectionResolver;
final class ArrayTypeAnalyzer
{
/**
@@ -24,74 +12,13 @@ final class ArrayTypeAnalyzer
* @var \Rector\NodeTypeResolver\NodeTypeResolver
*/
private $nodeTypeResolver;
- /**
- * @readonly
- * @var \Rector\Reflection\ReflectionResolver
- */
- private $reflectionResolver;
- public function __construct(NodeTypeResolver $nodeTypeResolver, ReflectionResolver $reflectionResolver)
+ public function __construct(NodeTypeResolver $nodeTypeResolver)
{
$this->nodeTypeResolver = $nodeTypeResolver;
- $this->reflectionResolver = $reflectionResolver;
}
public function isArrayType(Expr $expr) : bool
{
$nodeType = $this->nodeTypeResolver->getNativeType($expr);
- if ($this->isIntersectionArrayType($nodeType)) {
- return \true;
- }
- // PHPStan false positive, when variable has type[] docblock, but default array is missing
- if (($expr instanceof PropertyFetch || $expr instanceof StaticPropertyFetch) && $this->isPropertyFetchWithArrayDefault($expr)) {
- return \true;
- }
- if ($nodeType instanceof MixedType) {
- if ($nodeType->isExplicitMixed()) {
- return \false;
- }
- if ($this->isPropertyFetchWithArrayDefault($expr)) {
- return \true;
- }
- }
- return $nodeType instanceof ArrayType;
- }
- private function isIntersectionArrayType(Type $nodeType) : bool
- {
- if (!$nodeType instanceof IntersectionType) {
- return \false;
- }
- foreach ($nodeType->getTypes() as $intersectionNodeType) {
- if ($intersectionNodeType instanceof ArrayType) {
- continue;
- }
- if ($intersectionNodeType instanceof HasOffsetType) {
- continue;
- }
- if ($intersectionNodeType instanceof NonEmptyArrayType) {
- continue;
- }
- return \false;
- }
- return \true;
- }
- /**
- * phpstan bug workaround - https://phpstan.org/r/0443f283-244c-42b8-8373-85e7deb3504c
- */
- private function isPropertyFetchWithArrayDefault(Expr $expr) : bool
- {
- if (!$expr instanceof PropertyFetch && !$expr instanceof StaticPropertyFetch) {
- return \false;
- }
- $classReflection = $this->reflectionResolver->resolveClassReflection($expr);
- if (!$classReflection instanceof ClassReflection) {
- return \false;
- }
- $phpPropertyReflection = $this->reflectionResolver->resolvePropertyReflectionFromPropertyFetch($expr);
- if ($phpPropertyReflection instanceof PhpPropertyReflection) {
- $reflectionProperty = $phpPropertyReflection->getNativeReflection();
- $betterReflection = $reflectionProperty->getBetterReflection();
- $defaultValueExpr = $betterReflection->getDefaultValueExpression();
- return $defaultValueExpr instanceof Array_;
- }
- return \false;
+ return $nodeType->isArray()->yes();
}
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/TypeComparator/ArrayTypeComparator.php b/vendor/rector/rector/src/NodeTypeResolver/TypeComparator/ArrayTypeComparator.php
index 064db3d74..365b904ee 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/TypeComparator/ArrayTypeComparator.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/TypeComparator/ArrayTypeComparator.php
@@ -6,22 +6,11 @@
use PHPStan\Type\ArrayType;
use PHPStan\Type\Constant\ConstantArrayType;
use PHPStan\Type\MixedType;
-use PHPStan\Type\UnionType;
-use Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeCommonTypeNarrower;
/**
* @see \Rector\Tests\NodeTypeResolver\TypeComparator\ArrayTypeComparatorTest
*/
final class ArrayTypeComparator
{
- /**
- * @readonly
- * @var \Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeCommonTypeNarrower
- */
- private $unionTypeCommonTypeNarrower;
- public function __construct(UnionTypeCommonTypeNarrower $unionTypeCommonTypeNarrower)
- {
- $this->unionTypeCommonTypeNarrower = $unionTypeCommonTypeNarrower;
- }
public function isSubtype(ArrayType $checkedType, ArrayType $mainType) : bool
{
if (!$checkedType instanceof ConstantArrayType && !$mainType instanceof ConstantArrayType) {
@@ -33,13 +22,7 @@ public function isSubtype(ArrayType $checkedType, ArrayType $mainType) : bool
return \true;
}
$checkedItemType = $checkedType->getItemType();
- if ($checkedItemType instanceof UnionType) {
- $checkedItemType = $this->unionTypeCommonTypeNarrower->narrowToGenericClassStringType($checkedItemType);
- }
$mainItemType = $mainType->getItemType();
- if ($mainItemType instanceof UnionType) {
- $mainItemType = $this->unionTypeCommonTypeNarrower->narrowToGenericClassStringType($mainItemType);
- }
return $checkedItemType->isSuperTypeOf($mainItemType)->yes();
}
}
diff --git a/vendor/rector/rector/src/NodeTypeResolver/TypeComparator/TypeComparator.php b/vendor/rector/rector/src/NodeTypeResolver/TypeComparator/TypeComparator.php
index bf4b25461..11eed12a7 100644
--- a/vendor/rector/rector/src/NodeTypeResolver/TypeComparator/TypeComparator.php
+++ b/vendor/rector/rector/src/NodeTypeResolver/TypeComparator/TypeComparator.php
@@ -4,25 +4,18 @@
namespace Rector\NodeTypeResolver\TypeComparator;
use PhpParser\Node;
-use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode;
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Type\ArrayType;
use PHPStan\Type\BooleanType;
-use PHPStan\Type\Constant\ConstantArrayType;
use PHPStan\Type\Constant\ConstantBooleanType;
use PHPStan\Type\ConstantScalarType;
-use PHPStan\Type\Generic\GenericClassStringType;
-use PHPStan\Type\IntegerType;
use PHPStan\Type\MixedType;
use PHPStan\Type\ObjectType;
use PHPStan\Type\StaticType;
use PHPStan\Type\ThisType;
use PHPStan\Type\Type;
use PHPStan\Type\TypeTraverser;
-use PHPStan\Type\UnionType;
-use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey;
-use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
use Rector\NodeTypeResolver\PHPStan\TypeHasher;
use Rector\Reflection\ReflectionResolver;
use Rector\StaticTypeMapper\StaticTypeMapper;
@@ -55,24 +48,18 @@ final class TypeComparator
* @var \Rector\NodeTypeResolver\TypeComparator\ScalarTypeComparator
*/
private $scalarTypeComparator;
- /**
- * @readonly
- * @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
- */
- private $typeFactory;
/**
* @readonly
* @var \Rector\Reflection\ReflectionResolver
*/
private $reflectionResolver;
- public function __construct(TypeHasher $typeHasher, TypeNormalizer $typeNormalizer, StaticTypeMapper $staticTypeMapper, \Rector\NodeTypeResolver\TypeComparator\ArrayTypeComparator $arrayTypeComparator, \Rector\NodeTypeResolver\TypeComparator\ScalarTypeComparator $scalarTypeComparator, TypeFactory $typeFactory, ReflectionResolver $reflectionResolver)
+ public function __construct(TypeHasher $typeHasher, TypeNormalizer $typeNormalizer, StaticTypeMapper $staticTypeMapper, \Rector\NodeTypeResolver\TypeComparator\ArrayTypeComparator $arrayTypeComparator, \Rector\NodeTypeResolver\TypeComparator\ScalarTypeComparator $scalarTypeComparator, ReflectionResolver $reflectionResolver)
{
$this->typeHasher = $typeHasher;
$this->typeNormalizer = $typeNormalizer;
$this->staticTypeMapper = $staticTypeMapper;
$this->arrayTypeComparator = $arrayTypeComparator;
$this->scalarTypeComparator = $scalarTypeComparator;
- $this->typeFactory = $typeFactory;
$this->reflectionResolver = $reflectionResolver;
}
public function areTypesEqual(Type $firstType, Type $secondType) : bool
@@ -89,9 +76,6 @@ public function areTypesEqual(Type $firstType, Type $secondType) : bool
if ($this->areAliasedObjectMatchingFqnObject($firstType, $secondType)) {
return \true;
}
- if ($this->areArrayUnionConstantEqualTypes($firstType, $secondType)) {
- return \true;
- }
$firstType = $this->typeNormalizer->normalizeArrayOfUnionToUnionArray($firstType);
$secondType = $this->typeNormalizer->normalizeArrayOfUnionToUnionArray($secondType);
if ($this->typeHasher->areTypesEqual($firstType, $secondType)) {
@@ -115,9 +99,6 @@ public function arePhpParserAndPhpStanPhpDocTypesEqual(Node $phpParserNode, Type
if (!$areDifferentScalarTypes && !$this->areTypesEqual($phpParserNodeType, $phpStanDocType)) {
return \false;
}
- if ($this->isTypeSelfAndDocParamTypeStatic($phpStanDocType, $phpParserNodeType, $phpStanDocTypeNode)) {
- return \false;
- }
if ($this->areTypesSameWithLiteralTypeInPhpDoc($areDifferentScalarTypes, $phpStanDocType, $phpParserNodeType)) {
return \false;
}
@@ -162,17 +143,7 @@ private function areArrayTypeWithSingleObjectChildToParent(Type $firstType, Type
}
$firstArrayItemType = $firstType->getItemType();
$secondArrayItemType = $secondType->getItemType();
- if ($this->isMutualObjectSubtypes($firstArrayItemType, $secondArrayItemType)) {
- return \true;
- }
- if (!$firstArrayItemType instanceof GenericClassStringType) {
- return \false;
- }
- if (!$secondArrayItemType instanceof GenericClassStringType) {
- return \false;
- }
- // @todo resolve later better with template map, @see https://github.com/symplify/symplify/pull/3034/commits/4f6be8b87e52117b1aa1613b9b689ae958a9d6f4
- return $firstArrayItemType->getGenericType() instanceof ObjectType && $secondArrayItemType->getGenericType() instanceof ObjectType;
+ return $this->isMutualObjectSubtypes($firstArrayItemType, $secondArrayItemType);
}
private function isMutualObjectSubtypes(Type $firstArrayItemType, Type $secondArrayItemType) : bool
{
@@ -187,44 +158,6 @@ private function isMutualObjectSubtypes(Type $firstArrayItemType, Type $secondAr
}
return $secondArrayItemType->isSuperTypeOf($firstArrayItemType)->yes();
}
- private function normalizeSingleUnionType(Type $type) : Type
- {
- if (!$type instanceof UnionType) {
- return $type;
- }
- $uniqueTypes = $this->typeFactory->uniquateTypes($type->getTypes());
- if (\count($uniqueTypes) !== 1) {
- return $type;
- }
- return $uniqueTypes[0];
- }
- private function areArrayUnionConstantEqualTypes(Type $firstType, Type $secondType) : bool
- {
- if (!$firstType instanceof ArrayType) {
- return \false;
- }
- if (!$secondType instanceof ArrayType) {
- return \false;
- }
- if ($firstType instanceof ConstantArrayType || $secondType instanceof ConstantArrayType) {
- return \false;
- }
- $firstKeyType = $this->normalizeSingleUnionType($firstType->getKeyType());
- $secondKeyType = $this->normalizeSingleUnionType($secondType->getKeyType());
- // mixed and integer type are mutual replaceable in practise
- if ($firstKeyType instanceof MixedType) {
- $firstKeyType = new IntegerType();
- }
- if ($secondKeyType instanceof MixedType) {
- $secondKeyType = new IntegerType();
- }
- if (!$this->areTypesEqual($firstKeyType, $secondKeyType)) {
- return \false;
- }
- $firstArrayType = $this->normalizeSingleUnionType($firstType->getItemType());
- $secondArrayType = $this->normalizeSingleUnionType($secondType->getItemType());
- return $this->areTypesEqual($firstArrayType, $secondArrayType);
- }
private function normalizeConstantBooleanType(Type $type) : Type
{
return TypeTraverser::map($type, static function (Type $type, callable $callable) : Type {
@@ -234,10 +167,6 @@ private function normalizeConstantBooleanType(Type $type) : Type
return $callable($type);
});
}
- private function isTypeSelfAndDocParamTypeStatic(Type $phpStanDocType, Type $phpParserNodeType, TypeNode $phpStanDocTypeNode) : bool
- {
- return $phpStanDocType instanceof StaticType && $phpParserNodeType instanceof ThisType && $phpStanDocTypeNode->getAttribute(PhpDocAttributeKey::PARENT) instanceof ParamTagValueNode;
- }
private function areTypesSameWithLiteralTypeInPhpDoc(bool $areDifferentScalarTypes, Type $phpStanDocType, Type $phpParserNodeType) : bool
{
return $areDifferentScalarTypes && $phpStanDocType instanceof ConstantScalarType && $phpParserNodeType->isSuperTypeOf($phpStanDocType)->yes();
diff --git a/vendor/rector/rector/src/PHPStan/NodeVisitor/ExprScopeFromStmtNodeVisitor.php b/vendor/rector/rector/src/PHPStan/NodeVisitor/ExprScopeFromStmtNodeVisitor.php
deleted file mode 100644
index 673aa8ac0..000000000
--- a/vendor/rector/rector/src/PHPStan/NodeVisitor/ExprScopeFromStmtNodeVisitor.php
+++ /dev/null
@@ -1,83 +0,0 @@
-phpStanNodeScopeResolver = $phpStanNodeScopeResolver;
- $this->filePath = $filePath;
- $this->mutatingScope = $mutatingScope;
- }
- public function enterNode(Node $node) : ?Node
- {
- if ($node instanceof FileWithoutNamespace || $node instanceof Namespace_ || $node instanceof ClassLike || $node instanceof ClassMethod || $node instanceof Function_) {
- return null;
- }
- if ($node instanceof Stmt) {
- $this->currentStmt = $node;
- return null;
- }
- if ($node instanceof VirtualNode) {
- return null;
- }
- if (!$node instanceof Expr) {
- return null;
- }
- if ($this->shouldSkipExpr($node)) {
- return null;
- }
- $scope = $node->getAttribute(AttributeKey::SCOPE);
- if ($scope instanceof MutatingScope) {
- return null;
- }
- // too deep Expr, eg: $$param = $$bar = self::decodeValue($result->getItem()->getTextContent());
- $scope = $this->currentStmt instanceof Stmt ? $this->currentStmt->getAttribute(AttributeKey::SCOPE) : $this->mutatingScope;
- $scope = $scope instanceof MutatingScope ? $scope : $this->mutatingScope;
- $node->setAttribute(AttributeKey::SCOPE, $scope);
- if ($node instanceof Closure) {
- $this->phpStanNodeScopeResolver->processNodes($node->stmts, $this->filePath, $scope);
- }
- return null;
- }
- private function shouldSkipExpr(Expr $expr) : bool
- {
- return $expr->getAttribute(AttributeKey::EXPRESSION_DEPTH) < 2 && !$expr instanceof CallLike;
- }
-}
diff --git a/vendor/rector/rector/src/PHPStan/NodeVisitor/UnreachableStatementNodeVisitor.php b/vendor/rector/rector/src/PHPStan/NodeVisitor/UnreachableStatementNodeVisitor.php
index 52d328a6a..80b9da486 100644
--- a/vendor/rector/rector/src/PHPStan/NodeVisitor/UnreachableStatementNodeVisitor.php
+++ b/vendor/rector/rector/src/PHPStan/NodeVisitor/UnreachableStatementNodeVisitor.php
@@ -12,7 +12,6 @@
use Rector\Contract\PhpParser\Node\StmtsAwareInterface;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver;
-use Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory;
final class UnreachableStatementNodeVisitor extends NodeVisitorAbstract
{
/**
@@ -27,14 +26,14 @@ final class UnreachableStatementNodeVisitor extends NodeVisitorAbstract
private $filePath;
/**
* @readonly
- * @var \Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory
+ * @var \PHPStan\Analyser\MutatingScope
*/
- private $scopeFactory;
- public function __construct(PHPStanNodeScopeResolver $phpStanNodeScopeResolver, string $filePath, ScopeFactory $scopeFactory)
+ private $mutatingScope;
+ public function __construct(PHPStanNodeScopeResolver $phpStanNodeScopeResolver, string $filePath, MutatingScope $mutatingScope)
{
$this->phpStanNodeScopeResolver = $phpStanNodeScopeResolver;
$this->filePath = $filePath;
- $this->scopeFactory = $scopeFactory;
+ $this->mutatingScope = $mutatingScope;
}
public function enterNode(Node $node) : ?Node
{
@@ -64,6 +63,6 @@ public function enterNode(Node $node) : ?Node
}
private function resolveScope(?Scope $mutatingScope) : MutatingScope
{
- return $mutatingScope instanceof MutatingScope ? $mutatingScope : $this->scopeFactory->createFromFile($this->filePath);
+ return $mutatingScope instanceof MutatingScope ? $mutatingScope : $this->mutatingScope;
}
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/DoctrineTypeAnalyzer.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/DoctrineTypeAnalyzer.php
index 0f14523fc..410a0d1cf 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/DoctrineTypeAnalyzer.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/DoctrineTypeAnalyzer.php
@@ -6,7 +6,6 @@
use PHPStan\Type\ArrayType;
use PHPStan\Type\ObjectType;
use PHPStan\Type\Type;
-use PHPStan\Type\TypeWithClassName;
use PHPStan\Type\UnionType;
final class DoctrineTypeAnalyzer
{
@@ -18,7 +17,7 @@ public function isDoctrineCollectionWithIterableUnionType(Type $type) : bool
$arrayType = null;
$hasDoctrineCollectionType = \false;
foreach ($type->getTypes() as $unionedType) {
- if ($this->isCollectionObjectType($unionedType)) {
+ if ($this->isInstanceOfCollectionType($unionedType)) {
$hasDoctrineCollectionType = \true;
}
if ($unionedType instanceof ArrayType) {
@@ -37,11 +36,4 @@ public function isInstanceOfCollectionType(Type $type) : bool
}
return $type->isInstanceOf('Doctrine\\Common\\Collections\\Collection')->yes();
}
- private function isCollectionObjectType(Type $type) : bool
- {
- if (!$type instanceof TypeWithClassName) {
- return \false;
- }
- return $type->getClassName() === 'Doctrine\\Common\\Collections\\Collection';
- }
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/Enum/TypeKind.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/Enum/TypeKind.php
index c6adc6528..6a8577c9c 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/Enum/TypeKind.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/Enum/TypeKind.php
@@ -17,4 +17,8 @@ final class TypeKind
* @var string
*/
public const PARAM = 'param';
+ /**
+ * @var string
+ */
+ public const UNION = 'union';
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/PHPStanStaticTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/PHPStanStaticTypeMapper.php
index 1742d88d2..286ade283 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/PHPStanStaticTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/PHPStanStaticTypeMapper.php
@@ -11,7 +11,7 @@
use Rector\Exception\NotImplementedYetException;
use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class PHPStanStaticTypeMapper
{
/**
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php
index 5cc2bbf11..098b8fd7a 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php
@@ -3,62 +3,12 @@
declare (strict_types=1);
namespace Rector\PHPStanStaticTypeMapper\TypeAnalyzer;
-use PHPStan\Type\ArrayType;
-use PHPStan\Type\IterableType;
-use PHPStan\Type\NullType;
-use PHPStan\Type\ObjectType;
-use PHPStan\Type\TypeWithClassName;
+use PHPStan\Type\TypeCombinator;
use PHPStan\Type\UnionType;
-use Rector\PHPStanStaticTypeMapper\ValueObject\UnionTypeAnalysis;
-use Traversable;
final class UnionTypeAnalyzer
{
- public function analyseForArrayAndIterable(UnionType $unionType) : ?UnionTypeAnalysis
+ public function isNullable(UnionType $unionType) : bool
{
- $hasIterable = \false;
- $hasArray = \false;
- foreach ($unionType->getTypes() as $unionedType) {
- if ($unionedType instanceof IterableType) {
- $hasIterable = \true;
- continue;
- }
- if ($unionedType instanceof ArrayType) {
- $hasArray = \true;
- continue;
- }
- if ($unionedType instanceof ObjectType && $unionedType->getClassName() === Traversable::class) {
- $hasIterable = \true;
- continue;
- }
- return null;
- }
- return new UnionTypeAnalysis($hasIterable, $hasArray);
- }
- /**
- * @return TypeWithClassName[]
- */
- public function matchExclusiveTypesWithClassNames(UnionType $unionType) : array
- {
- $typesWithClassNames = [];
- foreach ($unionType->getTypes() as $unionedType) {
- if (!$unionedType instanceof TypeWithClassName) {
- return [];
- }
- $typesWithClassNames[] = $unionedType;
- }
- return $typesWithClassNames;
- }
- public function isNullable(UnionType $unionType, bool $checkTwoTypes = \false) : bool
- {
- $types = $unionType->getTypes();
- if ($checkTwoTypes && \count($types) > 2) {
- return \false;
- }
- foreach ($types as $type) {
- if ($type instanceof NullType) {
- return \true;
- }
- }
- return \false;
+ return TypeCombinator::containsNull($unionType);
}
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeCommonTypeNarrower.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeCommonTypeNarrower.php
deleted file mode 100644
index 02d1f76a3..000000000
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeCommonTypeNarrower.php
+++ /dev/null
@@ -1,165 +0,0 @@
-|class-string<\PHPStan\PhpDocParser\Ast\Node>|class-string>>
- */
- private const PRIORITY_TYPES = [ClassLike::class => [ClassLike::class], FunctionLike::class => [FunctionLike::class], BinaryOp::class => [BinaryOp::class, Expr::class], Expr::class => [Node::class, Expr::class], Stmt::class => [Node::class, Stmt::class], PhpDocTagValueNode::class => [PhpDocTagValueNode::class, \PHPStan\PhpDocParser\Ast\Node::class], Node::class => [Node::class], RectorInterface::class => [RectorInterface::class]];
- public function __construct(GenericClassStringTypeCorrector $genericClassStringTypeCorrector, ReflectionProvider $reflectionProvider)
- {
- $this->genericClassStringTypeCorrector = $genericClassStringTypeCorrector;
- $this->reflectionProvider = $reflectionProvider;
- }
- public function narrowToSharedObjectType(UnionType $unionType) : ?ObjectType
- {
- $sharedTypes = $this->narrowToSharedTypes($unionType);
- if ($sharedTypes !== []) {
- foreach (self::PRIORITY_TYPES as $winningType => $groupTypes) {
- $intersectedGroupTypes = \array_intersect($groupTypes, $sharedTypes);
- if ($intersectedGroupTypes === $groupTypes) {
- return new ObjectType($winningType);
- }
- }
- $firstSharedType = $sharedTypes[0];
- return new ObjectType($firstSharedType);
- }
- return null;
- }
- /**
- * @return \PHPStan\Type\UnionType|\PHPStan\Type\Generic\GenericClassStringType
- */
- public function narrowToGenericClassStringType(UnionType $unionType)
- {
- $availableTypes = [];
- foreach ($unionType->getTypes() as $unionedType) {
- if ($unionedType instanceof ConstantStringType) {
- $unionedType = $this->genericClassStringTypeCorrector->correct($unionedType);
- }
- if (!$unionedType instanceof GenericClassStringType) {
- return $unionType;
- }
- $genericClassStrings = [];
- if ($unionedType->getGenericType() instanceof ObjectType) {
- $parentClassReflections = $this->resolveClassParentClassesAndInterfaces($unionedType->getGenericType());
- foreach ($parentClassReflections as $parentClassReflection) {
- $genericClassStrings[] = $parentClassReflection->getName();
- }
- }
- $availableTypes[] = $genericClassStrings;
- }
- $genericClassStringType = $this->createGenericClassStringType($availableTypes);
- if ($genericClassStringType instanceof GenericClassStringType) {
- return $genericClassStringType;
- }
- return $unionType;
- }
- /**
- * @return string[]
- */
- private function narrowToSharedTypes(UnionType $unionType) : array
- {
- $availableTypes = [];
- foreach ($unionType->getTypes() as $unionedType) {
- if (!$unionedType instanceof ObjectType) {
- return [];
- }
- $typeClassReflections = $this->resolveClassParentClassesAndInterfaces($unionedType);
- $typeClassNames = [];
- foreach ($typeClassReflections as $typeClassReflection) {
- $typeClassNames[] = $typeClassReflection->getName();
- }
- if ($typeClassNames === []) {
- continue;
- }
- $availableTypes[] = $typeClassNames;
- }
- return $this->narrowAvailableTypes($availableTypes);
- }
- /**
- * @return ClassReflection[]
- */
- private function resolveClassParentClassesAndInterfaces(ObjectType $objectType) : array
- {
- if (!$this->reflectionProvider->hasClass($objectType->getClassName())) {
- return [];
- }
- $classReflection = $this->reflectionProvider->getClass($objectType->getClassName());
- // put earliest interfaces first
- $implementedInterfaceClassReflections = \array_reverse($classReflection->getInterfaces());
- /** @var ClassReflection[] $parentClassAndInterfaceReflections */
- $parentClassAndInterfaceReflections = \array_merge($implementedInterfaceClassReflections, $classReflection->getParents());
- return $this->filterOutNativeClassReflections($parentClassAndInterfaceReflections);
- }
- /**
- * @param string[][] $availableTypes
- * @return string[]
- */
- private function narrowAvailableTypes(array $availableTypes) : array
- {
- if (\count($availableTypes) < 2) {
- return [];
- }
- /** @var string[] $sharedTypes */
- $sharedTypes = \array_intersect(...$availableTypes);
- return \array_values($sharedTypes);
- }
- /**
- * @param string[][] $availableTypes
- */
- private function createGenericClassStringType(array $availableTypes) : ?GenericClassStringType
- {
- $sharedTypes = $this->narrowAvailableTypes($availableTypes);
- if ($sharedTypes !== []) {
- foreach (self::PRIORITY_TYPES as $winningType => $groupTypes) {
- $intersectedGroupTypes = \array_intersect($groupTypes, $sharedTypes);
- if ($intersectedGroupTypes === $groupTypes) {
- return new GenericClassStringType(new ObjectType($winningType));
- }
- }
- $firstSharedType = $sharedTypes[0];
- return new GenericClassStringType(new ObjectType($firstSharedType));
- }
- return null;
- }
- /**
- * @param ClassReflection[] $classReflections
- * @return ClassReflection[]
- */
- private function filterOutNativeClassReflections(array $classReflections) : array
- {
- return \array_filter($classReflections, static function (ClassReflection $classReflection) : bool {
- return !$classReflection->isBuiltin();
- });
- }
-}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ArrayTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ArrayTypeMapper.php
index 6cf164e14..03ff58369 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ArrayTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ArrayTypeMapper.php
@@ -8,7 +8,6 @@
use PHPStan\PhpDocParser\Ast\Type\GenericTypeNode;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
-use PHPStan\Reflection\ReflectionProvider;
use PHPStan\Type\ArrayType;
use PHPStan\Type\ClassStringType;
use PHPStan\Type\Constant\ConstantArrayType;
@@ -16,14 +15,12 @@
use PHPStan\Type\Generic\GenericClassStringType;
use PHPStan\Type\MixedType;
use PHPStan\Type\NeverType;
-use PHPStan\Type\ObjectType;
use PHPStan\Type\Type;
use PHPStan\Type\UnionType;
use Rector\BetterPhpDocParser\ValueObject\Type\BracketsAwareUnionTypeNode;
use Rector\BetterPhpDocParser\ValueObject\Type\SpacingAwareArrayTypeNode;
use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface;
use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper;
-use Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeCommonTypeNarrower;
use Rector\TypeDeclaration\NodeTypeAnalyzer\DetailedTypeAnalyzer;
use Rector\TypeDeclaration\TypeAnalyzer\GenericClassStringTypeNormalizer;
/**
@@ -33,16 +30,6 @@
*/
final class ArrayTypeMapper implements TypeMapperInterface
{
- /**
- * @readonly
- * @var \Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeCommonTypeNarrower
- */
- private $unionTypeCommonTypeNarrower;
- /**
- * @readonly
- * @var \PHPStan\Reflection\ReflectionProvider
- */
- private $reflectionProvider;
/**
* @readonly
* @var \Rector\TypeDeclaration\TypeAnalyzer\GenericClassStringTypeNormalizer
@@ -61,10 +48,8 @@ final class ArrayTypeMapper implements TypeMapperInterface
* @var \Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper
*/
private $phpStanStaticTypeMapper;
- public function __construct(UnionTypeCommonTypeNarrower $unionTypeCommonTypeNarrower, ReflectionProvider $reflectionProvider, GenericClassStringTypeNormalizer $genericClassStringTypeNormalizer, DetailedTypeAnalyzer $detailedTypeAnalyzer)
+ public function __construct(GenericClassStringTypeNormalizer $genericClassStringTypeNormalizer, DetailedTypeAnalyzer $detailedTypeAnalyzer)
{
- $this->unionTypeCommonTypeNarrower = $unionTypeCommonTypeNarrower;
- $this->reflectionProvider = $reflectionProvider;
$this->genericClassStringTypeNormalizer = $genericClassStringTypeNormalizer;
$this->detailedTypeAnalyzer = $detailedTypeAnalyzer;
}
@@ -95,10 +80,6 @@ public function mapToPHPStanPhpDocTypeNode(Type $type) : TypeNode
if ($isGenericArray) {
return $this->createGenericArrayType($type, \true);
}
- $narrowedTypeNode = $this->narrowConstantArrayTypeOfUnionType($type, $itemType);
- if ($narrowedTypeNode instanceof TypeNode) {
- return $narrowedTypeNode;
- }
$itemTypeNode = $this->phpStanStaticTypeMapper->mapToPHPStanPhpDocTypeNode($itemType);
return new SpacingAwareArrayTypeNode($itemTypeNode);
}
@@ -197,33 +178,6 @@ private function isIntegerKeyAndNonNestedArray(ArrayType $arrayType) : bool
}
return !$arrayType->getItemType() instanceof ArrayType;
}
- private function narrowConstantArrayTypeOfUnionType(ArrayType $arrayType, Type $itemType) : ?TypeNode
- {
- if ($arrayType instanceof ConstantArrayType && $itemType instanceof UnionType) {
- $narrowedItemType = $this->unionTypeCommonTypeNarrower->narrowToSharedObjectType($itemType);
- if ($narrowedItemType instanceof ObjectType) {
- $itemTypeNode = $this->phpStanStaticTypeMapper->mapToPHPStanPhpDocTypeNode($narrowedItemType);
- return new SpacingAwareArrayTypeNode($itemTypeNode);
- }
- $narrowedItemType = $this->unionTypeCommonTypeNarrower->narrowToGenericClassStringType($itemType);
- if ($narrowedItemType instanceof GenericClassStringType) {
- return $this->createTypeNodeFromGenericClassStringType($narrowedItemType);
- }
- }
- return null;
- }
- /**
- * @return \PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode|\PHPStan\PhpDocParser\Ast\Type\GenericTypeNode
- */
- private function createTypeNodeFromGenericClassStringType(GenericClassStringType $genericClassStringType)
- {
- $genericType = $genericClassStringType->getGenericType();
- if ($genericType instanceof ObjectType && !$this->reflectionProvider->hasClass($genericType->getClassName())) {
- return new IdentifierTypeNode($genericType->getClassName());
- }
- $itemTypeNode = $this->phpStanStaticTypeMapper->mapToPHPStanPhpDocTypeNode($genericClassStringType);
- return new GenericTypeNode(new IdentifierTypeNode('array'), [$itemTypeNode]);
- }
private function isClassStringArrayType(ArrayType $arrayType) : bool
{
if ($arrayType->getKeyType() instanceof MixedType) {
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/BooleanTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/BooleanTypeMapper.php
index 2a8ae4a44..14662ace7 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/BooleanTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/BooleanTypeMapper.php
@@ -46,15 +46,15 @@ public function mapToPhpParserNode(Type $type, string $typeKind) : ?Node
if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::SCALAR_TYPES)) {
return null;
}
- if ($typeKind !== TypeKind::RETURN) {
+ if ($typeKind === TypeKind::PROPERTY) {
return new Identifier('bool');
}
- if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::NULL_FALSE_TRUE_STANDALONE_TYPE)) {
- return new Identifier('bool');
+ if ($typeKind === TypeKind::UNION && $type instanceof ConstantBooleanType && $type->getValue() === \false) {
+ return new Identifier('false');
}
- if (!$type instanceof ConstantBooleanType) {
- return new Identifier('bool');
+ if ($this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::NULL_FALSE_TRUE_STANDALONE_TYPE) && $type instanceof ConstantBooleanType) {
+ return $type->getValue() ? new Identifier('true') : new Identifier('false');
}
- return $type->getValue() ? new Identifier('true') : new Identifier('false');
+ return new Identifier('bool');
}
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ConditionalTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ConditionalTypeMapper.php
index ef373875b..5e4b25841 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ConditionalTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ConditionalTypeMapper.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\PHPStanStaticTypeMapper\TypeMapper;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
use PHPStan\Reflection\ClassReflection;
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/MixedTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/MixedTypeMapper.php
index 2a7eac27f..e446ba533 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/MixedTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/MixedTypeMapper.php
@@ -10,6 +10,7 @@
use PHPStan\Type\Type;
use Rector\Php\PhpVersionProvider;
use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface;
+use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\ValueObject\PhpVersionFeature;
/**
* @implements TypeMapperInterface
@@ -47,6 +48,9 @@ public function mapToPhpParserNode(Type $type, string $typeKind) : ?Node
if (!$type->isExplicitMixed()) {
return null;
}
+ if ($typeKind === TypeKind::UNION) {
+ return null;
+ }
return new Identifier('mixed');
}
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/NullTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/NullTypeMapper.php
index 010c14939..69dd2aa18 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/NullTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/NullTypeMapper.php
@@ -43,12 +43,14 @@ public function mapToPHPStanPhpDocTypeNode(Type $type) : TypeNode
*/
public function mapToPhpParserNode(Type $type, string $typeKind) : ?Node
{
- if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::NULL_FALSE_TRUE_STANDALONE_TYPE)) {
- return null;
+ // can be a standalone type, only case where null makes sense
+ if ($this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::NULL_FALSE_TRUE_STANDALONE_TYPE) && $typeKind === TypeKind::RETURN) {
+ return new Identifier('null');
}
- if ($typeKind !== TypeKind::RETURN) {
- return null;
+ // if part of union, can be added even in PHP 8.0
+ if ($typeKind === TypeKind::UNION && $this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::NULLABLE_TYPE)) {
+ return new Identifier('null');
}
- return new Identifier('null');
+ return null;
}
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php
index 967457aba..01be2f353 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\PHPStanStaticTypeMapper\TypeMapper;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/StrictMixedTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/StrictMixedTypeMapper.php
index 961a63638..9539d083b 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/StrictMixedTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/StrictMixedTypeMapper.php
@@ -8,16 +8,28 @@
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
use PHPStan\Type\StrictMixedType;
use PHPStan\Type\Type;
+use Rector\Php\PhpVersionProvider;
use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface;
+use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
+use Rector\ValueObject\PhpVersionFeature;
/**
* @implements TypeMapperInterface
*/
final class StrictMixedTypeMapper implements TypeMapperInterface
{
+ /**
+ * @readonly
+ * @var \Rector\Php\PhpVersionProvider
+ */
+ private $phpVersionProvider;
/**
* @var string
*/
private const MIXED = 'mixed';
+ public function __construct(PhpVersionProvider $phpVersionProvider)
+ {
+ $this->phpVersionProvider = $phpVersionProvider;
+ }
public function getNodeClass() : string
{
return StrictMixedType::class;
@@ -34,6 +46,12 @@ public function mapToPHPStanPhpDocTypeNode(Type $type) : TypeNode
*/
public function mapToPhpParserNode(Type $type, string $typeKind) : ?Node
{
+ if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::MIXED_TYPE)) {
+ return null;
+ }
+ if ($typeKind === TypeKind::UNION) {
+ return null;
+ }
return new Identifier(self::MIXED);
}
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/UnionTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/UnionTypeMapper.php
index 19cce2e5f..ee90f5c45 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/UnionTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/UnionTypeMapper.php
@@ -11,29 +11,18 @@
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\NullableType;
use PhpParser\Node\UnionType as PhpParserUnionType;
-use PhpParser\NodeAbstract;
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
-use PHPStan\Type\Constant\ConstantBooleanType;
-use PHPStan\Type\IterableType;
-use PHPStan\Type\MixedType;
-use PHPStan\Type\NullType;
-use PHPStan\Type\ObjectType;
+use PHPStan\Type\CallableType;
use PHPStan\Type\Type;
-use PHPStan\Type\TypeWithClassName;
use PHPStan\Type\UnionType;
-use PHPStan\Type\VoidType;
use Rector\BetterPhpDocParser\ValueObject\Type\BracketsAwareUnionTypeNode;
-use Rector\NodeNameResolver\NodeNameResolver;
use Rector\Php\PhpVersionProvider;
use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper;
-use Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeAnalyzer;
-use Rector\PHPStanStaticTypeMapper\ValueObject\UnionTypeAnalysis;
-use Rector\Rector\AbstractRector;
use Rector\ValueObject\PhpVersionFeature;
-use RectorPrefix202405\Webmozart\Assert\Assert;
-use RectorPrefix202405\Webmozart\Assert\InvalidArgumentException;
+use RectorPrefix202410\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\InvalidArgumentException;
/**
* @implements TypeMapperInterface
*/
@@ -44,25 +33,13 @@ final class UnionTypeMapper implements TypeMapperInterface
* @var \Rector\Php\PhpVersionProvider
*/
private $phpVersionProvider;
- /**
- * @readonly
- * @var \Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeAnalyzer
- */
- private $unionTypeAnalyzer;
- /**
- * @readonly
- * @var \Rector\NodeNameResolver\NodeNameResolver
- */
- private $nodeNameResolver;
/**
* @var \Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper
*/
private $phpStanStaticTypeMapper;
- public function __construct(PhpVersionProvider $phpVersionProvider, UnionTypeAnalyzer $unionTypeAnalyzer, NodeNameResolver $nodeNameResolver)
+ public function __construct(PhpVersionProvider $phpVersionProvider)
{
$this->phpVersionProvider = $phpVersionProvider;
- $this->unionTypeAnalyzer = $unionTypeAnalyzer;
- $this->nodeNameResolver = $nodeNameResolver;
}
public function autowire(PHPStanStaticTypeMapper $phpStanStaticTypeMapper) : void
{
@@ -77,16 +54,10 @@ public function getNodeClass() : string
*/
public function mapToPHPStanPhpDocTypeNode(Type $type) : TypeNode
{
- // note: cannot be handled by PHPStan as uses no-space around |
$unionTypesNodes = [];
- $skipIterable = $this->shouldSkipIterable($type);
foreach ($type->getTypes() as $unionedType) {
- if ($unionedType instanceof IterableType && $skipIterable) {
- continue;
- }
$unionTypesNodes[] = $this->phpStanStaticTypeMapper->mapToPHPStanPhpDocTypeNode($unionedType);
}
- $unionTypesNodes = \array_unique($unionTypesNodes);
return new BracketsAwareUnionTypeNode($unionTypesNodes);
}
/**
@@ -94,17 +65,18 @@ public function mapToPHPStanPhpDocTypeNode(Type $type) : TypeNode
*/
public function mapToPhpParserNode(Type $type, string $typeKind) : ?Node
{
- // special case for nullable
- $nullabledType = $this->matchTypeForNullableUnionType($type);
- if (!$nullabledType instanceof Type) {
- return $this->matchTypeForUnionedTypes($type, $typeKind);
+ $phpParserUnionType = $this->matchPhpParserUnionType($type, $typeKind);
+ if ($phpParserUnionType instanceof PhpParserUnionType) {
+ return $this->resolveUnionTypeNode($phpParserUnionType);
}
- return $this->mapNullabledType($nullabledType, $typeKind);
+ return $phpParserUnionType;
}
/**
+ * If type is nullable, and has only one other value,
+ * this creates at least "?Type" in case of PHP 7.1-7.4
* @return PhpParserUnionType|\PhpParser\Node\NullableType|null
*/
- public function resolveTypeWithNullablePHPParserUnionType(PhpParserUnionType $phpParserUnionType)
+ private function resolveTypeWithNullablePHPParserUnionType(PhpParserUnionType $phpParserUnionType)
{
$totalTypes = \count($phpParserUnionType->types);
if ($totalTypes === 2) {
@@ -142,48 +114,19 @@ private function resolveNullableType(NullableType $nullableType)
/** @var PHPParserNodeIntersectionType|Identifier|Name $type */
$type = $nullableType->type;
if (!$type instanceof PHPParserNodeIntersectionType) {
+ // ?false is allowed only since PHP 8.2+, lets fallback to bool instead
+ if ($type->toString() === 'false' && !$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::NULL_FALSE_TRUE_STANDALONE_TYPE)) {
+ return new NullableType(new Identifier('bool'));
+ }
return $nullableType;
}
- if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::INTERSECTION_TYPES)) {
+ if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::UNION_TYPES)) {
return null;
}
$types = [$type];
$types[] = new Identifier('null');
return new PhpParserUnionType($types);
}
- /**
- * @param TypeKind::* $typeKind
- */
- private function mapNullabledType(Type $nullabledType, string $typeKind) : ?Node
- {
- // void cannot be nullable
- if ($nullabledType->isVoid()->yes()) {
- return null;
- }
- $nullabledTypeNode = $this->phpStanStaticTypeMapper->mapToPhpParserNode($nullabledType, $typeKind);
- if (!$nullabledTypeNode instanceof Node) {
- return null;
- }
- if (\in_array(\get_class($nullabledTypeNode), [NullableType::class, ComplexType::class], \true)) {
- return $nullabledTypeNode;
- }
- /** @var Name $nullabledTypeNode */
- if (!$this->nodeNameResolver->isNames($nullabledTypeNode, ['false', 'mixed'])) {
- return $this->resolveNullableType(new NullableType($nullabledTypeNode));
- }
- return null;
- }
- private function shouldSkipIterable(UnionType $unionType) : bool
- {
- $unionTypeAnalysis = $this->unionTypeAnalyzer->analyseForArrayAndIterable($unionType);
- if (!$unionTypeAnalysis instanceof UnionTypeAnalysis) {
- return \false;
- }
- if (!$unionTypeAnalysis->hasIterable()) {
- return \false;
- }
- return $unionTypeAnalysis->hasArray();
- }
private function resolveUnionTypes(PhpParserUnionType $phpParserUnionType) : ?PhpParserUnionType
{
if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::UNION_TYPES)) {
@@ -191,21 +134,6 @@ private function resolveUnionTypes(PhpParserUnionType $phpParserUnionType) : ?Ph
}
return $phpParserUnionType;
}
- private function matchTypeForNullableUnionType(UnionType $unionType) : ?Type
- {
- if (\count($unionType->getTypes()) !== 2) {
- return null;
- }
- $firstType = $unionType->getTypes()[0];
- $secondType = $unionType->getTypes()[1];
- if ($firstType instanceof NullType) {
- return $secondType;
- }
- if ($secondType instanceof NullType) {
- return $firstType;
- }
- return null;
- }
private function hasObjectAndStaticType(PhpParserUnionType $phpParserUnionType) : bool
{
$hasAnonymousObjectType = \false;
@@ -223,135 +151,38 @@ private function hasObjectAndStaticType(PhpParserUnionType $phpParserUnionType)
return $hasObjectType && $hasAnonymousObjectType;
}
/**
- * @param TypeKind::* $typeKind
- * @return Name|FullyQualified|ComplexType|Identifier|null
- */
- private function matchTypeForUnionedTypes(UnionType $unionType, string $typeKind) : ?Node
- {
- // use first unioned type in case of unioned object types
- $compatibleObjectTypeNode = $this->processResolveCompatibleObjectCandidates($unionType);
- if ($compatibleObjectTypeNode instanceof NullableType || $compatibleObjectTypeNode instanceof FullyQualified) {
- return $compatibleObjectTypeNode;
- }
- $phpParserUnionType = $this->matchPhpParserUnionType($unionType, $typeKind);
- if ($phpParserUnionType instanceof NullableType) {
- return $phpParserUnionType;
- }
- if ($phpParserUnionType instanceof PhpParserUnionType) {
- return $this->resolveUnionTypeNode($phpParserUnionType);
- }
- return $phpParserUnionType;
- }
- private function processResolveCompatibleObjectCandidates(UnionType $unionType) : ?Node
- {
- // the type should be compatible with all other types, e.g. A extends B, B
- $compatibleObjectType = $this->resolveCompatibleObjectCandidate($unionType);
- if ($compatibleObjectType instanceof UnionType) {
- $type = $this->matchTypeForNullableUnionType($compatibleObjectType);
- if ($type instanceof ObjectType) {
- return $this->resolveNullableType(new NullableType(new FullyQualified($type->getClassName())));
- }
- }
- if (!$compatibleObjectType instanceof ObjectType) {
- return null;
- }
- return new FullyQualified($compatibleObjectType->getClassName());
- }
- /**
- * @param TypeKind::* $typeKind
* @return Name|FullyQualified|ComplexType|Identifier|null
*/
private function matchPhpParserUnionType(UnionType $unionType, string $typeKind) : ?Node
{
$phpParserUnionedTypes = [];
foreach ($unionType->getTypes() as $unionedType) {
+ // NullType or ConstantBooleanType with false value inside UnionType is allowed
// void type and mixed type are not allowed in union
- if (\in_array(\get_class($unionedType), [MixedType::class, VoidType::class], \true)) {
+ $phpParserNode = $this->phpStanStaticTypeMapper->mapToPhpParserNode($unionedType, TypeKind::UNION);
+ if ($phpParserNode === null) {
return null;
}
- /**
- * NullType or ConstantBooleanType with false value inside UnionType is allowed
- */
- $phpParserNode = $this->resolveAllowedStandaloneTypeInUnionType($unionedType, $typeKind);
- if ($phpParserNode === null) {
+ // special callable type only not allowed on property
+ if ($typeKind === TypeKind::PROPERTY && $unionedType instanceof CallableType) {
return null;
}
$phpParserUnionedTypes[] = $phpParserNode;
}
/** @var Identifier[]|Name[] $phpParserUnionedTypes */
- $phpParserUnionedTypes = \array_unique($phpParserUnionedTypes);
+ $phpParserUnionedTypes = \array_unique($phpParserUnionedTypes, \SORT_REGULAR);
$countPhpParserUnionedTypes = \count($phpParserUnionedTypes);
if ($countPhpParserUnionedTypes === 1) {
return $phpParserUnionedTypes[0];
}
- if ($countPhpParserUnionedTypes === 0) {
- return null;
- }
return $this->resolveTypeWithNullablePHPParserUnionType(new PhpParserUnionType($phpParserUnionedTypes));
}
- /**
- * @param TypeKind::* $typeKind
- * @return \PhpParser\Node\Identifier|\PhpParser\Node\Name|null|PHPParserNodeIntersectionType|\PhpParser\Node\ComplexType
- */
- private function resolveAllowedStandaloneTypeInUnionType(Type $unionedType, string $typeKind)
- {
- if ($unionedType instanceof NullType) {
- return new Identifier('null');
- }
- if ($unionedType instanceof ConstantBooleanType && !$unionedType->getValue()) {
- return new Identifier('false');
- }
- return $this->phpStanStaticTypeMapper->mapToPhpParserNode($unionedType, $typeKind);
- }
- /**
- * @return \PHPStan\Type\UnionType|\PHPStan\Type\TypeWithClassName|null
- */
- private function resolveCompatibleObjectCandidate(UnionType $unionType)
- {
- $typesWithClassNames = $this->unionTypeAnalyzer->matchExclusiveTypesWithClassNames($unionType);
- if ($typesWithClassNames === []) {
- return null;
- }
- $sharedTypeWithClassName = $this->matchTwoObjectTypes($typesWithClassNames);
- if ($sharedTypeWithClassName instanceof TypeWithClassName) {
- return $this->correctObjectType($sharedTypeWithClassName);
- }
- return null;
- }
- /**
- * @param TypeWithClassName[] $typesWithClassNames
- */
- private function matchTwoObjectTypes(array $typesWithClassNames) : ?TypeWithClassName
- {
- foreach ($typesWithClassNames as $typeWithClassName) {
- foreach ($typesWithClassNames as $nestedTypeWithClassName) {
- if (!$this->areTypeWithClassNamesRelated($typeWithClassName, $nestedTypeWithClassName)) {
- continue 2;
- }
- }
- return $typeWithClassName;
- }
- return null;
- }
- private function areTypeWithClassNamesRelated(TypeWithClassName $firstType, TypeWithClassName $secondType) : bool
- {
- return $firstType->accepts($secondType, \false)->yes();
- }
- private function correctObjectType(TypeWithClassName $typeWithClassName) : TypeWithClassName
- {
- if ($typeWithClassName->getClassName() === NodeAbstract::class) {
- return new ObjectType('PhpParser\\Node');
- }
- if ($typeWithClassName->getClassName() === AbstractRector::class) {
- return new ObjectType('Rector\\Contract\\Rector\\RectorInterface');
- }
- return $typeWithClassName;
- }
private function resolveUnionTypeNode(PhpParserUnionType $phpParserUnionType) : ?PhpParserUnionType
{
if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::UNION_TYPES)) {
return null;
}
+ // special case that would crash, when stdClass and object is used,
if ($this->hasObjectAndStaticType($phpParserUnionType)) {
return null;
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/VoidTypeMapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/VoidTypeMapper.php
index 91e8b8dcc..e640706d9 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/VoidTypeMapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/TypeMapper/VoidTypeMapper.php
@@ -50,7 +50,7 @@ public function mapToPhpParserNode(Type $type, string $typeKind) : ?Node
if (!$this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::VOID_TYPE)) {
return null;
}
- if (\in_array($typeKind, [TypeKind::PARAM, TypeKind::PROPERTY], \true)) {
+ if (\in_array($typeKind, [TypeKind::PARAM, TypeKind::PROPERTY, TypeKind::UNION], \true)) {
return null;
}
return new Identifier(self::VOID);
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/Utils/TypeUnwrapper.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/Utils/TypeUnwrapper.php
index 432ecc422..cea3977d6 100644
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/Utils/TypeUnwrapper.php
+++ b/vendor/rector/rector/src/PHPStanStaticTypeMapper/Utils/TypeUnwrapper.php
@@ -4,6 +4,7 @@
namespace Rector\PHPStanStaticTypeMapper\Utils;
use PHPStan\Type\Type;
+use PHPStan\Type\TypeCombinator;
use PHPStan\Type\TypeWithClassName;
use PHPStan\Type\UnionType;
final class TypeUnwrapper
@@ -21,15 +22,8 @@ public function unwrapFirstObjectTypeFromUnionType(Type $type) : Type
}
return $type;
}
- public function removeNullTypeFromUnionType(UnionType $unionType) : UnionType
+ public function removeNullTypeFromUnionType(UnionType $unionType) : Type
{
- $unionedTypesWithoutNullType = [];
- foreach ($unionType->getTypes() as $type) {
- if ($type instanceof UnionType) {
- continue;
- }
- $unionedTypesWithoutNullType[] = $type;
- }
- return new UnionType($unionedTypesWithoutNullType);
+ return TypeCombinator::removeNull($unionType);
}
}
diff --git a/vendor/rector/rector/src/PHPStanStaticTypeMapper/ValueObject/UnionTypeAnalysis.php b/vendor/rector/rector/src/PHPStanStaticTypeMapper/ValueObject/UnionTypeAnalysis.php
deleted file mode 100644
index df1c11286..000000000
--- a/vendor/rector/rector/src/PHPStanStaticTypeMapper/ValueObject/UnionTypeAnalysis.php
+++ /dev/null
@@ -1,31 +0,0 @@
-hasIterable = $hasIterable;
- $this->hasArray = $hasArray;
- }
- public function hasIterable() : bool
- {
- return $this->hasIterable;
- }
- public function hasArray() : bool
- {
- return $this->hasArray;
- }
-}
diff --git a/vendor/rector/rector/src/Parallel/Application/ParallelFileProcessor.php b/vendor/rector/rector/src/Parallel/Application/ParallelFileProcessor.php
index 0c29a0225..30fed0054 100644
--- a/vendor/rector/rector/src/Parallel/Application/ParallelFileProcessor.php
+++ b/vendor/rector/rector/src/Parallel/Application/ParallelFileProcessor.php
@@ -3,30 +3,29 @@
declare (strict_types=1);
namespace Rector\Parallel\Application;
-use RectorPrefix202405\Clue\React\NDJson\Decoder;
-use RectorPrefix202405\Clue\React\NDJson\Encoder;
-use RectorPrefix202405\Nette\Utils\Random;
-use RectorPrefix202405\React\EventLoop\StreamSelectLoop;
-use RectorPrefix202405\React\Socket\ConnectionInterface;
-use RectorPrefix202405\React\Socket\TcpServer;
+use RectorPrefix202410\Clue\React\NDJson\Decoder;
+use RectorPrefix202410\Clue\React\NDJson\Encoder;
+use RectorPrefix202410\Nette\Utils\Random;
+use RectorPrefix202410\React\EventLoop\StreamSelectLoop;
+use RectorPrefix202410\React\Socket\ConnectionInterface;
+use RectorPrefix202410\React\Socket\TcpServer;
use Rector\Configuration\Option;
use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\Console\Command\ProcessCommand;
use Rector\Parallel\Command\WorkerCommandLineFactory;
use Rector\Parallel\ValueObject\Bridge;
-use Rector\ValueObject\Configuration;
use Rector\ValueObject\Error\SystemError;
use Rector\ValueObject\ProcessResult;
use Rector\ValueObject\Reporting\FileDiff;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symplify\EasyParallel\Enum\Action;
-use RectorPrefix202405\Symplify\EasyParallel\Enum\Content;
-use RectorPrefix202405\Symplify\EasyParallel\Enum\ReactCommand;
-use RectorPrefix202405\Symplify\EasyParallel\Enum\ReactEvent;
-use RectorPrefix202405\Symplify\EasyParallel\ValueObject\ParallelProcess;
-use RectorPrefix202405\Symplify\EasyParallel\ValueObject\ProcessPool;
-use RectorPrefix202405\Symplify\EasyParallel\ValueObject\Schedule;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symplify\EasyParallel\Enum\Action;
+use RectorPrefix202410\Symplify\EasyParallel\Enum\Content;
+use RectorPrefix202410\Symplify\EasyParallel\Enum\ReactCommand;
+use RectorPrefix202410\Symplify\EasyParallel\Enum\ReactEvent;
+use RectorPrefix202410\Symplify\EasyParallel\ValueObject\ParallelProcess;
+use RectorPrefix202410\Symplify\EasyParallel\ValueObject\ProcessPool;
+use RectorPrefix202410\Symplify\EasyParallel\ValueObject\Schedule;
use Throwable;
/**
* Inspired from @see
@@ -63,7 +62,7 @@ public function __construct(WorkerCommandLineFactory $workerCommandLineFactory)
/**
* @param callable(int $stepCount): void $postFileCallback Used for progress bar jump
*/
- public function process(Schedule $schedule, string $mainScript, callable $postFileCallback, InputInterface $input, Configuration $configuration) : ProcessResult
+ public function process(Schedule $schedule, string $mainScript, callable $postFileCallback, InputInterface $input) : ProcessResult
{
$jobs = \array_reverse($schedule->getJobs());
$streamSelectLoop = new StreamSelectLoop();
diff --git a/vendor/rector/rector/src/Parallel/Command/WorkerCommandLineFactory.php b/vendor/rector/rector/src/Parallel/Command/WorkerCommandLineFactory.php
index ed4c68ccd..478dc1a2e 100644
--- a/vendor/rector/rector/src/Parallel/Command/WorkerCommandLineFactory.php
+++ b/vendor/rector/rector/src/Parallel/Command/WorkerCommandLineFactory.php
@@ -6,10 +6,10 @@
use Rector\ChangesReporting\Output\JsonOutputFormatter;
use Rector\Configuration\Option;
use Rector\FileSystem\FilePathHelper;
-use RectorPrefix202405\Symfony\Component\Console\Command\Command;
-use RectorPrefix202405\Symfony\Component\Console\Input\InputInterface;
-use RectorPrefix202405\Symplify\EasyParallel\Exception\ParallelShouldNotHappenException;
-use RectorPrefix202405\Symplify\EasyParallel\Reflection\CommandFromReflectionFactory;
+use RectorPrefix202410\Symfony\Component\Console\Command\Command;
+use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface;
+use RectorPrefix202410\Symplify\EasyParallel\Exception\ParallelShouldNotHappenException;
+use RectorPrefix202410\Symplify\EasyParallel\Reflection\CommandFromReflectionFactory;
/**
* @see \Rector\Tests\Parallel\Command\WorkerCommandLineFactoryTest
* @todo possibly extract to symplify/easy-parallel
diff --git a/vendor/rector/rector/src/Parallel/ValueObject/BridgeItem.php b/vendor/rector/rector/src/Parallel/ValueObject/BridgeItem.php
index 72b7fed98..1b03b2dda 100644
--- a/vendor/rector/rector/src/Parallel/ValueObject/BridgeItem.php
+++ b/vendor/rector/rector/src/Parallel/ValueObject/BridgeItem.php
@@ -21,6 +21,10 @@ final class BridgeItem
* @var string
*/
public const RELATIVE_FILE_PATH = 'relative_file_path';
+ /**
+ * @var string
+ */
+ public const ABSOLUTE_FILE_PATH = 'absolute_file_path';
/**
* @var string
*/
diff --git a/vendor/rector/rector/src/Php/PhpVersionProvider.php b/vendor/rector/rector/src/Php/PhpVersionProvider.php
index 6ddc11330..578bb889d 100644
--- a/vendor/rector/rector/src/Php/PhpVersionProvider.php
+++ b/vendor/rector/rector/src/Php/PhpVersionProvider.php
@@ -6,7 +6,7 @@
use Rector\Configuration\Option;
use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\Exception\Configuration\InvalidConfigurationException;
-use Rector\Php\PhpVersionResolver\ProjectComposerJsonPhpVersionResolver;
+use Rector\Php\PhpVersionResolver\ComposerJsonPhpVersionResolver;
use Rector\Testing\PHPUnit\StaticPHPUnitEnvironment;
use Rector\Util\StringUtils;
use Rector\ValueObject\PhpVersion;
@@ -44,7 +44,7 @@ public function provide() : int
}
$projectComposerJson = \getcwd() . '/composer.json';
if (\file_exists($projectComposerJson)) {
- $phpVersion = ProjectComposerJsonPhpVersionResolver::resolve($projectComposerJson);
+ $phpVersion = ComposerJsonPhpVersionResolver::resolve($projectComposerJson);
if ($phpVersion !== null) {
return $this->phpVersionFeatures = $phpVersion;
}
diff --git a/vendor/rector/rector/src/Php/PhpVersionResolver/ProjectComposerJsonPhpVersionResolver.php b/vendor/rector/rector/src/Php/PhpVersionResolver/ComposerJsonPhpVersionResolver.php
similarity index 56%
rename from vendor/rector/rector/src/Php/PhpVersionResolver/ProjectComposerJsonPhpVersionResolver.php
rename to vendor/rector/rector/src/Php/PhpVersionResolver/ComposerJsonPhpVersionResolver.php
index bfaf0931e..6e15a3fe5 100644
--- a/vendor/rector/rector/src/Php/PhpVersionResolver/ProjectComposerJsonPhpVersionResolver.php
+++ b/vendor/rector/rector/src/Php/PhpVersionResolver/ComposerJsonPhpVersionResolver.php
@@ -3,26 +3,44 @@
declare (strict_types=1);
namespace Rector\Php\PhpVersionResolver;
-use RectorPrefix202405\Composer\Semver\VersionParser;
-use RectorPrefix202405\Nette\Utils\FileSystem;
-use RectorPrefix202405\Nette\Utils\Json;
+use RectorPrefix202410\Composer\Semver\VersionParser;
+use Rector\Exception\Configuration\InvalidConfigurationException;
+use Rector\FileSystem\JsonFileSystem;
use Rector\Util\PhpVersionFactory;
+use Rector\ValueObject\PhpVersion;
/**
- * @see \Rector\Tests\Php\PhpVersionResolver\ProjectComposerJsonPhpVersionResolver\ProjectComposerJsonPhpVersionResolverTest
+ * @see \Rector\Tests\Php\PhpVersionResolver\ComposerJsonPhpVersionResolver\ComposerJsonPhpVersionResolverTest
*/
-final class ProjectComposerJsonPhpVersionResolver
+final class ComposerJsonPhpVersionResolver
{
/**
- * @var array
+ * @var array
*/
private static $cachedPhpVersions = [];
+ /**
+ * @return PhpVersion::*
+ */
+ public static function resolveFromCwdOrFail() : int
+ {
+ // use composer.json PHP version
+ $projectComposerJsonFilePath = \getcwd() . '/composer.json';
+ if (\file_exists($projectComposerJsonFilePath)) {
+ $projectPhpVersion = self::resolve($projectComposerJsonFilePath);
+ if (\is_int($projectPhpVersion)) {
+ return $projectPhpVersion;
+ }
+ }
+ throw new InvalidConfigurationException(\sprintf('We could not find local "composer.json" to determine your PHP version.%sPlease, fill the PHP version set in withPhpSets() manually.', \PHP_EOL));
+ }
+ /**
+ * @return PhpVersion::*|null
+ */
public static function resolve(string $composerJson) : ?int
{
if (\array_key_exists($composerJson, self::$cachedPhpVersions)) {
return self::$cachedPhpVersions[$composerJson];
}
- $composerJsonContents = FileSystem::read($composerJson);
- $projectComposerJson = Json::decode($composerJsonContents, \true);
+ $projectComposerJson = JsonFileSystem::readFilePath($composerJson);
// give this one a priority, as more generic one
$requirePhpVersion = $projectComposerJson['require']['php'] ?? null;
if ($requirePhpVersion !== null) {
@@ -37,6 +55,9 @@ public static function resolve(string $composerJson) : ?int
}
return self::$cachedPhpVersions[$composerJson] = null;
}
+ /**
+ * @return PhpVersion::*
+ */
private static function createIntVersionFromComposerVersion(string $projectPhpVersion) : int
{
$versionParser = new VersionParser();
diff --git a/vendor/rector/rector/src/Php/PolyfillPackagesProvider.php b/vendor/rector/rector/src/Php/PolyfillPackagesProvider.php
index f9220a7bf..c5d5cd617 100644
--- a/vendor/rector/rector/src/Php/PolyfillPackagesProvider.php
+++ b/vendor/rector/rector/src/Php/PolyfillPackagesProvider.php
@@ -3,8 +3,8 @@
declare (strict_types=1);
namespace Rector\Php;
-use RectorPrefix202405\Nette\Utils\FileSystem;
-use RectorPrefix202405\Nette\Utils\Json;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\Json;
use Rector\Configuration\Option;
use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\ValueObject\PolyfillPackage;
diff --git a/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper.php b/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper.php
index 81a3e59f6..79fb3e89f 100644
--- a/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper.php
+++ b/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper.php
@@ -12,7 +12,7 @@
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpAttribute\Contract\AnnotationToAttributeMapperInterface;
use Rector\PhpAttribute\Enum\DocTagNodeState;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\PhpAttribute\AnnotationToAttributeMapper\AnnotationToAttributeMapperTest
*/
diff --git a/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/ArrayAnnotationToAttributeMapper.php b/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/ArrayAnnotationToAttributeMapper.php
index c2d90a518..b582bd18b 100644
--- a/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/ArrayAnnotationToAttributeMapper.php
+++ b/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/ArrayAnnotationToAttributeMapper.php
@@ -13,7 +13,7 @@
use Rector\PhpAttribute\Contract\AnnotationToAttributeMapperInterface;
use Rector\PhpAttribute\Enum\DocTagNodeState;
use Rector\PhpParser\Node\Value\ValueResolver;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @implements AnnotationToAttributeMapperInterface
*/
diff --git a/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/ArrayItemNodeAnnotationToAttributeMapper.php b/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/ArrayItemNodeAnnotationToAttributeMapper.php
index 439ce5041..34a66b41d 100644
--- a/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/ArrayItemNodeAnnotationToAttributeMapper.php
+++ b/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/ArrayItemNodeAnnotationToAttributeMapper.php
@@ -14,7 +14,7 @@
use Rector\PhpAttribute\Contract\AnnotationToAttributeMapperInterface;
use Rector\PhpAttribute\Enum\DocTagNodeState;
use Rector\Validation\RectorAssert;
-use RectorPrefix202405\Webmozart\Assert\InvalidArgumentException;
+use RectorPrefix202410\Webmozart\Assert\InvalidArgumentException;
/**
* @implements AnnotationToAttributeMapperInterface
*/
diff --git a/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/CurlyListNodeAnnotationToAttributeMapper.php b/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/CurlyListNodeAnnotationToAttributeMapper.php
index 4a377996f..45198a850 100644
--- a/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/CurlyListNodeAnnotationToAttributeMapper.php
+++ b/vendor/rector/rector/src/PhpAttribute/AnnotationToAttributeMapper/CurlyListNodeAnnotationToAttributeMapper.php
@@ -10,7 +10,7 @@
use Rector\PhpAttribute\AnnotationToAttributeMapper;
use Rector\PhpAttribute\Contract\AnnotationToAttributeMapperInterface;
use Rector\PhpAttribute\Enum\DocTagNodeState;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @implements AnnotationToAttributeMapperInterface
*/
diff --git a/vendor/rector/rector/src/PhpAttribute/AttributeArrayNameInliner.php b/vendor/rector/rector/src/PhpAttribute/AttributeArrayNameInliner.php
index 3a7e533a2..8ddd696ed 100644
--- a/vendor/rector/rector/src/PhpAttribute/AttributeArrayNameInliner.php
+++ b/vendor/rector/rector/src/PhpAttribute/AttributeArrayNameInliner.php
@@ -11,15 +11,14 @@
use PhpParser\Node\Scalar\LNumber;
use PhpParser\Node\Scalar\String_;
use Rector\Exception\NotImplementedYetException;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class AttributeArrayNameInliner
{
/**
* @param Array_|Arg[] $array
- * @param string[] $classReferenceFields
* @return Arg[]
*/
- public function inlineArrayToArgs($array, array $classReferenceFields = []) : array
+ public function inlineArrayToArgs($array) : array
{
if (\is_array($array)) {
return $this->inlineArray($array);
diff --git a/vendor/rector/rector/src/PhpAttribute/NodeFactory/AnnotationToAttributeIntegerValueCaster.php b/vendor/rector/rector/src/PhpAttribute/NodeFactory/AnnotationToAttributeIntegerValueCaster.php
new file mode 100644
index 000000000..638bce042
--- /dev/null
+++ b/vendor/rector/rector/src/PhpAttribute/NodeFactory/AnnotationToAttributeIntegerValueCaster.php
@@ -0,0 +1,96 @@
+reflectionProvider = $reflectionProvider;
+ }
+ /**
+ * @param Arg[] $args
+ */
+ public function castAttributeTypes(AnnotationToAttribute $annotationToAttribute, array $args) : void
+ {
+ Assert::allIsInstanceOf($args, Arg::class);
+ if (!$this->reflectionProvider->hasClass($annotationToAttribute->getAttributeClass())) {
+ return;
+ }
+ $attributeClassReflection = $this->reflectionProvider->getClass($annotationToAttribute->getAttributeClass());
+ if (!$attributeClassReflection->hasConstructor()) {
+ return;
+ }
+ $parameterReflections = $this->resolveConstructorParameterReflections($attributeClassReflection);
+ foreach ($parameterReflections as $parameterReflection) {
+ foreach ($args as $arg) {
+ if (!$arg->value instanceof ArrayItem) {
+ continue;
+ }
+ $arrayItem = $arg->value;
+ if (!$arrayItem->key instanceof String_) {
+ continue;
+ }
+ $keyString = $arrayItem->key;
+ if ($keyString->value !== $parameterReflection->getName()) {
+ continue;
+ }
+ // ensure type is casted to integer
+ if (!$arrayItem->value instanceof String_) {
+ continue;
+ }
+ if (!$this->containsInteger($parameterReflection->getType())) {
+ continue;
+ }
+ $valueString = $arrayItem->value;
+ if (!\is_numeric($valueString->value)) {
+ continue;
+ }
+ $arrayItem->value = new LNumber((int) $valueString->value);
+ }
+ }
+ }
+ private function containsInteger(Type $type) : bool
+ {
+ if ($type instanceof IntegerType) {
+ return \true;
+ }
+ if (!$type instanceof UnionType) {
+ return \false;
+ }
+ foreach ($type->getTypes() as $unionedType) {
+ if ($unionedType instanceof IntegerType) {
+ return \true;
+ }
+ }
+ return \false;
+ }
+ /**
+ * @return ParameterReflection[]
+ */
+ private function resolveConstructorParameterReflections(ClassReflection $classReflection) : array
+ {
+ $extendedMethodReflection = $classReflection->getConstructor();
+ $parametersAcceptorWithPhpDocs = ParametersAcceptorSelector::combineAcceptors($extendedMethodReflection->getVariants());
+ return $parametersAcceptorWithPhpDocs->getParameters();
+ }
+}
diff --git a/vendor/rector/rector/src/PhpAttribute/NodeFactory/NamedArgsFactory.php b/vendor/rector/rector/src/PhpAttribute/NodeFactory/NamedArgsFactory.php
index c8f763623..3b9c9960e 100644
--- a/vendor/rector/rector/src/PhpAttribute/NodeFactory/NamedArgsFactory.php
+++ b/vendor/rector/rector/src/PhpAttribute/NodeFactory/NamedArgsFactory.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\PhpAttribute\NodeFactory;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\BuilderHelpers;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr;
diff --git a/vendor/rector/rector/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php b/vendor/rector/rector/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php
index 495829b79..8539249b3 100644
--- a/vendor/rector/rector/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php
+++ b/vendor/rector/rector/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php
@@ -17,6 +17,7 @@
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Php80\ValueObject\AnnotationToAttribute;
+use Rector\Php81\Enum\AttributeName;
use Rector\PhpAttribute\AnnotationToAttributeMapper;
use Rector\PhpAttribute\AttributeArrayNameInliner;
/**
@@ -44,17 +45,26 @@ final class PhpAttributeGroupFactory
* @var \Rector\PhpAttribute\AttributeArrayNameInliner
*/
private $attributeArrayNameInliner;
- public function __construct(AnnotationToAttributeMapper $annotationToAttributeMapper, \Rector\PhpAttribute\NodeFactory\AttributeNameFactory $attributeNameFactory, \Rector\PhpAttribute\NodeFactory\NamedArgsFactory $namedArgsFactory, AttributeArrayNameInliner $attributeArrayNameInliner)
+ /**
+ * @readonly
+ * @var \Rector\PhpAttribute\NodeFactory\AnnotationToAttributeIntegerValueCaster
+ */
+ private $annotationToAttributeIntegerValueCaster;
+ public function __construct(AnnotationToAttributeMapper $annotationToAttributeMapper, \Rector\PhpAttribute\NodeFactory\AttributeNameFactory $attributeNameFactory, \Rector\PhpAttribute\NodeFactory\NamedArgsFactory $namedArgsFactory, AttributeArrayNameInliner $attributeArrayNameInliner, \Rector\PhpAttribute\NodeFactory\AnnotationToAttributeIntegerValueCaster $annotationToAttributeIntegerValueCaster)
{
$this->annotationToAttributeMapper = $annotationToAttributeMapper;
$this->attributeNameFactory = $attributeNameFactory;
$this->namedArgsFactory = $namedArgsFactory;
$this->attributeArrayNameInliner = $attributeArrayNameInliner;
+ $this->annotationToAttributeIntegerValueCaster = $annotationToAttributeIntegerValueCaster;
}
public function createFromSimpleTag(AnnotationToAttribute $annotationToAttribute) : AttributeGroup
{
return $this->createFromClass($annotationToAttribute->getAttributeClass());
}
+ /**
+ * @param AttributeName::*|string $attributeClass
+ */
public function createFromClass(string $attributeClass) : AttributeGroup
{
$fullyQualified = new FullyQualified($attributeClass);
@@ -68,7 +78,7 @@ public function createFromClass(string $attributeClass) : AttributeGroup
public function createFromClassWithItems(string $attributeClass, array $items) : AttributeGroup
{
$fullyQualified = new FullyQualified($attributeClass);
- $args = $this->createArgsFromItems($items, $attributeClass);
+ $args = $this->createArgsFromItems($items);
$attribute = new Attribute($fullyQualified, $args);
return new AttributeGroup([$attribute]);
}
@@ -78,7 +88,8 @@ public function createFromClassWithItems(string $attributeClass, array $items) :
public function create(DoctrineAnnotationTagValueNode $doctrineAnnotationTagValueNode, AnnotationToAttribute $annotationToAttribute, array $uses) : AttributeGroup
{
$values = $doctrineAnnotationTagValueNode->getValuesWithSilentKey();
- $args = $this->createArgsFromItems($values, $annotationToAttribute->getAttributeClass(), $annotationToAttribute->getClassReferenceFields());
+ $args = $this->createArgsFromItems($values, '', $annotationToAttribute->getClassReferenceFields());
+ $this->annotationToAttributeIntegerValueCaster->castAttributeTypes($annotationToAttribute, $args);
$args = $this->attributeArrayNameInliner->inlineArrayToArgs($args);
$attributeName = $this->attributeNameFactory->create($annotationToAttribute, $doctrineAnnotationTagValueNode, $uses);
// keep FQN in the attribute, so it can be easily detected later
@@ -96,9 +107,10 @@ public function create(DoctrineAnnotationTagValueNode $doctrineAnnotationTagValu
*
* @param ArrayItemNode[]|mixed[] $items
* @param string[] $classReferencedFields
+ *
* @return Arg[]
*/
- public function createArgsFromItems(array $items, string $attributeClass, array $classReferencedFields = []) : array
+ public function createArgsFromItems(array $items, string $attributeClass = '', array $classReferencedFields = []) : array
{
$mappedItems = $this->annotationToAttributeMapper->map($items);
$this->mapClassReferences($mappedItems, $classReferencedFields);
diff --git a/vendor/rector/rector/src/PhpAttribute/NodeFactory/PhpNestedAttributeGroupFactory.php b/vendor/rector/rector/src/PhpAttribute/NodeFactory/PhpNestedAttributeGroupFactory.php
index 374204aa3..fa656b78f 100644
--- a/vendor/rector/rector/src/PhpAttribute/NodeFactory/PhpNestedAttributeGroupFactory.php
+++ b/vendor/rector/rector/src/PhpAttribute/NodeFactory/PhpNestedAttributeGroupFactory.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\PhpAttribute\NodeFactory;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node\Arg;
use PhpParser\Node\Attribute;
use PhpParser\Node\AttributeGroup;
@@ -26,7 +26,7 @@
use Rector\Php80\ValueObject\NestedAnnotationToAttribute;
use Rector\PhpAttribute\AnnotationToAttributeMapper;
use Rector\PhpAttribute\AttributeArrayNameInliner;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class PhpNestedAttributeGroupFactory
{
/**
diff --git a/vendor/rector/rector/src/PhpParser/AstResolver.php b/vendor/rector/rector/src/PhpParser/AstResolver.php
index de3521b34..c3f6addd9 100644
--- a/vendor/rector/rector/src/PhpParser/AstResolver.php
+++ b/vendor/rector/rector/src/PhpParser/AstResolver.php
@@ -19,7 +19,6 @@
use PhpParser\Node\Stmt\Interface_;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Stmt\Trait_;
-use PhpParser\NodeTraverser;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Reflection\FunctionReflection;
@@ -31,7 +30,6 @@
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator;
use Rector\NodeTypeResolver\NodeTypeResolver;
-use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
use Rector\PhpDocParser\PhpParser\SmartPhpParser;
use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\Reflection\MethodReflectionResolver;
@@ -53,11 +51,6 @@ final class AstResolver
* @var \Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator
*/
private $nodeScopeAndMetadataDecorator;
- /**
- * @readonly
- * @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser
- */
- private $simpleCallableNodeTraverser;
/**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver
@@ -90,11 +83,10 @@ final class AstResolver
* @var array
*/
private $parsedFileNodes = [];
- public function __construct(SmartPhpParser $smartPhpParser, NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator, SimpleCallableNodeTraverser $simpleCallableNodeTraverser, NodeNameResolver $nodeNameResolver, ReflectionProvider $reflectionProvider, NodeTypeResolver $nodeTypeResolver, MethodReflectionResolver $methodReflectionResolver, BetterNodeFinder $betterNodeFinder)
+ public function __construct(SmartPhpParser $smartPhpParser, NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator, NodeNameResolver $nodeNameResolver, ReflectionProvider $reflectionProvider, NodeTypeResolver $nodeTypeResolver, MethodReflectionResolver $methodReflectionResolver, BetterNodeFinder $betterNodeFinder)
{
$this->smartPhpParser = $smartPhpParser;
$this->nodeScopeAndMetadataDecorator = $nodeScopeAndMetadataDecorator;
- $this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->nodeNameResolver = $nodeNameResolver;
$this->reflectionProvider = $reflectionProvider;
$this->nodeTypeResolver = $nodeTypeResolver;
@@ -120,22 +112,22 @@ public function resolveClassMethodFromMethodReflection(MethodReflection $methodR
$nodes = $this->parseFileNameToDecoratedNodes($fileName);
$classLikeName = $classReflection->getName();
$methodName = $methodReflection->getName();
+ /** @var ClassMethod|null $classMethod */
$classMethod = null;
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable($nodes, function (Node $node) use($classLikeName, $methodName, &$classMethod) : ?int {
+ $this->betterNodeFinder->findFirst($nodes, function (Node $node) use($classLikeName, $methodName, &$classMethod) : bool {
if (!$node instanceof ClassLike) {
- return null;
+ return \false;
}
if (!$this->nodeNameResolver->isName($node, $classLikeName)) {
- return null;
+ return \false;
}
$method = $node->getMethod($methodName);
if ($method instanceof ClassMethod) {
$classMethod = $method;
- return NodeTraverser::STOP_TRAVERSAL;
+ return \true;
}
- return null;
+ return \false;
});
- /** @var ClassMethod|null $classMethod */
return $classMethod;
}
/**
@@ -157,18 +149,13 @@ public function resolveFunctionFromFunctionReflection(FunctionReflection $functi
$fileName = $functionReflection->getFileName();
$nodes = $this->parseFileNameToDecoratedNodes($fileName);
$functionName = $functionReflection->getName();
- $functionNode = null;
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable($nodes, function (Node $node) use($functionName, &$functionNode) : ?int {
+ /** @var Function_|null $functionNode */
+ $functionNode = $this->betterNodeFinder->findFirst($nodes, function (Node $node) use($functionName) : bool {
if (!$node instanceof Function_) {
- return null;
- }
- if (!$this->nodeNameResolver->isName($node, $functionName)) {
- return null;
+ return \false;
}
- $functionNode = $node;
- return NodeTraverser::STOP_TRAVERSAL;
+ return $this->nodeNameResolver->isName($node, $functionName);
});
- /** @var Function_|null $functionNode */
return $functionNode;
}
/**
@@ -233,16 +220,11 @@ public function parseClassReflectionTraits(ClassReflection $classReflection) : a
$fileName = $classLike->getFileName();
$nodes = $this->parseFileNameToDecoratedNodes($fileName);
$traitName = $classLike->getName();
- $traitNode = null;
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable($nodes, function (Node $node) use($traitName, &$traitNode) : ?int {
+ $traitNode = $this->betterNodeFinder->findFirst($nodes, function (Node $node) use($traitName) : bool {
if (!$node instanceof Trait_) {
- return null;
- }
- if (!$this->nodeNameResolver->isName($node, $traitName)) {
- return null;
+ return \false;
}
- $traitNode = $node;
- return NodeTraverser::STOP_TRAVERSAL;
+ return $this->nodeNameResolver->isName($node, $traitName);
});
if (!$traitNode instanceof Trait_) {
continue;
@@ -265,21 +247,20 @@ public function resolvePropertyFromPropertyReflection(PhpPropertyReflection $php
$nativeReflectionProperty = $phpPropertyReflection->getNativeReflection();
$desiredClassName = $classReflection->getName();
$desiredPropertyName = $nativeReflectionProperty->getName();
- /** @var Property|null $propertyNode */
$propertyNode = null;
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable($nodes, function (Node $node) use($desiredClassName, $desiredPropertyName, &$propertyNode) : ?int {
+ $this->betterNodeFinder->findFirst($nodes, function (Node $node) use($desiredClassName, $desiredPropertyName, &$propertyNode) : bool {
if (!$node instanceof ClassLike) {
- return null;
+ return \false;
}
if (!$this->nodeNameResolver->isName($node, $desiredClassName)) {
- return null;
+ return \false;
}
$property = $node->getProperty($desiredPropertyName);
if ($property instanceof Property) {
$propertyNode = $property;
- return NodeTraverser::STOP_TRAVERSAL;
+ return \true;
}
- return null;
+ return \false;
});
if ($propertyNode instanceof Property) {
return $propertyNode;
@@ -321,16 +302,11 @@ private function locateClassMethodInTrait(string $methodName, MethodReflection $
$classReflection = $methodReflection->getDeclaringClass();
$traits = $this->parseClassReflectionTraits($classReflection);
/** @var ClassMethod|null $classMethod */
- $classMethod = null;
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable($traits, function (Node $node) use($methodName, &$classMethod) : ?int {
+ $classMethod = $this->betterNodeFinder->findFirst($traits, function (Node $node) use($methodName) : bool {
if (!$node instanceof ClassMethod) {
- return null;
- }
- if (!$this->nodeNameResolver->isName($node, $methodName)) {
- return null;
+ return \false;
}
- $classMethod = $node;
- return NodeTraverser::STOP_TRAVERSAL;
+ return $this->nodeNameResolver->isName($node, $methodName);
});
return $classMethod;
}
@@ -341,16 +317,16 @@ private function findPromotedPropertyByName(array $stmts, string $desiredClassNa
{
/** @var Param|null $paramNode */
$paramNode = null;
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable($stmts, function (Node $node) use($desiredClassName, $desiredPropertyName, &$paramNode) {
+ $this->betterNodeFinder->findFirst($stmts, function (Node $node) use($desiredClassName, $desiredPropertyName, &$paramNode) : bool {
if (!$node instanceof Class_) {
- return null;
+ return \false;
}
if (!$this->nodeNameResolver->isName($node, $desiredClassName)) {
- return null;
+ return \false;
}
$constructClassMethod = $node->getMethod(MethodName::CONSTRUCT);
if (!$constructClassMethod instanceof ClassMethod) {
- return null;
+ return \false;
}
foreach ($constructClassMethod->getParams() as $param) {
if ($param->flags === 0) {
@@ -358,9 +334,10 @@ private function findPromotedPropertyByName(array $stmts, string $desiredClassNa
}
if ($this->nodeNameResolver->isName($param, $desiredPropertyName)) {
$paramNode = $param;
- return NodeTraverser::STOP_TRAVERSAL;
+ return \true;
}
}
+ return \false;
});
return $paramNode;
}
diff --git a/vendor/rector/rector/src/PhpParser/Node/AssignAndBinaryMap.php b/vendor/rector/rector/src/PhpParser/Node/AssignAndBinaryMap.php
index a7f83d10d..b9187050c 100644
--- a/vendor/rector/rector/src/PhpParser/Node/AssignAndBinaryMap.php
+++ b/vendor/rector/rector/src/PhpParser/Node/AssignAndBinaryMap.php
@@ -58,16 +58,18 @@ final class AssignAndBinaryMap
*/
private const ASSIGN_OP_TO_BINARY_OP_CLASSES = [AssignBitwiseOr::class => BitwiseOr::class, AssignBitwiseAnd::class => BitwiseAnd::class, AssignBitwiseXor::class => BitwiseXor::class, AssignPlus::class => Plus::class, AssignDiv::class => Div::class, AssignMul::class => Mul::class, AssignMinus::class => Minus::class, AssignConcat::class => Concat::class, AssignPow::class => Pow::class, AssignMod::class => Mod::class, AssignShiftLeft::class => ShiftLeft::class, AssignShiftRight::class => ShiftRight::class];
/**
- * @var array, class-string>
+ * @var array, class-string>
*/
private $binaryOpToAssignClasses = [];
public function __construct(NodeTypeResolver $nodeTypeResolver)
{
$this->nodeTypeResolver = $nodeTypeResolver;
- $this->binaryOpToAssignClasses = \array_flip(self::ASSIGN_OP_TO_BINARY_OP_CLASSES);
+ /** @var array, class-string> $binaryClassesToAssignOp */
+ $binaryClassesToAssignOp = \array_flip(self::ASSIGN_OP_TO_BINARY_OP_CLASSES);
+ $this->binaryOpToAssignClasses = $binaryClassesToAssignOp;
}
/**
- * @return class-string|null
+ * @return class-string|null
*/
public function getAlternative(Node $node) : ?string
{
diff --git a/vendor/rector/rector/src/PhpParser/Node/BetterNodeFinder.php b/vendor/rector/rector/src/PhpParser/Node/BetterNodeFinder.php
index 003437e09..22ac80743 100644
--- a/vendor/rector/rector/src/PhpParser/Node/BetterNodeFinder.php
+++ b/vendor/rector/rector/src/PhpParser/Node/BetterNodeFinder.php
@@ -6,17 +6,20 @@
use PhpParser\Node;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Variable;
+use PhpParser\Node\Expr\Yield_;
+use PhpParser\Node\Expr\YieldFrom;
+use PhpParser\Node\FunctionLike;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Class_;
-use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
+use PhpParser\Node\Stmt\Return_;
use PhpParser\NodeFinder;
use PhpParser\NodeTraverser;
use Rector\NodeAnalyzer\ClassAnalyzer;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\PhpParser\Node\BetterNodeFinder\BetterNodeFinderTest
*/
@@ -139,7 +142,7 @@ public function find($nodes, callable $filter) : array
/**
* @api symfony
* @param Node[] $nodes
- * @return ClassLike|null
+ * @return Class_|null
*/
public function findFirstNonAnonymousClass(array $nodes) : ?Node
{
@@ -168,7 +171,7 @@ public function hasInstancesOfInFunctionLikeScoped($functionLike, $types) : bool
}
$isFoundNode = \false;
$this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $functionLike->stmts, static function (Node $subNode) use($types, &$isFoundNode) : ?int {
- if ($subNode instanceof Class_ || $subNode instanceof Function_ || $subNode instanceof Closure) {
+ if ($subNode instanceof Class_ || $subNode instanceof FunctionLike) {
return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
}
foreach ($types as $type) {
@@ -182,20 +185,49 @@ public function hasInstancesOfInFunctionLikeScoped($functionLike, $types) : bool
return $isFoundNode;
}
/**
- * @template T of Node
- * @param array>|class-string $types
- * @return array
+ * @return Return_[]
* @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
*/
- public function findInstancesOfInFunctionLikeScoped($functionLike, $types) : array
+ public function findReturnsScoped($functionLike) : array
{
+ $returns = [];
+ $this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $functionLike->stmts, function (Node $subNode) use(&$returns) : ?int {
+ if ($subNode instanceof Class_ || $subNode instanceof FunctionLike) {
+ return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
+ }
+ if ($subNode instanceof Yield_ || $subNode instanceof YieldFrom) {
+ $returns = [];
+ return NodeTraverser::STOP_TRAVERSAL;
+ }
+ if ($subNode instanceof Return_) {
+ $returns[] = $subNode;
+ }
+ return null;
+ });
+ Assert::allIsInstanceOf($returns, Return_::class);
+ return $returns;
+ }
+ /**
+ * @api to be used
+ *
+ * @template T of Node
+ * @param Node[] $nodes
+ * @param class-string|array> $types
+ * @return T[]
+ */
+ public function findInstancesOfScoped(array $nodes, $types) : array
+ {
+ // here verify only pass single nodes as FunctionLike
+ if (\count($nodes) === 1 && $nodes[0] instanceof FunctionLike) {
+ $nodes = (array) $nodes[0]->getStmts();
+ }
if (\is_string($types)) {
$types = [$types];
}
/** @var T[] $foundNodes */
$foundNodes = [];
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $functionLike->stmts, static function (Node $subNode) use($types, &$foundNodes) : ?int {
- if ($subNode instanceof Class_ || $subNode instanceof Function_ || $subNode instanceof Closure) {
+ $this->simpleCallableNodeTraverser->traverseNodesWithCallable($nodes, static function (Node $subNode) use($types, &$foundNodes) : ?int {
+ if ($subNode instanceof Class_ || $subNode instanceof FunctionLike) {
return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
}
foreach ($types as $type) {
@@ -208,6 +240,16 @@ public function findInstancesOfInFunctionLikeScoped($functionLike, $types) : arr
});
return $foundNodes;
}
+ /**
+ * @template T of Node
+ * @param array>|class-string $types
+ * @return array
+ * @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
+ */
+ public function findInstancesOfInFunctionLikeScoped($functionLike, $types) : array
+ {
+ return $this->findInstancesOfScoped([$functionLike], $types);
+ }
/**
* @param callable(Node $node): bool $filter
* @param \PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Function_|\PhpParser\Node\Expr\Closure $functionLike
@@ -221,12 +263,12 @@ public function findFirstInFunctionLikeScoped($functionLike, callable $filter) :
if (!$foundNode instanceof Node) {
return null;
}
- if (!$this->hasInstancesOf($functionLike->stmts, [Class_::class, Function_::class, Closure::class])) {
+ if (!$this->hasInstancesOf($functionLike->stmts, [Class_::class, FunctionLike::class])) {
return $foundNode;
}
$scopedNode = null;
$this->simpleCallableNodeTraverser->traverseNodesWithCallable($functionLike->stmts, function (Node $subNode) use(&$scopedNode, $foundNode, $filter) : ?int {
- if ($subNode instanceof Class_ || $subNode instanceof Function_ || $subNode instanceof Closure) {
+ if ($subNode instanceof Class_ || $subNode instanceof FunctionLike) {
if ($foundNode instanceof $subNode && $subNode === $foundNode) {
$scopedNode = $subNode;
return NodeTraverser::STOP_TRAVERSAL;
diff --git a/vendor/rector/rector/src/PhpParser/Node/NodeFactory.php b/vendor/rector/rector/src/PhpParser/Node/NodeFactory.php
index efe1af145..e6b5bbaab 100644
--- a/vendor/rector/rector/src/PhpParser/Node/NodeFactory.php
+++ b/vendor/rector/rector/src/PhpParser/Node/NodeFactory.php
@@ -258,18 +258,6 @@ public function createSelfFetchConstant(string $constantName) : ClassConstFetch
$name = new Name(ObjectReference::SELF);
return new ClassConstFetch($name, $constantName);
}
- /**
- * @param Param[] $params
- * @return Arg[]
- */
- public function createArgsFromParams(array $params) : array
- {
- $args = [];
- foreach ($params as $param) {
- $args[] = new Arg($param->var);
- }
- return $args;
- }
public function createNull() : ConstFetch
{
return new ConstFetch(new Name('null'));
@@ -318,15 +306,24 @@ public function createReturnBooleanAnd(array $newNodes) : ?Expr
}
return $this->createBooleanAndFromNodes($newNodes);
}
- public function createReprintedExpr(Expr $expr) : Expr
+ /**
+ * Setting all child nodes to null is needed to avoid reprint of invalid tokens
+ * @see https://github.com/rectorphp/rector/issues/8712
+ *
+ * @template TNode as Node
+ *
+ * @param TNode $node
+ * @return TNode
+ */
+ public function createReprintedNode(Node $node) : Node
{
- // reset original node, to allow the printer to re-use the expr
- $expr->setAttribute(AttributeKey::ORIGINAL_NODE, null);
- $this->simpleCallableNodeTraverser->traverseNodesWithCallable($expr, static function (Node $node) : Node {
- $node->setAttribute(AttributeKey::ORIGINAL_NODE, null);
- return $node;
+ // reset original node, to allow the printer to re-use the node
+ $node->setAttribute(AttributeKey::ORIGINAL_NODE, null);
+ $this->simpleCallableNodeTraverser->traverseNodesWithCallable($node, static function (Node $subNode) : Node {
+ $subNode->setAttribute(AttributeKey::ORIGINAL_NODE, null);
+ return $subNode;
});
- return $expr;
+ return $node;
}
/**
* @param string|int|null $key
diff --git a/vendor/rector/rector/src/PhpParser/Node/Value/ValueResolver.php b/vendor/rector/rector/src/PhpParser/Node/Value/ValueResolver.php
index 44d63ac63..7b6c07ef9 100644
--- a/vendor/rector/rector/src/PhpParser/Node/Value/ValueResolver.php
+++ b/vendor/rector/rector/src/PhpParser/Node/Value/ValueResolver.php
@@ -11,8 +11,6 @@
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Name;
-use PhpParser\Node\Scalar\MagicConst\Dir;
-use PhpParser\Node\Scalar\MagicConst\File;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Reflection\ReflectionProvider;
@@ -26,7 +24,6 @@
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\NodeTypeResolver;
-use Rector\Provider\CurrentFileProvider;
use Rector\Reflection\ClassReflectionAnalyzer;
use Rector\Reflection\ReflectionResolver;
use TypeError;
@@ -56,11 +53,6 @@ final class ValueResolver
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
- /**
- * @readonly
- * @var \Rector\Provider\CurrentFileProvider
- */
- private $currentFileProvider;
/**
* @readonly
* @var \Rector\Reflection\ReflectionResolver
@@ -75,13 +67,12 @@ final class ValueResolver
* @var \PhpParser\ConstExprEvaluator|null
*/
private $constExprEvaluator;
- public function __construct(NodeNameResolver $nodeNameResolver, NodeTypeResolver $nodeTypeResolver, ConstFetchAnalyzer $constFetchAnalyzer, ReflectionProvider $reflectionProvider, CurrentFileProvider $currentFileProvider, ReflectionResolver $reflectionResolver, ClassReflectionAnalyzer $classReflectionAnalyzer)
+ public function __construct(NodeNameResolver $nodeNameResolver, NodeTypeResolver $nodeTypeResolver, ConstFetchAnalyzer $constFetchAnalyzer, ReflectionProvider $reflectionProvider, ReflectionResolver $reflectionResolver, ClassReflectionAnalyzer $classReflectionAnalyzer)
{
$this->nodeNameResolver = $nodeNameResolver;
$this->nodeTypeResolver = $nodeTypeResolver;
$this->constFetchAnalyzer = $constFetchAnalyzer;
$this->reflectionProvider = $reflectionProvider;
- $this->currentFileProvider = $currentFileProvider;
$this->reflectionResolver = $reflectionResolver;
$this->classReflectionAnalyzer = $classReflectionAnalyzer;
}
@@ -196,14 +187,6 @@ private function getConstExprEvaluator() : ConstExprEvaluator
return $this->constExprEvaluator;
}
$this->constExprEvaluator = new ConstExprEvaluator(function (Expr $expr) {
- if ($expr instanceof Dir) {
- // __DIR__
- return $this->resolveDirConstant();
- }
- if ($expr instanceof File) {
- // __FILE__
- return $this->resolveFileConstant($expr);
- }
// resolve "SomeClass::SOME_CONST"
if ($expr instanceof ClassConstFetch && $expr->class instanceof Name) {
return $this->resolveClassConstFetch($expr);
@@ -237,22 +220,6 @@ private function extractConstantArrayTypeValue(ConstantArrayType $constantArrayT
}
return $values;
}
- private function resolveDirConstant() : string
- {
- $file = $this->currentFileProvider->getFile();
- if (!$file instanceof \Rector\ValueObject\Application\File) {
- throw new ShouldNotHappenException();
- }
- return \dirname($file->getFilePath());
- }
- private function resolveFileConstant(File $file) : string
- {
- $file = $this->currentFileProvider->getFile();
- if (!$file instanceof \Rector\ValueObject\Application\File) {
- throw new ShouldNotHappenException();
- }
- return $file->getFilePath();
- }
/**
* @return string|mixed
*/
@@ -289,8 +256,8 @@ private function resolveClassConstFetch(ClassConstFetch $classConstFetch)
// fallback to constant reference itself, to avoid fatal error
return $classConstantReference;
}
- $constantReflection = $classReflection->getConstant($constant);
- $valueExpr = $constantReflection->getValueExpr();
+ $classConstantReflection = $classReflection->getConstant($constant);
+ $valueExpr = $classConstantReflection->getValueExpr();
if ($valueExpr instanceof ConstFetch) {
return $this->resolveExprValueForConst($valueExpr);
}
diff --git a/vendor/rector/rector/src/PhpParser/NodeFinder/LocalMethodCallFinder.php b/vendor/rector/rector/src/PhpParser/NodeFinder/LocalMethodCallFinder.php
index f0ca2274f..3cc8229e8 100644
--- a/vendor/rector/rector/src/PhpParser/NodeFinder/LocalMethodCallFinder.php
+++ b/vendor/rector/rector/src/PhpParser/NodeFinder/LocalMethodCallFinder.php
@@ -5,6 +5,7 @@
use PhpParser\Node;
use PhpParser\Node\Expr\MethodCall;
+use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Type\TypeWithClassName;
@@ -35,7 +36,7 @@ public function __construct(BetterNodeFinder $betterNodeFinder, NodeTypeResolver
$this->nodeNameResolver = $nodeNameResolver;
}
/**
- * @return MethodCall[]
+ * @return MethodCall[]|StaticCall[]
*/
public function match(Class_ $class, ClassMethod $classMethod) : array
{
@@ -44,15 +45,15 @@ public function match(Class_ $class, ClassMethod $classMethod) : array
return [];
}
$classMethodName = $this->nodeNameResolver->getName($classMethod);
- /** @var MethodCall[] $matchingMethodCalls */
+ /** @var MethodCall[]|StaticCall[] $matchingMethodCalls */
$matchingMethodCalls = $this->betterNodeFinder->find($class->getMethods(), function (Node $subNode) use($className, $classMethodName) : bool {
- if (!$subNode instanceof MethodCall) {
+ if (!$subNode instanceof MethodCall && !$subNode instanceof StaticCall) {
return \false;
}
if (!$this->nodeNameResolver->isName($subNode->name, $classMethodName)) {
return \false;
}
- $callerType = $this->nodeTypeResolver->getType($subNode->var);
+ $callerType = $subNode instanceof MethodCall ? $this->nodeTypeResolver->getType($subNode->var) : $this->nodeTypeResolver->getType($subNode->class);
if (!$callerType instanceof TypeWithClassName) {
return \false;
}
diff --git a/vendor/rector/rector/src/PhpParser/NodeTraverser/FileWithoutNamespaceNodeTraverser.php b/vendor/rector/rector/src/PhpParser/NodeTraverser/FileWithoutNamespaceNodeTraverser.php
index d59c48926..649256121 100644
--- a/vendor/rector/rector/src/PhpParser/NodeTraverser/FileWithoutNamespaceNodeTraverser.php
+++ b/vendor/rector/rector/src/PhpParser/NodeTraverser/FileWithoutNamespaceNodeTraverser.php
@@ -10,7 +10,7 @@
final class FileWithoutNamespaceNodeTraverser extends NodeTraverser
{
/**
- * @template TNode as Node
+ * @template TNode as Node\Stmt
*
* @param TNode[] $nodes
* @return TNode[]|FileWithoutNamespace[]
diff --git a/vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php b/vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php
index cdcafbc3d..cc55e4ed9 100644
--- a/vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php
+++ b/vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php
@@ -4,7 +4,9 @@
namespace Rector\PhpParser\NodeTraverser;
use PhpParser\Node;
+use PhpParser\Node\Stmt;
use PhpParser\NodeTraverser;
+use PhpParser\NodeVisitor;
use Rector\Contract\Rector\RectorInterface;
use Rector\VersionBonding\PhpVersionedFilter;
final class RectorNodeTraverser extends NodeTraverser
@@ -22,6 +24,10 @@ final class RectorNodeTraverser extends NodeTraverser
* @var bool
*/
private $areNodeVisitorsPrepared = \false;
+ /**
+ * @var array,RectorInterface[]>
+ */
+ private $visitorsPerNodeClass = [];
/**
* @param RectorInterface[] $rectors
*/
@@ -32,8 +38,8 @@ public function __construct(array $rectors, PhpVersionedFilter $phpVersionedFilt
parent::__construct();
}
/**
- * @param Node[] $nodes
- * @return Node[]
+ * @param Stmt[] $nodes
+ * @return Stmt[]
*/
public function traverse(array $nodes) : array
{
@@ -48,8 +54,32 @@ public function refreshPhpRectors(array $rectors) : void
{
$this->rectors = $rectors;
$this->visitors = [];
+ $this->visitorsPerNodeClass = [];
$this->areNodeVisitorsPrepared = \false;
}
+ /**
+ * We return the list of visitors (rector rules) that can be applied to each node class
+ * This list is cached so that we don't need to continually check if a rule can be applied to a node
+ *
+ * @return NodeVisitor[]
+ */
+ public function getVisitorsForNode(Node $node) : array
+ {
+ $nodeClass = \get_class($node);
+ if (!isset($this->visitorsPerNodeClass[$nodeClass])) {
+ $this->visitorsPerNodeClass[$nodeClass] = [];
+ foreach ($this->visitors as $visitor) {
+ \assert($visitor instanceof RectorInterface);
+ foreach ($visitor->getNodeTypes() as $nodeType) {
+ if (\is_a($nodeClass, $nodeType, \true)) {
+ $this->visitorsPerNodeClass[$nodeClass][] = $visitor;
+ continue 2;
+ }
+ }
+ }
+ }
+ return $this->visitorsPerNodeClass[$nodeClass];
+ }
/**
* This must happen after $this->configuration is set after ProcessCommand::execute() is run,
* otherwise we get default false positives.
diff --git a/vendor/rector/rector/src/PhpParser/Parser/InlineCodeParser.php b/vendor/rector/rector/src/PhpParser/Parser/InlineCodeParser.php
index e127a3a4f..a94028580 100644
--- a/vendor/rector/rector/src/PhpParser/Parser/InlineCodeParser.php
+++ b/vendor/rector/rector/src/PhpParser/Parser/InlineCodeParser.php
@@ -3,8 +3,8 @@
declare (strict_types=1);
namespace Rector\PhpParser\Parser;
-use RectorPrefix202405\Nette\Utils\FileSystem;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\BinaryOp\Concat;
use PhpParser\Node\Scalar\Encapsed;
@@ -71,20 +71,6 @@ public function __construct(BetterStandardPrinter $betterStandardPrinter, \Recto
$this->simplePhpParser = $simplePhpParser;
$this->valueResolver = $valueResolver;
}
- /**
- * @return Stmt[]
- *
- * @api
- * @deprecated use parseFile() or parseString() instead
- */
- public function parse(string $content) : array
- {
- // to cover files too
- if (\is_file($content)) {
- $content = FileSystem::read($content);
- }
- return $this->parseCode($content);
- }
/**
* @api downgrade
*
diff --git a/vendor/rector/rector/src/PhpParser/Parser/ParserErrors.php b/vendor/rector/rector/src/PhpParser/Parser/ParserErrors.php
new file mode 100644
index 000000000..47387ea8b
--- /dev/null
+++ b/vendor/rector/rector/src/PhpParser/Parser/ParserErrors.php
@@ -0,0 +1,32 @@
+message = $parserErrorsException->getMessage();
+ $this->line = $parserErrorsException->getAttributes()['startLine'] ?? $parserErrorsException->getLine();
+ }
+ public function getMessage() : string
+ {
+ return $this->message;
+ }
+ public function getLine() : int
+ {
+ return $this->line;
+ }
+}
diff --git a/vendor/rector/rector/src/PhpParser/Parser/SimplePhpParser.php b/vendor/rector/rector/src/PhpParser/Parser/SimplePhpParser.php
index 057933a39..2f1624273 100644
--- a/vendor/rector/rector/src/PhpParser/Parser/SimplePhpParser.php
+++ b/vendor/rector/rector/src/PhpParser/Parser/SimplePhpParser.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\PhpParser\Parser;
-use RectorPrefix202405\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\FileSystem;
use PhpParser\Node;
use PhpParser\Node\Stmt\Expression;
use PhpParser\NodeTraverser;
diff --git a/vendor/rector/rector/src/PhpParser/Printer/BetterStandardPrinter.php b/vendor/rector/rector/src/PhpParser/Printer/BetterStandardPrinter.php
index 29d7a945b..586a8cc47 100644
--- a/vendor/rector/rector/src/PhpParser/Printer/BetterStandardPrinter.php
+++ b/vendor/rector/rector/src/PhpParser/Printer/BetterStandardPrinter.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\PhpParser\Printer;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Comment;
use PhpParser\Node;
use PhpParser\Node\Arg;
@@ -143,7 +143,7 @@ protected function pExpr_ArrowFunction(ArrowFunction $arrowFunction) : string
$commentText = $key > 0 ? $indent . $comment->getText() : $comment->getText();
$text .= $commentText . "\n";
}
- return $this->pAttrGroups($arrowFunction->attrGroups, \true) . ($arrowFunction->static ? 'static ' : '') . 'fn' . ($arrowFunction->byRef ? '&' : '') . '(' . $this->pCommaSeparated($arrowFunction->params) . ')' . ($arrowFunction->returnType !== null ? ': ' . $this->p($arrowFunction->returnType) : '') . ' =>' . $text . $indent . $this->p($arrowFunction->expr);
+ return $this->pAttrGroups($arrowFunction->attrGroups, \true) . ($arrowFunction->static ? 'static ' : '') . 'fn' . ($arrowFunction->byRef ? '&' : '') . '(' . $this->pCommaSeparated($arrowFunction->params) . ')' . ($arrowFunction->returnType instanceof Node ? ': ' . $this->p($arrowFunction->returnType) : '') . ' =>' . $text . $indent . $this->p($arrowFunction->expr);
}
/**
* This allows to use both spaces and tabs vs. original space-only
@@ -407,7 +407,7 @@ private function resolveNewStmts(array $stmts) : array
{
$stmts = \array_values($stmts);
if (\count($stmts) === 1 && $stmts[0] instanceof FileWithoutNamespace) {
- return $stmts[0]->stmts;
+ return \array_values($stmts[0]->stmts);
}
return $stmts;
}
diff --git a/vendor/rector/rector/src/PhpParser/Printer/FormatPerservingPrinter.php b/vendor/rector/rector/src/PhpParser/Printer/FormatPerservingPrinter.php
deleted file mode 100644
index e161385cc..000000000
--- a/vendor/rector/rector/src/PhpParser/Printer/FormatPerservingPrinter.php
+++ /dev/null
@@ -1,44 +0,0 @@
-betterStandardPrinter = $betterStandardPrinter;
- }
- /**
- * @api tests
- *
- * @param Node[] $newStmts
- * @param Node[] $oldStmts
- * @param Node[] $oldTokens
- */
- public function printToFile(string $filePath, array $newStmts, array $oldStmts, array $oldTokens) : string
- {
- $newContent = $this->betterStandardPrinter->printFormatPreserving($newStmts, $oldStmts, $oldTokens);
- $this->dumpFile($filePath, $newContent);
- return $newContent;
- }
- public function printParsedStmstAndTokensToString(File $file) : string
- {
- return $this->betterStandardPrinter->printFormatPreserving($file->getNewStmts(), $file->getOldStmts(), $file->getOldTokens());
- }
- public function dumpFile(string $filePath, string $newContent) : void
- {
- FileSystem::write($filePath, $newContent, null);
- }
-}
diff --git a/vendor/rector/rector/src/PostRector/Application/PostFileProcessor.php b/vendor/rector/rector/src/PostRector/Application/PostFileProcessor.php
index 2b45ebfb5..bb3f6d76a 100644
--- a/vendor/rector/rector/src/PostRector/Application/PostFileProcessor.php
+++ b/vendor/rector/rector/src/PostRector/Application/PostFileProcessor.php
@@ -3,55 +3,87 @@
declare (strict_types=1);
namespace Rector\PostRector\Application;
-use PhpParser\Node;
+use PhpParser\Node\Stmt;
use PhpParser\NodeTraverser;
+use Rector\Configuration\Option;
+use Rector\Configuration\Parameter\SimpleParameterProvider;
+use Rector\Configuration\RenamedClassesDataCollector;
+use Rector\Contract\DependencyInjection\ResetableInterface;
use Rector\PostRector\Contract\Rector\PostRectorInterface;
use Rector\PostRector\Rector\ClassRenamingPostRector;
+use Rector\PostRector\Rector\DocblockNameImportingPostRector;
use Rector\PostRector\Rector\NameImportingPostRector;
use Rector\PostRector\Rector\UnusedImportRemovingPostRector;
use Rector\PostRector\Rector\UseAddingPostRector;
use Rector\Renaming\Rector\Name\RenameClassRector;
use Rector\Skipper\Skipper\Skipper;
-final class PostFileProcessor
+use Rector\ValueObject\Application\File;
+final class PostFileProcessor implements ResetableInterface
{
/**
* @readonly
* @var \Rector\Skipper\Skipper\Skipper
*/
private $skipper;
+ /**
+ * @readonly
+ * @var \Rector\PostRector\Rector\UseAddingPostRector
+ */
+ private $useAddingPostRector;
+ /**
+ * @readonly
+ * @var \Rector\PostRector\Rector\NameImportingPostRector
+ */
+ private $nameImportingPostRector;
+ /**
+ * @readonly
+ * @var \Rector\PostRector\Rector\ClassRenamingPostRector
+ */
+ private $classRenamingPostRector;
+ /**
+ * @readonly
+ * @var \Rector\PostRector\Rector\DocblockNameImportingPostRector
+ */
+ private $docblockNameImportingPostRector;
+ /**
+ * @readonly
+ * @var \Rector\PostRector\Rector\UnusedImportRemovingPostRector
+ */
+ private $unusedImportRemovingPostRector;
+ /**
+ * @readonly
+ * @var \Rector\Configuration\RenamedClassesDataCollector
+ */
+ private $renamedClassesDataCollector;
/**
* @var PostRectorInterface[]
*/
private $postRectors = [];
- public function __construct(
- Skipper $skipper,
- // set order here
- UseAddingPostRector $useAddingPostRector,
- NameImportingPostRector $nameImportingPostRector,
- ClassRenamingPostRector $classRenamingPostRector,
- UnusedImportRemovingPostRector $unusedImportRemovingPostRector
- )
+ public function __construct(Skipper $skipper, UseAddingPostRector $useAddingPostRector, NameImportingPostRector $nameImportingPostRector, ClassRenamingPostRector $classRenamingPostRector, DocblockNameImportingPostRector $docblockNameImportingPostRector, UnusedImportRemovingPostRector $unusedImportRemovingPostRector, RenamedClassesDataCollector $renamedClassesDataCollector)
{
$this->skipper = $skipper;
- $this->postRectors = [
- // priority: 650
- $classRenamingPostRector,
- // priority: 600
- $nameImportingPostRector,
- // priority: 500
- $useAddingPostRector,
- // priority: 100
- $unusedImportRemovingPostRector,
- ];
+ $this->useAddingPostRector = $useAddingPostRector;
+ $this->nameImportingPostRector = $nameImportingPostRector;
+ $this->classRenamingPostRector = $classRenamingPostRector;
+ $this->docblockNameImportingPostRector = $docblockNameImportingPostRector;
+ $this->unusedImportRemovingPostRector = $unusedImportRemovingPostRector;
+ $this->renamedClassesDataCollector = $renamedClassesDataCollector;
+ }
+ public function reset() : void
+ {
+ $this->postRectors = [];
}
/**
- * @param Node[] $stmts
- * @return Node[]
+ * @param Stmt[] $stmts
+ * @return Stmt[]
*/
- public function traverse(array $stmts, string $filePath) : array
+ public function traverse(array $stmts, File $file) : array
{
- foreach ($this->postRectors as $postRector) {
- if ($this->shouldSkipPostRector($postRector, $filePath)) {
+ foreach ($this->getPostRectors() as $postRector) {
+ // file must be set early into PostRector class to ensure its usage
+ // always match on skipping process
+ $postRector->setFile($file);
+ if ($this->shouldSkipPostRector($postRector, $file->getFilePath(), $stmts)) {
continue;
}
$nodeTraverser = new NodeTraverser();
@@ -60,12 +92,51 @@ public function traverse(array $stmts, string $filePath) : array
}
return $stmts;
}
- private function shouldSkipPostRector(PostRectorInterface $postRector, string $filePath) : bool
+ /**
+ * @param Stmt[] $stmts
+ */
+ private function shouldSkipPostRector(PostRectorInterface $postRector, string $filePath, array $stmts) : bool
{
if ($this->skipper->shouldSkipElementAndFilePath($postRector, $filePath)) {
return \true;
}
// skip renaming if rename class rector is skipped
- return $postRector instanceof ClassRenamingPostRector && $this->skipper->shouldSkipElementAndFilePath(RenameClassRector::class, $filePath);
+ if ($postRector instanceof ClassRenamingPostRector && $this->skipper->shouldSkipElementAndFilePath(RenameClassRector::class, $filePath)) {
+ return \true;
+ }
+ return !$postRector->shouldTraverse($stmts);
+ }
+ /**
+ * Load on the fly, to allow test reset with different configuration
+ * @return PostRectorInterface[]
+ */
+ private function getPostRectors() : array
+ {
+ if ($this->postRectors !== []) {
+ return $this->postRectors;
+ }
+ $isRenamedClassEnabled = $this->renamedClassesDataCollector->getOldToNewClasses() !== [];
+ $isNameImportingEnabled = SimpleParameterProvider::provideBoolParameter(Option::AUTO_IMPORT_NAMES);
+ $isDocblockNameImportingEnabled = SimpleParameterProvider::provideBoolParameter(Option::AUTO_IMPORT_DOC_BLOCK_NAMES);
+ $isRemovingUnusedImportsEnabled = SimpleParameterProvider::provideBoolParameter(Option::REMOVE_UNUSED_IMPORTS);
+ $postRectors = [];
+ // sorted by priority, to keep removed imports in order
+ if ($isRenamedClassEnabled) {
+ $postRectors[] = $this->classRenamingPostRector;
+ }
+ // import names
+ if ($isNameImportingEnabled) {
+ $postRectors[] = $this->nameImportingPostRector;
+ }
+ // import docblocks
+ if ($isNameImportingEnabled && $isDocblockNameImportingEnabled) {
+ $postRectors[] = $this->docblockNameImportingPostRector;
+ }
+ $postRectors[] = $this->useAddingPostRector;
+ if ($isRemovingUnusedImportsEnabled) {
+ $postRectors[] = $this->unusedImportRemovingPostRector;
+ }
+ $this->postRectors = $postRectors;
+ return $this->postRectors;
}
}
diff --git a/vendor/rector/rector/src/PostRector/Collector/UseNodesToAddCollector.php b/vendor/rector/rector/src/PostRector/Collector/UseNodesToAddCollector.php
index 449611c81..aed09556f 100644
--- a/vendor/rector/rector/src/PostRector/Collector/UseNodesToAddCollector.php
+++ b/vendor/rector/rector/src/PostRector/Collector/UseNodesToAddCollector.php
@@ -3,11 +3,10 @@
declare (strict_types=1);
namespace Rector\PostRector\Collector;
-use PhpParser\Node;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name\FullyQualified;
+use Rector\Application\Provider\CurrentFileProvider;
use Rector\Naming\Naming\UseImportsResolver;
-use Rector\Provider\CurrentFileProvider;
use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use Rector\ValueObject\Application\File;
@@ -15,7 +14,7 @@ final class UseNodesToAddCollector
{
/**
* @readonly
- * @var \Rector\Provider\CurrentFileProvider
+ * @var \Rector\Application\Provider\CurrentFileProvider
*/
private $currentFileProvider;
/**
@@ -61,7 +60,7 @@ public function addFunctionUseImport(FullyQualifiedObjectType $fullyQualifiedObj
/**
* @return AliasedObjectType[]|FullyQualifiedObjectType[]
*/
- public function getUseImportTypesByNode(File $file, Node $node) : array
+ public function getUseImportTypesByNode(File $file) : array
{
$filePath = $file->getFilePath();
$objectTypes = $this->useImportTypesInFilePath[$filePath] ?? [];
@@ -80,7 +79,7 @@ public function getUseImportTypesByNode(File $file, Node $node) : array
}
public function hasImport(File $file, FullyQualified $fullyQualified, FullyQualifiedObjectType $fullyQualifiedObjectType) : bool
{
- $useImports = $this->getUseImportTypesByNode($file, $fullyQualified);
+ $useImports = $this->getUseImportTypesByNode($file);
foreach ($useImports as $useImport) {
if ($useImport->equals($fullyQualifiedObjectType)) {
return \true;
diff --git a/vendor/rector/rector/src/PostRector/Contract/Rector/PostRectorInterface.php b/vendor/rector/rector/src/PostRector/Contract/Rector/PostRectorInterface.php
index e54878f4e..d21402569 100644
--- a/vendor/rector/rector/src/PostRector/Contract/Rector/PostRectorInterface.php
+++ b/vendor/rector/rector/src/PostRector/Contract/Rector/PostRectorInterface.php
@@ -3,10 +3,17 @@
declare (strict_types=1);
namespace Rector\PostRector\Contract\Rector;
+use PhpParser\Node\Stmt;
use PhpParser\NodeVisitor;
+use Rector\ValueObject\Application\File;
/**
* @internal
*/
interface PostRectorInterface extends NodeVisitor
{
+ /**
+ * @param Stmt[] $stmts
+ */
+ public function shouldTraverse(array $stmts) : bool;
+ public function setFile(File $file) : void;
}
diff --git a/vendor/rector/rector/src/PostRector/Guard/AddUseStatementGuard.php b/vendor/rector/rector/src/PostRector/Guard/AddUseStatementGuard.php
new file mode 100644
index 000000000..b8a8aa41d
--- /dev/null
+++ b/vendor/rector/rector/src/PostRector/Guard/AddUseStatementGuard.php
@@ -0,0 +1,47 @@
+
+ */
+ private $shouldTraverseOnFiles = [];
+ public function __construct(BetterNodeFinder $betterNodeFinder)
+ {
+ $this->betterNodeFinder = $betterNodeFinder;
+ }
+ /**
+ * @param Stmt[] $stmts
+ */
+ public function shouldTraverse(array $stmts, string $filePath) : bool
+ {
+ if (isset($this->shouldTraverseOnFiles[$filePath])) {
+ return $this->shouldTraverseOnFiles[$filePath];
+ }
+ $totalNamespaces = 0;
+ // just loop the first level stmts to locate namespace to improve performance
+ // as namespace is always on first level
+ foreach ($stmts as $stmt) {
+ if ($stmt instanceof Namespace_) {
+ ++$totalNamespaces;
+ }
+ // skip if 2 namespaces are present
+ if ($totalNamespaces === 2) {
+ return $this->shouldTraverseOnFiles[$filePath] = \false;
+ }
+ }
+ return $this->shouldTraverseOnFiles[$filePath] = !$this->betterNodeFinder->hasInstancesOf($stmts, [InlineHTML::class]);
+ }
+}
diff --git a/vendor/rector/rector/src/PostRector/Rector/AbstractPostRector.php b/vendor/rector/rector/src/PostRector/Rector/AbstractPostRector.php
index 00d95112f..03790cf26 100644
--- a/vendor/rector/rector/src/PostRector/Rector/AbstractPostRector.php
+++ b/vendor/rector/rector/src/PostRector/Rector/AbstractPostRector.php
@@ -3,8 +3,31 @@
declare (strict_types=1);
namespace Rector\PostRector\Rector;
+use PhpParser\Node\Stmt;
use PhpParser\NodeVisitorAbstract;
use Rector\PostRector\Contract\Rector\PostRectorInterface;
+use Rector\ValueObject\Application\File;
+use RectorPrefix202410\Webmozart\Assert\Assert;
abstract class AbstractPostRector extends NodeVisitorAbstract implements PostRectorInterface
{
+ /**
+ * @var \Rector\ValueObject\Application\File|null
+ */
+ private $file = null;
+ /**
+ * @param Stmt[] $stmts
+ */
+ public function shouldTraverse(array $stmts) : bool
+ {
+ return \true;
+ }
+ public function setFile(File $file) : void
+ {
+ $this->file = $file;
+ }
+ public function getFile() : File
+ {
+ Assert::isInstanceOf($this->file, File::class);
+ return $this->file;
+ }
}
diff --git a/vendor/rector/rector/src/PostRector/Rector/ClassRenamingPostRector.php b/vendor/rector/rector/src/PostRector/Rector/ClassRenamingPostRector.php
index 07ad855c7..180b246dc 100644
--- a/vendor/rector/rector/src/PostRector/Rector/ClassRenamingPostRector.php
+++ b/vendor/rector/rector/src/PostRector/Rector/ClassRenamingPostRector.php
@@ -43,6 +43,10 @@ final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPo
* @var \Rector\PhpParser\Node\CustomNode\FileWithoutNamespace|\PhpParser\Node\Stmt\Namespace_|null
*/
private $rootNode = null;
+ /**
+ * @var array
+ */
+ private $oldToNewClasses = [];
public function __construct(ClassRenamer $classRenamer, RenamedClassesDataCollector $renamedClassesDataCollector, UseImportsRemover $useImportsRemover, RenamedNameCollector $renamedNameCollector)
{
$this->classRenamer = $classRenamer;
@@ -57,13 +61,7 @@ public function __construct(ClassRenamer $classRenamer, RenamedClassesDataCollec
public function beforeTraverse(array $nodes) : array
{
// ensure reset early on every run to avoid reuse existing value
- $this->rootNode = null;
- foreach ($nodes as $node) {
- if ($node instanceof FileWithoutNamespace || $node instanceof Namespace_) {
- $this->rootNode = $node;
- break;
- }
- }
+ $this->rootNode = $this->resolveRootNode($nodes);
return $nodes;
}
public function enterNode(Node $node) : ?Node
@@ -72,17 +70,12 @@ public function enterNode(Node $node) : ?Node
if (!$node instanceof Name) {
return null;
}
- $oldToNewClasses = $this->renamedClassesDataCollector->getOldToNewClasses();
- if ($oldToNewClasses === []) {
- return null;
- }
/** @var Scope|null $scope */
$scope = $node->getAttribute(AttributeKey::SCOPE);
- $result = null;
if ($node instanceof FullyQualified) {
- $result = $this->classRenamer->renameNode($node, $oldToNewClasses, $scope);
+ $result = $this->classRenamer->renameNode($node, $this->oldToNewClasses, $scope);
} else {
- $result = $this->resolveResultWithPhpAttributeName($node, $oldToNewClasses, $scope);
+ $result = $this->resolveResultWithPhpAttributeName($node, $scope);
}
if (!SimpleParameterProvider::provideBoolParameter(Option::AUTO_IMPORT_NAMES)) {
return $result;
@@ -103,14 +96,29 @@ public function afterTraverse(array $nodes) : array
$this->renamedNameCollector->reset();
return $nodes;
}
- /**
- * @param array $oldToNewClasses
- */
- private function resolveResultWithPhpAttributeName(Name $name, array $oldToNewClasses, ?Scope $scope) : ?FullyQualified
+ public function shouldTraverse(array $stmts) : bool
+ {
+ $this->oldToNewClasses = $this->renamedClassesDataCollector->getOldToNewClasses();
+ return $this->oldToNewClasses !== [];
+ }
+ private function resolveResultWithPhpAttributeName(Name $name, ?Scope $scope) : ?FullyQualified
{
$phpAttributeName = $name->getAttribute(AttributeKey::PHP_ATTRIBUTE_NAME);
if (\is_string($phpAttributeName)) {
- return $this->classRenamer->renameNode(new FullyQualified($phpAttributeName, $name->getAttributes()), $oldToNewClasses, $scope);
+ return $this->classRenamer->renameNode(new FullyQualified($phpAttributeName, $name->getAttributes()), $this->oldToNewClasses, $scope);
+ }
+ return null;
+ }
+ /**
+ * @param Stmt[] $nodes
+ * @return \Rector\PhpParser\Node\CustomNode\FileWithoutNamespace|\PhpParser\Node\Stmt\Namespace_|null
+ */
+ private function resolveRootNode(array $nodes)
+ {
+ foreach ($nodes as $node) {
+ if ($node instanceof FileWithoutNamespace || $node instanceof Namespace_) {
+ return $node;
+ }
}
return null;
}
diff --git a/vendor/rector/rector/src/PostRector/Rector/DocblockNameImportingPostRector.php b/vendor/rector/rector/src/PostRector/Rector/DocblockNameImportingPostRector.php
new file mode 100644
index 000000000..127139bb0
--- /dev/null
+++ b/vendor/rector/rector/src/PostRector/Rector/DocblockNameImportingPostRector.php
@@ -0,0 +1,69 @@
+docBlockNameImporter = $docBlockNameImporter;
+ $this->phpDocInfoFactory = $phpDocInfoFactory;
+ $this->docBlockUpdater = $docBlockUpdater;
+ $this->addUseStatementGuard = $addUseStatementGuard;
+ }
+ /**
+ * @return \PhpParser\Node|int|null
+ */
+ public function enterNode(Node $node)
+ {
+ if (!$node instanceof Stmt && !$node instanceof Param) {
+ return null;
+ }
+ $phpDocInfo = $this->phpDocInfoFactory->createFromNode($node);
+ if (!$phpDocInfo instanceof PhpDocInfo) {
+ return null;
+ }
+ $hasDocChanged = $this->docBlockNameImporter->importNames($phpDocInfo->getPhpDocNode(), $node);
+ if (!$hasDocChanged) {
+ return null;
+ }
+ $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);
+ return $node;
+ }
+ /**
+ * @param Stmt[] $stmts
+ */
+ public function shouldTraverse(array $stmts) : bool
+ {
+ return $this->addUseStatementGuard->shouldTraverse($stmts, $this->getFile()->getFilePath());
+ }
+}
diff --git a/vendor/rector/rector/src/PostRector/Rector/NameImportingPostRector.php b/vendor/rector/rector/src/PostRector/Rector/NameImportingPostRector.php
index 92cb8984e..04ae50586 100644
--- a/vendor/rector/rector/src/PostRector/Rector/NameImportingPostRector.php
+++ b/vendor/rector/rector/src/PostRector/Rector/NameImportingPostRector.php
@@ -4,28 +4,13 @@
namespace Rector\PostRector\Rector;
use PhpParser\Node;
-use PhpParser\Node\Identifier;
-use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
-use PhpParser\Node\Param;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\GroupUse;
-use PhpParser\Node\Stmt\InlineHTML;
-use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\Use_;
-use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
-use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
-use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper;
use Rector\CodingStyle\Node\NameImporter;
-use Rector\Comments\NodeDocBlock\DocBlockUpdater;
-use Rector\Configuration\Option;
-use Rector\Configuration\Parameter\SimpleParameterProvider;
-use Rector\Naming\Naming\AliasNameResolver;
use Rector\Naming\Naming\UseImportsResolver;
-use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockNameImporter;
-use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
-use Rector\Provider\CurrentFileProvider;
-use Rector\ValueObject\Application\File;
+use Rector\PostRector\Guard\AddUseStatementGuard;
final class NameImportingPostRector extends \Rector\PostRector\Rector\AbstractPostRector
{
/**
@@ -33,26 +18,6 @@ final class NameImportingPostRector extends \Rector\PostRector\Rector\AbstractPo
* @var \Rector\CodingStyle\Node\NameImporter
*/
private $nameImporter;
- /**
- * @readonly
- * @var \Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockNameImporter
- */
- private $docBlockNameImporter;
- /**
- * @readonly
- * @var \Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper
- */
- private $classNameImportSkipper;
- /**
- * @readonly
- * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
- */
- private $phpDocInfoFactory;
- /**
- * @readonly
- * @var \Rector\Provider\CurrentFileProvider
- */
- private $currentFileProvider;
/**
* @readonly
* @var \Rector\Naming\Naming\UseImportsResolver
@@ -60,124 +25,39 @@ final class NameImportingPostRector extends \Rector\PostRector\Rector\AbstractPo
private $useImportsResolver;
/**
* @readonly
- * @var \Rector\Naming\Naming\AliasNameResolver
+ * @var \Rector\PostRector\Guard\AddUseStatementGuard
*/
- private $aliasNameResolver;
+ private $addUseStatementGuard;
/**
- * @readonly
- * @var \Rector\Comments\NodeDocBlock\DocBlockUpdater
+ * @var array
*/
- private $docBlockUpdater;
- public function __construct(NameImporter $nameImporter, DocBlockNameImporter $docBlockNameImporter, ClassNameImportSkipper $classNameImportSkipper, PhpDocInfoFactory $phpDocInfoFactory, CurrentFileProvider $currentFileProvider, UseImportsResolver $useImportsResolver, AliasNameResolver $aliasNameResolver, DocBlockUpdater $docBlockUpdater)
+ private $currentUses = [];
+ public function __construct(NameImporter $nameImporter, UseImportsResolver $useImportsResolver, AddUseStatementGuard $addUseStatementGuard)
{
$this->nameImporter = $nameImporter;
- $this->docBlockNameImporter = $docBlockNameImporter;
- $this->classNameImportSkipper = $classNameImportSkipper;
- $this->phpDocInfoFactory = $phpDocInfoFactory;
- $this->currentFileProvider = $currentFileProvider;
$this->useImportsResolver = $useImportsResolver;
- $this->aliasNameResolver = $aliasNameResolver;
- $this->docBlockUpdater = $docBlockUpdater;
+ $this->addUseStatementGuard = $addUseStatementGuard;
}
- public function enterNode(Node $node) : ?Node
+ public function beforeTraverse(array $nodes)
{
- if (!SimpleParameterProvider::provideBoolParameter(Option::AUTO_IMPORT_NAMES)) {
- return null;
- }
- $file = $this->currentFileProvider->getFile();
- if (!$file instanceof File) {
- return null;
- }
- if ($this->shouldSkipFileWithoutNamespace($file)) {
- return null;
- }
- if ($node instanceof FullyQualified) {
- return $this->processNodeName($node, $file);
- }
- if (!$node instanceof Stmt && !$node instanceof Param) {
- return null;
- }
- $shouldImportDocBlocks = SimpleParameterProvider::provideBoolParameter(Option::AUTO_IMPORT_DOC_BLOCK_NAMES);
- if (!$shouldImportDocBlocks) {
- return null;
- }
- $phpDocInfo = $this->phpDocInfoFactory->createFromNode($node);
- if (!$phpDocInfo instanceof PhpDocInfo) {
- return null;
- }
- $hasDocChanged = $this->docBlockNameImporter->importNames($phpDocInfo->getPhpDocNode(), $node);
- if (!$hasDocChanged) {
- return null;
- }
- $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);
- return $node;
- }
- private function shouldSkipFileWithoutNamespace(File $file) : bool
- {
- $firstStmt = \current($file->getNewStmts());
- if (!$firstStmt instanceof FileWithoutNamespace) {
- return \false;
- }
- $currentStmt = \current($firstStmt->stmts);
- if ($currentStmt instanceof InlineHTML || $currentStmt === \false) {
- return \true;
- }
- $oldTokens = $file->getOldTokens();
- $tokenStartPos = $currentStmt->getStartTokenPos();
- return isset($oldTokens[$tokenStartPos][1]) && $oldTokens[$tokenStartPos][1] === '=';
- }
- private function processNodeName(FullyQualified $fullyQualified, File $file) : ?Node
- {
- if ($fullyQualified->isSpecialClassName()) {
- return null;
- }
- $namespaces = \array_filter($file->getNewStmts(), static function (Stmt $stmt) : bool {
- return $stmt instanceof Namespace_;
- });
- if (\count($namespaces) > 1) {
- return null;
- }
- /** @var Use_[]|GroupUse[] $currentUses */
- $currentUses = $this->useImportsResolver->resolve();
- if ($this->classNameImportSkipper->shouldSkipName($fullyQualified, $currentUses)) {
- return null;
- }
- $nameInUse = $this->resolveNameInUse($fullyQualified, $currentUses);
- if ($nameInUse instanceof Name) {
- return $nameInUse;
- }
- return $this->nameImporter->importName($fullyQualified, $file);
+ $this->currentUses = $this->useImportsResolver->resolve();
+ return $nodes;
}
/**
- * @param Use_[]|GroupUse[] $currentUses
+ * @return \PhpParser\Node|int|null
*/
- private function resolveNameInUse(FullyQualified $fullyQualified, array $currentUses) : ?\PhpParser\Node\Name
+ public function enterNode(Node $node)
{
- $aliasName = $this->aliasNameResolver->resolveByName($fullyQualified, $currentUses);
- if (\is_string($aliasName)) {
- return new Name($aliasName);
+ if (!$node instanceof FullyQualified) {
+ return null;
}
- return $this->resolveLongNameInUseName($fullyQualified, $currentUses);
+ return $this->nameImporter->importName($node, $this->getFile(), $this->currentUses);
}
/**
- * @param Use_[]|GroupUse[] $currentUses
+ * @param Stmt[] $stmts
*/
- private function resolveLongNameInUseName(FullyQualified $fullyQualified, array $currentUses) : ?Name
+ public function shouldTraverse(array $stmts) : bool
{
- if (\substr_count($fullyQualified->toCodeString(), '\\') === 1) {
- return null;
- }
- $lastName = $fullyQualified->getLast();
- foreach ($currentUses as $currentUse) {
- foreach ($currentUse->uses as $useUse) {
- if ($useUse->name->getLast() !== $lastName) {
- continue;
- }
- if ($useUse->alias instanceof Identifier && $useUse->alias->toString() !== $lastName) {
- return new Name($lastName);
- }
- }
- }
- return null;
+ return $this->addUseStatementGuard->shouldTraverse($stmts, $this->getFile()->getFilePath());
}
}
diff --git a/vendor/rector/rector/src/PostRector/Rector/UnusedImportRemovingPostRector.php b/vendor/rector/rector/src/PostRector/Rector/UnusedImportRemovingPostRector.php
index a22186419..c63025953 100644
--- a/vendor/rector/rector/src/PostRector/Rector/UnusedImportRemovingPostRector.php
+++ b/vendor/rector/rector/src/PostRector/Rector/UnusedImportRemovingPostRector.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\PostRector\Rector;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Comment;
use PhpParser\Comment\Doc;
use PhpParser\Node;
@@ -15,8 +15,6 @@
use PhpParser\Node\Stmt\UseUse;
use PhpParser\NodeTraverser;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
-use Rector\Configuration\Option;
-use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
@@ -39,13 +37,11 @@ public function __construct(SimpleCallableNodeTraverser $simpleCallableNodeTrave
}
public function enterNode(Node $node) : ?Node
{
- if (!SimpleParameterProvider::provideBoolParameter(Option::REMOVE_UNUSED_IMPORTS)) {
- return null;
- }
if (!$node instanceof Namespace_ && !$node instanceof FileWithoutNamespace) {
return null;
}
$hasChanged = \false;
+ $namespaceName = $node instanceof Namespace_ && $node->name instanceof Name ? $node->name : null;
$names = $this->resolveUsedPhpAndDocNames($node);
foreach ($node->stmts as $key => $namespaceStmt) {
if (!$namespaceStmt instanceof Use_) {
@@ -57,7 +53,7 @@ public function enterNode(Node $node) : ?Node
continue;
}
$useUse = $namespaceStmt->uses[0];
- if ($this->isUseImportUsed($useUse, $names)) {
+ if ($this->isUseImportUsed($useUse, $names, $namespaceName)) {
continue;
}
unset($node->stmts[$key]);
@@ -83,14 +79,15 @@ private function findNonUseImportNames($namespace) : array
if (!$node instanceof Name) {
return null;
}
- $names[] = $node->toString();
if ($node instanceof FullyQualified) {
$originalName = $node->getAttribute(AttributeKey::ORIGINAL_NAME);
if ($originalName instanceof Name) {
- // collect original Name as well to cover namespaced used
+ // collect original Name as cover namespaced used
$names[] = $originalName->toString();
+ return $node;
}
}
+ $names[] = $node->toString();
return $node;
});
return $names;
@@ -142,16 +139,12 @@ private function resolveUsedPhpAndDocNames($namespace) : array
$names = \array_merge($phpNames, $docBlockNames);
return \array_unique($names);
}
- private function resolveAliasName(UseUse $useUse) : ?string
- {
- return $useUse->alias instanceof Identifier ? $useUse->alias->toString() : null;
- }
/**
* @param string[] $names
*/
- private function isUseImportUsed(UseUse $useUse, array $names) : bool
+ private function isUseImportUsed(UseUse $useUse, array $names, ?Name $namespaceName) : bool
{
- $comparedName = $useUse->name->toString();
+ $comparedName = $useUse->alias instanceof Identifier ? $useUse->alias->toString() : $useUse->name->toString();
if (\in_array($comparedName, $names, \true)) {
return \true;
}
@@ -159,33 +152,30 @@ private function isUseImportUsed(UseUse $useUse, array $names) : bool
if ($namespacedPrefix === '\\') {
$namespacedPrefix = $comparedName . '\\';
}
- $alias = $this->resolveAliasName($useUse);
+ $lastName = $useUse->name->getLast();
+ $namespaceName = $namespaceName instanceof Name ? $namespaceName->toString() : null;
// match partial import
foreach ($names as $name) {
- if (\substr_compare($comparedName, '\\' . $name, -\strlen('\\' . $name)) === 0) {
+ if ($this->isSubNamespace($name, $comparedName, $namespacedPrefix)) {
return \true;
}
- if ($this->isSubNamespace($name, $namespacedPrefix)) {
- return \true;
- }
- if (!\is_string($alias)) {
+ if (\strncmp($name, $lastName . '\\', \strlen($lastName . '\\')) !== 0) {
continue;
}
- if ($alias === $name) {
+ if ($namespaceName === null) {
return \true;
}
- if (\strpos($name, '\\') === \false) {
- continue;
- }
- $namePrefix = Strings::before($name, '\\', 1);
- if ($alias === $namePrefix) {
+ if (\strncmp($name, $namespaceName . '\\', \strlen($namespaceName . '\\')) !== 0) {
return \true;
}
}
return \false;
}
- private function isSubNamespace(string $name, string $namespacedPrefix) : bool
+ private function isSubNamespace(string $name, string $comparedName, string $namespacedPrefix) : bool
{
+ if (\substr_compare($comparedName, '\\' . $name, -\strlen('\\' . $name)) === 0) {
+ return \true;
+ }
if (\strncmp($name, $namespacedPrefix, \strlen($namespacedPrefix)) === 0) {
$subNamespace = \substr($name, \strlen($namespacedPrefix));
return \strpos($subNamespace, '\\') === \false;
diff --git a/vendor/rector/rector/src/PostRector/Rector/UseAddingPostRector.php b/vendor/rector/rector/src/PostRector/Rector/UseAddingPostRector.php
index 4f6208fec..e7e6974f0 100644
--- a/vendor/rector/rector/src/PostRector/Rector/UseAddingPostRector.php
+++ b/vendor/rector/rector/src/PostRector/Rector/UseAddingPostRector.php
@@ -3,16 +3,15 @@
declare (strict_types=1);
namespace Rector\PostRector\Rector;
+use PhpParser\Node;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Namespace_;
+use PhpParser\NodeTraverser;
use Rector\CodingStyle\Application\UseImportsAdder;
-use Rector\Exception\ShouldNotHappenException;
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
use Rector\PostRector\Collector\UseNodesToAddCollector;
-use Rector\Provider\CurrentFileProvider;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
-use Rector\ValueObject\Application\File;
final class UseAddingPostRector extends \Rector\PostRector\Rector\AbstractPostRector
{
/**
@@ -30,17 +29,11 @@ final class UseAddingPostRector extends \Rector\PostRector\Rector\AbstractPostRe
* @var \Rector\PostRector\Collector\UseNodesToAddCollector
*/
private $useNodesToAddCollector;
- /**
- * @readonly
- * @var \Rector\Provider\CurrentFileProvider
- */
- private $currentFileProvider;
- public function __construct(TypeFactory $typeFactory, UseImportsAdder $useImportsAdder, UseNodesToAddCollector $useNodesToAddCollector, CurrentFileProvider $currentFileProvider)
+ public function __construct(TypeFactory $typeFactory, UseImportsAdder $useImportsAdder, UseNodesToAddCollector $useNodesToAddCollector)
{
$this->typeFactory = $typeFactory;
$this->useImportsAdder = $useImportsAdder;
$this->useNodesToAddCollector = $useNodesToAddCollector;
- $this->currentFileProvider = $currentFileProvider;
}
/**
* @param Stmt[] $nodes
@@ -52,20 +45,10 @@ public function beforeTraverse(array $nodes) : array
if ($nodes === []) {
return $nodes;
}
- $rootNode = null;
- foreach ($nodes as $node) {
- if ($node instanceof FileWithoutNamespace || $node instanceof Namespace_) {
- $rootNode = $node;
- break;
- }
- }
- $file = $this->currentFileProvider->getFile();
- if (!$file instanceof File) {
- throw new ShouldNotHappenException();
- }
- $useImportTypes = $this->useNodesToAddCollector->getObjectImportsByFilePath($file->getFilePath());
- $constantUseImportTypes = $this->useNodesToAddCollector->getConstantImportsByFilePath($file->getFilePath());
- $functionUseImportTypes = $this->useNodesToAddCollector->getFunctionImportsByFilePath($file->getFilePath());
+ $rootNode = $this->resolveRootNode($nodes);
+ $useImportTypes = $this->useNodesToAddCollector->getObjectImportsByFilePath($this->getFile()->getFilePath());
+ $constantUseImportTypes = $this->useNodesToAddCollector->getConstantImportsByFilePath($this->getFile()->getFilePath());
+ $functionUseImportTypes = $this->useNodesToAddCollector->getFunctionImportsByFilePath($this->getFile()->getFilePath());
if ($useImportTypes === [] && $constantUseImportTypes === [] && $functionUseImportTypes === []) {
return $nodes;
}
@@ -79,6 +62,18 @@ public function beforeTraverse(array $nodes) : array
}
return $this->resolveNodesWithImportedUses($nodes, $useImportTypes, $constantUseImportTypes, $functionUseImportTypes, $rootNode);
}
+ public function enterNode(Node $node) : int
+ {
+ /**
+ * We stop the traversal because all the work has already been done in the beforeTraverse() function
+ *
+ * Using STOP_TRAVERSAL is usually dangerous as it will stop the processing of all your nodes for all visitors
+ * but since the PostFileProcessor is using direct new NodeTraverser() and traverse() for only a single
+ * visitor per execution, using stop traversal here is safe,
+ * ref https://github.com/rectorphp/rector-src/blob/fc1e742fa4d9861ccdc5933f3b53613b8223438d/src/PostRector/Application/PostFileProcessor.php#L59-L61
+ */
+ return NodeTraverser::STOP_TRAVERSAL;
+ }
/**
* @param Stmt[] $nodes
* @param FullyQualifiedObjectType[] $useImportTypes
@@ -116,4 +111,17 @@ private function filterOutNonNamespacedNames(array $useImportTypes) : array
}
return $namespacedUseImportTypes;
}
+ /**
+ * @param Stmt[] $nodes
+ * @return \PhpParser\Node\Stmt\Namespace_|\Rector\PhpParser\Node\CustomNode\FileWithoutNamespace|null
+ */
+ private function resolveRootNode(array $nodes)
+ {
+ foreach ($nodes as $node) {
+ if ($node instanceof FileWithoutNamespace || $node instanceof Namespace_) {
+ return $node;
+ }
+ }
+ return null;
+ }
}
diff --git a/vendor/rector/rector/src/Rector/AbstractRector.php b/vendor/rector/rector/src/Rector/AbstractRector.php
index 1014aed2a..15413ef28 100644
--- a/vendor/rector/rector/src/Rector/AbstractRector.php
+++ b/vendor/rector/rector/src/Rector/AbstractRector.php
@@ -5,10 +5,13 @@
use PhpParser\Node;
use PhpParser\Node\Name;
+use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Const_;
use PhpParser\Node\Stmt\InlineHTML;
use PhpParser\Node\Stmt\Interface_;
use PhpParser\Node\Stmt\Nop;
+use PhpParser\Node\Stmt\Property;
+use PhpParser\Node\Stmt\PropertyProperty;
use PhpParser\Node\Stmt\Trait_;
use PhpParser\NodeTraverser;
use PhpParser\NodeVisitorAbstract;
@@ -16,6 +19,8 @@
use PHPStan\Type\ObjectType;
use PHPStan\Type\Type;
use Rector\Application\ChangedNodeScopeRefresher;
+use Rector\Application\Provider\CurrentFileProvider;
+use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\ChangesReporting\ValueObject\RectorWithLineChange;
use Rector\Contract\Rector\RectorInterface;
use Rector\Exception\ShouldNotHappenException;
@@ -26,7 +31,6 @@
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
use Rector\PhpParser\Comparing\NodeComparator;
use Rector\PhpParser\Node\NodeFactory;
-use Rector\Provider\CurrentFileProvider;
use Rector\Skipper\Skipper\Skipper;
use Rector\ValueObject\Application\File;
abstract class AbstractRector extends NodeVisitorAbstract implements RectorInterface
@@ -78,7 +82,7 @@ abstract class AbstractRector extends NodeVisitorAbstract implements RectorInter
*/
private $simpleCallableNodeTraverser;
/**
- * @var \Rector\Provider\CurrentFileProvider
+ * @var \Rector\Application\Provider\CurrentFileProvider
*/
private $currentFileProvider;
/**
@@ -196,9 +200,9 @@ protected function isNames(Node $node, array $names) : bool
* @see https://phpstan.org/writing-php-code/phpdoc-types#conditional-return-types
*
* @return ($node is Node\Param ? string :
- * ($node is Node\Stmt\ClassMethod ? string :
- * ($node is Node\Stmt\Property ? string :
- * ($node is Node\Stmt\PropertyProperty ? string :
+ * ($node is ClassMethod ? string :
+ * ($node is Property ? string :
+ * ($node is PropertyProperty ? string :
* ($node is Trait_ ? string :
* ($node is Interface_ ? string :
* ($node is Const_ ? string :
@@ -237,7 +241,17 @@ protected function mirrorComments(Node $newNode, Node $oldNode) : void
if ($oldNode instanceof InlineHTML) {
return;
}
- $newNode->setAttribute(AttributeKey::PHP_DOC_INFO, $oldNode->getAttribute(AttributeKey::PHP_DOC_INFO));
+ $oldPhpDocInfo = $oldNode->getAttribute(AttributeKey::PHP_DOC_INFO);
+ $newPhpDocInfo = $newNode->getAttribute(AttributeKey::PHP_DOC_INFO);
+ if ($newPhpDocInfo instanceof PhpDocInfo) {
+ if (!$oldPhpDocInfo instanceof PhpDocInfo) {
+ return;
+ }
+ if ((string) $oldPhpDocInfo->getPhpDocNode() !== (string) $newPhpDocInfo->getPhpDocNode()) {
+ return;
+ }
+ }
+ $newNode->setAttribute(AttributeKey::PHP_DOC_INFO, $oldPhpDocInfo);
if (!$newNode instanceof Nop) {
$newNode->setAttribute(AttributeKey::COMMENTS, $oldNode->getAttribute(AttributeKey::COMMENTS));
}
diff --git a/vendor/rector/rector/src/Reflection/ReflectionResolver.php b/vendor/rector/rector/src/Reflection/ReflectionResolver.php
index 0273d196b..8b2b69e5e 100644
--- a/vendor/rector/rector/src/Reflection/ReflectionResolver.php
+++ b/vendor/rector/rector/src/Reflection/ReflectionResolver.php
@@ -22,13 +22,14 @@
use PHPStan\Reflection\MethodReflection;
use PHPStan\Reflection\Php\PhpPropertyReflection;
use PHPStan\Reflection\ReflectionProvider;
+use PHPStan\Type\BenevolentUnionType;
+use PHPStan\Type\TypeCombinator;
use PHPStan\Type\TypeWithClassName;
use Rector\Exception\ShouldNotHappenException;
use Rector\NodeAnalyzer\ClassAnalyzer;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\NodeTypeResolver;
-use Rector\PhpParser\AstResolver;
use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType;
use Rector\ValueObject\MethodName;
final class ReflectionResolver
@@ -58,19 +59,13 @@ final class ReflectionResolver
* @var \Rector\Reflection\MethodReflectionResolver
*/
private $methodReflectionResolver;
- /**
- * @readonly
- * @var \Rector\PhpParser\AstResolver
- */
- private $astResolver;
- public function __construct(ReflectionProvider $reflectionProvider, NodeTypeResolver $nodeTypeResolver, NodeNameResolver $nodeNameResolver, ClassAnalyzer $classAnalyzer, \Rector\Reflection\MethodReflectionResolver $methodReflectionResolver, AstResolver $astResolver)
+ public function __construct(ReflectionProvider $reflectionProvider, NodeTypeResolver $nodeTypeResolver, NodeNameResolver $nodeNameResolver, ClassAnalyzer $classAnalyzer, \Rector\Reflection\MethodReflectionResolver $methodReflectionResolver)
{
$this->reflectionProvider = $reflectionProvider;
$this->nodeTypeResolver = $nodeTypeResolver;
$this->nodeNameResolver = $nodeNameResolver;
$this->classAnalyzer = $classAnalyzer;
$this->methodReflectionResolver = $methodReflectionResolver;
- $this->astResolver = $astResolver;
}
/**
* @api
@@ -103,19 +98,41 @@ public function resolveClassReflection(?Node $node) : ?ClassReflection
*/
public function resolveClassReflectionSourceObject($node) : ?ClassReflection
{
+ $objectType = $node instanceof StaticCall || $node instanceof StaticPropertyFetch ? $this->nodeTypeResolver->getType($node->class) : $this->nodeTypeResolver->getType($node->var);
+ if (!$objectType instanceof TypeWithClassName) {
+ return null;
+ }
+ $className = $objectType->getClassName();
+ if (!$this->reflectionProvider->hasClass($className)) {
+ return null;
+ }
+ $classReflection = $this->reflectionProvider->getClass($className);
if ($node instanceof PropertyFetch || $node instanceof StaticPropertyFetch) {
- $objectType = $node instanceof PropertyFetch ? $this->nodeTypeResolver->getType($node->var) : $this->nodeTypeResolver->getType($node->class);
- if (!$objectType instanceof TypeWithClassName) {
+ $propertyName = (string) $this->nodeNameResolver->getName($node->name);
+ if (!$classReflection->hasNativeProperty($propertyName)) {
return null;
}
- $className = $objectType->getClassName();
- if (!$this->reflectionProvider->hasClass($className)) {
- return null;
+ $property = $classReflection->getNativeProperty($propertyName);
+ if ($property->isPrivate()) {
+ return $classReflection;
+ }
+ if ($this->reflectionProvider->hasClass($property->getDeclaringClass()->getName())) {
+ return $this->reflectionProvider->getClass($property->getDeclaringClass()->getName());
}
- return $this->reflectionProvider->getClass($className);
+ return $classReflection;
+ }
+ $methodName = (string) $this->nodeNameResolver->getName($node->name);
+ if (!$classReflection->hasNativeMethod($methodName)) {
+ return null;
}
- $classMethod = $this->astResolver->resolveClassMethodFromCall($node);
- return $this->resolveClassReflection($classMethod);
+ $extendedMethodReflection = $classReflection->getNativeMethod($methodName);
+ if ($extendedMethodReflection->isPrivate()) {
+ return $classReflection;
+ }
+ if ($this->reflectionProvider->hasClass($extendedMethodReflection->getDeclaringClass()->getName())) {
+ return $this->reflectionProvider->getClass($extendedMethodReflection->getDeclaringClass()->getName());
+ }
+ return $classReflection;
}
/**
* @param class-string $className
@@ -150,6 +167,9 @@ public function resolveMethodReflectionFromStaticCall(StaticCall $staticCall) :
public function resolveMethodReflectionFromMethodCall(MethodCall $methodCall) : ?MethodReflection
{
$callerType = $this->nodeTypeResolver->getType($methodCall->var);
+ if ($callerType instanceof BenevolentUnionType) {
+ $callerType = TypeCombinator::removeFalsey($callerType);
+ }
if (!$callerType instanceof TypeWithClassName) {
return null;
}
diff --git a/vendor/rector/rector/src/Reporting/DeprecatedRulesReporter.php b/vendor/rector/rector/src/Reporting/DeprecatedRulesReporter.php
new file mode 100644
index 000000000..0dbfd2e51
--- /dev/null
+++ b/vendor/rector/rector/src/Reporting/DeprecatedRulesReporter.php
@@ -0,0 +1,43 @@
+symfonyStyle = $symfonyStyle;
+ }
+ public function reportDeprecatedRules() : void
+ {
+ /** @var string[] $registeredRectorRules */
+ $registeredRectorRules = SimpleParameterProvider::provideArrayParameter(Option::REGISTERED_RECTOR_RULES);
+ foreach ($registeredRectorRules as $registeredRectorRule) {
+ if (!\is_a($registeredRectorRule, DeprecatedInterface::class, \true)) {
+ continue;
+ }
+ $this->symfonyStyle->warning(\sprintf('Registered rule "%s" is deprecated and will be removed. Upgrade your config to use another rule or remove it', $registeredRectorRule));
+ }
+ }
+ public function reportDeprecatedSkippedRules() : void
+ {
+ /** @var string[] $skippedRectorRules */
+ $skippedRectorRules = SimpleParameterProvider::provideArrayParameter(Option::SKIPPED_RECTOR_RULES);
+ foreach ($skippedRectorRules as $skippedRectorRule) {
+ if (!\is_a($skippedRectorRule, DeprecatedInterface::class, \true)) {
+ continue;
+ }
+ $this->symfonyStyle->warning(\sprintf('Skipped rule "%s" is deprecated', $skippedRectorRule));
+ }
+ }
+}
diff --git a/vendor/rector/rector/src/Reporting/MissConfigurationReporter.php b/vendor/rector/rector/src/Reporting/MissConfigurationReporter.php
new file mode 100644
index 000000000..ae33878a3
--- /dev/null
+++ b/vendor/rector/rector/src/Reporting/MissConfigurationReporter.php
@@ -0,0 +1,63 @@
+symfonyStyle = $symfonyStyle;
+ $this->vendorMissAnalyseGuard = $vendorMissAnalyseGuard;
+ }
+ public function reportSkippedNeverRegisteredRules() : void
+ {
+ $registeredRules = SimpleParameterProvider::provideArrayParameter(Option::REGISTERED_RECTOR_RULES);
+ $skippedRules = SimpleParameterProvider::provideArrayParameter(Option::SKIPPED_RECTOR_RULES);
+ $neverRegisteredSkippedRules = \array_unique(\array_diff($skippedRules, $registeredRules));
+ foreach ($neverRegisteredSkippedRules as $neverRegisteredSkippedRule) {
+ // post rules are registered in a different way
+ if (\is_a($neverRegisteredSkippedRule, PostRectorInterface::class, \true)) {
+ continue;
+ }
+ $this->symfonyStyle->warning(\sprintf('Skipped rule "%s" is never registered. You can remove it from "->withSkip()"', $neverRegisteredSkippedRule));
+ }
+ }
+ /**
+ * @param string[] $filePaths
+ */
+ public function reportVendorInPaths(array $filePaths) : void
+ {
+ if (!$this->vendorMissAnalyseGuard->isVendorAnalyzed($filePaths)) {
+ return;
+ }
+ $this->symfonyStyle->warning(\sprintf('Rector has detected a "/vendor" directory in your configured paths. If this is Composer\'s vendor directory, this is not necessary as it will be autoloaded. Scanning the Composer /vendor directory will cause Rector to run much slower and possibly with errors.%sRemove "/vendor" from Rector paths and run again.', \PHP_EOL . \PHP_EOL));
+ \sleep(3);
+ }
+ public function reportStartWithShortOpenTag() : void
+ {
+ $files = SimpleParameterProvider::provideArrayParameter(Option::SKIPPED_START_WITH_SHORT_OPEN_TAG_FILES);
+ if ($files === []) {
+ return;
+ }
+ $suffix = \count($files) > 1 ? 's were' : ' was';
+ $fileList = \implode(\PHP_EOL, $files);
+ $this->symfonyStyle->warning(\sprintf('The following file%s skipped as starting with short open tag. Migrate to long open PHP tag first: %s%s', $suffix, \PHP_EOL . \PHP_EOL, $fileList));
+ \sleep(3);
+ }
+}
diff --git a/vendor/rector/rector/src/Set/Contract/SetInterface.php b/vendor/rector/rector/src/Set/Contract/SetInterface.php
new file mode 100644
index 000000000..99de8ff57
--- /dev/null
+++ b/vendor/rector/rector/src/Set/Contract/SetInterface.php
@@ -0,0 +1,11 @@
+setProviderCollector = $setProviderCollector;
+ }
+ /**
+ * @return ComposerTriggeredSet[]
+ */
+ public function matchComposerTriggered(string $groupName) : array
+ {
+ $matchedSets = [];
+ foreach ($this->setProviderCollector->provideSets() as $set) {
+ if (!$set instanceof ComposerTriggeredSet) {
+ continue;
+ }
+ if ($set->getGroupName() === $groupName) {
+ $matchedSets[] = $set;
+ }
+ }
+ return $matchedSets;
+ }
+ /**
+ * @param string[] $setGroups
+ * @return string[]
+ */
+ public function matchBySetGroups(array $setGroups) : array
+ {
+ $installedPackageResolver = new InstalledPackageResolver();
+ $installedComposerPackages = $installedPackageResolver->resolve(\getcwd());
+ $groupLoadedSets = [];
+ foreach ($setGroups as $setGroup) {
+ $composerTriggeredSets = $this->matchComposerTriggered($setGroup);
+ foreach ($composerTriggeredSets as $composerTriggeredSet) {
+ if ($composerTriggeredSet->matchInstalledPackages($installedComposerPackages)) {
+ // @todo add debug note somewhere
+ // echo sprintf('Loaded "%s" set as it meets the conditions', $composerTriggeredSet->getSetFilePath());
+ // it matched composer package + version requirements → load set
+ $groupLoadedSets[] = $composerTriggeredSet->getSetFilePath();
+ }
+ }
+ }
+ return $groupLoadedSets;
+ }
+}
diff --git a/vendor/rector/rector/src/Set/SetProvider/CoreSetProvider.php b/vendor/rector/rector/src/Set/SetProvider/CoreSetProvider.php
new file mode 100644
index 000000000..1aa675341
--- /dev/null
+++ b/vendor/rector/rector/src/Set/SetProvider/CoreSetProvider.php
@@ -0,0 +1,19 @@
+groupName = $groupName;
+ $this->packageName = $packageName;
+ $this->version = $version;
+ $this->setFilePath = $setFilePath;
+ Assert::regex($this->packageName, self::PACKAGE_REGEX);
+ Assert::fileExists($setFilePath);
+ }
+ public function getGroupName() : string
+ {
+ return $this->groupName;
+ }
+ public function getSetFilePath() : string
+ {
+ return $this->setFilePath;
+ }
+ /**
+ * @param InstalledPackage[] $installedPackages
+ */
+ public function matchInstalledPackages(array $installedPackages) : bool
+ {
+ foreach ($installedPackages as $installedPackage) {
+ if ($installedPackage->getName() !== $this->packageName) {
+ continue;
+ }
+ return \version_compare($installedPackage->getVersion(), $this->version) !== -1;
+ }
+ return \false;
+ }
+ public function getName() : string
+ {
+ return $this->packageName . ' ' . $this->version;
+ }
+}
diff --git a/vendor/rector/rector/src/Set/ValueObject/Set.php b/vendor/rector/rector/src/Set/ValueObject/Set.php
new file mode 100644
index 000000000..90ed2a1e6
--- /dev/null
+++ b/vendor/rector/rector/src/Set/ValueObject/Set.php
@@ -0,0 +1,47 @@
+groupName = $groupName;
+ $this->setName = $setName;
+ $this->setFilePath = $setFilePath;
+ Assert::fileExists($setFilePath);
+ }
+ public function getGroupName() : string
+ {
+ return $this->groupName;
+ }
+ public function getName() : string
+ {
+ return $this->setName;
+ }
+ public function getSetFilePath() : string
+ {
+ return $this->setFilePath;
+ }
+}
diff --git a/vendor/rector/rector/src/Set/ValueObject/SetList.php b/vendor/rector/rector/src/Set/ValueObject/SetList.php
index aa42e85c4..19798cfe5 100644
--- a/vendor/rector/rector/src/Set/ValueObject/SetList.php
+++ b/vendor/rector/rector/src/Set/ValueObject/SetList.php
@@ -9,6 +9,11 @@
*/
final class SetList implements SetListInterface
{
+ /**
+ * @internal
+ * @var string
+ */
+ public const PHP_POLYFILLS = __DIR__ . '/../../../config/set/php-polyfills.php';
/**
* @var string
*/
@@ -33,6 +38,12 @@ final class SetList implements SetListInterface
* @var string
*/
public const NAMING = __DIR__ . '/../../../config/set/naming.php';
+ /**
+ * Opinionated rules that match rector coding standard
+ *
+ * @var string
+ */
+ public const RECTOR_PRESET = __DIR__ . '/../../../config/set/rector-preset.php';
/**
* @var string
*/
@@ -109,4 +120,8 @@ final class SetList implements SetListInterface
* @var string
*/
public const INSTANCEOF = __DIR__ . '/../../../config/set/instanceof.php';
+ /**
+ * @var string
+ */
+ public const CARBON = __DIR__ . '/../../../config/set/datetime-to-carbon.php';
}
diff --git a/vendor/rector/rector/src/Skipper/Contract/SkipVoterInterface.php b/vendor/rector/rector/src/Skipper/Contract/SkipVoterInterface.php
deleted file mode 100644
index ca322c7c0..000000000
--- a/vendor/rector/rector/src/Skipper/Contract/SkipVoterInterface.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- * @readonly
- */
- private $skipVoters;
/**
* @readonly
* @var \Rector\Skipper\Skipper\PathSkipper
*/
private $pathSkipper;
/**
- * @param array $skipVoters
+ * @readonly
+ * @var \Rector\Skipper\SkipVoter\ClassSkipVoter
*/
- public function __construct(RectifiedAnalyzer $rectifiedAnalyzer, array $skipVoters, \Rector\Skipper\Skipper\PathSkipper $pathSkipper)
+ private $classSkipVoter;
+ public function __construct(RectifiedAnalyzer $rectifiedAnalyzer, \Rector\Skipper\Skipper\PathSkipper $pathSkipper, ClassSkipVoter $classSkipVoter)
{
$this->rectifiedAnalyzer = $rectifiedAnalyzer;
- $this->skipVoters = $skipVoters;
$this->pathSkipper = $pathSkipper;
- Assert::allIsInstanceOf($this->skipVoters, SkipVoterInterface::class);
+ $this->classSkipVoter = $classSkipVoter;
}
/**
* @param string|object $element
@@ -55,16 +50,10 @@ public function shouldSkipFilePath(string $filePath) : bool
*/
public function shouldSkipElementAndFilePath($element, string $filePath) : bool
{
- foreach ($this->skipVoters as $skipVoter) {
- if (!$skipVoter->match($element)) {
- continue;
- }
- if (!$skipVoter->shouldSkip($element, $filePath)) {
- continue;
- }
- return \true;
+ if (!$this->classSkipVoter->match($element)) {
+ return \false;
}
- return \false;
+ return $this->classSkipVoter->shouldSkip($element, $filePath);
}
/**
* @param class-string $rectorClass
diff --git a/vendor/rector/rector/src/StaticTypeMapper/Mapper/PhpParserNodeMapper.php b/vendor/rector/rector/src/StaticTypeMapper/Mapper/PhpParserNodeMapper.php
index d0f27004d..75d7c2da9 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/Mapper/PhpParserNodeMapper.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/Mapper/PhpParserNodeMapper.php
@@ -4,11 +4,8 @@
namespace Rector\StaticTypeMapper\Mapper;
use PhpParser\Node;
-use PhpParser\Node\Name;
-use PhpParser\Node\Name\FullyQualified;
use PHPStan\Type\Type;
use Rector\Exception\NotImplementedYetException;
-use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface;
final class PhpParserNodeMapper
{
@@ -26,23 +23,12 @@ public function __construct(iterable $phpParserNodeMappers)
}
public function mapToPHPStanType(Node $node) : Type
{
- $nameOrExpr = $this->expandedNamespacedName($node);
foreach ($this->phpParserNodeMappers as $phpParserNodeMapper) {
- if (!\is_a($nameOrExpr, $phpParserNodeMapper->getNodeType())) {
+ if (!\is_a($node, $phpParserNodeMapper->getNodeType())) {
continue;
}
- return $phpParserNodeMapper->mapToPHPStan($nameOrExpr);
+ return $phpParserNodeMapper->mapToPHPStan($node);
}
- throw new NotImplementedYetException(\get_class($nameOrExpr));
- }
- /**
- * @return \PhpParser\Node|\PhpParser\Node\Name\FullyQualified
- */
- private function expandedNamespacedName(Node $node)
- {
- if (\get_class($node) === Name::class && $node->hasAttribute(AttributeKey::NAMESPACED_NAME)) {
- return new FullyQualified($node->getAttribute(AttributeKey::NAMESPACED_NAME));
- }
- return $node;
+ throw new NotImplementedYetException(\get_class($node));
}
}
diff --git a/vendor/rector/rector/src/StaticTypeMapper/Mapper/ScalarStringToTypeMapper.php b/vendor/rector/rector/src/StaticTypeMapper/Mapper/ScalarStringToTypeMapper.php
index c9e628094..be6aec110 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/Mapper/ScalarStringToTypeMapper.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/Mapper/ScalarStringToTypeMapper.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\StaticTypeMapper\Mapper;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PHPStan\Type\Accessory\AccessoryNonEmptyStringType;
use PHPStan\Type\ArrayType;
use PHPStan\Type\BooleanType;
diff --git a/vendor/rector/rector/src/StaticTypeMapper/Naming/NameScopeFactory.php b/vendor/rector/rector/src/StaticTypeMapper/Naming/NameScopeFactory.php
index 25d5e4214..349fdae7d 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/Naming/NameScopeFactory.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/Naming/NameScopeFactory.php
@@ -4,21 +4,14 @@
namespace Rector\StaticTypeMapper\Naming;
use PhpParser\Node;
-use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\GroupUse;
use PhpParser\Node\Stmt\Use_;
use PhpParser\Node\Stmt\UseUse;
use PHPStan\Analyser\NameScope;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
-use PHPStan\Type\Generic\TemplateTypeMap;
-use PHPStan\Type\Type;
-use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Naming\Naming\UseImportsResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
-use Rector\PhpParser\AstResolver;
-use Rector\Reflection\ReflectionResolver;
-use Rector\StaticTypeMapper\StaticTypeMapper;
/**
* @see https://github.com/phpstan/phpstan-src/blob/8376548f76e2c845ae047e3010e873015b796818/src/Analyser/NameScope.php#L32
*/
@@ -29,58 +22,27 @@ final class NameScopeFactory
* @var \Rector\Naming\Naming\UseImportsResolver
*/
private $useImportsResolver;
- /**
- * @readonly
- * @var \Rector\PhpParser\AstResolver
- */
- private $astResolver;
- /**
- * @readonly
- * @var \Rector\Reflection\ReflectionResolver
- */
- private $reflectionResolver;
- /**
- * @var \Rector\StaticTypeMapper\StaticTypeMapper
- */
- private $staticTypeMapper;
- /**
- * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
- */
- private $phpDocInfoFactory;
- public function __construct(UseImportsResolver $useImportsResolver, AstResolver $astResolver, ReflectionResolver $reflectionResolver)
+ public function __construct(UseImportsResolver $useImportsResolver)
{
$this->useImportsResolver = $useImportsResolver;
- $this->astResolver = $astResolver;
- $this->reflectionResolver = $reflectionResolver;
- }
- // This is needed to avoid circular references
- public function autowire(PhpDocInfoFactory $phpDocInfoFactory, StaticTypeMapper $staticTypeMapper) : void
- {
- $this->phpDocInfoFactory = $phpDocInfoFactory;
- $this->staticTypeMapper = $staticTypeMapper;
}
public function createNameScopeFromNodeWithoutTemplateTypes(Node $node) : NameScope
{
$scope = $node->getAttribute(AttributeKey::SCOPE);
- $namespace = $scope instanceof Scope ? $scope->getNamespace() : null;
- $uses = $this->useImportsResolver->resolve();
- $usesAliasesToNames = $this->resolveUseNamesByAlias($uses);
- if ($scope instanceof Scope && $scope->getClassReflection() instanceof ClassReflection) {
+ if ($scope instanceof Scope) {
+ $namespace = $scope->getNamespace();
$classReflection = $scope->getClassReflection();
- $className = $classReflection->getName();
+ $className = $classReflection instanceof ClassReflection ? $classReflection->getName() : null;
} else {
+ $namespace = null;
$className = null;
}
+ $uses = $this->useImportsResolver->resolve();
+ $usesAliasesToNames = $this->resolveUseNamesByAlias($uses);
return new NameScope($namespace, $usesAliasesToNames, $className);
}
- public function createNameScopeFromNode(Node $node) : NameScope
- {
- $nameScope = $this->createNameScopeFromNodeWithoutTemplateTypes($node);
- $templateTypeMap = $this->templateTemplateTypeMap($node);
- return new NameScope($nameScope->getNamespace(), $nameScope->getUses(), $nameScope->getClassName(), null, $templateTypeMap);
- }
/**
- * @param Use_[]|GroupUse[] $useNodes
+ * @param array $useNodes
* @return array
*/
private function resolveUseNamesByAlias(array $useNodes) : array
@@ -98,30 +60,4 @@ private function resolveUseNamesByAlias(array $useNodes) : array
}
return $useNamesByAlias;
}
- private function templateTemplateTypeMap(Node $node) : TemplateTypeMap
- {
- $nodeTemplateTypes = $this->resolveTemplateTypesFromNode($node);
- $classTemplateTypes = [];
- $classReflection = $this->reflectionResolver->resolveClassReflection($node);
- if ($classReflection instanceof ClassReflection) {
- $classLike = $this->astResolver->resolveClassFromClassReflection($classReflection);
- if ($classLike instanceof ClassLike) {
- $classTemplateTypes = $this->resolveTemplateTypesFromNode($classLike);
- }
- }
- $templateTypes = \array_merge($nodeTemplateTypes, $classTemplateTypes);
- return new TemplateTypeMap($templateTypes);
- }
- /**
- * @return Type[]
- */
- private function resolveTemplateTypesFromNode(Node $node) : array
- {
- $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
- $templateTypes = [];
- foreach ($phpDocInfo->getTemplateTagValueNodes() as $templateTagValueNode) {
- $templateTypes[$templateTagValueNode->name] = $this->staticTypeMapper->mapPHPStanPhpDocTypeToPHPStanType($templateTagValueNode, $node);
- }
- return $templateTypes;
- }
}
diff --git a/vendor/rector/rector/src/StaticTypeMapper/PhpDoc/PhpDocTypeMapper.php b/vendor/rector/rector/src/StaticTypeMapper/PhpDoc/PhpDocTypeMapper.php
index 218d09194..0853c9ceb 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/PhpDoc/PhpDocTypeMapper.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/PhpDoc/PhpDocTypeMapper.php
@@ -9,7 +9,7 @@
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
use PHPStan\Type\Type;
use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\StaticTypeMapper\PhpDoc\PhpDocTypeMapperTest
*/
diff --git a/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IdentifierTypeMapper.php b/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IdentifierPhpDocTypeMapper.php
similarity index 94%
rename from vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IdentifierTypeMapper.php
rename to vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IdentifierPhpDocTypeMapper.php
index 6ebb489c4..3200d9729 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IdentifierTypeMapper.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IdentifierPhpDocTypeMapper.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\StaticTypeMapper\PhpDocParser;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use PHPStan\Analyser\NameScope;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
@@ -32,7 +32,7 @@
/**
* @implements PhpDocTypeMapperInterface
*/
-final class IdentifierTypeMapper implements PhpDocTypeMapperInterface
+final class IdentifierPhpDocTypeMapper implements PhpDocTypeMapperInterface
{
/**
* @readonly
@@ -131,7 +131,9 @@ private function mapParent(Node $node)
// parent outside the class, e.g. in a function
return new MixedType();
}
- /** @var ClassReflection $classReflection */
+ if (!$this->reflectionProvider->hasClass($className)) {
+ return new MixedType();
+ }
$classReflection = $this->reflectionProvider->getClass($className);
$parentClassReflection = $classReflection->getParentClass();
if (!$parentClassReflection instanceof ClassReflection) {
@@ -149,7 +151,9 @@ private function mapStatic(Node $node)
// static outside the class, e.g. in a function
return new MixedType();
}
- /** @var ClassReflection $classReflection */
+ if (!$this->reflectionProvider->hasClass($className)) {
+ return new MixedType();
+ }
$classReflection = $this->reflectionProvider->getClass($className);
return new StaticType($classReflection);
}
diff --git a/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IntersectionTypeMapper.php b/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IntersectionPhpDocTypeMapper.php
similarity index 72%
rename from vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IntersectionTypeMapper.php
rename to vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IntersectionPhpDocTypeMapper.php
index b8d6acc5a..fe5928fe9 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IntersectionTypeMapper.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/IntersectionPhpDocTypeMapper.php
@@ -15,16 +15,16 @@
/**
* @implements PhpDocTypeMapperInterface
*/
-final class IntersectionTypeMapper implements PhpDocTypeMapperInterface
+final class IntersectionPhpDocTypeMapper implements PhpDocTypeMapperInterface
{
/**
* @readonly
- * @var \Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper
+ * @var \Rector\StaticTypeMapper\PhpDocParser\IdentifierPhpDocTypeMapper
*/
- private $identifierTypeMapper;
- public function __construct(\Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper $identifierTypeMapper)
+ private $identifierPhpDocTypeMapper;
+ public function __construct(\Rector\StaticTypeMapper\PhpDocParser\IdentifierPhpDocTypeMapper $identifierPhpDocTypeMapper)
{
- $this->identifierTypeMapper = $identifierTypeMapper;
+ $this->identifierPhpDocTypeMapper = $identifierPhpDocTypeMapper;
}
public function getNodeType() : string
{
@@ -40,7 +40,7 @@ public function mapToPHPStanType(TypeNode $typeNode, Node $node, NameScope $name
if (!$intersectionedTypeNode instanceof IdentifierTypeNode) {
return new MixedType();
}
- $intersectionedTypes[] = $this->identifierTypeMapper->mapIdentifierTypeNode($intersectionedTypeNode, $node);
+ $intersectionedTypes[] = $this->identifierPhpDocTypeMapper->mapIdentifierTypeNode($intersectionedTypeNode, $node);
}
return new IntersectionType($intersectionedTypes);
}
diff --git a/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/NullableTypeMapper.php b/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/NullablePhpDocTypeMapper.php
similarity index 75%
rename from vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/NullableTypeMapper.php
rename to vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/NullablePhpDocTypeMapper.php
index c57b73162..705e9bec9 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/NullableTypeMapper.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/NullablePhpDocTypeMapper.php
@@ -16,21 +16,21 @@
/**
* @implements PhpDocTypeMapperInterface
*/
-final class NullableTypeMapper implements PhpDocTypeMapperInterface
+final class NullablePhpDocTypeMapper implements PhpDocTypeMapperInterface
{
/**
* @readonly
- * @var \Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper
+ * @var \Rector\StaticTypeMapper\PhpDocParser\IdentifierPhpDocTypeMapper
*/
- private $identifierTypeMapper;
+ private $identifierPhpDocTypeMapper;
/**
* @readonly
* @var \PHPStan\PhpDoc\TypeNodeResolver
*/
private $typeNodeResolver;
- public function __construct(\Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper $identifierTypeMapper, TypeNodeResolver $typeNodeResolver)
+ public function __construct(\Rector\StaticTypeMapper\PhpDocParser\IdentifierPhpDocTypeMapper $identifierPhpDocTypeMapper, TypeNodeResolver $typeNodeResolver)
{
- $this->identifierTypeMapper = $identifierTypeMapper;
+ $this->identifierPhpDocTypeMapper = $identifierPhpDocTypeMapper;
$this->typeNodeResolver = $typeNodeResolver;
}
public function getNodeType() : string
@@ -43,7 +43,7 @@ public function getNodeType() : string
public function mapToPHPStanType(TypeNode $typeNode, Node $node, NameScope $nameScope) : Type
{
if ($typeNode->type instanceof IdentifierTypeNode) {
- $type = $this->identifierTypeMapper->mapToPHPStanType($typeNode->type, $node, $nameScope);
+ $type = $this->identifierPhpDocTypeMapper->mapToPHPStanType($typeNode->type, $node, $nameScope);
if ($type instanceof UnionType) {
return new UnionType(\array_merge([new NullType()], $type->getTypes()));
}
diff --git a/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/UnionTypeMapper.php b/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/UnionPhpDocTypeMapper.php
similarity index 66%
rename from vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/UnionTypeMapper.php
rename to vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/UnionPhpDocTypeMapper.php
index 353c44cd3..cfdcc848c 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/UnionTypeMapper.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/PhpDocParser/UnionPhpDocTypeMapper.php
@@ -16,7 +16,7 @@
/**
* @implements PhpDocTypeMapperInterface
*/
-final class UnionTypeMapper implements PhpDocTypeMapperInterface
+final class UnionPhpDocTypeMapper implements PhpDocTypeMapperInterface
{
/**
* @readonly
@@ -25,24 +25,24 @@ final class UnionTypeMapper implements PhpDocTypeMapperInterface
private $typeFactory;
/**
* @readonly
- * @var \Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper
+ * @var \Rector\StaticTypeMapper\PhpDocParser\IdentifierPhpDocTypeMapper
*/
- private $identifierTypeMapper;
+ private $identifierPhpDocTypeMapper;
/**
* @readonly
- * @var \Rector\StaticTypeMapper\PhpDocParser\IntersectionTypeMapper
+ * @var \Rector\StaticTypeMapper\PhpDocParser\IntersectionPhpDocTypeMapper
*/
- private $intersectionTypeMapper;
+ private $intersectionPhpDocTypeMapper;
/**
* @readonly
* @var \PHPStan\PhpDoc\TypeNodeResolver
*/
private $typeNodeResolver;
- public function __construct(TypeFactory $typeFactory, \Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper $identifierTypeMapper, \Rector\StaticTypeMapper\PhpDocParser\IntersectionTypeMapper $intersectionTypeMapper, TypeNodeResolver $typeNodeResolver)
+ public function __construct(TypeFactory $typeFactory, \Rector\StaticTypeMapper\PhpDocParser\IdentifierPhpDocTypeMapper $identifierPhpDocTypeMapper, \Rector\StaticTypeMapper\PhpDocParser\IntersectionPhpDocTypeMapper $intersectionPhpDocTypeMapper, TypeNodeResolver $typeNodeResolver)
{
$this->typeFactory = $typeFactory;
- $this->identifierTypeMapper = $identifierTypeMapper;
- $this->intersectionTypeMapper = $intersectionTypeMapper;
+ $this->identifierPhpDocTypeMapper = $identifierPhpDocTypeMapper;
+ $this->intersectionPhpDocTypeMapper = $intersectionPhpDocTypeMapper;
$this->typeNodeResolver = $typeNodeResolver;
}
public function getNodeType() : string
@@ -57,11 +57,11 @@ public function mapToPHPStanType(TypeNode $typeNode, Node $node, NameScope $name
$unionedTypes = [];
foreach ($typeNode->types as $unionedTypeNode) {
if ($unionedTypeNode instanceof IdentifierTypeNode) {
- $unionedTypes[] = $this->identifierTypeMapper->mapToPHPStanType($unionedTypeNode, $node, $nameScope);
+ $unionedTypes[] = $this->identifierPhpDocTypeMapper->mapToPHPStanType($unionedTypeNode, $node, $nameScope);
continue;
}
if ($unionedTypeNode instanceof IntersectionTypeNode) {
- $unionedTypes[] = $this->intersectionTypeMapper->mapToPHPStanType($unionedTypeNode, $node, $nameScope);
+ $unionedTypes[] = $this->intersectionPhpDocTypeMapper->mapToPHPStanType($unionedTypeNode, $node, $nameScope);
continue;
}
$unionedTypes[] = $this->typeNodeResolver->resolve($unionedTypeNode, $nameScope);
diff --git a/vendor/rector/rector/src/StaticTypeMapper/PhpParser/NameNodeMapper.php b/vendor/rector/rector/src/StaticTypeMapper/PhpParser/NameNodeMapper.php
index 1f1eaf4a6..1a6a8a81e 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/PhpParser/NameNodeMapper.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/PhpParser/NameNodeMapper.php
@@ -5,12 +5,14 @@
use PhpParser\Node;
use PhpParser\Node\Name;
+use PhpParser\Node\Name\FullyQualified;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Type\MixedType;
use PHPStan\Type\ObjectWithoutClassType;
use PHPStan\Type\StaticType;
use PHPStan\Type\Type;
use Rector\Enum\ObjectReference;
+use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Reflection\ReflectionResolver;
use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface;
use Rector\StaticTypeMapper\ValueObject\Type\ParentObjectWithoutClassType;
@@ -26,9 +28,15 @@ final class NameNodeMapper implements PhpParserNodeMapperInterface
* @var \Rector\Reflection\ReflectionResolver
*/
private $reflectionResolver;
- public function __construct(ReflectionResolver $reflectionResolver)
+ /**
+ * @readonly
+ * @var \Rector\StaticTypeMapper\PhpParser\FullyQualifiedNodeMapper
+ */
+ private $fullyQualifiedNodeMapper;
+ public function __construct(ReflectionResolver $reflectionResolver, \Rector\StaticTypeMapper\PhpParser\FullyQualifiedNodeMapper $fullyQualifiedNodeMapper)
{
$this->reflectionResolver = $reflectionResolver;
+ $this->fullyQualifiedNodeMapper = $fullyQualifiedNodeMapper;
}
public function getNodeType() : string
{
@@ -43,8 +51,22 @@ public function mapToPHPStan(Node $node) : Type
if ($node->isSpecialClassName()) {
return $this->createClassReferenceType($node, $name);
}
+ $expandedNamespacedName = $this->expandedNamespacedName($node);
+ if ($expandedNamespacedName instanceof FullyQualified) {
+ return $this->fullyQualifiedNodeMapper->mapToPHPStan($expandedNamespacedName);
+ }
return new MixedType();
}
+ private function expandedNamespacedName(Name $name) : ?FullyQualified
+ {
+ if (\get_class($name) !== Name::class) {
+ return null;
+ }
+ if (!$name->hasAttribute(AttributeKey::NAMESPACED_NAME)) {
+ return null;
+ }
+ return new FullyQualified($name->getAttribute(AttributeKey::NAMESPACED_NAME));
+ }
/**
* @return \PHPStan\Type\MixedType|\PHPStan\Type\StaticType|\Rector\StaticTypeMapper\ValueObject\Type\SelfStaticType|\PHPStan\Type\ObjectWithoutClassType
*/
diff --git a/vendor/rector/rector/src/StaticTypeMapper/StaticTypeMapper.php b/vendor/rector/rector/src/StaticTypeMapper/StaticTypeMapper.php
index 5f6614c5d..626b91c52 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/StaticTypeMapper.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/StaticTypeMapper.php
@@ -88,7 +88,7 @@ public function mapPHPStanPhpDocTypeToPHPStanType(PhpDocTagValueNode $phpDocTagV
}
public function mapPHPStanPhpDocTypeNodeToPHPStanType(TypeNode $typeNode, Node $node) : Type
{
- $nameScope = $this->nameScopeFactory->createNameScopeFromNode($node);
+ $nameScope = $this->nameScopeFactory->createNameScopeFromNodeWithoutTemplateTypes($node);
return $this->phpDocTypeMapper->mapToPHPStanType($typeNode, $node, $nameScope);
}
}
diff --git a/vendor/rector/rector/src/StaticTypeMapper/ValueObject/Type/FullyQualifiedObjectType.php b/vendor/rector/rector/src/StaticTypeMapper/ValueObject/Type/FullyQualifiedObjectType.php
index 855a1b429..d79bbb61e 100644
--- a/vendor/rector/rector/src/StaticTypeMapper/ValueObject/Type/FullyQualifiedObjectType.php
+++ b/vendor/rector/rector/src/StaticTypeMapper/ValueObject/Type/FullyQualifiedObjectType.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\StaticTypeMapper\ValueObject\Type;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\Use_;
use PhpParser\Node\Stmt\UseUse;
@@ -36,8 +36,6 @@ public function getShortName() : string
public function getShortNameNode() : Name
{
$name = new Name($this->getShortName());
- // to avoid processing short name twice
- $name->setAttribute(AttributeKey::VIRTUAL_NODE, \true);
// keep original to avoid loss on while importing
$name->setAttribute(AttributeKey::NAMESPACED_NAME, $this->getClassName());
return $name;
diff --git a/vendor/rector/rector/src/Testing/Fixture/FixtureFileFinder.php b/vendor/rector/rector/src/Testing/Fixture/FixtureFileFinder.php
index 1955b68a0..ce342e238 100644
--- a/vendor/rector/rector/src/Testing/Fixture/FixtureFileFinder.php
+++ b/vendor/rector/rector/src/Testing/Fixture/FixtureFileFinder.php
@@ -4,7 +4,7 @@
namespace Rector\Testing\Fixture;
use Iterator;
-use RectorPrefix202405\Symfony\Component\Finder\Finder;
+use RectorPrefix202410\Symfony\Component\Finder\Finder;
final class FixtureFileFinder
{
/**
diff --git a/vendor/rector/rector/src/Testing/Fixture/FixtureFileUpdater.php b/vendor/rector/rector/src/Testing/Fixture/FixtureFileUpdater.php
index 5a78f6d8f..633f0b789 100644
--- a/vendor/rector/rector/src/Testing/Fixture/FixtureFileUpdater.php
+++ b/vendor/rector/rector/src/Testing/Fixture/FixtureFileUpdater.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Testing\Fixture;
-use RectorPrefix202405\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\FileSystem;
final class FixtureFileUpdater
{
/**
diff --git a/vendor/rector/rector/src/Testing/Fixture/FixtureSplitter.php b/vendor/rector/rector/src/Testing/Fixture/FixtureSplitter.php
index 905f6daa7..d803a41da 100644
--- a/vendor/rector/rector/src/Testing/Fixture/FixtureSplitter.php
+++ b/vendor/rector/rector/src/Testing/Fixture/FixtureSplitter.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Testing\Fixture;
-use RectorPrefix202405\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\FileSystem;
/**
* @api
*/
diff --git a/vendor/rector/rector/src/Testing/Fixture/FixtureTempFileDumper.php b/vendor/rector/rector/src/Testing/Fixture/FixtureTempFileDumper.php
index e83bb65ef..2c0c8d186 100644
--- a/vendor/rector/rector/src/Testing/Fixture/FixtureTempFileDumper.php
+++ b/vendor/rector/rector/src/Testing/Fixture/FixtureTempFileDumper.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Testing\Fixture;
-use RectorPrefix202405\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\FileSystem;
/**
* @api used in tests
*/
diff --git a/vendor/rector/rector/src/Testing/PHPUnit/AbstractRectorTestCase.php b/vendor/rector/rector/src/Testing/PHPUnit/AbstractRectorTestCase.php
index 9daa2404f..cffb3bcff 100644
--- a/vendor/rector/rector/src/Testing/PHPUnit/AbstractRectorTestCase.php
+++ b/vendor/rector/rector/src/Testing/PHPUnit/AbstractRectorTestCase.php
@@ -3,10 +3,10 @@
declare (strict_types=1);
namespace Rector\Testing\PHPUnit;
-use RectorPrefix202405\Illuminate\Container\RewindableGenerator;
+use RectorPrefix202410\Illuminate\Container\RewindableGenerator;
use Iterator;
-use RectorPrefix202405\Nette\Utils\FileSystem;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\Strings;
use PHPUnit\Framework\ExpectationFailedException;
use Rector\Application\ApplicationFileProcessor;
use Rector\Autoloading\AdditionalAutoloader;
diff --git a/vendor/rector/rector/src/Testing/TestingParser/TestingParser.php b/vendor/rector/rector/src/Testing/TestingParser/TestingParser.php
index 265081a2c..669862d52 100644
--- a/vendor/rector/rector/src/Testing/TestingParser/TestingParser.php
+++ b/vendor/rector/rector/src/Testing/TestingParser/TestingParser.php
@@ -3,12 +3,12 @@
declare (strict_types=1);
namespace Rector\Testing\TestingParser;
-use RectorPrefix202405\Nette\Utils\FileSystem;
+use RectorPrefix202410\Nette\Utils\FileSystem;
use PhpParser\Node;
+use Rector\Application\Provider\CurrentFileProvider;
use Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator;
use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\DynamicSourceLocatorProvider;
use Rector\PhpParser\Parser\RectorParser;
-use Rector\Provider\CurrentFileProvider;
use Rector\ValueObject\Application\File;
/**
* @api
@@ -27,7 +27,7 @@ final class TestingParser
private $nodeScopeAndMetadataDecorator;
/**
* @readonly
- * @var \Rector\Provider\CurrentFileProvider
+ * @var \Rector\Application\Provider\CurrentFileProvider
*/
private $currentFileProvider;
/**
diff --git a/vendor/rector/rector/src/Util/MemoryLimiter.php b/vendor/rector/rector/src/Util/MemoryLimiter.php
index 5bd38723c..250d4ddf6 100644
--- a/vendor/rector/rector/src/Util/MemoryLimiter.php
+++ b/vendor/rector/rector/src/Util/MemoryLimiter.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Util;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use Rector\Exception\Configuration\InvalidConfigurationException;
use Rector\ValueObject\Configuration;
/**
diff --git a/vendor/rector/rector/src/Util/NewLineSplitter.php b/vendor/rector/rector/src/Util/NewLineSplitter.php
index 5229a35c0..a4b1738a5 100644
--- a/vendor/rector/rector/src/Util/NewLineSplitter.php
+++ b/vendor/rector/rector/src/Util/NewLineSplitter.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Util;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
final class NewLineSplitter
{
/**
diff --git a/vendor/rector/rector/src/Util/NodePrinter.php b/vendor/rector/rector/src/Util/NodePrinter.php
index 5f6e4fa21..e347ca315 100644
--- a/vendor/rector/rector/src/Util/NodePrinter.php
+++ b/vendor/rector/rector/src/Util/NodePrinter.php
@@ -3,10 +3,10 @@
declare (strict_types=1);
namespace Rector\Util;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use PhpParser\Node;
use Rector\CustomRules\SimpleNodeDumper;
-use RectorPrefix202405\Symfony\Component\Console\Style\SymfonyStyle;
+use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle;
final class NodePrinter
{
/**
diff --git a/vendor/rector/rector/src/Util/PhpVersionFactory.php b/vendor/rector/rector/src/Util/PhpVersionFactory.php
index e682a1db7..b8a5c9f4b 100644
--- a/vendor/rector/rector/src/Util/PhpVersionFactory.php
+++ b/vendor/rector/rector/src/Util/PhpVersionFactory.php
@@ -3,8 +3,12 @@
declare (strict_types=1);
namespace Rector\Util;
+use Rector\ValueObject\PhpVersion;
final class PhpVersionFactory
{
+ /**
+ * @return PhpVersion::*
+ */
public static function createIntVersion(string $version) : int
{
$explodeDash = \explode('-', $version);
diff --git a/vendor/rector/rector/src/Util/StringUtils.php b/vendor/rector/rector/src/Util/StringUtils.php
index 0937075ef..e7fc42caa 100644
--- a/vendor/rector/rector/src/Util/StringUtils.php
+++ b/vendor/rector/rector/src/Util/StringUtils.php
@@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Util;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
final class StringUtils
{
public static function isMatch(string $value, string $regex) : bool
diff --git a/vendor/rector/rector/src/Validation/RectorAssert.php b/vendor/rector/rector/src/Validation/RectorAssert.php
index 7004b9d1b..df5b77245 100644
--- a/vendor/rector/rector/src/Validation/RectorAssert.php
+++ b/vendor/rector/rector/src/Validation/RectorAssert.php
@@ -4,7 +4,7 @@
namespace Rector\Validation;
use Rector\Util\StringUtils;
-use RectorPrefix202405\Webmozart\Assert\InvalidArgumentException;
+use RectorPrefix202410\Webmozart\Assert\InvalidArgumentException;
/**
* @see \Rector\Tests\Validation\RectorAssertTest
*/
diff --git a/vendor/rector/rector/src/Validation/RectorConfigValidator.php b/vendor/rector/rector/src/Validation/RectorConfigValidator.php
index 92cca4021..c12fff6e5 100644
--- a/vendor/rector/rector/src/Validation/RectorConfigValidator.php
+++ b/vendor/rector/rector/src/Validation/RectorConfigValidator.php
@@ -3,6 +3,8 @@
declare (strict_types=1);
namespace Rector\Validation;
+use Rector\Configuration\Option;
+use Rector\Configuration\Parameter\SimpleParameterProvider;
use Rector\Exception\ShouldNotHappenException;
final class RectorConfigValidator
{
@@ -23,19 +25,26 @@ public static function ensureNoDuplicatedClasses(array $rectorClasses) : void
public static function ensureRectorRulesExist(array $skip) : void
{
$nonExistingRules = [];
+ $skippedRectorRules = [];
foreach ($skip as $key => $value) {
- if (self::isRectorClassValue($key) && !\class_exists($key)) {
- $nonExistingRules[] = $key;
+ if (self::isRectorClassValue($key)) {
+ if (\class_exists($key)) {
+ $skippedRectorRules[] = $key;
+ } else {
+ $nonExistingRules[] = $key;
+ }
continue;
}
if (!self::isRectorClassValue($value)) {
continue;
}
if (\class_exists($value)) {
+ $skippedRectorRules[] = $value;
continue;
}
$nonExistingRules[] = $value;
}
+ SimpleParameterProvider::addParameter(Option::SKIPPED_RECTOR_RULES, $skippedRectorRules);
if ($nonExistingRules === []) {
return;
}
diff --git a/vendor/rector/rector/src/ValueObject/Application/File.php b/vendor/rector/rector/src/ValueObject/Application/File.php
index 5bc5ef189..bad7b1e65 100644
--- a/vendor/rector/rector/src/ValueObject/Application/File.php
+++ b/vendor/rector/rector/src/ValueObject/Application/File.php
@@ -8,9 +8,6 @@
use Rector\ChangesReporting\ValueObject\RectorWithLineChange;
use Rector\Exception\ShouldNotHappenException;
use Rector\ValueObject\Reporting\FileDiff;
-/**
- * @see \Rector\ValueObjectFactory\Application\FileFactory
- */
final class File
{
/**
diff --git a/vendor/rector/rector/src/ValueObject/Configuration.php b/vendor/rector/rector/src/ValueObject/Configuration.php
index d6f6fa155..1b3b5d005 100644
--- a/vendor/rector/rector/src/ValueObject/Configuration.php
+++ b/vendor/rector/rector/src/ValueObject/Configuration.php
@@ -4,7 +4,7 @@
namespace Rector\ValueObject;
use Rector\ChangesReporting\Output\ConsoleOutputFormatter;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class Configuration
{
/**
@@ -67,11 +67,16 @@ final class Configuration
* @var bool
*/
private $isDebug = \false;
+ /**
+ * @readonly
+ * @var bool
+ */
+ private $reportingWithRealPath = \false;
/**
* @param string[] $fileExtensions
* @param string[] $paths
*/
- public function __construct(bool $isDryRun = \false, bool $showProgressBar = \true, bool $shouldClearCache = \false, string $outputFormat = ConsoleOutputFormatter::NAME, array $fileExtensions = ['php'], array $paths = [], bool $showDiffs = \true, ?string $parallelPort = null, ?string $parallelIdentifier = null, bool $isParallel = \false, ?string $memoryLimit = null, bool $isDebug = \false)
+ public function __construct(bool $isDryRun = \false, bool $showProgressBar = \true, bool $shouldClearCache = \false, string $outputFormat = ConsoleOutputFormatter::NAME, array $fileExtensions = ['php'], array $paths = [], bool $showDiffs = \true, ?string $parallelPort = null, ?string $parallelIdentifier = null, bool $isParallel = \false, ?string $memoryLimit = null, bool $isDebug = \false, bool $reportingWithRealPath = \false)
{
$this->isDryRun = $isDryRun;
$this->showProgressBar = $showProgressBar;
@@ -85,6 +90,7 @@ public function __construct(bool $isDryRun = \false, bool $showProgressBar = \tr
$this->isParallel = $isParallel;
$this->memoryLimit = $memoryLimit;
$this->isDebug = $isDebug;
+ $this->reportingWithRealPath = $reportingWithRealPath;
}
public function isDryRun() : bool
{
@@ -141,4 +147,8 @@ public function isDebug() : bool
{
return $this->isDebug;
}
+ public function isReportingWithRealPath() : bool
+ {
+ return $this->reportingWithRealPath;
+ }
}
diff --git a/vendor/rector/rector/src/ValueObject/Error/SystemError.php b/vendor/rector/rector/src/ValueObject/Error/SystemError.php
index 6337e9255..a7d2e520d 100644
--- a/vendor/rector/rector/src/ValueObject/Error/SystemError.php
+++ b/vendor/rector/rector/src/ValueObject/Error/SystemError.php
@@ -4,7 +4,7 @@
namespace Rector\ValueObject\Error;
use Rector\Parallel\ValueObject\BridgeItem;
-use RectorPrefix202405\Symplify\EasyParallel\Contract\SerializableInterface;
+use RectorPrefix202410\Symplify\EasyParallel\Contract\SerializableInterface;
final class SystemError implements SerializableInterface
{
/**
@@ -50,18 +50,31 @@ public function getRelativeFilePath() : ?string
{
return $this->relativeFilePath;
}
+ public function getAbsoluteFilePath() : ?string
+ {
+ if ($this->relativeFilePath === null) {
+ return null;
+ }
+ return \realpath($this->relativeFilePath);
+ }
/**
- * @return array{message: string, relative_file_path: string|null, line: int|null, rector_class: string|null}
+ * @return array{
+ * message: string,
+ * relative_file_path: string|null,
+ * absolute_file_path: string|null,
+ * line: int|null,
+ * rector_class: string|null
+ * }
*/
public function jsonSerialize() : array
{
- return [BridgeItem::MESSAGE => $this->message, BridgeItem::RELATIVE_FILE_PATH => $this->relativeFilePath, BridgeItem::LINE => $this->line, BridgeItem::RECTOR_CLASS => $this->rectorClass];
+ return [BridgeItem::MESSAGE => $this->message, BridgeItem::RELATIVE_FILE_PATH => $this->relativeFilePath, BridgeItem::ABSOLUTE_FILE_PATH => $this->getAbsoluteFilePath(), BridgeItem::LINE => $this->line, BridgeItem::RECTOR_CLASS => $this->rectorClass];
}
/**
* @param mixed[] $json
* @return $this
*/
- public static function decode(array $json) : \RectorPrefix202405\Symplify\EasyParallel\Contract\SerializableInterface
+ public static function decode(array $json) : \RectorPrefix202410\Symplify\EasyParallel\Contract\SerializableInterface
{
return new self($json[BridgeItem::MESSAGE], $json[BridgeItem::RELATIVE_FILE_PATH], $json[BridgeItem::LINE], $json[BridgeItem::RECTOR_CLASS]);
}
diff --git a/vendor/rector/rector/src/ValueObject/FileProcessResult.php b/vendor/rector/rector/src/ValueObject/FileProcessResult.php
index 6c3881024..1cd1fb054 100644
--- a/vendor/rector/rector/src/ValueObject/FileProcessResult.php
+++ b/vendor/rector/rector/src/ValueObject/FileProcessResult.php
@@ -5,7 +5,7 @@
use Rector\ValueObject\Error\SystemError;
use Rector\ValueObject\Reporting\FileDiff;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class FileProcessResult
{
/**
diff --git a/vendor/rector/rector/src/ValueObject/PhpVersionFeature.php b/vendor/rector/rector/src/ValueObject/PhpVersionFeature.php
index b36db8ae3..94f0c5c09 100644
--- a/vendor/rector/rector/src/ValueObject/PhpVersionFeature.php
+++ b/vendor/rector/rector/src/ValueObject/PhpVersionFeature.php
@@ -333,6 +333,14 @@ final class PhpVersionFeature
* @var int
*/
public const DEPRECATE_NESTED_TERNARY = \Rector\ValueObject\PhpVersion::PHP_74;
+ /**
+ * @var int
+ */
+ public const DEPRECATE_RESTORE_INCLUDE_PATH = \Rector\ValueObject\PhpVersion::PHP_74;
+ /**
+ * @var int
+ */
+ public const DEPRECATE_HEBREVC = \Rector\ValueObject\PhpVersion::PHP_74;
/**
* @var int
*/
diff --git a/vendor/rector/rector/src/ValueObject/ProcessResult.php b/vendor/rector/rector/src/ValueObject/ProcessResult.php
index 0e1da84d2..a5e94ad13 100644
--- a/vendor/rector/rector/src/ValueObject/ProcessResult.php
+++ b/vendor/rector/rector/src/ValueObject/ProcessResult.php
@@ -5,7 +5,7 @@
use Rector\ValueObject\Error\SystemError;
use Rector\ValueObject\Reporting\FileDiff;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class ProcessResult
{
/**
diff --git a/vendor/rector/rector/src/ValueObject/Reporting/FileDiff.php b/vendor/rector/rector/src/ValueObject/Reporting/FileDiff.php
index 8a67ba2d4..5454f7f45 100644
--- a/vendor/rector/rector/src/ValueObject/Reporting/FileDiff.php
+++ b/vendor/rector/rector/src/ValueObject/Reporting/FileDiff.php
@@ -3,12 +3,12 @@
declare (strict_types=1);
namespace Rector\ValueObject\Reporting;
-use RectorPrefix202405\Nette\Utils\Strings;
+use RectorPrefix202410\Nette\Utils\Strings;
use Rector\ChangesReporting\ValueObject\RectorWithLineChange;
use Rector\Contract\Rector\RectorInterface;
use Rector\Parallel\ValueObject\BridgeItem;
-use RectorPrefix202405\Symplify\EasyParallel\Contract\SerializableInterface;
-use RectorPrefix202405\Webmozart\Assert\Assert;
+use RectorPrefix202410\Symplify\EasyParallel\Contract\SerializableInterface;
+use RectorPrefix202410\Webmozart\Assert\Assert;
final class FileDiff implements SerializableInterface
{
/**
@@ -63,6 +63,10 @@ public function getRelativeFilePath() : string
{
return $this->relativeFilePath;
}
+ public function getAbsoluteFilePath() : ?string
+ {
+ return \realpath($this->relativeFilePath) ?: null;
+ }
/**
* @return RectorWithLineChange[]
*/
@@ -70,6 +74,17 @@ public function getRectorChanges() : array
{
return $this->rectorsWithLineChanges;
}
+ /**
+ * @return string[]
+ */
+ public function getRectorShortClasses() : array
+ {
+ $rectorShortClasses = [];
+ foreach ($this->getRectorClasses() as $rectorClass) {
+ $rectorShortClasses[] = (string) Strings::after($rectorClass, '\\', -1);
+ }
+ return $rectorShortClasses;
+ }
/**
* @return array>
*/
@@ -101,7 +116,7 @@ public function jsonSerialize() : array
* @param array $json
* @return $this
*/
- public static function decode(array $json) : \RectorPrefix202405\Symplify\EasyParallel\Contract\SerializableInterface
+ public static function decode(array $json) : \RectorPrefix202410\Symplify\EasyParallel\Contract\SerializableInterface
{
$rectorWithLineChanges = [];
foreach ($json[BridgeItem::RECTORS_WITH_LINE_CHANGES] as $rectorWithLineChangesJson) {
diff --git a/vendor/rector/rector/src/ValueObjectFactory/Application/FileFactory.php b/vendor/rector/rector/src/ValueObjectFactory/Application/FileFactory.php
deleted file mode 100644
index ad36090d6..000000000
--- a/vendor/rector/rector/src/ValueObjectFactory/Application/FileFactory.php
+++ /dev/null
@@ -1,41 +0,0 @@
-filesFinder = $filesFinder;
- $this->changedFilesDetector = $changedFilesDetector;
- }
- /**
- * @param string[] $paths
- * @return string[]
- */
- public function findFilesInPaths(array $paths, Configuration $configuration) : array
- {
- if ($configuration->shouldClearCache()) {
- $this->changedFilesDetector->clear();
- }
- $supportedFileExtensions = $configuration->getFileExtensions();
- return $this->filesFinder->findInDirectoriesAndFiles($paths, $supportedFileExtensions);
- }
-}
diff --git a/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodParamVendorLockResolver.php b/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodParamVendorLockResolver.php
index 9eb09c338..548124e5e 100644
--- a/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodParamVendorLockResolver.php
+++ b/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodParamVendorLockResolver.php
@@ -36,6 +36,9 @@ public function isVendorLocked(ClassMethod $classMethod) : bool
if ($classMethod->isMagic()) {
return \true;
}
+ if ($classMethod->isPrivate()) {
+ return \false;
+ }
$classReflection = $this->reflectionResolver->resolveClassReflection($classMethod);
if (!$classReflection instanceof ClassReflection) {
return \false;
diff --git a/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php b/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php
index 8467117c9..1b2e515d9 100644
--- a/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php
+++ b/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodReturnTypeOverrideGuard.php
@@ -3,40 +3,24 @@
declare (strict_types=1);
namespace Rector\VendorLocker\NodeVendorLocker;
-use PhpParser\Node;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Reflection\FunctionVariantWithPhpDocs;
use PHPStan\Reflection\MethodReflection;
-use PHPStan\Reflection\ParametersAcceptorSelector;
-use PHPStan\Reflection\Php\PhpMethodReflection;
use PHPStan\Type\MixedType;
-use PHPStan\Type\Type;
-use Rector\FamilyTree\Reflection\FamilyRelationsAnalyzer;
use Rector\FileSystem\FilePathHelper;
use Rector\NodeAnalyzer\MagicClassMethodAnalyzer;
use Rector\NodeTypeResolver\PHPStan\ParametersAcceptorSelectorVariantsWrapper;
use Rector\Reflection\ReflectionResolver;
-use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
use Rector\VendorLocker\ParentClassMethodTypeOverrideGuard;
final class ClassMethodReturnTypeOverrideGuard
{
- /**
- * @readonly
- * @var \Rector\FamilyTree\Reflection\FamilyRelationsAnalyzer
- */
- private $familyRelationsAnalyzer;
/**
* @readonly
* @var \Rector\Reflection\ReflectionResolver
*/
private $reflectionResolver;
- /**
- * @readonly
- * @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
- */
- private $returnTypeInferer;
/**
* @readonly
* @var \Rector\VendorLocker\ParentClassMethodTypeOverrideGuard
@@ -52,11 +36,9 @@ final class ClassMethodReturnTypeOverrideGuard
* @var \Rector\NodeAnalyzer\MagicClassMethodAnalyzer
*/
private $magicClassMethodAnalyzer;
- public function __construct(FamilyRelationsAnalyzer $familyRelationsAnalyzer, ReflectionResolver $reflectionResolver, ReturnTypeInferer $returnTypeInferer, ParentClassMethodTypeOverrideGuard $parentClassMethodTypeOverrideGuard, FilePathHelper $filePathHelper, MagicClassMethodAnalyzer $magicClassMethodAnalyzer)
+ public function __construct(ReflectionResolver $reflectionResolver, ParentClassMethodTypeOverrideGuard $parentClassMethodTypeOverrideGuard, FilePathHelper $filePathHelper, MagicClassMethodAnalyzer $magicClassMethodAnalyzer)
{
- $this->familyRelationsAnalyzer = $familyRelationsAnalyzer;
$this->reflectionResolver = $reflectionResolver;
- $this->returnTypeInferer = $returnTypeInferer;
$this->parentClassMethodTypeOverrideGuard = $parentClassMethodTypeOverrideGuard;
$this->filePathHelper = $filePathHelper;
$this->magicClassMethodAnalyzer = $magicClassMethodAnalyzer;
@@ -74,46 +56,13 @@ public function shouldSkipClassMethod(ClassMethod $classMethod, Scope $scope) :
if (!$classReflection instanceof ClassReflection) {
return \true;
}
- if ($classMethod->isAbstract()) {
+ if ($classReflection->isAbstract()) {
return \true;
}
if ($classReflection->isInterface()) {
return \true;
}
- if (!$this->isReturnTypeChangeAllowed($classMethod, $scope)) {
- return \true;
- }
- if ($classMethod->isFinal()) {
- return \false;
- }
- $childrenClassReflections = $this->familyRelationsAnalyzer->getChildrenOfClassReflection($classReflection);
- if ($childrenClassReflections === []) {
- return \false;
- }
- if ($classMethod->returnType instanceof Node) {
- return \true;
- }
- $returnType = $this->returnTypeInferer->inferFunctionLike($classMethod);
- return $this->hasChildrenDifferentTypeClassMethod($classMethod, $childrenClassReflections, $returnType);
- }
- /**
- * @param ClassReflection[] $childrenClassReflections
- */
- private function hasChildrenDifferentTypeClassMethod(ClassMethod $classMethod, array $childrenClassReflections, Type $returnType) : bool
- {
- $methodName = $classMethod->name->toString();
- foreach ($childrenClassReflections as $childClassReflection) {
- $methodReflection = $childClassReflection->getNativeMethod($methodName);
- if (!$methodReflection instanceof PhpMethodReflection) {
- continue;
- }
- $parametersAcceptor = ParametersAcceptorSelector::combineAcceptors($methodReflection->getVariants());
- $childReturnType = $parametersAcceptor->getNativeReturnType();
- if (!$returnType->isSuperTypeOf($childReturnType)->yes()) {
- return \true;
- }
- }
- return \false;
+ return !$this->isReturnTypeChangeAllowed($classMethod, $scope);
}
private function isReturnTypeChangeAllowed(ClassMethod $classMethod, Scope $scope) : bool
{
diff --git a/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodReturnVendorLockResolver.php b/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodReturnVendorLockResolver.php
index 77cfdc7e8..4e96aefa6 100644
--- a/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodReturnVendorLockResolver.php
+++ b/vendor/rector/rector/src/VendorLocker/NodeVendorLocker/ClassMethodReturnVendorLockResolver.php
@@ -7,6 +7,7 @@
use PHPStan\Reflection\ClassReflection;
use PHPStan\Reflection\FunctionVariantWithPhpDocs;
use PHPStan\Type\MixedType;
+use Rector\NodeAnalyzer\MagicClassMethodAnalyzer;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\Reflection\ReflectionResolver;
final class ClassMethodReturnVendorLockResolver
@@ -21,13 +22,22 @@ final class ClassMethodReturnVendorLockResolver
* @var \Rector\Reflection\ReflectionResolver
*/
private $reflectionResolver;
- public function __construct(NodeNameResolver $nodeNameResolver, ReflectionResolver $reflectionResolver)
+ /**
+ * @readonly
+ * @var \Rector\NodeAnalyzer\MagicClassMethodAnalyzer
+ */
+ private $magicClassMethodAnalyzer;
+ public function __construct(NodeNameResolver $nodeNameResolver, ReflectionResolver $reflectionResolver, MagicClassMethodAnalyzer $magicClassMethodAnalyzer)
{
$this->nodeNameResolver = $nodeNameResolver;
$this->reflectionResolver = $reflectionResolver;
+ $this->magicClassMethodAnalyzer = $magicClassMethodAnalyzer;
}
public function isVendorLocked(ClassMethod $classMethod) : bool
{
+ if ($this->magicClassMethodAnalyzer->isUnsafeOverridden($classMethod)) {
+ return \true;
+ }
if ($classMethod->isPrivate()) {
return \false;
}
@@ -49,6 +59,9 @@ private function isVendorLockedByAncestors(ClassReflection $classReflection, str
if (!$nativeClassReflection->hasMethod($methodName)) {
continue;
}
+ if (!$ancestorClassReflections->hasNativeMethod($methodName)) {
+ continue;
+ }
$parentClassMethodReflection = $ancestorClassReflections->getNativeMethod($methodName);
$parametersAcceptor = $parentClassMethodReflection->getVariants()[0];
if (!$parametersAcceptor instanceof FunctionVariantWithPhpDocs) {
diff --git a/vendor/rector/rector/src/VendorLocker/ParentClassMethodTypeOverrideGuard.php b/vendor/rector/rector/src/VendorLocker/ParentClassMethodTypeOverrideGuard.php
index 376b93fc2..552c89207 100644
--- a/vendor/rector/rector/src/VendorLocker/ParentClassMethodTypeOverrideGuard.php
+++ b/vendor/rector/rector/src/VendorLocker/ParentClassMethodTypeOverrideGuard.php
@@ -53,10 +53,6 @@ public function __construct(NodeNameResolver $nodeNameResolver, ReflectionResolv
*/
public function hasParentClassMethod($classMethod) : bool
{
- // early got false on private method
- if ($classMethod->isPrivate()) {
- return \false;
- }
try {
$parentClassMethod = $this->resolveParentClassMethod($classMethod);
return $parentClassMethod instanceof MethodReflection;
@@ -93,18 +89,17 @@ public function shouldSkipReturnTypeChange(ClassMethod $classMethod, Type $paren
*/
private function resolveParentClassMethod($classMethod) : ?MethodReflection
{
- if ($classMethod instanceof ClassMethod) {
- $classReflection = $this->reflectionResolver->resolveClassReflection($classMethod);
- if (!$classReflection instanceof ClassReflection) {
- // we can't resolve the class, so we don't know.
- throw new UnresolvableClassException();
- }
- /** @var string $methodName */
- $methodName = $this->nodeNameResolver->getName($classMethod);
- } else {
- $classReflection = $classMethod->getDeclaringClass();
- $methodName = $classMethod->getName();
+ // early got null on private method
+ if ($classMethod->isPrivate()) {
+ return null;
+ }
+ $classReflection = $classMethod instanceof ClassMethod ? $this->reflectionResolver->resolveClassReflection($classMethod) : $classMethod->getDeclaringClass();
+ if (!$classReflection instanceof ClassReflection) {
+ // we can't resolve the class, so we don't know.
+ throw new UnresolvableClassException();
}
+ /** @var string $methodName */
+ $methodName = $classMethod instanceof ClassMethod ? $this->nodeNameResolver->getName($classMethod) : $classMethod->getName();
$currentClassReflection = $classReflection;
while ($this->hasClassParent($currentClassReflection)) {
$parentClassReflection = $currentClassReflection->getParentClass();
diff --git a/vendor/rector/rector/src/VersionBonding/PhpVersionedFilter.php b/vendor/rector/rector/src/VersionBonding/PhpVersionedFilter.php
index dc62eaa8d..fbf24fff4 100644
--- a/vendor/rector/rector/src/VersionBonding/PhpVersionedFilter.php
+++ b/vendor/rector/rector/src/VersionBonding/PhpVersionedFilter.php
@@ -29,7 +29,7 @@ public function __construct(PhpVersionProvider $phpVersionProvider, PolyfillPack
* @param array $rectors
* @return array
*/
- public function filter(iterable $rectors) : array
+ public function filter(array $rectors) : array
{
$minProjectPhpVersion = $this->phpVersionProvider->provide();
$activeRectors = [];
diff --git a/vendor/rector/rector/src/functions/node_helper.php b/vendor/rector/rector/src/functions/node_helper.php
index 64f38b5c5..8f7920444 100644
--- a/vendor/rector/rector/src/functions/node_helper.php
+++ b/vendor/rector/rector/src/functions/node_helper.php
@@ -1,14 +1,14 @@
withPaths([
@@ -11,6 +10,4 @@ __PATHS__
])
// uncomment to reach your current PHP version
// ->withPhpSets()
- ->withRules([
- AddVoidReturnTypeWhereNoReturnRector::class,
- ]);
+ ->withTypeCoverageLevel(0);
diff --git a/vendor/rector/rector/vendor/autoload.php b/vendor/rector/rector/vendor/autoload.php
index 5c2f04e00..6ab6c8f74 100644
--- a/vendor/rector/rector/vendor/autoload.php
+++ b/vendor/rector/rector/vendor/autoload.php
@@ -22,4 +22,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
-return ComposerAutoloaderInit70e3025dac7e7555f69a9b4ca9e3dfde::getLoader();
+return ComposerAutoloaderInit7c12491db1a700dd78980ecb6595c088::getLoader();
diff --git a/vendor/rector/rector/vendor/bin/php-parse b/vendor/rector/rector/vendor/bin/php-parse
index 20deae1c8..aea2272de 100755
--- a/vendor/rector/rector/vendor/bin/php-parse
+++ b/vendor/rector/rector/vendor/bin/php-parse
@@ -8,12 +8,12 @@
*
* @generated
*/
-namespace RectorPrefix202405\Composer;
+namespace RectorPrefix202410\Composer;
$GLOBALS['_composer_bin_dir'] = __DIR__;
$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..' . '/autoload.php';
if (\PHP_VERSION_ID < 80000) {
- if (!\class_exists('RectorPrefix202405\\Composer\\BinProxyWrapper')) {
+ if (!\class_exists('RectorPrefix202410\\Composer\\BinProxyWrapper')) {
/**
* @internal
*/
@@ -87,7 +87,7 @@ if (\PHP_VERSION_ID < 80000) {
}
}
}
- if (\function_exists('stream_get_wrappers') && \in_array('phpvfscomposer', \stream_get_wrappers(), \true) || \function_exists('stream_wrapper_register') && \stream_wrapper_register('phpvfscomposer', 'RectorPrefix202405\\Composer\\BinProxyWrapper')) {
+ if (\function_exists('stream_get_wrappers') && \in_array('phpvfscomposer', \stream_get_wrappers(), \true) || \function_exists('stream_wrapper_register') && \stream_wrapper_register('phpvfscomposer', 'RectorPrefix202410\\Composer\\BinProxyWrapper')) {
return include "phpvfscomposer://" . __DIR__ . '/..' . '/nikic/php-parser/bin/php-parse';
}
}
diff --git a/vendor/rector/rector/vendor/bin/yaml-lint b/vendor/rector/rector/vendor/bin/yaml-lint
index e8d2b1715..13dc1b841 100755
--- a/vendor/rector/rector/vendor/bin/yaml-lint
+++ b/vendor/rector/rector/vendor/bin/yaml-lint
@@ -8,12 +8,12 @@
*
* @generated
*/
-namespace RectorPrefix202405\Composer;
+namespace RectorPrefix202410\Composer;
$GLOBALS['_composer_bin_dir'] = __DIR__;
$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..' . '/autoload.php';
if (\PHP_VERSION_ID < 80000) {
- if (!\class_exists('RectorPrefix202405\\Composer\\BinProxyWrapper')) {
+ if (!\class_exists('RectorPrefix202410\\Composer\\BinProxyWrapper')) {
/**
* @internal
*/
@@ -87,7 +87,7 @@ if (\PHP_VERSION_ID < 80000) {
}
}
}
- if (\function_exists('stream_get_wrappers') && \in_array('phpvfscomposer', \stream_get_wrappers(), \true) || \function_exists('stream_wrapper_register') && \stream_wrapper_register('phpvfscomposer', 'RectorPrefix202405\\Composer\\BinProxyWrapper')) {
+ if (\function_exists('stream_get_wrappers') && \in_array('phpvfscomposer', \stream_get_wrappers(), \true) || \function_exists('stream_wrapper_register') && \stream_wrapper_register('phpvfscomposer', 'RectorPrefix202410\\Composer\\BinProxyWrapper')) {
return include "phpvfscomposer://" . __DIR__ . '/..' . '/symfony/yaml/Resources/bin/yaml-lint';
}
}
diff --git a/vendor/rector/rector/vendor/clue/ndjson-react/composer.json b/vendor/rector/rector/vendor/clue/ndjson-react/composer.json
index 518092e7b..71ef75519 100644
--- a/vendor/rector/rector/vendor/clue/ndjson-react/composer.json
+++ b/vendor/rector/rector/vendor/clue/ndjson-react/composer.json
@@ -27,12 +27,12 @@
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Clue\\React\\NDJson\\": "src\/"
+ "RectorPrefix202410\\Clue\\React\\NDJson\\": "src\/"
}
},
"autoload-dev": {
"psr-4": {
- "RectorPrefix202405\\Clue\\Tests\\React\\NDJson\\": "tests\/"
+ "RectorPrefix202410\\Clue\\Tests\\React\\NDJson\\": "tests\/"
}
}
}
\ No newline at end of file
diff --git a/vendor/rector/rector/vendor/clue/ndjson-react/src/Decoder.php b/vendor/rector/rector/vendor/clue/ndjson-react/src/Decoder.php
index e5427bda7..7aea7bf12 100644
--- a/vendor/rector/rector/vendor/clue/ndjson-react/src/Decoder.php
+++ b/vendor/rector/rector/vendor/clue/ndjson-react/src/Decoder.php
@@ -1,11 +1,11 @@
$vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTextNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTextNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PropertyTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PropertyTagValueNode.php',
+ 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PureUnlessCallableIsImpureTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PureUnlessCallableIsImpureTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\RequireExtendsTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireExtendsTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\RequireImplementsTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireImplementsTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ReturnTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ReturnTagValueNode.php',
@@ -66,6 +67,7 @@
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\VarTagValueNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/VarTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeItemNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeItemNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeNode.php',
+ 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeUnsealedTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeUnsealedTypeNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayTypeNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\CallableTypeNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\CallableTypeParameterNode' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeParameterNode.php',
@@ -343,635 +345,653 @@
'PhpParser\\Parser\\Tokens' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php',
'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php',
'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php',
- 'RectorPrefix202405\\Clue\\React\\NDJson\\Decoder' => $vendorDir . '/clue/ndjson-react/src/Decoder.php',
- 'RectorPrefix202405\\Clue\\React\\NDJson\\Encoder' => $vendorDir . '/clue/ndjson-react/src/Encoder.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchAllResult' => $vendorDir . '/composer/pcre/src/MatchAllResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchAllStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchAllStrictGroupsResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchAllWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchAllWithOffsetsResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchResult' => $vendorDir . '/composer/pcre/src/MatchResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchStrictGroupsResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchWithOffsetsResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\PcreException' => $vendorDir . '/composer/pcre/src/PcreException.php',
- 'RectorPrefix202405\\Composer\\Pcre\\Preg' => $vendorDir . '/composer/pcre/src/Preg.php',
- 'RectorPrefix202405\\Composer\\Pcre\\Regex' => $vendorDir . '/composer/pcre/src/Regex.php',
- 'RectorPrefix202405\\Composer\\Pcre\\ReplaceResult' => $vendorDir . '/composer/pcre/src/ReplaceResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\UnexpectedNullMatchException' => $vendorDir . '/composer/pcre/src/UnexpectedNullMatchException.php',
- 'RectorPrefix202405\\Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php',
- 'RectorPrefix202405\\Composer\\Semver\\CompilingMatcher' => $vendorDir . '/composer/semver/src/CompilingMatcher.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\Bound' => $vendorDir . '/composer/semver/src/Constraint/Bound.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\MatchAllConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchAllConstraint.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchNoneConstraint.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php',
- 'RectorPrefix202405\\Composer\\Semver\\Interval' => $vendorDir . '/composer/semver/src/Interval.php',
- 'RectorPrefix202405\\Composer\\Semver\\Intervals' => $vendorDir . '/composer/semver/src/Intervals.php',
- 'RectorPrefix202405\\Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php',
- 'RectorPrefix202405\\Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php',
- 'RectorPrefix202405\\Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php',
- 'RectorPrefix202405\\Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php',
- 'RectorPrefix202405\\Composer\\XdebugHandler\\Status' => $vendorDir . '/composer/xdebug-handler/src/Status.php',
- 'RectorPrefix202405\\Composer\\XdebugHandler\\XdebugHandler' => $vendorDir . '/composer/xdebug-handler/src/XdebugHandler.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\CachedWordInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\GenericLanguageInflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Inflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Language' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Language.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\LanguageInflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/LanguageInflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\NoopWordInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/NoopWordInflector.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\English\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\English\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\English\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\English\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\French\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\French\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\French\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\French\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Pattern' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Pattern.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Patterns' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Portuguese\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Portuguese\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Portuguese\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Portuguese\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Ruleset' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Ruleset.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Spanish\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Spanish\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Spanish\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Spanish\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Substitution' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitution.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Substitutions' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Transformation' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Transformations' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Turkish\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Turkish\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Turkish\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Turkish\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Word' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Word.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\RulesetInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\WordInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php',
- 'RectorPrefix202405\\Evenement\\EventEmitter' => $vendorDir . '/evenement/evenement/src/EventEmitter.php',
- 'RectorPrefix202405\\Evenement\\EventEmitterInterface' => $vendorDir . '/evenement/evenement/src/EventEmitterInterface.php',
- 'RectorPrefix202405\\Evenement\\EventEmitterTrait' => $vendorDir . '/evenement/evenement/src/EventEmitterTrait.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\CpuCoreCounter' => $vendorDir . '/fidry/cpu-core-counter/src/CpuCoreCounter.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Diagnoser' => $vendorDir . '/fidry/cpu-core-counter/src/Diagnoser.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\LscpuLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\LscpuPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => $vendorDir . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
- 'RectorPrefix202405\\Illuminate\\Container\\BoundMethod' => $vendorDir . '/illuminate/container/BoundMethod.php',
- 'RectorPrefix202405\\Illuminate\\Container\\Container' => $vendorDir . '/illuminate/container/Container.php',
- 'RectorPrefix202405\\Illuminate\\Container\\ContextualBindingBuilder' => $vendorDir . '/illuminate/container/ContextualBindingBuilder.php',
- 'RectorPrefix202405\\Illuminate\\Container\\EntryNotFoundException' => $vendorDir . '/illuminate/container/EntryNotFoundException.php',
- 'RectorPrefix202405\\Illuminate\\Container\\RewindableGenerator' => $vendorDir . '/illuminate/container/RewindableGenerator.php',
- 'RectorPrefix202405\\Illuminate\\Container\\Util' => $vendorDir . '/illuminate/container/Util.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Access\\Authorizable' => $vendorDir . '/illuminate/contracts/Auth/Access/Authorizable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Access\\Gate' => $vendorDir . '/illuminate/contracts/Auth/Access/Gate.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Authenticatable' => $vendorDir . '/illuminate/contracts/Auth/Authenticatable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\CanResetPassword' => $vendorDir . '/illuminate/contracts/Auth/CanResetPassword.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Factory' => $vendorDir . '/illuminate/contracts/Auth/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Guard' => $vendorDir . '/illuminate/contracts/Auth/Guard.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => $vendorDir . '/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\MustVerifyEmail' => $vendorDir . '/illuminate/contracts/Auth/MustVerifyEmail.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\PasswordBroker' => $vendorDir . '/illuminate/contracts/Auth/PasswordBroker.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => $vendorDir . '/illuminate/contracts/Auth/PasswordBrokerFactory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\StatefulGuard' => $vendorDir . '/illuminate/contracts/Auth/StatefulGuard.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => $vendorDir . '/illuminate/contracts/Auth/SupportsBasicAuth.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\UserProvider' => $vendorDir . '/illuminate/contracts/Auth/UserProvider.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\Broadcaster' => $vendorDir . '/illuminate/contracts/Broadcasting/Broadcaster.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\Factory' => $vendorDir . '/illuminate/contracts/Broadcasting/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel' => $vendorDir . '/illuminate/contracts/Broadcasting/HasBroadcastChannel.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\ShouldBeUnique' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBeUnique.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBroadcast.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Bus\\Dispatcher' => $vendorDir . '/illuminate/contracts/Bus/Dispatcher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Bus\\QueueingDispatcher' => $vendorDir . '/illuminate/contracts/Bus/QueueingDispatcher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\Factory' => $vendorDir . '/illuminate/contracts/Cache/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\Lock' => $vendorDir . '/illuminate/contracts/Cache/Lock.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\LockProvider' => $vendorDir . '/illuminate/contracts/Cache/LockProvider.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\LockTimeoutException' => $vendorDir . '/illuminate/contracts/Cache/LockTimeoutException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\Repository' => $vendorDir . '/illuminate/contracts/Cache/Repository.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\Store' => $vendorDir . '/illuminate/contracts/Cache/Store.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Config\\Repository' => $vendorDir . '/illuminate/contracts/Config/Repository.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Console\\Application' => $vendorDir . '/illuminate/contracts/Console/Application.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Console\\Isolatable' => $vendorDir . '/illuminate/contracts/Console/Isolatable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Console\\Kernel' => $vendorDir . '/illuminate/contracts/Console/Kernel.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Console\\PromptsForMissingInput' => $vendorDir . '/illuminate/contracts/Console/PromptsForMissingInput.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Container\\BindingResolutionException' => $vendorDir . '/illuminate/contracts/Container/BindingResolutionException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Container\\CircularDependencyException' => $vendorDir . '/illuminate/contracts/Container/CircularDependencyException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Container\\Container' => $vendorDir . '/illuminate/contracts/Container/Container.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => $vendorDir . '/illuminate/contracts/Container/ContextualBindingBuilder.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cookie\\Factory' => $vendorDir . '/illuminate/contracts/Cookie/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cookie\\QueueingFactory' => $vendorDir . '/illuminate/contracts/Cookie/QueueingFactory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\Builder' => $vendorDir . '/illuminate/contracts/Database/Eloquent/Builder.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\Castable' => $vendorDir . '/illuminate/contracts/Database/Eloquent/Castable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/CastsAttributes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\DeviatesCastableAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\SerializesCastableAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/SerializesCastableAttributes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\SupportsPartialRelations' => $vendorDir . '/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => $vendorDir . '/illuminate/contracts/Database/Events/MigrationEvent.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\ModelIdentifier' => $vendorDir . '/illuminate/contracts/Database/ModelIdentifier.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Query\\Builder' => $vendorDir . '/illuminate/contracts/Database/Query/Builder.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Query\\ConditionExpression' => $vendorDir . '/illuminate/contracts/Database/Query/ConditionExpression.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Query\\Expression' => $vendorDir . '/illuminate/contracts/Database/Query/Expression.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Debug\\ExceptionHandler' => $vendorDir . '/illuminate/contracts/Debug/ExceptionHandler.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Encryption\\DecryptException' => $vendorDir . '/illuminate/contracts/Encryption/DecryptException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Encryption\\EncryptException' => $vendorDir . '/illuminate/contracts/Encryption/EncryptException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Encryption\\Encrypter' => $vendorDir . '/illuminate/contracts/Encryption/Encrypter.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Encryption\\StringEncrypter' => $vendorDir . '/illuminate/contracts/Encryption/StringEncrypter.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Events\\Dispatcher' => $vendorDir . '/illuminate/contracts/Events/Dispatcher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Events\\ShouldDispatchAfterCommit' => $vendorDir . '/illuminate/contracts/Events/ShouldDispatchAfterCommit.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Events\\ShouldHandleEventsAfterCommit' => $vendorDir . '/illuminate/contracts/Events/ShouldHandleEventsAfterCommit.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\Cloud' => $vendorDir . '/illuminate/contracts/Filesystem/Cloud.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\Factory' => $vendorDir . '/illuminate/contracts/Filesystem/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => $vendorDir . '/illuminate/contracts/Filesystem/FileNotFoundException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\Filesystem' => $vendorDir . '/illuminate/contracts/Filesystem/Filesystem.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\LockTimeoutException' => $vendorDir . '/illuminate/contracts/Filesystem/LockTimeoutException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\Application' => $vendorDir . '/illuminate/contracts/Foundation/Application.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\CachesConfiguration' => $vendorDir . '/illuminate/contracts/Foundation/CachesConfiguration.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\CachesRoutes' => $vendorDir . '/illuminate/contracts/Foundation/CachesRoutes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\ExceptionRenderer' => $vendorDir . '/illuminate/contracts/Foundation/ExceptionRenderer.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\MaintenanceMode' => $vendorDir . '/illuminate/contracts/Foundation/MaintenanceMode.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Hashing\\Hasher' => $vendorDir . '/illuminate/contracts/Hashing/Hasher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Http\\Kernel' => $vendorDir . '/illuminate/contracts/Http/Kernel.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\Attachable' => $vendorDir . '/illuminate/contracts/Mail/Attachable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\Factory' => $vendorDir . '/illuminate/contracts/Mail/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\MailQueue' => $vendorDir . '/illuminate/contracts/Mail/MailQueue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\Mailable' => $vendorDir . '/illuminate/contracts/Mail/Mailable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\Mailer' => $vendorDir . '/illuminate/contracts/Mail/Mailer.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Notifications\\Dispatcher' => $vendorDir . '/illuminate/contracts/Notifications/Dispatcher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Notifications\\Factory' => $vendorDir . '/illuminate/contracts/Notifications/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pagination\\CursorPaginator' => $vendorDir . '/illuminate/contracts/Pagination/CursorPaginator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => $vendorDir . '/illuminate/contracts/Pagination/LengthAwarePaginator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pagination\\Paginator' => $vendorDir . '/illuminate/contracts/Pagination/Paginator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pipeline\\Hub' => $vendorDir . '/illuminate/contracts/Pipeline/Hub.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pipeline\\Pipeline' => $vendorDir . '/illuminate/contracts/Pipeline/Pipeline.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Process\\InvokedProcess' => $vendorDir . '/illuminate/contracts/Process/InvokedProcess.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Process\\ProcessResult' => $vendorDir . '/illuminate/contracts/Process/ProcessResult.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ClearableQueue' => $vendorDir . '/illuminate/contracts/Queue/ClearableQueue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\EntityNotFoundException' => $vendorDir . '/illuminate/contracts/Queue/EntityNotFoundException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\EntityResolver' => $vendorDir . '/illuminate/contracts/Queue/EntityResolver.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\Factory' => $vendorDir . '/illuminate/contracts/Queue/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\Job' => $vendorDir . '/illuminate/contracts/Queue/Job.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\Monitor' => $vendorDir . '/illuminate/contracts/Queue/Monitor.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\Queue' => $vendorDir . '/illuminate/contracts/Queue/Queue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\QueueableCollection' => $vendorDir . '/illuminate/contracts/Queue/QueueableCollection.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\QueueableEntity' => $vendorDir . '/illuminate/contracts/Queue/QueueableEntity.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldBeEncrypted' => $vendorDir . '/illuminate/contracts/Queue/ShouldBeEncrypted.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldBeUnique' => $vendorDir . '/illuminate/contracts/Queue/ShouldBeUnique.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldBeUniqueUntilProcessing' => $vendorDir . '/illuminate/contracts/Queue/ShouldBeUniqueUntilProcessing.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldQueue' => $vendorDir . '/illuminate/contracts/Queue/ShouldQueue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldQueueAfterCommit' => $vendorDir . '/illuminate/contracts/Queue/ShouldQueueAfterCommit.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Redis\\Connection' => $vendorDir . '/illuminate/contracts/Redis/Connection.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Redis\\Connector' => $vendorDir . '/illuminate/contracts/Redis/Connector.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Redis\\Factory' => $vendorDir . '/illuminate/contracts/Redis/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => $vendorDir . '/illuminate/contracts/Redis/LimiterTimeoutException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\BindingRegistrar' => $vendorDir . '/illuminate/contracts/Routing/BindingRegistrar.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\Registrar' => $vendorDir . '/illuminate/contracts/Routing/Registrar.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\ResponseFactory' => $vendorDir . '/illuminate/contracts/Routing/ResponseFactory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\UrlGenerator' => $vendorDir . '/illuminate/contracts/Routing/UrlGenerator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\UrlRoutable' => $vendorDir . '/illuminate/contracts/Routing/UrlRoutable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Session\\Middleware\\AuthenticatesSessions' => $vendorDir . '/illuminate/contracts/Session/Middleware/AuthenticatesSessions.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Session\\Session' => $vendorDir . '/illuminate/contracts/Session/Session.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Arrayable' => $vendorDir . '/illuminate/contracts/Support/Arrayable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\CanBeEscapedWhenCastToString' => $vendorDir . '/illuminate/contracts/Support/CanBeEscapedWhenCastToString.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\DeferrableProvider' => $vendorDir . '/illuminate/contracts/Support/DeferrableProvider.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\DeferringDisplayableValue' => $vendorDir . '/illuminate/contracts/Support/DeferringDisplayableValue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Htmlable' => $vendorDir . '/illuminate/contracts/Support/Htmlable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Jsonable' => $vendorDir . '/illuminate/contracts/Support/Jsonable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\MessageBag' => $vendorDir . '/illuminate/contracts/Support/MessageBag.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\MessageProvider' => $vendorDir . '/illuminate/contracts/Support/MessageProvider.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Renderable' => $vendorDir . '/illuminate/contracts/Support/Renderable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Responsable' => $vendorDir . '/illuminate/contracts/Support/Responsable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\ValidatedData' => $vendorDir . '/illuminate/contracts/Support/ValidatedData.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Translation\\HasLocalePreference' => $vendorDir . '/illuminate/contracts/Translation/HasLocalePreference.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Translation\\Loader' => $vendorDir . '/illuminate/contracts/Translation/Loader.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Translation\\Translator' => $vendorDir . '/illuminate/contracts/Translation/Translator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\DataAwareRule' => $vendorDir . '/illuminate/contracts/Validation/DataAwareRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\Factory' => $vendorDir . '/illuminate/contracts/Validation/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\ImplicitRule' => $vendorDir . '/illuminate/contracts/Validation/ImplicitRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\InvokableRule' => $vendorDir . '/illuminate/contracts/Validation/InvokableRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\Rule' => $vendorDir . '/illuminate/contracts/Validation/Rule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\UncompromisedVerifier' => $vendorDir . '/illuminate/contracts/Validation/UncompromisedVerifier.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => $vendorDir . '/illuminate/contracts/Validation/ValidatesWhenResolved.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\ValidationRule' => $vendorDir . '/illuminate/contracts/Validation/ValidationRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\Validator' => $vendorDir . '/illuminate/contracts/Validation/Validator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\ValidatorAwareRule' => $vendorDir . '/illuminate/contracts/Validation/ValidatorAwareRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\View\\Engine' => $vendorDir . '/illuminate/contracts/View/Engine.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\View\\Factory' => $vendorDir . '/illuminate/contracts/View/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\View\\View' => $vendorDir . '/illuminate/contracts/View/View.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\View\\ViewCompilationException' => $vendorDir . '/illuminate/contracts/View/ViewCompilationException.php',
- 'RectorPrefix202405\\Nette\\ArgumentOutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\DeprecatedException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\DirectoryNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\FileNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\HtmlStringable' => $vendorDir . '/nette/utils/src/HtmlStringable.php',
- 'RectorPrefix202405\\Nette\\IOException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\InvalidArgumentException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\InvalidStateException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\Iterators\\CachingIterator' => $vendorDir . '/nette/utils/src/Iterators/CachingIterator.php',
- 'RectorPrefix202405\\Nette\\Iterators\\Mapper' => $vendorDir . '/nette/utils/src/Iterators/Mapper.php',
- 'RectorPrefix202405\\Nette\\Localization\\ITranslator' => $vendorDir . '/nette/utils/src/compatibility.php',
- 'RectorPrefix202405\\Nette\\Localization\\Translator' => $vendorDir . '/nette/utils/src/Translator.php',
- 'RectorPrefix202405\\Nette\\MemberAccessException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\NotImplementedException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\NotSupportedException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\OutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\SmartObject' => $vendorDir . '/nette/utils/src/SmartObject.php',
- 'RectorPrefix202405\\Nette\\StaticClass' => $vendorDir . '/nette/utils/src/StaticClass.php',
- 'RectorPrefix202405\\Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\ArrayHash' => $vendorDir . '/nette/utils/src/Utils/ArrayHash.php',
- 'RectorPrefix202405\\Nette\\Utils\\ArrayList' => $vendorDir . '/nette/utils/src/Utils/ArrayList.php',
- 'RectorPrefix202405\\Nette\\Utils\\Arrays' => $vendorDir . '/nette/utils/src/Utils/Arrays.php',
- 'RectorPrefix202405\\Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php',
- 'RectorPrefix202405\\Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php',
- 'RectorPrefix202405\\Nette\\Utils\\FileInfo' => $vendorDir . '/nette/utils/src/Utils/FileInfo.php',
- 'RectorPrefix202405\\Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php',
- 'RectorPrefix202405\\Nette\\Utils\\Finder' => $vendorDir . '/nette/utils/src/Utils/Finder.php',
- 'RectorPrefix202405\\Nette\\Utils\\Floats' => $vendorDir . '/nette/utils/src/Utils/Floats.php',
- 'RectorPrefix202405\\Nette\\Utils\\Helpers' => $vendorDir . '/nette/utils/src/Utils/Helpers.php',
- 'RectorPrefix202405\\Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php',
- 'RectorPrefix202405\\Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/compatibility.php',
- 'RectorPrefix202405\\Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php',
- 'RectorPrefix202405\\Nette\\Utils\\ImageColor' => $vendorDir . '/nette/utils/src/Utils/ImageColor.php',
- 'RectorPrefix202405\\Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\ImageType' => $vendorDir . '/nette/utils/src/Utils/ImageType.php',
- 'RectorPrefix202405\\Nette\\Utils\\Iterables' => $vendorDir . '/nette/utils/src/Utils/Iterables.php',
- 'RectorPrefix202405\\Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php',
- 'RectorPrefix202405\\Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php',
- 'RectorPrefix202405\\Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php',
- 'RectorPrefix202405\\Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php',
- 'RectorPrefix202405\\Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php',
- 'RectorPrefix202405\\Nette\\Utils\\ReflectionMethod' => $vendorDir . '/nette/utils/src/Utils/ReflectionMethod.php',
- 'RectorPrefix202405\\Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php',
- 'RectorPrefix202405\\Nette\\Utils\\Type' => $vendorDir . '/nette/utils/src/Utils/Type.php',
- 'RectorPrefix202405\\Nette\\Utils\\UnknownImageFileException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\Validators' => $vendorDir . '/nette/utils/src/Utils/Validators.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\CiDetector' => $vendorDir . '/ondram/ci-detector/src/CiDetector.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\CiDetectorInterface' => $vendorDir . '/ondram/ci-detector/src/CiDetectorInterface.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\AbstractCi' => $vendorDir . '/ondram/ci-detector/src/Ci/AbstractCi.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\AppVeyor' => $vendorDir . '/ondram/ci-detector/src/Ci/AppVeyor.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\AwsCodeBuild' => $vendorDir . '/ondram/ci-detector/src/Ci/AwsCodeBuild.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\AzurePipelines' => $vendorDir . '/ondram/ci-detector/src/Ci/AzurePipelines.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Bamboo' => $vendorDir . '/ondram/ci-detector/src/Ci/Bamboo.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\BitbucketPipelines' => $vendorDir . '/ondram/ci-detector/src/Ci/BitbucketPipelines.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Buddy' => $vendorDir . '/ondram/ci-detector/src/Ci/Buddy.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\CiInterface' => $vendorDir . '/ondram/ci-detector/src/Ci/CiInterface.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Circle' => $vendorDir . '/ondram/ci-detector/src/Ci/Circle.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Codeship' => $vendorDir . '/ondram/ci-detector/src/Ci/Codeship.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Continuousphp' => $vendorDir . '/ondram/ci-detector/src/Ci/Continuousphp.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Drone' => $vendorDir . '/ondram/ci-detector/src/Ci/Drone.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\GitHubActions' => $vendorDir . '/ondram/ci-detector/src/Ci/GitHubActions.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\GitLab' => $vendorDir . '/ondram/ci-detector/src/Ci/GitLab.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Jenkins' => $vendorDir . '/ondram/ci-detector/src/Ci/Jenkins.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\SourceHut' => $vendorDir . '/ondram/ci-detector/src/Ci/SourceHut.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\TeamCity' => $vendorDir . '/ondram/ci-detector/src/Ci/TeamCity.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Travis' => $vendorDir . '/ondram/ci-detector/src/Ci/Travis.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Wercker' => $vendorDir . '/ondram/ci-detector/src/Ci/Wercker.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Env' => $vendorDir . '/ondram/ci-detector/src/Env.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Exception\\CiNotDetectedException' => $vendorDir . '/ondram/ci-detector/src/Exception/CiNotDetectedException.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\TrinaryLogic' => $vendorDir . '/ondram/ci-detector/src/TrinaryLogic.php',
- 'RectorPrefix202405\\Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php',
- 'RectorPrefix202405\\Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php',
- 'RectorPrefix202405\\Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php',
- 'RectorPrefix202405\\Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/src/AbstractLogger.php',
- 'RectorPrefix202405\\Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/src/InvalidArgumentException.php',
- 'RectorPrefix202405\\Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/src/LogLevel.php',
- 'RectorPrefix202405\\Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/src/LoggerAwareInterface.php',
- 'RectorPrefix202405\\Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/src/LoggerAwareTrait.php',
- 'RectorPrefix202405\\Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/src/LoggerInterface.php',
- 'RectorPrefix202405\\Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/src/LoggerTrait.php',
- 'RectorPrefix202405\\Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/src/NullLogger.php',
- 'RectorPrefix202405\\Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php',
- 'RectorPrefix202405\\Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php',
- 'RectorPrefix202405\\Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php',
- 'RectorPrefix202405\\React\\Cache\\ArrayCache' => $vendorDir . '/react/cache/src/ArrayCache.php',
- 'RectorPrefix202405\\React\\Cache\\CacheInterface' => $vendorDir . '/react/cache/src/CacheInterface.php',
- 'RectorPrefix202405\\React\\ChildProcess\\Process' => $vendorDir . '/react/child-process/src/Process.php',
- 'RectorPrefix202405\\React\\Dns\\BadServerException' => $vendorDir . '/react/dns/src/BadServerException.php',
- 'RectorPrefix202405\\React\\Dns\\Config\\Config' => $vendorDir . '/react/dns/src/Config/Config.php',
- 'RectorPrefix202405\\React\\Dns\\Config\\HostsFile' => $vendorDir . '/react/dns/src/Config/HostsFile.php',
- 'RectorPrefix202405\\React\\Dns\\Model\\Message' => $vendorDir . '/react/dns/src/Model/Message.php',
- 'RectorPrefix202405\\React\\Dns\\Model\\Record' => $vendorDir . '/react/dns/src/Model/Record.php',
- 'RectorPrefix202405\\React\\Dns\\Protocol\\BinaryDumper' => $vendorDir . '/react/dns/src/Protocol/BinaryDumper.php',
- 'RectorPrefix202405\\React\\Dns\\Protocol\\Parser' => $vendorDir . '/react/dns/src/Protocol/Parser.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\CachingExecutor' => $vendorDir . '/react/dns/src/Query/CachingExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\CancellationException' => $vendorDir . '/react/dns/src/Query/CancellationException.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\CoopExecutor' => $vendorDir . '/react/dns/src/Query/CoopExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\ExecutorInterface' => $vendorDir . '/react/dns/src/Query/ExecutorInterface.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\FallbackExecutor' => $vendorDir . '/react/dns/src/Query/FallbackExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\HostsFileExecutor' => $vendorDir . '/react/dns/src/Query/HostsFileExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\Query' => $vendorDir . '/react/dns/src/Query/Query.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\RetryExecutor' => $vendorDir . '/react/dns/src/Query/RetryExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\SelectiveTransportExecutor' => $vendorDir . '/react/dns/src/Query/SelectiveTransportExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\TcpTransportExecutor' => $vendorDir . '/react/dns/src/Query/TcpTransportExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\TimeoutException' => $vendorDir . '/react/dns/src/Query/TimeoutException.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\TimeoutExecutor' => $vendorDir . '/react/dns/src/Query/TimeoutExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\UdpTransportExecutor' => $vendorDir . '/react/dns/src/Query/UdpTransportExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\RecordNotFoundException' => $vendorDir . '/react/dns/src/RecordNotFoundException.php',
- 'RectorPrefix202405\\React\\Dns\\Resolver\\Factory' => $vendorDir . '/react/dns/src/Resolver/Factory.php',
- 'RectorPrefix202405\\React\\Dns\\Resolver\\Resolver' => $vendorDir . '/react/dns/src/Resolver/Resolver.php',
- 'RectorPrefix202405\\React\\Dns\\Resolver\\ResolverInterface' => $vendorDir . '/react/dns/src/Resolver/ResolverInterface.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtEvLoop' => $vendorDir . '/react/event-loop/src/ExtEvLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtEventLoop' => $vendorDir . '/react/event-loop/src/ExtEventLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtLibevLoop' => $vendorDir . '/react/event-loop/src/ExtLibevLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtLibeventLoop' => $vendorDir . '/react/event-loop/src/ExtLibeventLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtUvLoop' => $vendorDir . '/react/event-loop/src/ExtUvLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\Factory' => $vendorDir . '/react/event-loop/src/Factory.php',
- 'RectorPrefix202405\\React\\EventLoop\\Loop' => $vendorDir . '/react/event-loop/src/Loop.php',
- 'RectorPrefix202405\\React\\EventLoop\\LoopInterface' => $vendorDir . '/react/event-loop/src/LoopInterface.php',
- 'RectorPrefix202405\\React\\EventLoop\\SignalsHandler' => $vendorDir . '/react/event-loop/src/SignalsHandler.php',
- 'RectorPrefix202405\\React\\EventLoop\\StreamSelectLoop' => $vendorDir . '/react/event-loop/src/StreamSelectLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\Tick\\FutureTickQueue' => $vendorDir . '/react/event-loop/src/Tick/FutureTickQueue.php',
- 'RectorPrefix202405\\React\\EventLoop\\TimerInterface' => $vendorDir . '/react/event-loop/src/TimerInterface.php',
- 'RectorPrefix202405\\React\\EventLoop\\Timer\\Timer' => $vendorDir . '/react/event-loop/src/Timer/Timer.php',
- 'RectorPrefix202405\\React\\EventLoop\\Timer\\Timers' => $vendorDir . '/react/event-loop/src/Timer/Timers.php',
- 'RectorPrefix202405\\React\\Promise\\CancellablePromiseInterface' => $vendorDir . '/react/promise/src/CancellablePromiseInterface.php',
- 'RectorPrefix202405\\React\\Promise\\CancellationQueue' => $vendorDir . '/react/promise/src/CancellationQueue.php',
- 'RectorPrefix202405\\React\\Promise\\Deferred' => $vendorDir . '/react/promise/src/Deferred.php',
- 'RectorPrefix202405\\React\\Promise\\Exception\\LengthException' => $vendorDir . '/react/promise/src/Exception/LengthException.php',
- 'RectorPrefix202405\\React\\Promise\\ExtendedPromiseInterface' => $vendorDir . '/react/promise/src/ExtendedPromiseInterface.php',
- 'RectorPrefix202405\\React\\Promise\\FulfilledPromise' => $vendorDir . '/react/promise/src/FulfilledPromise.php',
- 'RectorPrefix202405\\React\\Promise\\LazyPromise' => $vendorDir . '/react/promise/src/LazyPromise.php',
- 'RectorPrefix202405\\React\\Promise\\Promise' => $vendorDir . '/react/promise/src/Promise.php',
- 'RectorPrefix202405\\React\\Promise\\PromiseInterface' => $vendorDir . '/react/promise/src/PromiseInterface.php',
- 'RectorPrefix202405\\React\\Promise\\PromisorInterface' => $vendorDir . '/react/promise/src/PromisorInterface.php',
- 'RectorPrefix202405\\React\\Promise\\RejectedPromise' => $vendorDir . '/react/promise/src/RejectedPromise.php',
- 'RectorPrefix202405\\React\\Promise\\UnhandledRejectionException' => $vendorDir . '/react/promise/src/UnhandledRejectionException.php',
- 'RectorPrefix202405\\React\\Socket\\Connection' => $vendorDir . '/react/socket/src/Connection.php',
- 'RectorPrefix202405\\React\\Socket\\ConnectionInterface' => $vendorDir . '/react/socket/src/ConnectionInterface.php',
- 'RectorPrefix202405\\React\\Socket\\Connector' => $vendorDir . '/react/socket/src/Connector.php',
- 'RectorPrefix202405\\React\\Socket\\ConnectorInterface' => $vendorDir . '/react/socket/src/ConnectorInterface.php',
- 'RectorPrefix202405\\React\\Socket\\DnsConnector' => $vendorDir . '/react/socket/src/DnsConnector.php',
- 'RectorPrefix202405\\React\\Socket\\FdServer' => $vendorDir . '/react/socket/src/FdServer.php',
- 'RectorPrefix202405\\React\\Socket\\FixedUriConnector' => $vendorDir . '/react/socket/src/FixedUriConnector.php',
- 'RectorPrefix202405\\React\\Socket\\HappyEyeBallsConnectionBuilder' => $vendorDir . '/react/socket/src/HappyEyeBallsConnectionBuilder.php',
- 'RectorPrefix202405\\React\\Socket\\HappyEyeBallsConnector' => $vendorDir . '/react/socket/src/HappyEyeBallsConnector.php',
- 'RectorPrefix202405\\React\\Socket\\LimitingServer' => $vendorDir . '/react/socket/src/LimitingServer.php',
- 'RectorPrefix202405\\React\\Socket\\SecureConnector' => $vendorDir . '/react/socket/src/SecureConnector.php',
- 'RectorPrefix202405\\React\\Socket\\SecureServer' => $vendorDir . '/react/socket/src/SecureServer.php',
- 'RectorPrefix202405\\React\\Socket\\Server' => $vendorDir . '/react/socket/src/Server.php',
- 'RectorPrefix202405\\React\\Socket\\ServerInterface' => $vendorDir . '/react/socket/src/ServerInterface.php',
- 'RectorPrefix202405\\React\\Socket\\SocketServer' => $vendorDir . '/react/socket/src/SocketServer.php',
- 'RectorPrefix202405\\React\\Socket\\StreamEncryption' => $vendorDir . '/react/socket/src/StreamEncryption.php',
- 'RectorPrefix202405\\React\\Socket\\TcpConnector' => $vendorDir . '/react/socket/src/TcpConnector.php',
- 'RectorPrefix202405\\React\\Socket\\TcpServer' => $vendorDir . '/react/socket/src/TcpServer.php',
- 'RectorPrefix202405\\React\\Socket\\TimeoutConnector' => $vendorDir . '/react/socket/src/TimeoutConnector.php',
- 'RectorPrefix202405\\React\\Socket\\UnixConnector' => $vendorDir . '/react/socket/src/UnixConnector.php',
- 'RectorPrefix202405\\React\\Socket\\UnixServer' => $vendorDir . '/react/socket/src/UnixServer.php',
- 'RectorPrefix202405\\React\\Stream\\CompositeStream' => $vendorDir . '/react/stream/src/CompositeStream.php',
- 'RectorPrefix202405\\React\\Stream\\DuplexResourceStream' => $vendorDir . '/react/stream/src/DuplexResourceStream.php',
- 'RectorPrefix202405\\React\\Stream\\DuplexStreamInterface' => $vendorDir . '/react/stream/src/DuplexStreamInterface.php',
- 'RectorPrefix202405\\React\\Stream\\ReadableResourceStream' => $vendorDir . '/react/stream/src/ReadableResourceStream.php',
- 'RectorPrefix202405\\React\\Stream\\ReadableStreamInterface' => $vendorDir . '/react/stream/src/ReadableStreamInterface.php',
- 'RectorPrefix202405\\React\\Stream\\ThroughStream' => $vendorDir . '/react/stream/src/ThroughStream.php',
- 'RectorPrefix202405\\React\\Stream\\Util' => $vendorDir . '/react/stream/src/Util.php',
- 'RectorPrefix202405\\React\\Stream\\WritableResourceStream' => $vendorDir . '/react/stream/src/WritableResourceStream.php',
- 'RectorPrefix202405\\React\\Stream\\WritableStreamInterface' => $vendorDir . '/react/stream/src/WritableStreamInterface.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Attribute\\AsCommand' => $vendorDir . '/symfony/console/Attribute/AsCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\CI\\GithubActionReporter' => $vendorDir . '/symfony/console/CI/GithubActionReporter.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Color' => $vendorDir . '/symfony/console/Color.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\CompleteCommand' => $vendorDir . '/symfony/console/Command/CompleteCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => $vendorDir . '/symfony/console/Command/DumpCompletionCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\LazyCommand' => $vendorDir . '/symfony/console/Command/LazyCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => $vendorDir . '/symfony/console/Command/SignalableCommandInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\TraceableCommand' => $vendorDir . '/symfony/console/Command/TraceableCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\CompletionInput' => $vendorDir . '/symfony/console/Completion/CompletionInput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => $vendorDir . '/symfony/console/Completion/CompletionSuggestions.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/BashCompletionOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => $vendorDir . '/symfony/console/Completion/Output/CompletionOutputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/FishCompletionOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/ZshCompletionOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Suggestion' => $vendorDir . '/symfony/console/Completion/Suggestion.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => $vendorDir . '/symfony/console/DataCollector/CommandDataCollector.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Debug\\CliRequest' => $vendorDir . '/symfony/console/Debug/CliRequest.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => $vendorDir . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => $vendorDir . '/symfony/console/Exception/RunCommandFailedException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\OutputWrapper' => $vendorDir . '/symfony/console/Helper/OutputWrapper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableCellStyle' => $vendorDir . '/symfony/console/Helper/TableCellStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Messenger\\RunCommandContext' => $vendorDir . '/symfony/console/Messenger/RunCommandContext.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => $vendorDir . '/symfony/console/Messenger/RunCommandMessage.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => $vendorDir . '/symfony/console/Messenger/RunCommandMessageHandler.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\AnsiColorMode' => $vendorDir . '/symfony/console/Output/AnsiColorMode.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => $vendorDir . '/symfony/console/Output/TrimmedBufferOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => $vendorDir . '/symfony/console/SignalRegistry/SignalMap.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => $vendorDir . '/symfony/console/SignalRegistry/SignalRegistry.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/filesystem/Exception/InvalidArgumentException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => $vendorDir . '/symfony/filesystem/Exception/RuntimeException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Path' => $vendorDir . '/symfony/filesystem/Path.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\LazyIterator' => $vendorDir . '/symfony/finder/Iterator/LazyIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => $vendorDir . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => $vendorDir . '/symfony/process/Exception/RunProcessFailedException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Messenger\\RunProcessContext' => $vendorDir . '/symfony/process/Messenger/RunProcessContext.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => $vendorDir . '/symfony/process/Messenger/RunProcessMessage.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => $vendorDir . '/symfony/process/Messenger/RunProcessMessageHandler.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\PhpSubprocess' => $vendorDir . '/symfony/process/PhpSubprocess.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Command\\LintCommand' => $vendorDir . '/symfony/yaml/Command/LintCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Dumper' => $vendorDir . '/symfony/yaml/Dumper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Escaper' => $vendorDir . '/symfony/yaml/Escaper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Exception\\DumpException' => $vendorDir . '/symfony/yaml/Exception/DumpException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/yaml/Exception/ExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Exception\\ParseException' => $vendorDir . '/symfony/yaml/Exception/ParseException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Exception\\RuntimeException' => $vendorDir . '/symfony/yaml/Exception/RuntimeException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Inline' => $vendorDir . '/symfony/yaml/Inline.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Parser' => $vendorDir . '/symfony/yaml/Parser.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Tag\\TaggedValue' => $vendorDir . '/symfony/yaml/Tag/TaggedValue.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Unescaper' => $vendorDir . '/symfony/yaml/Unescaper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Yaml' => $vendorDir . '/symfony/yaml/Yaml.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceCollectionInterface' => $vendorDir . '/symfony/service-contracts/ServiceCollectionInterface.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\CommandLine\\WorkerCommandLineFactory' => $vendorDir . '/symplify/easy-parallel/src/CommandLine/WorkerCommandLineFactory.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Contract\\SerializableInterface' => $vendorDir . '/symplify/easy-parallel/src/Contract/SerializableInterface.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\CpuCoreCountProvider' => $vendorDir . '/symplify/easy-parallel/src/CpuCoreCountProvider.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Enum\\Action' => $vendorDir . '/symplify/easy-parallel/src/Enum/Action.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Enum\\Content' => $vendorDir . '/symplify/easy-parallel/src/Enum/Content.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Enum\\ReactCommand' => $vendorDir . '/symplify/easy-parallel/src/Enum/ReactCommand.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Enum\\ReactEvent' => $vendorDir . '/symplify/easy-parallel/src/Enum/ReactEvent.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Exception\\ParallelShouldNotHappenException' => $vendorDir . '/symplify/easy-parallel/src/Exception/ParallelShouldNotHappenException.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Reflection\\CommandFromReflectionFactory' => $vendorDir . '/symplify/easy-parallel/src/Reflection/CommandFromReflectionFactory.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ScheduleFactory' => $vendorDir . '/symplify/easy-parallel/src/ScheduleFactory.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ValueObject\\EasyParallelConfig' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/EasyParallelConfig.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ValueObject\\ParallelProcess' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/ParallelProcess.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ValueObject\\ProcessPool' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/ProcessPool.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ValueObject\\Schedule' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/Schedule.php',
- 'RectorPrefix202405\\Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php',
- 'RectorPrefix202405\\Webmozart\\Assert\\InvalidArgumentException' => $vendorDir . '/webmozart/assert/src/InvalidArgumentException.php',
- 'RectorPrefix202405\\Webmozart\\Assert\\Mixin' => $vendorDir . '/webmozart/assert/src/Mixin.php',
+ 'RectorPrefix202410\\Clue\\React\\NDJson\\Decoder' => $vendorDir . '/clue/ndjson-react/src/Decoder.php',
+ 'RectorPrefix202410\\Clue\\React\\NDJson\\Encoder' => $vendorDir . '/clue/ndjson-react/src/Encoder.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchAllResult' => $vendorDir . '/composer/pcre/src/MatchAllResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchAllStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchAllStrictGroupsResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchAllWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchAllWithOffsetsResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchResult' => $vendorDir . '/composer/pcre/src/MatchResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchStrictGroupsResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchWithOffsetsResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\InvalidRegexPatternRule' => $vendorDir . '/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\PregMatchFlags' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchFlags.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\PregMatchParameterOutTypeExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\PregMatchTypeSpecifyingExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\PregReplaceCallbackClosureTypeExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\UnsafeStrictGroupsCallRule' => $vendorDir . '/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PcreException' => $vendorDir . '/composer/pcre/src/PcreException.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\Preg' => $vendorDir . '/composer/pcre/src/Preg.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\Regex' => $vendorDir . '/composer/pcre/src/Regex.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\ReplaceResult' => $vendorDir . '/composer/pcre/src/ReplaceResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\UnexpectedNullMatchException' => $vendorDir . '/composer/pcre/src/UnexpectedNullMatchException.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php',
+ 'RectorPrefix202410\\Composer\\Semver\\CompilingMatcher' => $vendorDir . '/composer/semver/src/CompilingMatcher.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\Bound' => $vendorDir . '/composer/semver/src/Constraint/Bound.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\MatchAllConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchAllConstraint.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchNoneConstraint.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Interval' => $vendorDir . '/composer/semver/src/Interval.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Intervals' => $vendorDir . '/composer/semver/src/Intervals.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php',
+ 'RectorPrefix202410\\Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php',
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php',
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php',
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\Status' => $vendorDir . '/composer/xdebug-handler/src/Status.php',
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\XdebugHandler' => $vendorDir . '/composer/xdebug-handler/src/XdebugHandler.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\CachedWordInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\GenericLanguageInflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Inflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Language' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Language.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\LanguageInflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/LanguageInflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\NoopWordInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/NoopWordInflector.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\English\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\English\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\English\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\English\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\French\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\French\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\French\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\French\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Pattern' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Pattern.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Patterns' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Portuguese\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Portuguese\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Portuguese\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Portuguese\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Ruleset' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Ruleset.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Spanish\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Spanish\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Spanish\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Spanish\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Substitution' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitution.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Substitutions' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Transformation' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Transformations' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Turkish\\Inflectible' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Turkish\\InflectorFactory' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Turkish\\Rules' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Turkish\\Uninflected' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Word' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Word.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\RulesetInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\WordInflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php',
+ 'RectorPrefix202410\\Evenement\\EventEmitter' => $vendorDir . '/evenement/evenement/src/EventEmitter.php',
+ 'RectorPrefix202410\\Evenement\\EventEmitterInterface' => $vendorDir . '/evenement/evenement/src/EventEmitterInterface.php',
+ 'RectorPrefix202410\\Evenement\\EventEmitterTrait' => $vendorDir . '/evenement/evenement/src/EventEmitterTrait.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\CpuCoreCounter' => $vendorDir . '/fidry/cpu-core-counter/src/CpuCoreCounter.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Diagnoser' => $vendorDir . '/fidry/cpu-core-counter/src/Diagnoser.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\LscpuLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\LscpuPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => $vendorDir . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\ParallelisationResult' => $vendorDir . '/fidry/cpu-core-counter/src/ParallelisationResult.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Auth' => $vendorDir . '/illuminate/container/Attributes/Auth.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Authenticated' => $vendorDir . '/illuminate/container/Attributes/Authenticated.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Cache' => $vendorDir . '/illuminate/container/Attributes/Cache.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Config' => $vendorDir . '/illuminate/container/Attributes/Config.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\CurrentUser' => $vendorDir . '/illuminate/container/Attributes/CurrentUser.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\DB' => $vendorDir . '/illuminate/container/Attributes/DB.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Database' => $vendorDir . '/illuminate/container/Attributes/Database.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Log' => $vendorDir . '/illuminate/container/Attributes/Log.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Storage' => $vendorDir . '/illuminate/container/Attributes/Storage.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Tag' => $vendorDir . '/illuminate/container/Attributes/Tag.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\BoundMethod' => $vendorDir . '/illuminate/container/BoundMethod.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Container' => $vendorDir . '/illuminate/container/Container.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\ContextualBindingBuilder' => $vendorDir . '/illuminate/container/ContextualBindingBuilder.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\EntryNotFoundException' => $vendorDir . '/illuminate/container/EntryNotFoundException.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\RewindableGenerator' => $vendorDir . '/illuminate/container/RewindableGenerator.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Util' => $vendorDir . '/illuminate/container/Util.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Access\\Authorizable' => $vendorDir . '/illuminate/contracts/Auth/Access/Authorizable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Access\\Gate' => $vendorDir . '/illuminate/contracts/Auth/Access/Gate.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Authenticatable' => $vendorDir . '/illuminate/contracts/Auth/Authenticatable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\CanResetPassword' => $vendorDir . '/illuminate/contracts/Auth/CanResetPassword.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Factory' => $vendorDir . '/illuminate/contracts/Auth/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Guard' => $vendorDir . '/illuminate/contracts/Auth/Guard.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => $vendorDir . '/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\MustVerifyEmail' => $vendorDir . '/illuminate/contracts/Auth/MustVerifyEmail.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\PasswordBroker' => $vendorDir . '/illuminate/contracts/Auth/PasswordBroker.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => $vendorDir . '/illuminate/contracts/Auth/PasswordBrokerFactory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\StatefulGuard' => $vendorDir . '/illuminate/contracts/Auth/StatefulGuard.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => $vendorDir . '/illuminate/contracts/Auth/SupportsBasicAuth.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\UserProvider' => $vendorDir . '/illuminate/contracts/Auth/UserProvider.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\Broadcaster' => $vendorDir . '/illuminate/contracts/Broadcasting/Broadcaster.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\Factory' => $vendorDir . '/illuminate/contracts/Broadcasting/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel' => $vendorDir . '/illuminate/contracts/Broadcasting/HasBroadcastChannel.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\ShouldBeUnique' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBeUnique.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBroadcast.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => $vendorDir . '/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Bus\\Dispatcher' => $vendorDir . '/illuminate/contracts/Bus/Dispatcher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Bus\\QueueingDispatcher' => $vendorDir . '/illuminate/contracts/Bus/QueueingDispatcher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\Factory' => $vendorDir . '/illuminate/contracts/Cache/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\Lock' => $vendorDir . '/illuminate/contracts/Cache/Lock.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\LockProvider' => $vendorDir . '/illuminate/contracts/Cache/LockProvider.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\LockTimeoutException' => $vendorDir . '/illuminate/contracts/Cache/LockTimeoutException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\Repository' => $vendorDir . '/illuminate/contracts/Cache/Repository.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\Store' => $vendorDir . '/illuminate/contracts/Cache/Store.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Concurrency\\Driver' => $vendorDir . '/illuminate/contracts/Concurrency/Driver.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Config\\Repository' => $vendorDir . '/illuminate/contracts/Config/Repository.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Console\\Application' => $vendorDir . '/illuminate/contracts/Console/Application.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Console\\Isolatable' => $vendorDir . '/illuminate/contracts/Console/Isolatable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Console\\Kernel' => $vendorDir . '/illuminate/contracts/Console/Kernel.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Console\\PromptsForMissingInput' => $vendorDir . '/illuminate/contracts/Console/PromptsForMissingInput.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\BindingResolutionException' => $vendorDir . '/illuminate/contracts/Container/BindingResolutionException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\CircularDependencyException' => $vendorDir . '/illuminate/contracts/Container/CircularDependencyException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\Container' => $vendorDir . '/illuminate/contracts/Container/Container.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\ContextualAttribute' => $vendorDir . '/illuminate/contracts/Container/ContextualAttribute.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => $vendorDir . '/illuminate/contracts/Container/ContextualBindingBuilder.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cookie\\Factory' => $vendorDir . '/illuminate/contracts/Cookie/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cookie\\QueueingFactory' => $vendorDir . '/illuminate/contracts/Cookie/QueueingFactory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\Builder' => $vendorDir . '/illuminate/contracts/Database/Eloquent/Builder.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\Castable' => $vendorDir . '/illuminate/contracts/Database/Eloquent/Castable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/CastsAttributes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\DeviatesCastableAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\SerializesCastableAttributes' => $vendorDir . '/illuminate/contracts/Database/Eloquent/SerializesCastableAttributes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\SupportsPartialRelations' => $vendorDir . '/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => $vendorDir . '/illuminate/contracts/Database/Events/MigrationEvent.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\ModelIdentifier' => $vendorDir . '/illuminate/contracts/Database/ModelIdentifier.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Query\\Builder' => $vendorDir . '/illuminate/contracts/Database/Query/Builder.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Query\\ConditionExpression' => $vendorDir . '/illuminate/contracts/Database/Query/ConditionExpression.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Query\\Expression' => $vendorDir . '/illuminate/contracts/Database/Query/Expression.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Debug\\ExceptionHandler' => $vendorDir . '/illuminate/contracts/Debug/ExceptionHandler.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Debug\\ShouldntReport' => $vendorDir . '/illuminate/contracts/Debug/ShouldntReport.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Encryption\\DecryptException' => $vendorDir . '/illuminate/contracts/Encryption/DecryptException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Encryption\\EncryptException' => $vendorDir . '/illuminate/contracts/Encryption/EncryptException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Encryption\\Encrypter' => $vendorDir . '/illuminate/contracts/Encryption/Encrypter.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Encryption\\StringEncrypter' => $vendorDir . '/illuminate/contracts/Encryption/StringEncrypter.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Events\\Dispatcher' => $vendorDir . '/illuminate/contracts/Events/Dispatcher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Events\\ShouldDispatchAfterCommit' => $vendorDir . '/illuminate/contracts/Events/ShouldDispatchAfterCommit.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Events\\ShouldHandleEventsAfterCommit' => $vendorDir . '/illuminate/contracts/Events/ShouldHandleEventsAfterCommit.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\Cloud' => $vendorDir . '/illuminate/contracts/Filesystem/Cloud.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\Factory' => $vendorDir . '/illuminate/contracts/Filesystem/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => $vendorDir . '/illuminate/contracts/Filesystem/FileNotFoundException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\Filesystem' => $vendorDir . '/illuminate/contracts/Filesystem/Filesystem.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\LockTimeoutException' => $vendorDir . '/illuminate/contracts/Filesystem/LockTimeoutException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\Application' => $vendorDir . '/illuminate/contracts/Foundation/Application.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\CachesConfiguration' => $vendorDir . '/illuminate/contracts/Foundation/CachesConfiguration.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\CachesRoutes' => $vendorDir . '/illuminate/contracts/Foundation/CachesRoutes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\ExceptionRenderer' => $vendorDir . '/illuminate/contracts/Foundation/ExceptionRenderer.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\MaintenanceMode' => $vendorDir . '/illuminate/contracts/Foundation/MaintenanceMode.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Hashing\\Hasher' => $vendorDir . '/illuminate/contracts/Hashing/Hasher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Http\\Kernel' => $vendorDir . '/illuminate/contracts/Http/Kernel.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\Attachable' => $vendorDir . '/illuminate/contracts/Mail/Attachable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\Factory' => $vendorDir . '/illuminate/contracts/Mail/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\MailQueue' => $vendorDir . '/illuminate/contracts/Mail/MailQueue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\Mailable' => $vendorDir . '/illuminate/contracts/Mail/Mailable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\Mailer' => $vendorDir . '/illuminate/contracts/Mail/Mailer.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Notifications\\Dispatcher' => $vendorDir . '/illuminate/contracts/Notifications/Dispatcher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Notifications\\Factory' => $vendorDir . '/illuminate/contracts/Notifications/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pagination\\CursorPaginator' => $vendorDir . '/illuminate/contracts/Pagination/CursorPaginator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => $vendorDir . '/illuminate/contracts/Pagination/LengthAwarePaginator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pagination\\Paginator' => $vendorDir . '/illuminate/contracts/Pagination/Paginator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pipeline\\Hub' => $vendorDir . '/illuminate/contracts/Pipeline/Hub.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pipeline\\Pipeline' => $vendorDir . '/illuminate/contracts/Pipeline/Pipeline.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Process\\InvokedProcess' => $vendorDir . '/illuminate/contracts/Process/InvokedProcess.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Process\\ProcessResult' => $vendorDir . '/illuminate/contracts/Process/ProcessResult.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ClearableQueue' => $vendorDir . '/illuminate/contracts/Queue/ClearableQueue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\EntityNotFoundException' => $vendorDir . '/illuminate/contracts/Queue/EntityNotFoundException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\EntityResolver' => $vendorDir . '/illuminate/contracts/Queue/EntityResolver.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\Factory' => $vendorDir . '/illuminate/contracts/Queue/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\Job' => $vendorDir . '/illuminate/contracts/Queue/Job.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\Monitor' => $vendorDir . '/illuminate/contracts/Queue/Monitor.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\Queue' => $vendorDir . '/illuminate/contracts/Queue/Queue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\QueueableCollection' => $vendorDir . '/illuminate/contracts/Queue/QueueableCollection.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\QueueableEntity' => $vendorDir . '/illuminate/contracts/Queue/QueueableEntity.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldBeEncrypted' => $vendorDir . '/illuminate/contracts/Queue/ShouldBeEncrypted.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldBeUnique' => $vendorDir . '/illuminate/contracts/Queue/ShouldBeUnique.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldBeUniqueUntilProcessing' => $vendorDir . '/illuminate/contracts/Queue/ShouldBeUniqueUntilProcessing.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldQueue' => $vendorDir . '/illuminate/contracts/Queue/ShouldQueue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldQueueAfterCommit' => $vendorDir . '/illuminate/contracts/Queue/ShouldQueueAfterCommit.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Redis\\Connection' => $vendorDir . '/illuminate/contracts/Redis/Connection.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Redis\\Connector' => $vendorDir . '/illuminate/contracts/Redis/Connector.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Redis\\Factory' => $vendorDir . '/illuminate/contracts/Redis/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => $vendorDir . '/illuminate/contracts/Redis/LimiterTimeoutException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\BindingRegistrar' => $vendorDir . '/illuminate/contracts/Routing/BindingRegistrar.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\Registrar' => $vendorDir . '/illuminate/contracts/Routing/Registrar.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\ResponseFactory' => $vendorDir . '/illuminate/contracts/Routing/ResponseFactory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\UrlGenerator' => $vendorDir . '/illuminate/contracts/Routing/UrlGenerator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\UrlRoutable' => $vendorDir . '/illuminate/contracts/Routing/UrlRoutable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Session\\Middleware\\AuthenticatesSessions' => $vendorDir . '/illuminate/contracts/Session/Middleware/AuthenticatesSessions.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Session\\Session' => $vendorDir . '/illuminate/contracts/Session/Session.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Arrayable' => $vendorDir . '/illuminate/contracts/Support/Arrayable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\CanBeEscapedWhenCastToString' => $vendorDir . '/illuminate/contracts/Support/CanBeEscapedWhenCastToString.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\DeferrableProvider' => $vendorDir . '/illuminate/contracts/Support/DeferrableProvider.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\DeferringDisplayableValue' => $vendorDir . '/illuminate/contracts/Support/DeferringDisplayableValue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Htmlable' => $vendorDir . '/illuminate/contracts/Support/Htmlable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Jsonable' => $vendorDir . '/illuminate/contracts/Support/Jsonable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\MessageBag' => $vendorDir . '/illuminate/contracts/Support/MessageBag.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\MessageProvider' => $vendorDir . '/illuminate/contracts/Support/MessageProvider.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Renderable' => $vendorDir . '/illuminate/contracts/Support/Renderable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Responsable' => $vendorDir . '/illuminate/contracts/Support/Responsable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\ValidatedData' => $vendorDir . '/illuminate/contracts/Support/ValidatedData.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Translation\\HasLocalePreference' => $vendorDir . '/illuminate/contracts/Translation/HasLocalePreference.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Translation\\Loader' => $vendorDir . '/illuminate/contracts/Translation/Loader.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Translation\\Translator' => $vendorDir . '/illuminate/contracts/Translation/Translator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\DataAwareRule' => $vendorDir . '/illuminate/contracts/Validation/DataAwareRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\Factory' => $vendorDir . '/illuminate/contracts/Validation/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\ImplicitRule' => $vendorDir . '/illuminate/contracts/Validation/ImplicitRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\InvokableRule' => $vendorDir . '/illuminate/contracts/Validation/InvokableRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\Rule' => $vendorDir . '/illuminate/contracts/Validation/Rule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\UncompromisedVerifier' => $vendorDir . '/illuminate/contracts/Validation/UncompromisedVerifier.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => $vendorDir . '/illuminate/contracts/Validation/ValidatesWhenResolved.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\ValidationRule' => $vendorDir . '/illuminate/contracts/Validation/ValidationRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\Validator' => $vendorDir . '/illuminate/contracts/Validation/Validator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\ValidatorAwareRule' => $vendorDir . '/illuminate/contracts/Validation/ValidatorAwareRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\View\\Engine' => $vendorDir . '/illuminate/contracts/View/Engine.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\View\\Factory' => $vendorDir . '/illuminate/contracts/View/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\View\\View' => $vendorDir . '/illuminate/contracts/View/View.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\View\\ViewCompilationException' => $vendorDir . '/illuminate/contracts/View/ViewCompilationException.php',
+ 'RectorPrefix202410\\Nette\\ArgumentOutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\DeprecatedException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\DirectoryNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\FileNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\HtmlStringable' => $vendorDir . '/nette/utils/src/HtmlStringable.php',
+ 'RectorPrefix202410\\Nette\\IOException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\InvalidArgumentException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\InvalidStateException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Iterators\\CachingIterator' => $vendorDir . '/nette/utils/src/Iterators/CachingIterator.php',
+ 'RectorPrefix202410\\Nette\\Iterators\\Mapper' => $vendorDir . '/nette/utils/src/Iterators/Mapper.php',
+ 'RectorPrefix202410\\Nette\\Localization\\ITranslator' => $vendorDir . '/nette/utils/src/compatibility.php',
+ 'RectorPrefix202410\\Nette\\Localization\\Translator' => $vendorDir . '/nette/utils/src/Translator.php',
+ 'RectorPrefix202410\\Nette\\MemberAccessException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\NotImplementedException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\NotSupportedException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\OutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\SmartObject' => $vendorDir . '/nette/utils/src/SmartObject.php',
+ 'RectorPrefix202410\\Nette\\StaticClass' => $vendorDir . '/nette/utils/src/StaticClass.php',
+ 'RectorPrefix202410\\Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ArrayHash' => $vendorDir . '/nette/utils/src/Utils/ArrayHash.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ArrayList' => $vendorDir . '/nette/utils/src/Utils/ArrayList.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Arrays' => $vendorDir . '/nette/utils/src/Utils/Arrays.php',
+ 'RectorPrefix202410\\Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php',
+ 'RectorPrefix202410\\Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php',
+ 'RectorPrefix202410\\Nette\\Utils\\FileInfo' => $vendorDir . '/nette/utils/src/Utils/FileInfo.php',
+ 'RectorPrefix202410\\Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Finder' => $vendorDir . '/nette/utils/src/Utils/Finder.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Floats' => $vendorDir . '/nette/utils/src/Utils/Floats.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Helpers' => $vendorDir . '/nette/utils/src/Utils/Helpers.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php',
+ 'RectorPrefix202410\\Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/compatibility.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ImageColor' => $vendorDir . '/nette/utils/src/Utils/ImageColor.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ImageType' => $vendorDir . '/nette/utils/src/Utils/ImageType.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Iterables' => $vendorDir . '/nette/utils/src/Utils/Iterables.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php',
+ 'RectorPrefix202410\\Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ReflectionMethod' => $vendorDir . '/nette/utils/src/Utils/ReflectionMethod.php',
+ 'RectorPrefix202410\\Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Type' => $vendorDir . '/nette/utils/src/Utils/Type.php',
+ 'RectorPrefix202410\\Nette\\Utils\\UnknownImageFileException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Validators' => $vendorDir . '/nette/utils/src/Utils/Validators.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\CiDetector' => $vendorDir . '/ondram/ci-detector/src/CiDetector.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\CiDetectorInterface' => $vendorDir . '/ondram/ci-detector/src/CiDetectorInterface.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\AbstractCi' => $vendorDir . '/ondram/ci-detector/src/Ci/AbstractCi.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\AppVeyor' => $vendorDir . '/ondram/ci-detector/src/Ci/AppVeyor.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\AwsCodeBuild' => $vendorDir . '/ondram/ci-detector/src/Ci/AwsCodeBuild.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\AzurePipelines' => $vendorDir . '/ondram/ci-detector/src/Ci/AzurePipelines.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Bamboo' => $vendorDir . '/ondram/ci-detector/src/Ci/Bamboo.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\BitbucketPipelines' => $vendorDir . '/ondram/ci-detector/src/Ci/BitbucketPipelines.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Buddy' => $vendorDir . '/ondram/ci-detector/src/Ci/Buddy.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\CiInterface' => $vendorDir . '/ondram/ci-detector/src/Ci/CiInterface.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Circle' => $vendorDir . '/ondram/ci-detector/src/Ci/Circle.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Codeship' => $vendorDir . '/ondram/ci-detector/src/Ci/Codeship.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Continuousphp' => $vendorDir . '/ondram/ci-detector/src/Ci/Continuousphp.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Drone' => $vendorDir . '/ondram/ci-detector/src/Ci/Drone.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\GitHubActions' => $vendorDir . '/ondram/ci-detector/src/Ci/GitHubActions.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\GitLab' => $vendorDir . '/ondram/ci-detector/src/Ci/GitLab.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Jenkins' => $vendorDir . '/ondram/ci-detector/src/Ci/Jenkins.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\SourceHut' => $vendorDir . '/ondram/ci-detector/src/Ci/SourceHut.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\TeamCity' => $vendorDir . '/ondram/ci-detector/src/Ci/TeamCity.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Travis' => $vendorDir . '/ondram/ci-detector/src/Ci/Travis.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Wercker' => $vendorDir . '/ondram/ci-detector/src/Ci/Wercker.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Env' => $vendorDir . '/ondram/ci-detector/src/Env.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Exception\\CiNotDetectedException' => $vendorDir . '/ondram/ci-detector/src/Exception/CiNotDetectedException.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\TrinaryLogic' => $vendorDir . '/ondram/ci-detector/src/TrinaryLogic.php',
+ 'RectorPrefix202410\\Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php',
+ 'RectorPrefix202410\\Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php',
+ 'RectorPrefix202410\\Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php',
+ 'RectorPrefix202410\\Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/src/AbstractLogger.php',
+ 'RectorPrefix202410\\Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/src/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/src/LogLevel.php',
+ 'RectorPrefix202410\\Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/src/LoggerAwareInterface.php',
+ 'RectorPrefix202410\\Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/src/LoggerAwareTrait.php',
+ 'RectorPrefix202410\\Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/src/LoggerInterface.php',
+ 'RectorPrefix202410\\Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/src/LoggerTrait.php',
+ 'RectorPrefix202410\\Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/src/NullLogger.php',
+ 'RectorPrefix202410\\Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php',
+ 'RectorPrefix202410\\Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php',
+ 'RectorPrefix202410\\Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php',
+ 'RectorPrefix202410\\React\\Cache\\ArrayCache' => $vendorDir . '/react/cache/src/ArrayCache.php',
+ 'RectorPrefix202410\\React\\Cache\\CacheInterface' => $vendorDir . '/react/cache/src/CacheInterface.php',
+ 'RectorPrefix202410\\React\\ChildProcess\\Process' => $vendorDir . '/react/child-process/src/Process.php',
+ 'RectorPrefix202410\\React\\Dns\\BadServerException' => $vendorDir . '/react/dns/src/BadServerException.php',
+ 'RectorPrefix202410\\React\\Dns\\Config\\Config' => $vendorDir . '/react/dns/src/Config/Config.php',
+ 'RectorPrefix202410\\React\\Dns\\Config\\HostsFile' => $vendorDir . '/react/dns/src/Config/HostsFile.php',
+ 'RectorPrefix202410\\React\\Dns\\Model\\Message' => $vendorDir . '/react/dns/src/Model/Message.php',
+ 'RectorPrefix202410\\React\\Dns\\Model\\Record' => $vendorDir . '/react/dns/src/Model/Record.php',
+ 'RectorPrefix202410\\React\\Dns\\Protocol\\BinaryDumper' => $vendorDir . '/react/dns/src/Protocol/BinaryDumper.php',
+ 'RectorPrefix202410\\React\\Dns\\Protocol\\Parser' => $vendorDir . '/react/dns/src/Protocol/Parser.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\CachingExecutor' => $vendorDir . '/react/dns/src/Query/CachingExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\CancellationException' => $vendorDir . '/react/dns/src/Query/CancellationException.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\CoopExecutor' => $vendorDir . '/react/dns/src/Query/CoopExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\ExecutorInterface' => $vendorDir . '/react/dns/src/Query/ExecutorInterface.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\FallbackExecutor' => $vendorDir . '/react/dns/src/Query/FallbackExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\HostsFileExecutor' => $vendorDir . '/react/dns/src/Query/HostsFileExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\Query' => $vendorDir . '/react/dns/src/Query/Query.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\RetryExecutor' => $vendorDir . '/react/dns/src/Query/RetryExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\SelectiveTransportExecutor' => $vendorDir . '/react/dns/src/Query/SelectiveTransportExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\TcpTransportExecutor' => $vendorDir . '/react/dns/src/Query/TcpTransportExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\TimeoutException' => $vendorDir . '/react/dns/src/Query/TimeoutException.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\TimeoutExecutor' => $vendorDir . '/react/dns/src/Query/TimeoutExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\UdpTransportExecutor' => $vendorDir . '/react/dns/src/Query/UdpTransportExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\RecordNotFoundException' => $vendorDir . '/react/dns/src/RecordNotFoundException.php',
+ 'RectorPrefix202410\\React\\Dns\\Resolver\\Factory' => $vendorDir . '/react/dns/src/Resolver/Factory.php',
+ 'RectorPrefix202410\\React\\Dns\\Resolver\\Resolver' => $vendorDir . '/react/dns/src/Resolver/Resolver.php',
+ 'RectorPrefix202410\\React\\Dns\\Resolver\\ResolverInterface' => $vendorDir . '/react/dns/src/Resolver/ResolverInterface.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtEvLoop' => $vendorDir . '/react/event-loop/src/ExtEvLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtEventLoop' => $vendorDir . '/react/event-loop/src/ExtEventLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtLibevLoop' => $vendorDir . '/react/event-loop/src/ExtLibevLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtLibeventLoop' => $vendorDir . '/react/event-loop/src/ExtLibeventLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtUvLoop' => $vendorDir . '/react/event-loop/src/ExtUvLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Factory' => $vendorDir . '/react/event-loop/src/Factory.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Loop' => $vendorDir . '/react/event-loop/src/Loop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\LoopInterface' => $vendorDir . '/react/event-loop/src/LoopInterface.php',
+ 'RectorPrefix202410\\React\\EventLoop\\SignalsHandler' => $vendorDir . '/react/event-loop/src/SignalsHandler.php',
+ 'RectorPrefix202410\\React\\EventLoop\\StreamSelectLoop' => $vendorDir . '/react/event-loop/src/StreamSelectLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Tick\\FutureTickQueue' => $vendorDir . '/react/event-loop/src/Tick/FutureTickQueue.php',
+ 'RectorPrefix202410\\React\\EventLoop\\TimerInterface' => $vendorDir . '/react/event-loop/src/TimerInterface.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Timer\\Timer' => $vendorDir . '/react/event-loop/src/Timer/Timer.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Timer\\Timers' => $vendorDir . '/react/event-loop/src/Timer/Timers.php',
+ 'RectorPrefix202410\\React\\Promise\\Deferred' => $vendorDir . '/react/promise/src/Deferred.php',
+ 'RectorPrefix202410\\React\\Promise\\Exception\\CompositeException' => $vendorDir . '/react/promise/src/Exception/CompositeException.php',
+ 'RectorPrefix202410\\React\\Promise\\Exception\\LengthException' => $vendorDir . '/react/promise/src/Exception/LengthException.php',
+ 'RectorPrefix202410\\React\\Promise\\Internal\\CancellationQueue' => $vendorDir . '/react/promise/src/Internal/CancellationQueue.php',
+ 'RectorPrefix202410\\React\\Promise\\Internal\\FulfilledPromise' => $vendorDir . '/react/promise/src/Internal/FulfilledPromise.php',
+ 'RectorPrefix202410\\React\\Promise\\Internal\\RejectedPromise' => $vendorDir . '/react/promise/src/Internal/RejectedPromise.php',
+ 'RectorPrefix202410\\React\\Promise\\Promise' => $vendorDir . '/react/promise/src/Promise.php',
+ 'RectorPrefix202410\\React\\Promise\\PromiseInterface' => $vendorDir . '/react/promise/src/PromiseInterface.php',
+ 'RectorPrefix202410\\React\\Socket\\Connection' => $vendorDir . '/react/socket/src/Connection.php',
+ 'RectorPrefix202410\\React\\Socket\\ConnectionInterface' => $vendorDir . '/react/socket/src/ConnectionInterface.php',
+ 'RectorPrefix202410\\React\\Socket\\Connector' => $vendorDir . '/react/socket/src/Connector.php',
+ 'RectorPrefix202410\\React\\Socket\\ConnectorInterface' => $vendorDir . '/react/socket/src/ConnectorInterface.php',
+ 'RectorPrefix202410\\React\\Socket\\DnsConnector' => $vendorDir . '/react/socket/src/DnsConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\FdServer' => $vendorDir . '/react/socket/src/FdServer.php',
+ 'RectorPrefix202410\\React\\Socket\\FixedUriConnector' => $vendorDir . '/react/socket/src/FixedUriConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\HappyEyeBallsConnectionBuilder' => $vendorDir . '/react/socket/src/HappyEyeBallsConnectionBuilder.php',
+ 'RectorPrefix202410\\React\\Socket\\HappyEyeBallsConnector' => $vendorDir . '/react/socket/src/HappyEyeBallsConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\LimitingServer' => $vendorDir . '/react/socket/src/LimitingServer.php',
+ 'RectorPrefix202410\\React\\Socket\\SecureConnector' => $vendorDir . '/react/socket/src/SecureConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\SecureServer' => $vendorDir . '/react/socket/src/SecureServer.php',
+ 'RectorPrefix202410\\React\\Socket\\Server' => $vendorDir . '/react/socket/src/Server.php',
+ 'RectorPrefix202410\\React\\Socket\\ServerInterface' => $vendorDir . '/react/socket/src/ServerInterface.php',
+ 'RectorPrefix202410\\React\\Socket\\SocketServer' => $vendorDir . '/react/socket/src/SocketServer.php',
+ 'RectorPrefix202410\\React\\Socket\\StreamEncryption' => $vendorDir . '/react/socket/src/StreamEncryption.php',
+ 'RectorPrefix202410\\React\\Socket\\TcpConnector' => $vendorDir . '/react/socket/src/TcpConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\TcpServer' => $vendorDir . '/react/socket/src/TcpServer.php',
+ 'RectorPrefix202410\\React\\Socket\\TimeoutConnector' => $vendorDir . '/react/socket/src/TimeoutConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\UnixConnector' => $vendorDir . '/react/socket/src/UnixConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\UnixServer' => $vendorDir . '/react/socket/src/UnixServer.php',
+ 'RectorPrefix202410\\React\\Stream\\CompositeStream' => $vendorDir . '/react/stream/src/CompositeStream.php',
+ 'RectorPrefix202410\\React\\Stream\\DuplexResourceStream' => $vendorDir . '/react/stream/src/DuplexResourceStream.php',
+ 'RectorPrefix202410\\React\\Stream\\DuplexStreamInterface' => $vendorDir . '/react/stream/src/DuplexStreamInterface.php',
+ 'RectorPrefix202410\\React\\Stream\\ReadableResourceStream' => $vendorDir . '/react/stream/src/ReadableResourceStream.php',
+ 'RectorPrefix202410\\React\\Stream\\ReadableStreamInterface' => $vendorDir . '/react/stream/src/ReadableStreamInterface.php',
+ 'RectorPrefix202410\\React\\Stream\\ThroughStream' => $vendorDir . '/react/stream/src/ThroughStream.php',
+ 'RectorPrefix202410\\React\\Stream\\Util' => $vendorDir . '/react/stream/src/Util.php',
+ 'RectorPrefix202410\\React\\Stream\\WritableResourceStream' => $vendorDir . '/react/stream/src/WritableResourceStream.php',
+ 'RectorPrefix202410\\React\\Stream\\WritableStreamInterface' => $vendorDir . '/react/stream/src/WritableStreamInterface.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Attribute\\AsCommand' => $vendorDir . '/symfony/console/Attribute/AsCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\CI\\GithubActionReporter' => $vendorDir . '/symfony/console/CI/GithubActionReporter.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Color' => $vendorDir . '/symfony/console/Color.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\CompleteCommand' => $vendorDir . '/symfony/console/Command/CompleteCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => $vendorDir . '/symfony/console/Command/DumpCompletionCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\LazyCommand' => $vendorDir . '/symfony/console/Command/LazyCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => $vendorDir . '/symfony/console/Command/SignalableCommandInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\TraceableCommand' => $vendorDir . '/symfony/console/Command/TraceableCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\CompletionInput' => $vendorDir . '/symfony/console/Completion/CompletionInput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => $vendorDir . '/symfony/console/Completion/CompletionSuggestions.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/BashCompletionOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => $vendorDir . '/symfony/console/Completion/Output/CompletionOutputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/FishCompletionOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/ZshCompletionOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Suggestion' => $vendorDir . '/symfony/console/Completion/Suggestion.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => $vendorDir . '/symfony/console/DataCollector/CommandDataCollector.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Debug\\CliRequest' => $vendorDir . '/symfony/console/Debug/CliRequest.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => $vendorDir . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => $vendorDir . '/symfony/console/Exception/RunCommandFailedException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\OutputWrapper' => $vendorDir . '/symfony/console/Helper/OutputWrapper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableCellStyle' => $vendorDir . '/symfony/console/Helper/TableCellStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Messenger\\RunCommandContext' => $vendorDir . '/symfony/console/Messenger/RunCommandContext.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => $vendorDir . '/symfony/console/Messenger/RunCommandMessage.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => $vendorDir . '/symfony/console/Messenger/RunCommandMessageHandler.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\AnsiColorMode' => $vendorDir . '/symfony/console/Output/AnsiColorMode.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => $vendorDir . '/symfony/console/Output/TrimmedBufferOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => $vendorDir . '/symfony/console/SignalRegistry/SignalMap.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => $vendorDir . '/symfony/console/SignalRegistry/SignalRegistry.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/filesystem/Exception/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => $vendorDir . '/symfony/filesystem/Exception/RuntimeException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Path' => $vendorDir . '/symfony/filesystem/Path.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\LazyIterator' => $vendorDir . '/symfony/finder/Iterator/LazyIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => $vendorDir . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => $vendorDir . '/symfony/process/Exception/RunProcessFailedException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Messenger\\RunProcessContext' => $vendorDir . '/symfony/process/Messenger/RunProcessContext.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => $vendorDir . '/symfony/process/Messenger/RunProcessMessage.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => $vendorDir . '/symfony/process/Messenger/RunProcessMessageHandler.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\PhpSubprocess' => $vendorDir . '/symfony/process/PhpSubprocess.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Command\\LintCommand' => $vendorDir . '/symfony/yaml/Command/LintCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Dumper' => $vendorDir . '/symfony/yaml/Dumper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Escaper' => $vendorDir . '/symfony/yaml/Escaper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Exception\\DumpException' => $vendorDir . '/symfony/yaml/Exception/DumpException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/yaml/Exception/ExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Exception\\ParseException' => $vendorDir . '/symfony/yaml/Exception/ParseException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Exception\\RuntimeException' => $vendorDir . '/symfony/yaml/Exception/RuntimeException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Inline' => $vendorDir . '/symfony/yaml/Inline.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Parser' => $vendorDir . '/symfony/yaml/Parser.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Tag\\TaggedValue' => $vendorDir . '/symfony/yaml/Tag/TaggedValue.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Unescaper' => $vendorDir . '/symfony/yaml/Unescaper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Yaml' => $vendorDir . '/symfony/yaml/Yaml.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceCollectionInterface' => $vendorDir . '/symfony/service-contracts/ServiceCollectionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\CommandLine\\WorkerCommandLineFactory' => $vendorDir . '/symplify/easy-parallel/src/CommandLine/WorkerCommandLineFactory.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Contract\\SerializableInterface' => $vendorDir . '/symplify/easy-parallel/src/Contract/SerializableInterface.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\CpuCoreCountProvider' => $vendorDir . '/symplify/easy-parallel/src/CpuCoreCountProvider.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Enum\\Action' => $vendorDir . '/symplify/easy-parallel/src/Enum/Action.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Enum\\Content' => $vendorDir . '/symplify/easy-parallel/src/Enum/Content.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Enum\\ReactCommand' => $vendorDir . '/symplify/easy-parallel/src/Enum/ReactCommand.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Enum\\ReactEvent' => $vendorDir . '/symplify/easy-parallel/src/Enum/ReactEvent.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Exception\\ParallelShouldNotHappenException' => $vendorDir . '/symplify/easy-parallel/src/Exception/ParallelShouldNotHappenException.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Reflection\\CommandFromReflectionFactory' => $vendorDir . '/symplify/easy-parallel/src/Reflection/CommandFromReflectionFactory.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ScheduleFactory' => $vendorDir . '/symplify/easy-parallel/src/ScheduleFactory.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ValueObject\\EasyParallelConfig' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/EasyParallelConfig.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ValueObject\\ParallelProcess' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/ParallelProcess.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ValueObject\\ProcessPool' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/ProcessPool.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ValueObject\\Schedule' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/Schedule.php',
+ 'RectorPrefix202410\\Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php',
+ 'RectorPrefix202410\\Webmozart\\Assert\\InvalidArgumentException' => $vendorDir . '/webmozart/assert/src/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Webmozart\\Assert\\Mixin' => $vendorDir . '/webmozart/assert/src/Mixin.php',
'Rector\\Application\\ApplicationFileProcessor' => $baseDir . '/src/Application/ApplicationFileProcessor.php',
'Rector\\Application\\ChangedNodeScopeRefresher' => $baseDir . '/src/Application/ChangedNodeScopeRefresher.php',
'Rector\\Application\\FileProcessor' => $baseDir . '/src/Application/FileProcessor.php',
+ 'Rector\\Application\\Provider\\CurrentFileProvider' => $baseDir . '/src/Application/Provider/CurrentFileProvider.php',
'Rector\\Application\\VersionResolver' => $baseDir . '/src/Application/VersionResolver.php',
'Rector\\Arguments\\ArgumentDefaultValueReplacer' => $baseDir . '/rules/Arguments/ArgumentDefaultValueReplacer.php',
'Rector\\Arguments\\Contract\\ReplaceArgumentDefaultValueInterface' => $baseDir . '/rules/Arguments/Contract/ReplaceArgumentDefaultValueInterface.php',
@@ -1042,6 +1062,8 @@
'Rector\\BetterPhpDocParser\\ValueObject\\Type\\SpacingAwareCallableTypeNode' => $baseDir . '/src/BetterPhpDocParser/ValueObject/Type/SpacingAwareCallableTypeNode.php',
'Rector\\Bootstrap\\ExtensionConfigResolver' => $baseDir . '/src/Bootstrap/ExtensionConfigResolver.php',
'Rector\\Bootstrap\\RectorConfigsResolver' => $baseDir . '/src/Bootstrap/RectorConfigsResolver.php',
+ 'Rector\\Bridge\\SetProviderCollector' => $baseDir . '/src/Bridge/SetProviderCollector.php',
+ 'Rector\\Bridge\\SetRectorsResolver' => $baseDir . '/src/Bridge/SetRectorsResolver.php',
'Rector\\Caching\\Cache' => $baseDir . '/src/Caching/Cache.php',
'Rector\\Caching\\CacheFactory' => $baseDir . '/src/Caching/CacheFactory.php',
'Rector\\Caching\\Config\\FileHashComputer' => $baseDir . '/src/Caching/Config/FileHashComputer.php',
@@ -1053,8 +1075,11 @@
'Rector\\Caching\\ValueObject\\CacheItem' => $baseDir . '/src/Caching/ValueObject/CacheItem.php',
'Rector\\Caching\\ValueObject\\Storage\\FileCacheStorage' => $baseDir . '/src/Caching/ValueObject/Storage/FileCacheStorage.php',
'Rector\\Caching\\ValueObject\\Storage\\MemoryCacheStorage' => $baseDir . '/src/Caching/ValueObject/Storage/MemoryCacheStorage.php',
- 'Rector\\ChangesReporting\\Annotation\\AnnotationExtractor' => $baseDir . '/src/ChangesReporting/Annotation/AnnotationExtractor.php',
- 'Rector\\ChangesReporting\\Annotation\\RectorsChangelogResolver' => $baseDir . '/src/ChangesReporting/Annotation/RectorsChangelogResolver.php',
+ 'Rector\\Carbon\\NodeFactory\\CarbonCallFactory' => $baseDir . '/rules/Carbon/NodeFactory/CarbonCallFactory.php',
+ 'Rector\\Carbon\\Rector\\FuncCall\\DateFuncCallToCarbonRector' => $baseDir . '/rules/Carbon/Rector/FuncCall/DateFuncCallToCarbonRector.php',
+ 'Rector\\Carbon\\Rector\\FuncCall\\TimeFuncCallToCarbonRector' => $baseDir . '/rules/Carbon/Rector/FuncCall/TimeFuncCallToCarbonRector.php',
+ 'Rector\\Carbon\\Rector\\MethodCall\\DateTimeMethodCallToCarbonRector' => $baseDir . '/rules/Carbon/Rector/MethodCall/DateTimeMethodCallToCarbonRector.php',
+ 'Rector\\Carbon\\Rector\\New_\\DateTimeInstanceToCarbonRector' => $baseDir . '/rules/Carbon/Rector/New_/DateTimeInstanceToCarbonRector.php',
'Rector\\ChangesReporting\\Contract\\Output\\OutputFormatterInterface' => $baseDir . '/src/ChangesReporting/Contract/Output/OutputFormatterInterface.php',
'Rector\\ChangesReporting\\Output\\ConsoleOutputFormatter' => $baseDir . '/src/ChangesReporting/Output/ConsoleOutputFormatter.php',
'Rector\\ChangesReporting\\Output\\JsonOutputFormatter' => $baseDir . '/src/ChangesReporting/Output/JsonOutputFormatter.php',
@@ -1069,7 +1094,6 @@
'Rector\\CodeQuality\\NodeFactory\\MissingPropertiesFactory' => $baseDir . '/rules/CodeQuality/NodeFactory/MissingPropertiesFactory.php',
'Rector\\CodeQuality\\NodeFactory\\PropertyTypeDecorator' => $baseDir . '/rules/CodeQuality/NodeFactory/PropertyTypeDecorator.php',
'Rector\\CodeQuality\\NodeManipulator\\ExprBoolCaster' => $baseDir . '/rules/CodeQuality/NodeManipulator/ExprBoolCaster.php',
- 'Rector\\CodeQuality\\Rector\\Array_\\CallableThisArrayToAnonymousFunctionRector' => $baseDir . '/rules/CodeQuality/Rector/Array_/CallableThisArrayToAnonymousFunctionRector.php',
'Rector\\CodeQuality\\Rector\\Assign\\CombinedAssignRector' => $baseDir . '/rules/CodeQuality/Rector/Assign/CombinedAssignRector.php',
'Rector\\CodeQuality\\Rector\\BooleanAnd\\RemoveUselessIsObjectCheckRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector.php',
'Rector\\CodeQuality\\Rector\\BooleanAnd\\SimplifyEmptyArrayCheckRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanAnd/SimplifyEmptyArrayCheckRector.php',
@@ -1095,13 +1119,10 @@
'Rector\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachToCoalescingRector' => $baseDir . '/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php',
'Rector\\CodeQuality\\Rector\\Foreach_\\UnusedForeachValueToArrayKeysRector' => $baseDir . '/rules/CodeQuality/Rector/Foreach_/UnusedForeachValueToArrayKeysRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\ArrayMergeOfNonArraysToSimpleArrayRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/ArrayMergeOfNonArraysToSimpleArrayRector.php',
- 'Rector\\CodeQuality\\Rector\\FuncCall\\BoolvalToTypeCastRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/BoolvalToTypeCastRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\CallUserFuncWithArrowFunctionToInlineRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/CallUserFuncWithArrowFunctionToInlineRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\ChangeArrayPushToArrayAssignRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/ChangeArrayPushToArrayAssignRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\CompactToVariablesRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/CompactToVariablesRector.php',
- 'Rector\\CodeQuality\\Rector\\FuncCall\\FloatvalToTypeCastRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/FloatvalToTypeCastRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\InlineIsAInstanceOfRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/InlineIsAInstanceOfRector.php',
- 'Rector\\CodeQuality\\Rector\\FuncCall\\IntvalToTypeCastRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/IntvalToTypeCastRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\IsAWithStringWithThirdArgumentRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/IsAWithStringWithThirdArgumentRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\RemoveSoleValueSprintfRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/RemoveSoleValueSprintfRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\SetTypeToCastRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/SetTypeToCastRector.php',
@@ -1110,12 +1131,10 @@
'Rector\\CodeQuality\\Rector\\FuncCall\\SimplifyRegexPatternRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/SimplifyRegexPatternRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\SimplifyStrposLowerRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/SimplifyStrposLowerRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\SingleInArrayToCompareRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/SingleInArrayToCompareRector.php',
- 'Rector\\CodeQuality\\Rector\\FuncCall\\StrvalToTypeCastRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/StrvalToTypeCastRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\UnwrapSprintfOneArgumentRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/UnwrapSprintfOneArgumentRector.php',
'Rector\\CodeQuality\\Rector\\FunctionLike\\SimplifyUselessVariableRector' => $baseDir . '/rules/CodeQuality/Rector/FunctionLike/SimplifyUselessVariableRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\BooleanNotIdenticalToNotIdenticalRector' => $baseDir . '/rules/CodeQuality/Rector/Identical/BooleanNotIdenticalToNotIdenticalRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\FlipTypeControlToUseExclusiveTypeRector' => $baseDir . '/rules/CodeQuality/Rector/Identical/FlipTypeControlToUseExclusiveTypeRector.php',
- 'Rector\\CodeQuality\\Rector\\Identical\\GetClassToInstanceOfRector' => $baseDir . '/rules/CodeQuality/Rector/Identical/GetClassToInstanceOfRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\SimplifyArraySearchRector' => $baseDir . '/rules/CodeQuality/Rector/Identical/SimplifyArraySearchRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\SimplifyBoolIdenticalTrueRector' => $baseDir . '/rules/CodeQuality/Rector/Identical/SimplifyBoolIdenticalTrueRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\SimplifyConditionsRector' => $baseDir . '/rules/CodeQuality/Rector/Identical/SimplifyConditionsRector.php',
@@ -1176,15 +1195,16 @@
'Rector\\CodingStyle\\Rector\\Closure\\StaticClosureRector' => $baseDir . '/rules/CodingStyle/Rector/Closure/StaticClosureRector.php',
'Rector\\CodingStyle\\Rector\\Encapsed\\EncapsedStringsToSprintfRector' => $baseDir . '/rules/CodingStyle/Rector/Encapsed/EncapsedStringsToSprintfRector.php',
'Rector\\CodingStyle\\Rector\\Encapsed\\WrapEncapsedVariableInCurlyBracesRector' => $baseDir . '/rules/CodingStyle/Rector/Encapsed/WrapEncapsedVariableInCurlyBracesRector.php',
+ 'Rector\\CodingStyle\\Rector\\Foreach_\\MultiDimensionalArrayToArrayDestructRector' => $baseDir . '/rules/CodingStyle/Rector/Foreach_/MultiDimensionalArrayToArrayDestructRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\ArraySpreadInsteadOfArrayMergeRector' => $baseDir . '/rules/CodingStyle/Rector/FuncCall/ArraySpreadInsteadOfArrayMergeRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\CallUserFuncArrayToVariadicRector' => $baseDir . '/rules/CodingStyle/Rector/FuncCall/CallUserFuncArrayToVariadicRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\CallUserFuncToMethodCallRector' => $baseDir . '/rules/CodingStyle/Rector/FuncCall/CallUserFuncToMethodCallRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\ConsistentImplodeRector' => $baseDir . '/rules/CodingStyle/Rector/FuncCall/ConsistentImplodeRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\CountArrayToEmptyArrayComparisonRector' => $baseDir . '/rules/CodingStyle/Rector/FuncCall/CountArrayToEmptyArrayComparisonRector.php',
+ 'Rector\\CodingStyle\\Rector\\FuncCall\\FunctionFirstClassCallableRector' => $baseDir . '/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\StrictArraySearchRector' => $baseDir . '/rules/CodingStyle/Rector/FuncCall/StrictArraySearchRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\VersionCompareFuncCallToConstantRector' => $baseDir . '/rules/CodingStyle/Rector/FuncCall/VersionCompareFuncCallToConstantRector.php',
'Rector\\CodingStyle\\Rector\\If_\\NullableCompareToNullRector' => $baseDir . '/rules/CodingStyle/Rector/If_/NullableCompareToNullRector.php',
- 'Rector\\CodingStyle\\Rector\\Plus\\UseIncrementAssignRector' => $baseDir . '/rules/CodingStyle/Rector/Plus/UseIncrementAssignRector.php',
'Rector\\CodingStyle\\Rector\\PostInc\\PostIncDecToPreIncDecRector' => $baseDir . '/rules/CodingStyle/Rector/PostInc/PostIncDecToPreIncDecRector.php',
'Rector\\CodingStyle\\Rector\\Property\\SplitGroupedPropertiesRector' => $baseDir . '/rules/CodingStyle/Rector/Property/SplitGroupedPropertiesRector.php',
'Rector\\CodingStyle\\Rector\\Stmt\\NewlineAfterStatementRector' => $baseDir . '/rules/CodingStyle/Rector/Stmt/NewlineAfterStatementRector.php',
@@ -1199,12 +1219,16 @@
'Rector\\Comments\\NodeDocBlock\\DocBlockUpdater' => $baseDir . '/src/Comments/NodeDocBlock/DocBlockUpdater.php',
'Rector\\Comments\\NodeTraverser\\CommentRemovingNodeTraverser' => $baseDir . '/src/Comments/NodeTraverser/CommentRemovingNodeTraverser.php',
'Rector\\Comments\\NodeVisitor\\CommentRemovingNodeVisitor' => $baseDir . '/src/Comments/NodeVisitor/CommentRemovingNodeVisitor.php',
+ 'Rector\\Composer\\InstalledPackageResolver' => $baseDir . '/src/Composer/InstalledPackageResolver.php',
+ 'Rector\\Composer\\ValueObject\\InstalledPackage' => $baseDir . '/src/Composer/ValueObject/InstalledPackage.php',
+ 'Rector\\Config\\Level\\CodeQualityLevel' => $baseDir . '/src/Config/Level/CodeQualityLevel.php',
'Rector\\Config\\Level\\DeadCodeLevel' => $baseDir . '/src/Config/Level/DeadCodeLevel.php',
'Rector\\Config\\Level\\TypeDeclarationLevel' => $baseDir . '/src/Config/Level/TypeDeclarationLevel.php',
'Rector\\Config\\RectorConfig' => $baseDir . '/src/Config/RectorConfig.php',
'Rector\\Config\\RegisteredService' => $baseDir . '/src/Config/RegisteredService.php',
'Rector\\Configuration\\ConfigInitializer' => $baseDir . '/src/Configuration/ConfigInitializer.php',
'Rector\\Configuration\\ConfigurationFactory' => $baseDir . '/src/Configuration/ConfigurationFactory.php',
+ 'Rector\\Configuration\\Deprecation\\Contract\\DeprecatedInterface' => $baseDir . '/src/Configuration/Deprecation/Contract/DeprecatedInterface.php',
'Rector\\Configuration\\Levels\\LevelRulesResolver' => $baseDir . '/src/Configuration/Levels/LevelRulesResolver.php',
'Rector\\Configuration\\Option' => $baseDir . '/src/Configuration/Option.php',
'Rector\\Configuration\\Parameter\\SimpleParameterProvider' => $baseDir . '/src/Configuration/Parameter/SimpleParameterProvider.php',
@@ -1213,7 +1237,6 @@
'Rector\\Configuration\\RenamedClassesDataCollector' => $baseDir . '/src/Configuration/RenamedClassesDataCollector.php',
'Rector\\Configuration\\VendorMissAnalyseGuard' => $baseDir . '/src/Configuration/VendorMissAnalyseGuard.php',
'Rector\\Console\\Command\\CustomRuleCommand' => $baseDir . '/src/Console/Command/CustomRuleCommand.php',
- 'Rector\\Console\\Command\\DetectNodeCommand' => $baseDir . '/src/Console/Command/DetectNodeCommand.php',
'Rector\\Console\\Command\\ListRulesCommand' => $baseDir . '/src/Console/Command/ListRulesCommand.php',
'Rector\\Console\\Command\\ProcessCommand' => $baseDir . '/src/Console/Command/ProcessCommand.php',
'Rector\\Console\\Command\\SetupCICommand' => $baseDir . '/src/Console/Command/SetupCICommand.php',
@@ -1222,6 +1245,7 @@
'Rector\\Console\\ExitCode' => $baseDir . '/src/Console/ExitCode.php',
'Rector\\Console\\Formatter\\ColorConsoleDiffFormatter' => $baseDir . '/src/Console/Formatter/ColorConsoleDiffFormatter.php',
'Rector\\Console\\Formatter\\ConsoleDiffer' => $baseDir . '/src/Console/Formatter/ConsoleDiffer.php',
+ 'Rector\\Console\\Notifier' => $baseDir . '/src/Console/Notifier.php',
'Rector\\Console\\Output\\OutputFormatterCollector' => $baseDir . '/src/Console/Output/OutputFormatterCollector.php',
'Rector\\Console\\ProcessConfigureDecorator' => $baseDir . '/src/Console/ProcessConfigureDecorator.php',
'Rector\\Console\\Style\\RectorStyle' => $baseDir . '/src/Console/Style/RectorStyle.php',
@@ -1243,6 +1267,7 @@
'Rector\\DeadCode\\NodeAnalyzer\\SafeLeftTypeBooleanAndOrAnalyzer' => $baseDir . '/rules/DeadCode/NodeAnalyzer/SafeLeftTypeBooleanAndOrAnalyzer.php',
'Rector\\DeadCode\\NodeAnalyzer\\UsedVariableNameAnalyzer' => $baseDir . '/rules/DeadCode/NodeAnalyzer/UsedVariableNameAnalyzer.php',
'Rector\\DeadCode\\NodeCollector\\UnusedParameterResolver' => $baseDir . '/rules/DeadCode/NodeCollector/UnusedParameterResolver.php',
+ 'Rector\\DeadCode\\NodeManipulator\\ClassMethodParamRemover' => $baseDir . '/rules/DeadCode/NodeManipulator/ClassMethodParamRemover.php',
'Rector\\DeadCode\\NodeManipulator\\ControllerClassMethodManipulator' => $baseDir . '/rules/DeadCode/NodeManipulator/ControllerClassMethodManipulator.php',
'Rector\\DeadCode\\NodeManipulator\\CountManipulator' => $baseDir . '/rules/DeadCode/NodeManipulator/CountManipulator.php',
'Rector\\DeadCode\\NodeManipulator\\LivingCodeManipulator' => $baseDir . '/rules/DeadCode/NodeManipulator/LivingCodeManipulator.php',
@@ -1267,6 +1292,7 @@
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUnusedPrivateMethodParameterRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPrivateMethodParameterRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUnusedPrivateMethodRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPrivateMethodRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUnusedPromotedPropertyRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPromotedPropertyRector.php',
+ 'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUnusedPublicMethodParameterRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPublicMethodParameterRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessParamTagRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessParamTagRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnExprInConstructRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnExprInConstructRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnTagRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector.php',
@@ -1332,10 +1358,14 @@
'Rector\\Doctrine\\CodeQuality\\Contract\\ClassAttributeTransformerInterface' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Contract/ClassAttributeTransformerInterface.php',
'Rector\\Doctrine\\CodeQuality\\Contract\\PropertyAttributeTransformerInterface' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Contract/PropertyAttributeTransformerInterface.php',
'Rector\\Doctrine\\CodeQuality\\EntityMappingResolver' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/EntityMappingResolver.php',
+ 'Rector\\Doctrine\\CodeQuality\\Enum\\CollectionMapping' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Enum/CollectionMapping.php',
+ 'Rector\\Doctrine\\CodeQuality\\Enum\\DoctrineClass' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Enum/DoctrineClass.php',
'Rector\\Doctrine\\CodeQuality\\Enum\\EntityMappingKey' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Enum/EntityMappingKey.php',
- 'Rector\\Doctrine\\CodeQuality\\Enum\\ToManyMappings' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Enum/ToManyMappings.php',
+ 'Rector\\Doctrine\\CodeQuality\\Enum\\OdmMappingKey' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Enum/OdmMappingKey.php',
'Rector\\Doctrine\\CodeQuality\\Helper\\NodeValueNormalizer' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Helper/NodeValueNormalizer.php',
'Rector\\Doctrine\\CodeQuality\\NodeFactory\\AttributeFactory' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/NodeFactory/AttributeFactory.php',
+ 'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\AddReturnDocBlockToCollectionPropertyGetterByToManyAnnotationRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/AddReturnDocBlockToCollectionPropertyGetterByToManyAnnotationRector.php',
+ 'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\ExplicitRelationCollectionRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/ExplicitRelationCollectionRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\InitializeDefaultEntityCollectionRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/InitializeDefaultEntityCollectionRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\MoveCurrentDateTimeDefaultInEntityToConstructorRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/MoveCurrentDateTimeDefaultInEntityToConstructorRector.php',
@@ -1344,21 +1374,24 @@
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\CorrectDefaultTypesOnEntityPropertyRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/CorrectDefaultTypesOnEntityPropertyRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\ImproveDoctrineCollectionDocTypeInEntityRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/ImproveDoctrineCollectionDocTypeInEntityRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\MakeEntityDateTimePropertyDateTimeInterfaceRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/MakeEntityDateTimePropertyDateTimeInterfaceRector.php',
- 'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\OrderByKeyToClassConstRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/OrderByKeyToClassConstRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\TypedPropertyFromColumnTypeRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/TypedPropertyFromColumnTypeRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\TypedPropertyFromDoctrineCollectionRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/TypedPropertyFromDoctrineCollectionRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\TypedPropertyFromToManyRelationTypeRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/TypedPropertyFromToManyRelationTypeRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\TypedPropertyFromToOneRelationTypeRector' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/TypedPropertyFromToOneRelationTypeRector.php',
+ 'Rector\\Doctrine\\CodeQuality\\SetterCollectionResolver' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/SetterCollectionResolver.php',
'Rector\\Doctrine\\CodeQuality\\Utils\\CaseStringHelper' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/Utils/CaseStringHelper.php',
'Rector\\Doctrine\\CodeQuality\\ValueObject\\EntityMapping' => $vendorDir . '/rector/rector-doctrine/rules/CodeQuality/ValueObject/EntityMapping.php',
+ 'Rector\\Doctrine\\Collection22\\Rector\\CriteriaOrderingConstantsDeprecationRector' => $vendorDir . '/rector/rector-doctrine/rules/Collection22/Rector/CriteriaOrderingConstantsDeprecationRector.php',
'Rector\\Doctrine\\Dbal211\\Rector\\MethodCall\\ExtractArrayArgOnQueryBuilderSelectRector' => $vendorDir . '/rector/rector-doctrine/rules/Dbal211/Rector/MethodCall/ExtractArrayArgOnQueryBuilderSelectRector.php',
'Rector\\Doctrine\\Dbal211\\Rector\\MethodCall\\ReplaceFetchAllMethodCallRector' => $vendorDir . '/rector/rector-doctrine/rules/Dbal211/Rector/MethodCall/ReplaceFetchAllMethodCallRector.php',
'Rector\\Doctrine\\Dbal40\\Rector\\MethodCall\\ChangeCompositeExpressionAddMultipleWithWithRector' => $vendorDir . '/rector/rector-doctrine/rules/Dbal40/Rector/MethodCall/ChangeCompositeExpressionAddMultipleWithWithRector.php',
'Rector\\Doctrine\\Enum\\MappingClass' => $vendorDir . '/rector/rector-doctrine/src/Enum/MappingClass.php',
+ 'Rector\\Doctrine\\Enum\\OdmMappingClass' => $vendorDir . '/rector/rector-doctrine/src/Enum/OdmMappingClass.php',
'Rector\\Doctrine\\NodeAnalyzer\\AttributeFinder' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeFinder.php',
'Rector\\Doctrine\\NodeAnalyzer\\AttrinationFinder' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/AttrinationFinder.php',
'Rector\\Doctrine\\NodeAnalyzer\\ConstructorAssignPropertyAnalyzer' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/ConstructorAssignPropertyAnalyzer.php',
'Rector\\Doctrine\\NodeAnalyzer\\DoctrineEntityDetector' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/DoctrineEntityDetector.php',
+ 'Rector\\Doctrine\\NodeAnalyzer\\MethodUniqueReturnedPropertyResolver' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/MethodUniqueReturnedPropertyResolver.php',
'Rector\\Doctrine\\NodeAnalyzer\\TargetEntityResolver' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/TargetEntityResolver.php',
'Rector\\Doctrine\\NodeFactory\\ArrayCollectionAssignFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/ArrayCollectionAssignFactory.php',
'Rector\\Doctrine\\NodeFactory\\ValueAssignFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/ValueAssignFactory.php',
@@ -1372,10 +1405,10 @@
'Rector\\Doctrine\\PhpDocParser\\DoctrineDocBlockResolver' => $vendorDir . '/rector/rector-doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php',
'Rector\\Doctrine\\PhpDoc\\ShortClassExpander' => $vendorDir . '/rector/rector-doctrine/src/PhpDoc/ShortClassExpander.php',
'Rector\\Doctrine\\Set\\DoctrineSetList' => $vendorDir . '/rector/rector-doctrine/src/Set/DoctrineSetList.php',
+ 'Rector\\Doctrine\\Set\\SetProvider\\DoctrineSetProvider' => $vendorDir . '/rector/rector-doctrine/src/Set/SetProvider/DoctrineSetProvider.php',
'Rector\\Doctrine\\TypeAnalyzer\\CollectionTypeFactory' => $vendorDir . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionTypeFactory.php',
'Rector\\Doctrine\\TypeAnalyzer\\CollectionTypeResolver' => $vendorDir . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionTypeResolver.php',
'Rector\\Doctrine\\TypeAnalyzer\\CollectionVarTagValueNodeResolver' => $vendorDir . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionVarTagValueNodeResolver.php',
- 'Rector\\Doctrine\\TypeAnalyzer\\DoctrineCollectionTypeAnalyzer' => $vendorDir . '/rector/rector-doctrine/src/TypeAnalyzer/DoctrineCollectionTypeAnalyzer.php',
'Rector\\DowngradePhp72\\NodeAnalyzer\\BuiltInMethodAnalyzer' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp72/NodeAnalyzer/BuiltInMethodAnalyzer.php',
'Rector\\DowngradePhp72\\NodeAnalyzer\\OverrideFromAnonymousClassMethodAnalyzer' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp72/NodeAnalyzer/OverrideFromAnonymousClassMethodAnalyzer.php',
'Rector\\DowngradePhp72\\NodeAnalyzer\\RegexFuncAnalyzer' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp72/NodeAnalyzer/RegexFuncAnalyzer.php',
@@ -1468,12 +1501,8 @@
'Rector\\DowngradePhp82\\Rector\\Class_\\DowngradeReadonlyClassRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp82/Rector/Class_/DowngradeReadonlyClassRector.php',
'Rector\\DowngradePhp82\\Rector\\FunctionLike\\DowngradeStandaloneNullTrueFalseReturnTypeRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp82/Rector/FunctionLike/DowngradeStandaloneNullTrueFalseReturnTypeRector.php',
'Rector\\DowngradePhp83\\Rector\\ClassConst\\DowngradeTypedClassConstRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp83/Rector/ClassConst/DowngradeTypedClassConstRector.php',
- 'Rector\\EarlyReturn\\NodeAnalyzer\\IfAndAnalyzer' => $baseDir . '/rules/EarlyReturn/NodeAnalyzer/IfAndAnalyzer.php',
- 'Rector\\EarlyReturn\\NodeAnalyzer\\SimpleScalarAnalyzer' => $baseDir . '/rules/EarlyReturn/NodeAnalyzer/SimpleScalarAnalyzer.php',
- 'Rector\\EarlyReturn\\NodeFactory\\InvertedIfFactory' => $baseDir . '/rules/EarlyReturn/NodeFactory/InvertedIfFactory.php',
'Rector\\EarlyReturn\\NodeTransformer\\ConditionInverter' => $baseDir . '/rules/EarlyReturn/NodeTransformer/ConditionInverter.php',
'Rector\\EarlyReturn\\Rector\\Foreach_\\ChangeNestedForeachIfsToEarlyContinueRector' => $baseDir . '/rules/EarlyReturn/Rector/Foreach_/ChangeNestedForeachIfsToEarlyContinueRector.php',
- 'Rector\\EarlyReturn\\Rector\\If_\\ChangeAndIfToEarlyReturnRector' => $baseDir . '/rules/EarlyReturn/Rector/If_/ChangeAndIfToEarlyReturnRector.php',
'Rector\\EarlyReturn\\Rector\\If_\\ChangeIfElseValueAssignToEarlyReturnRector' => $baseDir . '/rules/EarlyReturn/Rector/If_/ChangeIfElseValueAssignToEarlyReturnRector.php',
'Rector\\EarlyReturn\\Rector\\If_\\ChangeNestedIfsToEarlyReturnRector' => $baseDir . '/rules/EarlyReturn/Rector/If_/ChangeNestedIfsToEarlyReturnRector.php',
'Rector\\EarlyReturn\\Rector\\If_\\ChangeOrIfContinueToMultiContinueRector' => $baseDir . '/rules/EarlyReturn/Rector/If_/ChangeOrIfContinueToMultiContinueRector.php',
@@ -1484,7 +1513,6 @@
'Rector\\EarlyReturn\\ValueObject\\BareSingleAssignIf' => $baseDir . '/rules/EarlyReturn/ValueObject/BareSingleAssignIf.php',
'Rector\\Enum\\JsonConstant' => $vendorDir . '/rector/rector-downgrade-php/src/Enum/JsonConstant.php',
'Rector\\Enum\\ObjectReference' => $baseDir . '/src/Enum/ObjectReference.php',
- 'Rector\\Error\\ExceptionCorrector' => $baseDir . '/src/Error/ExceptionCorrector.php',
'Rector\\Exception\\Cache\\CachingException' => $baseDir . '/src/Exception/Cache/CachingException.php',
'Rector\\Exception\\Configuration\\InvalidConfigurationException' => $baseDir . '/src/Exception/Configuration/InvalidConfigurationException.php',
'Rector\\Exception\\NotImplementedYetException' => $baseDir . '/src/Exception/NotImplementedYetException.php',
@@ -1504,9 +1532,6 @@
'Rector\\Naming\\AssignVariableNameResolver\\NewAssignVariableNameResolver' => $baseDir . '/rules/Naming/AssignVariableNameResolver/NewAssignVariableNameResolver.php',
'Rector\\Naming\\AssignVariableNameResolver\\PropertyFetchAssignVariableNameResolver' => $baseDir . '/rules/Naming/AssignVariableNameResolver/PropertyFetchAssignVariableNameResolver.php',
'Rector\\Naming\\Contract\\AssignVariableNameResolverInterface' => $baseDir . '/rules/Naming/Contract/AssignVariableNameResolverInterface.php',
- 'Rector\\Naming\\Contract\\RenameParamValueObjectInterface' => $baseDir . '/rules/Naming/Contract/RenameParamValueObjectInterface.php',
- 'Rector\\Naming\\Contract\\RenamePropertyValueObjectInterface' => $baseDir . '/rules/Naming/Contract/RenamePropertyValueObjectInterface.php',
- 'Rector\\Naming\\Contract\\RenameValueObjectInterface' => $baseDir . '/rules/Naming/Contract/RenameValueObjectInterface.php',
'Rector\\Naming\\ExpectedNameResolver\\InflectorSingularResolver' => $baseDir . '/rules/Naming/ExpectedNameResolver/InflectorSingularResolver.php',
'Rector\\Naming\\ExpectedNameResolver\\MatchParamTypeExpectedNameResolver' => $baseDir . '/rules/Naming/ExpectedNameResolver/MatchParamTypeExpectedNameResolver.php',
'Rector\\Naming\\ExpectedNameResolver\\MatchPropertyTypeExpectedNameResolver' => $baseDir . '/rules/Naming/ExpectedNameResolver/MatchPropertyTypeExpectedNameResolver.php',
@@ -1618,7 +1643,7 @@
'Rector\\NodeTypeResolver\\NodeTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\CastTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/CastTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\ClassAndInterfaceTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/ClassAndInterfaceTypeResolver.php',
- 'Rector\\NodeTypeResolver\\NodeTypeResolver\\ClassMethodOrClassConstTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/ClassMethodOrClassConstTypeResolver.php',
+ 'Rector\\NodeTypeResolver\\NodeTypeResolver\\ClassConstFetchTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/ClassConstFetchTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\IdentifierTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/IdentifierTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\NameTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/NameTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\NewTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/NewTypeResolver.php',
@@ -1665,7 +1690,6 @@
'Rector\\PHPStanStaticTypeMapper\\Enum\\TypeKind' => $baseDir . '/src/PHPStanStaticTypeMapper/Enum/TypeKind.php',
'Rector\\PHPStanStaticTypeMapper\\PHPStanStaticTypeMapper' => $baseDir . '/src/PHPStanStaticTypeMapper/PHPStanStaticTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\TypeAnalyzer\\UnionTypeAnalyzer' => $baseDir . '/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php',
- 'Rector\\PHPStanStaticTypeMapper\\TypeAnalyzer\\UnionTypeCommonTypeNarrower' => $baseDir . '/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeCommonTypeNarrower.php',
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\AccessoryLiteralStringTypeMapper' => $baseDir . '/src/PHPStanStaticTypeMapper/TypeMapper/AccessoryLiteralStringTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\AccessoryNonEmptyStringTypeMapper' => $baseDir . '/src/PHPStanStaticTypeMapper/TypeMapper/AccessoryNonEmptyStringTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\AccessoryNonFalsyStringTypeMapper' => $baseDir . '/src/PHPStanStaticTypeMapper/TypeMapper/AccessoryNonFalsyStringTypeMapper.php',
@@ -1704,8 +1728,6 @@
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\UnionTypeMapper' => $baseDir . '/src/PHPStanStaticTypeMapper/TypeMapper/UnionTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\VoidTypeMapper' => $baseDir . '/src/PHPStanStaticTypeMapper/TypeMapper/VoidTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\Utils\\TypeUnwrapper' => $baseDir . '/src/PHPStanStaticTypeMapper/Utils/TypeUnwrapper.php',
- 'Rector\\PHPStanStaticTypeMapper\\ValueObject\\UnionTypeAnalysis' => $baseDir . '/src/PHPStanStaticTypeMapper/ValueObject/UnionTypeAnalysis.php',
- 'Rector\\PHPStan\\NodeVisitor\\ExprScopeFromStmtNodeVisitor' => $baseDir . '/src/PHPStan/NodeVisitor/ExprScopeFromStmtNodeVisitor.php',
'Rector\\PHPStan\\NodeVisitor\\UnreachableStatementNodeVisitor' => $baseDir . '/src/PHPStan/NodeVisitor/UnreachableStatementNodeVisitor.php',
'Rector\\PHPStan\\NodeVisitor\\WrappedNodeRestoringNodeVisitor' => $baseDir . '/src/PHPStan/NodeVisitor/WrappedNodeRestoringNodeVisitor.php',
'Rector\\PHPUnit\\AnnotationsToAttributes\\Rector\\ClassMethod\\DataProviderAnnotationToAttributeRector' => $vendorDir . '/rector/rector-phpunit/rules/AnnotationsToAttributes/Rector/ClassMethod/DataProviderAnnotationToAttributeRector.php',
@@ -1714,16 +1736,21 @@
'Rector\\PHPUnit\\AnnotationsToAttributes\\Rector\\Class_\\AnnotationWithValueToAttributeRector' => $vendorDir . '/rector/rector-phpunit/rules/AnnotationsToAttributes/Rector/Class_/AnnotationWithValueToAttributeRector.php',
'Rector\\PHPUnit\\AnnotationsToAttributes\\Rector\\Class_\\CoversAnnotationWithValueToAttributeRector' => $vendorDir . '/rector/rector-phpunit/rules/AnnotationsToAttributes/Rector/Class_/CoversAnnotationWithValueToAttributeRector.php',
'Rector\\PHPUnit\\AnnotationsToAttributes\\Rector\\Class_\\TicketAnnotationToAttributeRector' => $vendorDir . '/rector/rector-phpunit/rules/AnnotationsToAttributes/Rector/Class_/TicketAnnotationToAttributeRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\ClassMethod\\CreateMockToAnonymousClassRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/ClassMethod/CreateMockToAnonymousClassRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\ClassMethod\\DataProviderArrayItemsNewLinedRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\ClassMethod\\RemoveEmptyTestMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/ClassMethod/RemoveEmptyTestMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\ClassMethod\\ReplaceTestAnnotationWithPrefixedFunctionRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/ClassMethod/ReplaceTestAnnotationWithPrefixedFunctionRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\AddCoversClassAttributeRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/AddCoversClassAttributeRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\AddParentSetupCallOnSetupRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/AddParentSetupCallOnSetupRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\AddSeeTestAnnotationRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/AddSeeTestAnnotationRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\ConstructClassMethodToSetUpTestCaseRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/ConstructClassMethodToSetUpTestCaseRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\PreferPHPUnitSelfCallRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/PreferPHPUnitSelfCallRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\PreferPHPUnitThisCallRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/PreferPHPUnitThisCallRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\SetUpBeforeClassToSetUpRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/SetUpBeforeClassToSetUpRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\TestWithToDataProviderRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/TestWithToDataProviderRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\YieldDataProviderRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/YieldDataProviderRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachInstanceOfRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/Foreach_/SimplifyForeachInstanceOfRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertCompareOnCountableWithMethodToAssertCountRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertCompareOnCountableWithMethodToAssertCountRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertCompareToSpecificMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertCompareToSpecificMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertComparisonToSpecificMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertComparisonToSpecificMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertEmptyNullableObjectToAssertInstanceofRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php',
@@ -1738,9 +1765,16 @@
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertSameBoolNullToSpecificMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertSameBoolNullToSpecificMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertSameTrueFalseToAssertTrueFalseRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertSameTrueFalseToAssertTrueFalseRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertTrueFalseToSpecificMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\NarrowIdenticalWithConsecutiveRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/NarrowIdenticalWithConsecutiveRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\NarrowSingleWillReturnCallbackRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/NarrowSingleWillReturnCallbackRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\RemoveExpectAnyFromMockRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/RemoveExpectAnyFromMockRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\SingleWithConsecutiveToWithRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/SingleWithConsecutiveToWithRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\UseSpecificWillMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/UseSpecificWillMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\UseSpecificWithMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/UseSpecificWithMethodRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\ValueObject\\MatchAndReturnMatch' => $vendorDir . '/rector/rector-phpunit/rules/CodeQuality/ValueObject/MatchAndReturnMatch.php',
+ 'Rector\\PHPUnit\\Composer\\ProjectPackageVersionResolver' => $vendorDir . '/rector/rector-phpunit/src/Composer/ProjectPackageVersionResolver.php',
+ 'Rector\\PHPUnit\\Enum\\AssertMethod' => $vendorDir . '/rector/rector-phpunit/src/Enum/AssertMethod.php',
+ 'Rector\\PHPUnit\\Enum\\ConsecutiveVariable' => $vendorDir . '/rector/rector-phpunit/src/Enum/ConsecutiveVariable.php',
'Rector\\PHPUnit\\Naming\\TestClassNameResolver' => $vendorDir . '/rector/rector-phpunit/src/Naming/TestClassNameResolver.php',
'Rector\\PHPUnit\\NodeAnalyzer\\ArgumentMover' => $vendorDir . '/rector/rector-phpunit/src/NodeAnalyzer/ArgumentMover.php',
'Rector\\PHPUnit\\NodeAnalyzer\\AssertCallAnalyzer' => $vendorDir . '/rector/rector-phpunit/src/NodeAnalyzer/AssertCallAnalyzer.php',
@@ -1749,13 +1783,19 @@
'Rector\\PHPUnit\\NodeAnalyzer\\SetUpMethodDecorator' => $vendorDir . '/rector/rector-phpunit/src/NodeAnalyzer/SetUpMethodDecorator.php',
'Rector\\PHPUnit\\NodeAnalyzer\\TestsNodeAnalyzer' => $vendorDir . '/rector/rector-phpunit/src/NodeAnalyzer/TestsNodeAnalyzer.php',
'Rector\\PHPUnit\\NodeFactory\\AssertCallFactory' => $vendorDir . '/rector/rector-phpunit/src/NodeFactory/AssertCallFactory.php',
+ 'Rector\\PHPUnit\\NodeFactory\\ConsecutiveIfsFactory' => $vendorDir . '/rector/rector-phpunit/src/NodeFactory/ConsecutiveIfsFactory.php',
'Rector\\PHPUnit\\NodeFactory\\ExpectExceptionMethodCallFactory' => $vendorDir . '/rector/rector-phpunit/src/NodeFactory/ExpectExceptionMethodCallFactory.php',
+ 'Rector\\PHPUnit\\NodeFactory\\MatcherInvocationCountMethodCallNodeFactory' => $vendorDir . '/rector/rector-phpunit/src/NodeFactory/MatcherInvocationCountMethodCallNodeFactory.php',
+ 'Rector\\PHPUnit\\NodeFactory\\UsedVariablesResolver' => $vendorDir . '/rector/rector-phpunit/src/NodeFactory/UsedVariablesResolver.php',
+ 'Rector\\PHPUnit\\NodeFactory\\WithConsecutiveMatchFactory' => $vendorDir . '/rector/rector-phpunit/src/NodeFactory/WithConsecutiveMatchFactory.php',
'Rector\\PHPUnit\\NodeFinder\\DataProviderClassMethodFinder' => $vendorDir . '/rector/rector-phpunit/src/NodeFinder/DataProviderClassMethodFinder.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\AddProphecyTraitRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/AddProphecyTraitRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\PublicDataProviderClassMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/PublicDataProviderClassMethodRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\StaticDataProviderClassMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/StaticDataProviderClassMethodRector.php',
- 'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\PropertyExistsWithoutAssertRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/PropertyExistsWithoutAssertRector.php',
+ 'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\AssertIssetToAssertObjectHasPropertyRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/AssertIssetToAssertObjectHasPropertyRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\RemoveSetMethodsMethodCallRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/RemoveSetMethodsMethodCallRector.php',
+ 'Rector\\PHPUnit\\PHPUnit100\\Rector\\StmtsAwareInterface\\WithConsecutiveRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/StmtsAwareInterface/WithConsecutiveRector.php',
+ 'Rector\\PHPUnit\\PHPUnit110\\Rector\\Class_\\NamedArgumentForDataProviderRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit110/Rector/Class_/NamedArgumentForDataProviderRector.php',
'Rector\\PHPUnit\\PHPUnit50\\Rector\\StaticCall\\GetMockRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit50/Rector/StaticCall/GetMockRector.php',
'Rector\\PHPUnit\\PHPUnit60\\Rector\\ClassMethod\\AddDoesNotPerformAssertionToNonAssertingTestRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit60/Rector/ClassMethod/AddDoesNotPerformAssertionToNonAssertingTestRector.php',
'Rector\\PHPUnit\\PHPUnit60\\Rector\\ClassMethod\\ExceptionAnnotationRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit60/Rector/ClassMethod/ExceptionAnnotationRector.php',
@@ -1770,11 +1810,8 @@
'Rector\\PHPUnit\\PHPUnit90\\Rector\\MethodCall\\SpecificAssertContainsWithoutIdentityRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit90/Rector/MethodCall/SpecificAssertContainsWithoutIdentityRector.php',
'Rector\\PHPUnit\\PhpDoc\\DataProviderMethodRenamer' => $vendorDir . '/rector/rector-phpunit/src/PhpDoc/DataProviderMethodRenamer.php',
'Rector\\PHPUnit\\PhpDoc\\PhpDocValueToNodeMapper' => $vendorDir . '/rector/rector-phpunit/src/PhpDoc/PhpDocValueToNodeMapper.php',
- 'Rector\\PHPUnit\\Rector\\ClassMethod\\CreateMockToAnonymousClassRector' => $vendorDir . '/rector/rector-phpunit/src/Rector/ClassMethod/CreateMockToAnonymousClassRector.php',
- 'Rector\\PHPUnit\\Rector\\Class_\\PreferPHPUnitSelfCallRector' => $vendorDir . '/rector/rector-phpunit/src/Rector/Class_/PreferPHPUnitSelfCallRector.php',
- 'Rector\\PHPUnit\\Rector\\StmtsAwareInterface\\WithConsecutiveRector' => $vendorDir . '/rector/rector-phpunit/src/Rector/StmtsAwareInterface/WithConsecutiveRector.php',
- 'Rector\\PHPUnit\\Set\\PHPUnitLevelSetList' => $vendorDir . '/rector/rector-phpunit/src/Set/PHPUnitLevelSetList.php',
'Rector\\PHPUnit\\Set\\PHPUnitSetList' => $vendorDir . '/rector/rector-phpunit/src/Set/PHPUnitSetList.php',
+ 'Rector\\PHPUnit\\Set\\SetProvider\\PHPUnitSetProvider' => $vendorDir . '/rector/rector-phpunit/src/Set/SetProvider/PHPUnitSetProvider.php',
'Rector\\PHPUnit\\ValueObject\\AnnotationWithValueToAttribute' => $vendorDir . '/rector/rector-phpunit/src/ValueObject/AnnotationWithValueToAttribute.php',
'Rector\\PHPUnit\\ValueObject\\BinaryOpWithAssertMethod' => $vendorDir . '/rector/rector-phpunit/src/ValueObject/BinaryOpWithAssertMethod.php',
'Rector\\PHPUnit\\ValueObject\\ConstantWithAssertMethods' => $vendorDir . '/rector/rector-phpunit/src/ValueObject/ConstantWithAssertMethods.php',
@@ -1862,8 +1899,10 @@
'Rector\\Php74\\Rector\\Double\\RealToFloatTypeCastRector' => $baseDir . '/rules/Php74/Rector/Double/RealToFloatTypeCastRector.php',
'Rector\\Php74\\Rector\\FuncCall\\ArrayKeyExistsOnPropertyRector' => $baseDir . '/rules/Php74/Rector/FuncCall/ArrayKeyExistsOnPropertyRector.php',
'Rector\\Php74\\Rector\\FuncCall\\FilterVarToAddSlashesRector' => $baseDir . '/rules/Php74/Rector/FuncCall/FilterVarToAddSlashesRector.php',
+ 'Rector\\Php74\\Rector\\FuncCall\\HebrevcToNl2brHebrevRector' => $baseDir . '/rules/Php74/Rector/FuncCall/HebrevcToNl2brHebrevRector.php',
'Rector\\Php74\\Rector\\FuncCall\\MbStrrposEncodingArgumentPositionRector' => $baseDir . '/rules/Php74/Rector/FuncCall/MbStrrposEncodingArgumentPositionRector.php',
'Rector\\Php74\\Rector\\FuncCall\\MoneyFormatToNumberFormatRector' => $baseDir . '/rules/Php74/Rector/FuncCall/MoneyFormatToNumberFormatRector.php',
+ 'Rector\\Php74\\Rector\\FuncCall\\RestoreIncludePathToIniRestoreRector' => $baseDir . '/rules/Php74/Rector/FuncCall/RestoreIncludePathToIniRestoreRector.php',
'Rector\\Php74\\Rector\\LNumber\\AddLiteralSeparatorToNumberRector' => $baseDir . '/rules/Php74/Rector/LNumber/AddLiteralSeparatorToNumberRector.php',
'Rector\\Php74\\Rector\\Property\\RestoreDefaultNullToNullableTypePropertyRector' => $baseDir . '/rules/Php74/Rector/Property/RestoreDefaultNullToNullableTypePropertyRector.php',
'Rector\\Php74\\Rector\\StaticCall\\ExportToReflectionFunctionRector' => $baseDir . '/rules/Php74/Rector/StaticCall/ExportToReflectionFunctionRector.php',
@@ -1926,7 +1965,6 @@
'Rector\\Php81\\NodeAnalyzer\\ComplexNewAnalyzer' => $baseDir . '/rules/Php81/NodeAnalyzer/ComplexNewAnalyzer.php',
'Rector\\Php81\\NodeFactory\\EnumFactory' => $baseDir . '/rules/Php81/NodeFactory/EnumFactory.php',
'Rector\\Php81\\Rector\\Array_\\FirstClassCallableRector' => $baseDir . '/rules/Php81/Rector/Array_/FirstClassCallableRector.php',
- 'Rector\\Php81\\Rector\\ClassConst\\FinalizePublicClassConstantRector' => $baseDir . '/rules/Php81/Rector/ClassConst/FinalizePublicClassConstantRector.php',
'Rector\\Php81\\Rector\\ClassMethod\\NewInInitializerRector' => $baseDir . '/rules/Php81/Rector/ClassMethod/NewInInitializerRector.php',
'Rector\\Php81\\Rector\\Class_\\MyCLabsClassToEnumRector' => $baseDir . '/rules/Php81/Rector/Class_/MyCLabsClassToEnumRector.php',
'Rector\\Php81\\Rector\\Class_\\SpatieEnumClassToEnumRector' => $baseDir . '/rules/Php81/Rector/Class_/SpatieEnumClassToEnumRector.php',
@@ -1955,6 +1993,7 @@
'Rector\\PhpAttribute\\AttributeArrayNameInliner' => $baseDir . '/src/PhpAttribute/AttributeArrayNameInliner.php',
'Rector\\PhpAttribute\\Contract\\AnnotationToAttributeMapperInterface' => $baseDir . '/src/PhpAttribute/Contract/AnnotationToAttributeMapperInterface.php',
'Rector\\PhpAttribute\\Enum\\DocTagNodeState' => $baseDir . '/src/PhpAttribute/Enum/DocTagNodeState.php',
+ 'Rector\\PhpAttribute\\NodeFactory\\AnnotationToAttributeIntegerValueCaster' => $baseDir . '/src/PhpAttribute/NodeFactory/AnnotationToAttributeIntegerValueCaster.php',
'Rector\\PhpAttribute\\NodeFactory\\AttributeNameFactory' => $baseDir . '/src/PhpAttribute/NodeFactory/AttributeNameFactory.php',
'Rector\\PhpAttribute\\NodeFactory\\NamedArgsFactory' => $baseDir . '/src/PhpAttribute/NodeFactory/NamedArgsFactory.php',
'Rector\\PhpAttribute\\NodeFactory\\PhpAttributeGroupFactory' => $baseDir . '/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php',
@@ -1988,20 +2027,22 @@
'Rector\\PhpParser\\Node\\NodeFactory' => $baseDir . '/src/PhpParser/Node/NodeFactory.php',
'Rector\\PhpParser\\Node\\Value\\ValueResolver' => $baseDir . '/src/PhpParser/Node/Value/ValueResolver.php',
'Rector\\PhpParser\\Parser\\InlineCodeParser' => $baseDir . '/src/PhpParser/Parser/InlineCodeParser.php',
+ 'Rector\\PhpParser\\Parser\\ParserErrors' => $baseDir . '/src/PhpParser/Parser/ParserErrors.php',
'Rector\\PhpParser\\Parser\\RectorParser' => $baseDir . '/src/PhpParser/Parser/RectorParser.php',
'Rector\\PhpParser\\Parser\\SimplePhpParser' => $baseDir . '/src/PhpParser/Parser/SimplePhpParser.php',
'Rector\\PhpParser\\Printer\\BetterStandardPrinter' => $baseDir . '/src/PhpParser/Printer/BetterStandardPrinter.php',
- 'Rector\\PhpParser\\Printer\\FormatPerservingPrinter' => $baseDir . '/src/PhpParser/Printer/FormatPerservingPrinter.php',
'Rector\\PhpParser\\ValueObject\\StmtsAndTokens' => $baseDir . '/src/PhpParser/ValueObject/StmtsAndTokens.php',
'Rector\\Php\\PhpVersionProvider' => $baseDir . '/src/Php/PhpVersionProvider.php',
- 'Rector\\Php\\PhpVersionResolver\\ProjectComposerJsonPhpVersionResolver' => $baseDir . '/src/Php/PhpVersionResolver/ProjectComposerJsonPhpVersionResolver.php',
+ 'Rector\\Php\\PhpVersionResolver\\ComposerJsonPhpVersionResolver' => $baseDir . '/src/Php/PhpVersionResolver/ComposerJsonPhpVersionResolver.php',
'Rector\\Php\\PolyfillPackagesProvider' => $baseDir . '/src/Php/PolyfillPackagesProvider.php',
'Rector\\Php\\ReservedKeywordAnalyzer' => $baseDir . '/src/Php/ReservedKeywordAnalyzer.php',
'Rector\\PostRector\\Application\\PostFileProcessor' => $baseDir . '/src/PostRector/Application/PostFileProcessor.php',
'Rector\\PostRector\\Collector\\UseNodesToAddCollector' => $baseDir . '/src/PostRector/Collector/UseNodesToAddCollector.php',
'Rector\\PostRector\\Contract\\Rector\\PostRectorInterface' => $baseDir . '/src/PostRector/Contract/Rector/PostRectorInterface.php',
+ 'Rector\\PostRector\\Guard\\AddUseStatementGuard' => $baseDir . '/src/PostRector/Guard/AddUseStatementGuard.php',
'Rector\\PostRector\\Rector\\AbstractPostRector' => $baseDir . '/src/PostRector/Rector/AbstractPostRector.php',
'Rector\\PostRector\\Rector\\ClassRenamingPostRector' => $baseDir . '/src/PostRector/Rector/ClassRenamingPostRector.php',
+ 'Rector\\PostRector\\Rector\\DocblockNameImportingPostRector' => $baseDir . '/src/PostRector/Rector/DocblockNameImportingPostRector.php',
'Rector\\PostRector\\Rector\\NameImportingPostRector' => $baseDir . '/src/PostRector/Rector/NameImportingPostRector.php',
'Rector\\PostRector\\Rector\\UnusedImportRemovingPostRector' => $baseDir . '/src/PostRector/Rector/UnusedImportRemovingPostRector.php',
'Rector\\PostRector\\Rector\\UseAddingPostRector' => $baseDir . '/src/PostRector/Rector/UseAddingPostRector.php',
@@ -2010,14 +2051,12 @@
'Rector\\Privatization\\Guard\\ParentPropertyLookupGuard' => $baseDir . '/rules/Privatization/Guard/ParentPropertyLookupGuard.php',
'Rector\\Privatization\\NodeManipulator\\VisibilityManipulator' => $baseDir . '/rules/Privatization/NodeManipulator/VisibilityManipulator.php',
'Rector\\Privatization\\Rector\\ClassMethod\\PrivatizeFinalClassMethodRector' => $baseDir . '/rules/Privatization/Rector/ClassMethod/PrivatizeFinalClassMethodRector.php',
- 'Rector\\Privatization\\Rector\\Class_\\FinalizeClassesWithoutChildrenRector' => $baseDir . '/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php',
'Rector\\Privatization\\Rector\\Class_\\FinalizeTestCaseClassRector' => $baseDir . '/rules/Privatization/Rector/Class_/FinalizeTestCaseClassRector.php',
'Rector\\Privatization\\Rector\\MethodCall\\PrivatizeLocalGetterToPropertyRector' => $baseDir . '/rules/Privatization/Rector/MethodCall/PrivatizeLocalGetterToPropertyRector.php',
'Rector\\Privatization\\Rector\\Property\\PrivatizeFinalClassPropertyRector' => $baseDir . '/rules/Privatization/Rector/Property/PrivatizeFinalClassPropertyRector.php',
'Rector\\Privatization\\TypeManipulator\\TypeNormalizer' => $baseDir . '/rules/Privatization/TypeManipulator/TypeNormalizer.php',
'Rector\\Privatization\\VisibilityGuard\\ClassMethodVisibilityGuard' => $baseDir . '/rules/Privatization/VisibilityGuard/ClassMethodVisibilityGuard.php',
'Rector\\ProcessAnalyzer\\RectifiedAnalyzer' => $baseDir . '/src/ProcessAnalyzer/RectifiedAnalyzer.php',
- 'Rector\\Provider\\CurrentFileProvider' => $baseDir . '/src/Provider/CurrentFileProvider.php',
'Rector\\RectorInstaller\\Filesystem' => $vendorDir . '/rector/extension-installer/src/Filesystem.php',
'Rector\\RectorInstaller\\GeneratedConfig' => $vendorDir . '/rector/extension-installer/src/GeneratedConfig.php',
'Rector\\RectorInstaller\\LocalFilesystem' => $vendorDir . '/rector/extension-installer/src/LocalFilesystem.php',
@@ -2045,6 +2084,7 @@
'Rector\\Renaming\\NodeManipulator\\SwitchManipulator' => $baseDir . '/rules/Renaming/NodeManipulator/SwitchManipulator.php',
'Rector\\Renaming\\Rector\\ClassConstFetch\\RenameClassConstFetchRector' => $baseDir . '/rules/Renaming/Rector/ClassConstFetch/RenameClassConstFetchRector.php',
'Rector\\Renaming\\Rector\\ClassMethod\\RenameAnnotationRector' => $baseDir . '/rules/Renaming/Rector/ClassMethod/RenameAnnotationRector.php',
+ 'Rector\\Renaming\\Rector\\Class_\\RenameAttributeRector' => $baseDir . '/rules/Renaming/Rector/Class_/RenameAttributeRector.php',
'Rector\\Renaming\\Rector\\ConstFetch\\RenameConstantRector' => $baseDir . '/rules/Renaming/Rector/ConstFetch/RenameConstantRector.php',
'Rector\\Renaming\\Rector\\FuncCall\\RenameFunctionRector' => $baseDir . '/rules/Renaming/Rector/FuncCall/RenameFunctionRector.php',
'Rector\\Renaming\\Rector\\FunctionLike\\RenameFunctionLikeParamWithinCallLikeArgRector' => $baseDir . '/rules/Renaming/Rector/FunctionLike/RenameFunctionLikeParamWithinCallLikeArgRector.php',
@@ -2057,17 +2097,27 @@
'Rector\\Renaming\\ValueObject\\MethodCallRenameWithArrayKey' => $baseDir . '/rules/Renaming/ValueObject/MethodCallRenameWithArrayKey.php',
'Rector\\Renaming\\ValueObject\\RenameAnnotation' => $baseDir . '/rules/Renaming/ValueObject/RenameAnnotation.php',
'Rector\\Renaming\\ValueObject\\RenameAnnotationByType' => $baseDir . '/rules/Renaming/ValueObject/RenameAnnotationByType.php',
+ 'Rector\\Renaming\\ValueObject\\RenameAttribute' => $baseDir . '/rules/Renaming/ValueObject/RenameAttribute.php',
'Rector\\Renaming\\ValueObject\\RenameClassAndConstFetch' => $baseDir . '/rules/Renaming/ValueObject/RenameClassAndConstFetch.php',
'Rector\\Renaming\\ValueObject\\RenameClassConstFetch' => $baseDir . '/rules/Renaming/ValueObject/RenameClassConstFetch.php',
'Rector\\Renaming\\ValueObject\\RenameFunctionLikeParamWithinCallLikeArg' => $baseDir . '/rules/Renaming/ValueObject/RenameFunctionLikeParamWithinCallLikeArg.php',
'Rector\\Renaming\\ValueObject\\RenameProperty' => $baseDir . '/rules/Renaming/ValueObject/RenameProperty.php',
'Rector\\Renaming\\ValueObject\\RenameStaticMethod' => $baseDir . '/rules/Renaming/ValueObject/RenameStaticMethod.php',
+ 'Rector\\Reporting\\DeprecatedRulesReporter' => $baseDir . '/src/Reporting/DeprecatedRulesReporter.php',
+ 'Rector\\Reporting\\MissConfigurationReporter' => $baseDir . '/src/Reporting/MissConfigurationReporter.php',
+ 'Rector\\Set\\Contract\\SetInterface' => $baseDir . '/src/Set/Contract/SetInterface.php',
'Rector\\Set\\Contract\\SetListInterface' => $baseDir . '/src/Set/Contract/SetListInterface.php',
+ 'Rector\\Set\\Contract\\SetProviderInterface' => $baseDir . '/src/Set/Contract/SetProviderInterface.php',
+ 'Rector\\Set\\Enum\\SetGroup' => $baseDir . '/src/Set/Enum/SetGroup.php',
+ 'Rector\\Set\\SetManager' => $baseDir . '/src/Set/SetManager.php',
+ 'Rector\\Set\\SetProvider\\CoreSetProvider' => $baseDir . '/src/Set/SetProvider/CoreSetProvider.php',
+ 'Rector\\Set\\SetProvider\\PHPSetProvider' => $baseDir . '/src/Set/SetProvider/PHPSetProvider.php',
+ 'Rector\\Set\\ValueObject\\ComposerTriggeredSet' => $baseDir . '/src/Set/ValueObject/ComposerTriggeredSet.php',
'Rector\\Set\\ValueObject\\DowngradeLevelSetList' => $vendorDir . '/rector/rector-downgrade-php/src/Set/ValueObject/DowngradeLevelSetList.php',
'Rector\\Set\\ValueObject\\DowngradeSetList' => $vendorDir . '/rector/rector-downgrade-php/src/Set/ValueObject/DowngradeSetList.php',
'Rector\\Set\\ValueObject\\LevelSetList' => $baseDir . '/src/Set/ValueObject/LevelSetList.php',
+ 'Rector\\Set\\ValueObject\\Set' => $baseDir . '/src/Set/ValueObject/Set.php',
'Rector\\Set\\ValueObject\\SetList' => $baseDir . '/src/Set/ValueObject/SetList.php',
- 'Rector\\Skipper\\Contract\\SkipVoterInterface' => $baseDir . '/src/Skipper/Contract/SkipVoterInterface.php',
'Rector\\Skipper\\FileSystem\\FnMatchPathNormalizer' => $baseDir . '/src/Skipper/FileSystem/FnMatchPathNormalizer.php',
'Rector\\Skipper\\FileSystem\\PathNormalizer' => $baseDir . '/src/Skipper/FileSystem/PathNormalizer.php',
'Rector\\Skipper\\Fnmatcher' => $baseDir . '/src/Skipper/Fnmatcher.php',
@@ -2085,10 +2135,10 @@
'Rector\\StaticTypeMapper\\Mapper\\PhpParserNodeMapper' => $baseDir . '/src/StaticTypeMapper/Mapper/PhpParserNodeMapper.php',
'Rector\\StaticTypeMapper\\Mapper\\ScalarStringToTypeMapper' => $baseDir . '/src/StaticTypeMapper/Mapper/ScalarStringToTypeMapper.php',
'Rector\\StaticTypeMapper\\Naming\\NameScopeFactory' => $baseDir . '/src/StaticTypeMapper/Naming/NameScopeFactory.php',
- 'Rector\\StaticTypeMapper\\PhpDocParser\\IdentifierTypeMapper' => $baseDir . '/src/StaticTypeMapper/PhpDocParser/IdentifierTypeMapper.php',
- 'Rector\\StaticTypeMapper\\PhpDocParser\\IntersectionTypeMapper' => $baseDir . '/src/StaticTypeMapper/PhpDocParser/IntersectionTypeMapper.php',
- 'Rector\\StaticTypeMapper\\PhpDocParser\\NullableTypeMapper' => $baseDir . '/src/StaticTypeMapper/PhpDocParser/NullableTypeMapper.php',
- 'Rector\\StaticTypeMapper\\PhpDocParser\\UnionTypeMapper' => $baseDir . '/src/StaticTypeMapper/PhpDocParser/UnionTypeMapper.php',
+ 'Rector\\StaticTypeMapper\\PhpDocParser\\IdentifierPhpDocTypeMapper' => $baseDir . '/src/StaticTypeMapper/PhpDocParser/IdentifierPhpDocTypeMapper.php',
+ 'Rector\\StaticTypeMapper\\PhpDocParser\\IntersectionPhpDocTypeMapper' => $baseDir . '/src/StaticTypeMapper/PhpDocParser/IntersectionPhpDocTypeMapper.php',
+ 'Rector\\StaticTypeMapper\\PhpDocParser\\NullablePhpDocTypeMapper' => $baseDir . '/src/StaticTypeMapper/PhpDocParser/NullablePhpDocTypeMapper.php',
+ 'Rector\\StaticTypeMapper\\PhpDocParser\\UnionPhpDocTypeMapper' => $baseDir . '/src/StaticTypeMapper/PhpDocParser/UnionPhpDocTypeMapper.php',
'Rector\\StaticTypeMapper\\PhpDoc\\PhpDocTypeMapper' => $baseDir . '/src/StaticTypeMapper/PhpDoc/PhpDocTypeMapper.php',
'Rector\\StaticTypeMapper\\PhpParser\\ExprNodeMapper' => $baseDir . '/src/StaticTypeMapper/PhpParser/ExprNodeMapper.php',
'Rector\\StaticTypeMapper\\PhpParser\\FullyQualifiedNodeMapper' => $baseDir . '/src/StaticTypeMapper/PhpParser/FullyQualifiedNodeMapper.php',
@@ -2124,6 +2174,7 @@
'Rector\\Symfony\\Bridge\\Symfony\\ContainerServiceProvider' => $vendorDir . '/rector/rector-symfony/src/Bridge/Symfony/ContainerServiceProvider.php',
'Rector\\Symfony\\Bridge\\Symfony\\Routing\\SymfonyRoutesProvider' => $vendorDir . '/rector/rector-symfony/src/Bridge/Symfony/Routing/SymfonyRoutesProvider.php',
'Rector\\Symfony\\BundleClassResolver' => $vendorDir . '/rector/rector-symfony/src/BundleClassResolver.php',
+ 'Rector\\Symfony\\CodeQuality\\Enum\\ResponseClass' => $vendorDir . '/rector/rector-symfony/rules/CodeQuality/Enum/ResponseClass.php',
'Rector\\Symfony\\CodeQuality\\NodeFactory\\SymfonyClosureFactory' => $vendorDir . '/rector/rector-symfony/rules/CodeQuality/NodeFactory/SymfonyClosureFactory.php',
'Rector\\Symfony\\CodeQuality\\Rector\\BinaryOp\\ResponseStatusCodeRector' => $vendorDir . '/rector/rector-symfony/rules/CodeQuality/Rector/BinaryOp/ResponseStatusCodeRector.php',
'Rector\\Symfony\\CodeQuality\\Rector\\ClassMethod\\ActionSuffixRemoverRector' => $vendorDir . '/rector/rector-symfony/rules/CodeQuality/Rector/ClassMethod/ActionSuffixRemoverRector.php',
@@ -2142,12 +2193,20 @@
'Rector\\Symfony\\Configs\\Enum\\DoctrineConfigKey' => $vendorDir . '/rector/rector-symfony/rules/Configs/Enum/DoctrineConfigKey.php',
'Rector\\Symfony\\Configs\\Enum\\GroupingMethods' => $vendorDir . '/rector/rector-symfony/rules/Configs/Enum/GroupingMethods.php',
'Rector\\Symfony\\Configs\\Enum\\SecurityConfigKey' => $vendorDir . '/rector/rector-symfony/rules/Configs/Enum/SecurityConfigKey.php',
+ 'Rector\\Symfony\\Configs\\NodeAnalyser\\ConfigServiceArgumentsResolver' => $vendorDir . '/rector/rector-symfony/rules/Configs/NodeAnalyser/ConfigServiceArgumentsResolver.php',
+ 'Rector\\Symfony\\Configs\\NodeAnalyser\\SetServiceClassNameResolver' => $vendorDir . '/rector/rector-symfony/rules/Configs/NodeAnalyser/SetServiceClassNameResolver.php',
+ 'Rector\\Symfony\\Configs\\NodeFactory\\AutowiredParamFactory' => $vendorDir . '/rector/rector-symfony/rules/Configs/NodeFactory/AutowiredParamFactory.php',
+ 'Rector\\Symfony\\Configs\\NodeVisitor\\CollectServiceArgumentsNodeVisitor' => $vendorDir . '/rector/rector-symfony/rules/Configs/NodeVisitor/CollectServiceArgumentsNodeVisitor.php',
'Rector\\Symfony\\Configs\\Rector\\ClassMethod\\AddRouteAnnotationRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/ClassMethod/AddRouteAnnotationRector.php',
+ 'Rector\\Symfony\\Configs\\Rector\\Class_\\AutowireAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Class_/AutowireAttributeRector.php',
+ 'Rector\\Symfony\\Configs\\Rector\\Class_\\ParameterBagToAutowireAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Class_/ParameterBagToAutowireAttributeRector.php',
+ 'Rector\\Symfony\\Configs\\Rector\\Closure\\MergeServiceNameTypeRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Closure/MergeServiceNameTypeRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceArgsToServiceNamedArgRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceArgsToServiceNamedArgRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceSetStringNameToClassNameRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceSetStringNameToClassNameRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceSettersToSettersAutodiscoveryRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceSettersToSettersAutodiscoveryRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceTagsToDefaultsAutoconfigureRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceTagsToDefaultsAutoconfigureRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServicesSetNameToSetTypeRector' => $vendorDir . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServicesSetNameToSetTypeRector.php',
+ 'Rector\\Symfony\\Configs\\ValueObject\\ServiceArguments' => $vendorDir . '/rector/rector-symfony/rules/Configs/ValueObject/ServiceArguments.php',
'Rector\\Symfony\\Contract\\Bridge\\Symfony\\Routing\\SymfonyRoutesProviderInterface' => $vendorDir . '/rector/rector-symfony/src/Contract/Bridge/Symfony/Routing/SymfonyRoutesProviderInterface.php',
'Rector\\Symfony\\Contract\\EventReferenceToMethodNameInterface' => $vendorDir . '/rector/rector-symfony/src/Contract/EventReferenceToMethodNameInterface.php',
'Rector\\Symfony\\Contract\\Tag\\TagInterface' => $vendorDir . '/rector/rector-symfony/src/Contract/Tag/TagInterface.php',
@@ -2156,6 +2215,7 @@
'Rector\\Symfony\\DowngradeSymfony70\\Rector\\Class_\\DowngradeSymfonyCommandAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/DowngradeSymfony70/Rector/Class_/DowngradeSymfonyCommandAttributeRector.php',
'Rector\\Symfony\\Enum\\SensioAttribute' => $vendorDir . '/rector/rector-symfony/src/Enum/SensioAttribute.php',
'Rector\\Symfony\\Enum\\SymfonyAnnotation' => $vendorDir . '/rector/rector-symfony/src/Enum/SymfonyAnnotation.php',
+ 'Rector\\Symfony\\Enum\\SymfonyAttribute' => $vendorDir . '/rector/rector-symfony/src/Enum/SymfonyAttribute.php',
'Rector\\Symfony\\Enum\\SymfonyClass' => $vendorDir . '/rector/rector-symfony/src/Enum/SymfonyClass.php',
'Rector\\Symfony\\Exception\\XmlContainerNotExistsException' => $vendorDir . '/rector/rector-symfony/src/Exception/XmlContainerNotExistsException.php',
'Rector\\Symfony\\FormHelper\\FormTypeStringToTypeProvider' => $vendorDir . '/rector/rector-symfony/src/FormHelper/FormTypeStringToTypeProvider.php',
@@ -2167,8 +2227,6 @@
'Rector\\Symfony\\NodeAnalyzer\\Annotations\\PropertyAnnotationAssertResolver' => $vendorDir . '/rector/rector-symfony/src/NodeAnalyzer/Annotations/PropertyAnnotationAssertResolver.php',
'Rector\\Symfony\\NodeAnalyzer\\Annotations\\StmtMethodCallMatcher' => $vendorDir . '/rector/rector-symfony/src/NodeAnalyzer/Annotations/StmtMethodCallMatcher.php',
'Rector\\Symfony\\NodeAnalyzer\\ClassAnalyzer' => $vendorDir . '/rector/rector-symfony/src/NodeAnalyzer/ClassAnalyzer.php',
- 'Rector\\Symfony\\NodeAnalyzer\\Command\\AttributeValueResolver' => $vendorDir . '/rector/rector-symfony/src/NodeAnalyzer/Command/AttributeValueResolver.php',
- 'Rector\\Symfony\\NodeAnalyzer\\Command\\SetAliasesMethodCallExtractor' => $vendorDir . '/rector/rector-symfony/src/NodeAnalyzer/Command/SetAliasesMethodCallExtractor.php',
'Rector\\Symfony\\NodeAnalyzer\\DependencyInjectionMethodCallAnalyzer' => $vendorDir . '/rector/rector-symfony/src/NodeAnalyzer/DependencyInjectionMethodCallAnalyzer.php',
'Rector\\Symfony\\NodeAnalyzer\\FormAddMethodCallAnalyzer' => $vendorDir . '/rector/rector-symfony/src/NodeAnalyzer/FormAddMethodCallAnalyzer.php',
'Rector\\Symfony\\NodeAnalyzer\\FormCollectionAnalyzer' => $vendorDir . '/rector/rector-symfony/src/NodeAnalyzer/FormCollectionAnalyzer.php',
@@ -2196,14 +2254,16 @@
'Rector\\Symfony\\NodeManipulator\\ArrayManipulator' => $vendorDir . '/rector/rector-symfony/src/NodeManipulator/ArrayManipulator.php',
'Rector\\Symfony\\NodeManipulator\\ClassManipulator' => $vendorDir . '/rector/rector-symfony/src/NodeManipulator/ClassManipulator.php',
'Rector\\Symfony\\PhpDocNode\\SymfonyRouteTagValueNodeFactory' => $vendorDir . '/rector/rector-symfony/src/PhpDocNode/SymfonyRouteTagValueNodeFactory.php',
+ 'Rector\\Symfony\\PhpParser\\NamedSimplePhpParser' => $vendorDir . '/rector/rector-symfony/src/PhpParser/NamedSimplePhpParser.php',
'Rector\\Symfony\\Set\\FOSRestSetList' => $vendorDir . '/rector/rector-symfony/src/Set/FOSRestSetList.php',
'Rector\\Symfony\\Set\\JMSSetList' => $vendorDir . '/rector/rector-symfony/src/Set/JMSSetList.php',
'Rector\\Symfony\\Set\\SensiolabsSetList' => $vendorDir . '/rector/rector-symfony/src/Set/SensiolabsSetList.php',
+ 'Rector\\Symfony\\Set\\SetProvider\\SymfonySetProvider' => $vendorDir . '/rector/rector-symfony/src/Set/SetProvider/SymfonySetProvider.php',
+ 'Rector\\Symfony\\Set\\SetProvider\\TwigSetProvider' => $vendorDir . '/rector/rector-symfony/src/Set/SetProvider/TwigSetProvider.php',
'Rector\\Symfony\\Set\\SwiftMailerSetList' => $vendorDir . '/rector/rector-symfony/src/Set/SwiftMailerSetList.php',
- 'Rector\\Symfony\\Set\\SymfonyLevelSetList' => $vendorDir . '/rector/rector-symfony/src/Set/SymfonyLevelSetList.php',
'Rector\\Symfony\\Set\\SymfonySetList' => $vendorDir . '/rector/rector-symfony/src/Set/SymfonySetList.php',
- 'Rector\\Symfony\\Set\\TwigLevelSetList' => $vendorDir . '/rector/rector-symfony/src/Set/TwigLevelSetList.php',
'Rector\\Symfony\\Set\\TwigSetList' => $vendorDir . '/rector/rector-symfony/src/Set/TwigSetList.php',
+ 'Rector\\Symfony\\SwiftMailer\\Rector\\ClassMethod\\SwiftMessageToEmailRector' => $vendorDir . '/rector/rector-symfony/rules/SwiftMailer/Rector/ClassMethod/SwiftMessageToEmailRector.php',
'Rector\\Symfony\\SwiftMailer\\Rector\\MethodCall\\SwiftCreateMessageToNewEmailRector' => $vendorDir . '/rector/rector-symfony/rules/SwiftMailer/Rector/MethodCall/SwiftCreateMessageToNewEmailRector.php',
'Rector\\Symfony\\SwiftMailer\\Rector\\MethodCall\\SwiftSetBodyToHtmlPlainMethodCallRector' => $vendorDir . '/rector/rector-symfony/rules/SwiftMailer/Rector/MethodCall/SwiftSetBodyToHtmlPlainMethodCallRector.php',
'Rector\\Symfony\\Symfony25\\Rector\\MethodCall\\AddViolationToBuildViolationRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony25/Rector/MethodCall/AddViolationToBuildViolationRector.php',
@@ -2259,6 +2319,7 @@
'Rector\\Symfony\\Symfony53\\Rector\\StaticPropertyFetch\\KernelTestCaseContainerPropertyDeprecationRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony53/Rector/StaticPropertyFetch/KernelTestCaseContainerPropertyDeprecationRector.php',
'Rector\\Symfony\\Symfony60\\Rector\\FuncCall\\ReplaceServiceArgumentRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony60/Rector/FuncCall/ReplaceServiceArgumentRector.php',
'Rector\\Symfony\\Symfony60\\Rector\\MethodCall\\GetHelperControllerToServiceRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony60/Rector/MethodCall/GetHelperControllerToServiceRector.php',
+ 'Rector\\Symfony\\Symfony61\\Rector\\Class_\\CommandConfigureToAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony61/Rector/Class_/CommandConfigureToAttributeRector.php',
'Rector\\Symfony\\Symfony61\\Rector\\Class_\\CommandPropertyToAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony61/Rector/Class_/CommandPropertyToAttributeRector.php',
'Rector\\Symfony\\Symfony61\\Rector\\Class_\\MagicClosureTwigExtensionToNativeMethodsRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony61/Rector/Class_/MagicClosureTwigExtensionToNativeMethodsRector.php',
'Rector\\Symfony\\Symfony61\\Rector\\StaticPropertyFetch\\ErrorNamesPropertyToConstantRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony61/Rector/StaticPropertyFetch/ErrorNamesPropertyToConstantRector.php',
@@ -2266,7 +2327,9 @@
'Rector\\Symfony\\Symfony62\\Rector\\ClassMethod\\ParamConverterAttributeToMapEntityAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony62/Rector/ClassMethod/ParamConverterAttributeToMapEntityAttributeRector.php',
'Rector\\Symfony\\Symfony62\\Rector\\Class_\\MessageHandlerInterfaceToAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony62/Rector/Class_/MessageHandlerInterfaceToAttributeRector.php',
'Rector\\Symfony\\Symfony62\\Rector\\Class_\\MessageSubscriberInterfaceToAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony62/Rector/Class_/MessageSubscriberInterfaceToAttributeRector.php',
+ 'Rector\\Symfony\\Symfony62\\Rector\\Class_\\SecurityAttributeToIsGrantedAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony62/Rector/Class_/SecurityAttributeToIsGrantedAttributeRector.php',
'Rector\\Symfony\\Symfony62\\Rector\\MethodCall\\SimplifyFormRenderingRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony62/Rector/MethodCall/SimplifyFormRenderingRector.php',
+ 'Rector\\Symfony\\Symfony63\\Rector\\Class_\\ParamAndEnvAttributeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony63/Rector/Class_/ParamAndEnvAttributeRector.php',
'Rector\\Symfony\\Symfony63\\Rector\\Class_\\SignalableCommandInterfaceReturnTypeRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony63/Rector/Class_/SignalableCommandInterfaceReturnTypeRector.php',
'Rector\\Symfony\\Symfony64\\Rector\\Class_\\ChangeRouteAttributeFromAnnotationSubnamespaceRector' => $vendorDir . '/rector/rector-symfony/rules/Symfony64/Rector/Class_/ChangeRouteAttributeFromAnnotationSubnamespaceRector.php',
'Rector\\Symfony\\Twig134\\Rector\\Return_\\SimpleFunctionAndFilterRector' => $vendorDir . '/rector/rector-symfony/rules/Twig134/Rector/Return_/SimpleFunctionAndFilterRector.php',
@@ -2328,6 +2391,7 @@
'Rector\\Transform\\Rector\\MethodCall\\MethodCallToStaticCallRector' => $baseDir . '/rules/Transform/Rector/MethodCall/MethodCallToStaticCallRector.php',
'Rector\\Transform\\Rector\\MethodCall\\ReplaceParentCallByPropertyCallRector' => $baseDir . '/rules/Transform/Rector/MethodCall/ReplaceParentCallByPropertyCallRector.php',
'Rector\\Transform\\Rector\\New_\\NewToStaticCallRector' => $baseDir . '/rules/Transform/Rector/New_/NewToStaticCallRector.php',
+ 'Rector\\Transform\\Rector\\Scalar\\ScalarValueToConstFetchRector' => $baseDir . '/rules/Transform/Rector/Scalar/ScalarValueToConstFetchRector.php',
'Rector\\Transform\\Rector\\StaticCall\\StaticCallToFuncCallRector' => $baseDir . '/rules/Transform/Rector/StaticCall/StaticCallToFuncCallRector.php',
'Rector\\Transform\\Rector\\StaticCall\\StaticCallToMethodCallRector' => $baseDir . '/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php',
'Rector\\Transform\\Rector\\StaticCall\\StaticCallToNewRector' => $baseDir . '/rules/Transform/Rector/StaticCall/StaticCallToNewRector.php',
@@ -2346,6 +2410,7 @@
'Rector\\Transform\\ValueObject\\PropertyAssignToMethodCall' => $baseDir . '/rules/Transform/ValueObject/PropertyAssignToMethodCall.php',
'Rector\\Transform\\ValueObject\\PropertyFetchToMethodCall' => $baseDir . '/rules/Transform/ValueObject/PropertyFetchToMethodCall.php',
'Rector\\Transform\\ValueObject\\ReplaceParentCallByPropertyCall' => $baseDir . '/rules/Transform/ValueObject/ReplaceParentCallByPropertyCall.php',
+ 'Rector\\Transform\\ValueObject\\ScalarValueToConstFetch' => $baseDir . '/rules/Transform/ValueObject/ScalarValueToConstFetch.php',
'Rector\\Transform\\ValueObject\\StaticCallToFuncCall' => $baseDir . '/rules/Transform/ValueObject/StaticCallToFuncCall.php',
'Rector\\Transform\\ValueObject\\StaticCallToMethodCall' => $baseDir . '/rules/Transform/ValueObject/StaticCallToMethodCall.php',
'Rector\\Transform\\ValueObject\\StaticCallToNew' => $baseDir . '/rules/Transform/ValueObject/StaticCallToNew.php',
@@ -2354,7 +2419,6 @@
'Rector\\TypeDeclaration\\AlreadyAssignDetector\\ConstructorAssignDetector' => $baseDir . '/rules/TypeDeclaration/AlreadyAssignDetector/ConstructorAssignDetector.php',
'Rector\\TypeDeclaration\\AlreadyAssignDetector\\NullTypeAssignDetector' => $baseDir . '/rules/TypeDeclaration/AlreadyAssignDetector/NullTypeAssignDetector.php',
'Rector\\TypeDeclaration\\AlreadyAssignDetector\\PropertyDefaultAssignDetector' => $baseDir . '/rules/TypeDeclaration/AlreadyAssignDetector/PropertyDefaultAssignDetector.php',
- 'Rector\\TypeDeclaration\\Contract\\PHPStan\\TypeWithClassTypeSpecifierInterface' => $baseDir . '/rules/TypeDeclaration/Contract/PHPStan/TypeWithClassTypeSpecifierInterface.php',
'Rector\\TypeDeclaration\\FunctionLikeReturnTypeResolver' => $baseDir . '/rules/TypeDeclaration/FunctionLikeReturnTypeResolver.php',
'Rector\\TypeDeclaration\\Guard\\ParamTypeAddGuard' => $baseDir . '/rules/TypeDeclaration/Guard/ParamTypeAddGuard.php',
'Rector\\TypeDeclaration\\Guard\\PropertyTypeOverrideGuard' => $baseDir . '/rules/TypeDeclaration/Guard/PropertyTypeOverrideGuard.php',
@@ -2369,53 +2433,70 @@
'Rector\\TypeDeclaration\\NodeAnalyzer\\ParamAnalyzer' => $baseDir . '/rules/TypeDeclaration/NodeAnalyzer/ParamAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnAnalyzer' => $baseDir . '/rules/TypeDeclaration/NodeAnalyzer/ReturnAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnFilter\\ExclusiveNativeCallLikeReturnMatcher' => $baseDir . '/rules/TypeDeclaration/NodeAnalyzer/ReturnFilter/ExclusiveNativeCallLikeReturnMatcher.php',
- 'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\AlwaysStrictReturnAnalyzer' => $baseDir . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/AlwaysStrictReturnAnalyzer.php',
- 'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\StrictBoolReturnTypeAnalyzer' => $baseDir . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictBoolReturnTypeAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\StrictNativeFunctionReturnTypeAnalyzer' => $baseDir . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictNativeFunctionReturnTypeAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\StrictReturnNewAnalyzer' => $baseDir . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictReturnNewAnalyzer.php',
- 'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\StrictScalarReturnTypeAnalyzer' => $baseDir . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictScalarReturnTypeAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\TypeNodeUnwrapper' => $baseDir . '/rules/TypeDeclaration/NodeAnalyzer/TypeNodeUnwrapper.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddNeverReturnType' => $baseDir . '/rules/TypeDeclaration/NodeManipulator/AddNeverReturnType.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddReturnTypeFromCast' => $baseDir . '/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromCast.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddReturnTypeFromParam' => $baseDir . '/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromParam.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddReturnTypeFromStrictNativeCall' => $baseDir . '/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromStrictNativeCall.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddUnionReturnType' => $baseDir . '/rules/TypeDeclaration/NodeManipulator/AddUnionReturnType.php',
'Rector\\TypeDeclaration\\NodeTypeAnalyzer\\DetailedTypeAnalyzer' => $baseDir . '/rules/TypeDeclaration/NodeTypeAnalyzer/DetailedTypeAnalyzer.php',
'Rector\\TypeDeclaration\\NodeTypeAnalyzer\\PropertyTypeDecorator' => $baseDir . '/rules/TypeDeclaration/NodeTypeAnalyzer/PropertyTypeDecorator.php',
'Rector\\TypeDeclaration\\PHPStan\\ObjectTypeSpecifier' => $baseDir . '/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php',
- 'Rector\\TypeDeclaration\\PHPStan\\TypeSpecifier\\SameNamespacedTypeSpecifier' => $baseDir . '/rules/TypeDeclaration/PHPStan/TypeSpecifier/SameNamespacedTypeSpecifier.php',
- 'Rector\\TypeDeclaration\\PHPStan\\TypeSpecifier\\SelfStaticParentTypeSpecifier' => $baseDir . '/rules/TypeDeclaration/PHPStan/TypeSpecifier/SelfStaticParentTypeSpecifier.php',
'Rector\\TypeDeclaration\\PhpDocParser\\ParamPhpDocNodeFactory' => $baseDir . '/rules/TypeDeclaration/PhpDocParser/ParamPhpDocNodeFactory.php',
+ 'Rector\\TypeDeclaration\\PhpDocParser\\TypeExpressionFromVarTagResolver' => $baseDir . '/rules/TypeDeclaration/PhpDocParser/TypeExpressionFromVarTagResolver.php',
'Rector\\TypeDeclaration\\Rector\\ArrowFunction\\AddArrowFunctionReturnTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\BooleanAnd\\BinaryOpNullableToInstanceofRector' => $baseDir . '/rules/TypeDeclaration/Rector/BooleanAnd/BinaryOpNullableToInstanceofRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddMethodCallBasedStrictParamTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddMethodCallBasedStrictParamTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddParamArrayDocblockBasedOnCallableNativeFuncCallRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddParamArrayDocblockBasedOnCallableNativeFuncCallRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddParamTypeBasedOnPHPUnitDataProviderRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddParamTypeDeclarationRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeDeclarationRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddParamTypeFromPropertyTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeFromPropertyTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddReturnArrayDocblockBasedOnArrayMapRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddReturnArrayDocblockBasedOnArrayMapRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddReturnTypeDeclarationBasedOnParentClassMethodRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationBasedOnParentClassMethodRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddReturnTypeDeclarationRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddTypeFromResourceDocblockRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddTypeFromResourceDocblockRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddVoidReturnTypeWhereNoReturnRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/AddVoidReturnTypeWhereNoReturnRector.php',
- 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\BoolReturnTypeFromStrictScalarReturnsRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromStrictScalarReturnsRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\BoolReturnTypeFromBooleanConstReturnsRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanConstReturnsRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\BoolReturnTypeFromBooleanStrictReturnsRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanStrictReturnsRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\NumericReturnTypeFromStrictReturnsRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictReturnsRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\NumericReturnTypeFromStrictScalarReturnsRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictScalarReturnsRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ParamTypeByMethodCallTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ParamTypeByMethodCallTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ParamTypeByParentCallTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ParamTypeByParentCallTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnNeverTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnNeverTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnNullableTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnNullableTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromMockObjectRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromMockObjectRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromReturnCastRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnCastRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromReturnDirectArrayRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnDirectArrayRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromReturnNewRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php',
- 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictBoolReturnExprRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictBoolReturnExprRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictConstantReturnRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictConstantReturnRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictFluentReturnRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictFluentReturnRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictNativeCallRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNativeCallRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictNewArrayRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNewArrayRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictParamRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php',
- 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictScalarReturnExprRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictTypedCallRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictTypedPropertyRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedPropertyRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromSymfonySerializerRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromSymfonySerializerRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnUnionTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnUnionTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\StrictArrayParamDimFetchRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\StrictStringParamConcatRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/StrictStringParamConcatRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\StringReturnTypeFromStrictScalarReturnsRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictScalarReturnsRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\StringReturnTypeFromStrictStringReturnsRector' => $baseDir . '/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictStringReturnsRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\AddTestsVoidReturnTypeWhereNoReturnRector' => $baseDir . '/rules/TypeDeclaration/Rector/Class_/AddTestsVoidReturnTypeWhereNoReturnRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\ChildDoctrineRepositoryClassTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/Class_/ChildDoctrineRepositoryClassTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\MergeDateTimePropertyTypeDeclarationRector' => $baseDir . '/rules/TypeDeclaration/Rector/Class_/MergeDateTimePropertyTypeDeclarationRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\PropertyTypeFromStrictSetterGetterRector' => $baseDir . '/rules/TypeDeclaration/Rector/Class_/PropertyTypeFromStrictSetterGetterRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\ReturnTypeFromStrictTernaryRector' => $baseDir . '/rules/TypeDeclaration/Rector/Class_/ReturnTypeFromStrictTernaryRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Class_\\TypedPropertyFromCreateMockAssignRector' => $baseDir . '/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromCreateMockAssignRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Class_\\TypedPropertyFromJMSSerializerAttributeTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromJMSSerializerAttributeTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Closure\\AddClosureNeverReturnTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/Closure/AddClosureNeverReturnTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\Closure\\AddClosureVoidReturnTypeWhereNoReturnRector' => $baseDir . '/rules/TypeDeclaration/Rector/Closure/AddClosureVoidReturnTypeWhereNoReturnRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Closure\\ClosureReturnTypeRector' => $baseDir . '/rules/TypeDeclaration/Rector/Closure/ClosureReturnTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\Empty_\\EmptyOnNullableObjectToInstanceOfRector' => $baseDir . '/rules/TypeDeclaration/Rector/Empty_/EmptyOnNullableObjectToInstanceOfRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Expression\\InlineVarDocTagToAssertRector' => $baseDir . '/rules/TypeDeclaration/Rector/Expression/InlineVarDocTagToAssertRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddClosureParamTypeFromArgRector' => $baseDir . '/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromArgRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddClosureParamTypeFromObjectRector' => $baseDir . '/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromObjectRector.php',
'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRector' => $baseDir . '/rules/TypeDeclaration/Rector/FunctionLike/AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRector.php',
'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddParamTypeSplFixedArrayRector' => $baseDir . '/rules/TypeDeclaration/Rector/FunctionLike/AddParamTypeSplFixedArrayRector.php',
'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddReturnTypeDeclarationFromYieldsRector' => $baseDir . '/rules/TypeDeclaration/Rector/FunctionLike/AddReturnTypeDeclarationFromYieldsRector.php',
@@ -2427,13 +2508,10 @@
'Rector\\TypeDeclaration\\Rector\\StmtsAwareInterface\\DeclareStrictTypesRector' => $baseDir . '/rules/TypeDeclaration/Rector/StmtsAwareInterface/DeclareStrictTypesRector.php',
'Rector\\TypeDeclaration\\Rector\\StmtsAwareInterface\\IncreaseDeclareStrictTypesRector' => $baseDir . '/rules/TypeDeclaration/Rector/StmtsAwareInterface/IncreaseDeclareStrictTypesRector.php',
'Rector\\TypeDeclaration\\Rector\\While_\\WhileNullableToInstanceofRector' => $baseDir . '/rules/TypeDeclaration/Rector/While_/WhileNullableToInstanceofRector.php',
- 'Rector\\TypeDeclaration\\TypeAnalyzer\\AlwaysStrictBoolExprAnalyzer' => $baseDir . '/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictBoolExprAnalyzer.php',
- 'Rector\\TypeDeclaration\\TypeAnalyzer\\AlwaysStrictScalarExprAnalyzer' => $baseDir . '/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictScalarExprAnalyzer.php',
'Rector\\TypeDeclaration\\TypeAnalyzer\\GenericClassStringTypeNormalizer' => $baseDir . '/rules/TypeDeclaration/TypeAnalyzer/GenericClassStringTypeNormalizer.php',
'Rector\\TypeDeclaration\\TypeAnalyzer\\NullableTypeAnalyzer' => $baseDir . '/rules/TypeDeclaration/TypeAnalyzer/NullableTypeAnalyzer.php',
'Rector\\TypeDeclaration\\TypeAnalyzer\\PropertyTypeDefaultValueAnalyzer' => $baseDir . '/rules/TypeDeclaration/TypeAnalyzer/PropertyTypeDefaultValueAnalyzer.php',
'Rector\\TypeDeclaration\\TypeAnalyzer\\ReturnStrictTypeAnalyzer' => $baseDir . '/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php',
- 'Rector\\TypeDeclaration\\TypeAnalyzer\\StrictReturnClassConstReturnTypeAnalyzer' => $baseDir . '/rules/TypeDeclaration/TypeAnalyzer/StrictReturnClassConstReturnTypeAnalyzer.php',
'Rector\\TypeDeclaration\\TypeInferer\\AssignToPropertyTypeInferer' => $baseDir . '/rules/TypeDeclaration/TypeInferer/AssignToPropertyTypeInferer.php',
'Rector\\TypeDeclaration\\TypeInferer\\PropertyTypeInferer\\AllAssignNodePropertyTypeInferer' => $baseDir . '/rules/TypeDeclaration/TypeInferer/PropertyTypeInferer/AllAssignNodePropertyTypeInferer.php',
'Rector\\TypeDeclaration\\TypeInferer\\PropertyTypeInferer\\GetterTypeDeclarationPropertyTypeInferer' => $baseDir . '/rules/TypeDeclaration/TypeInferer/PropertyTypeInferer/GetterTypeDeclarationPropertyTypeInferer.php',
@@ -2444,6 +2522,8 @@
'Rector\\TypeDeclaration\\TypeInferer\\SilentVoidResolver' => $baseDir . '/rules/TypeDeclaration/TypeInferer/SilentVoidResolver.php',
'Rector\\TypeDeclaration\\TypeInferer\\SplArrayFixedTypeNarrower' => $baseDir . '/rules/TypeDeclaration/TypeInferer/SplArrayFixedTypeNarrower.php',
'Rector\\TypeDeclaration\\TypeNormalizer' => $baseDir . '/rules/TypeDeclaration/TypeNormalizer.php',
+ 'Rector\\TypeDeclaration\\ValueObject\\AddClosureParamTypeFromArg' => $baseDir . '/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromArg.php',
+ 'Rector\\TypeDeclaration\\ValueObject\\AddClosureParamTypeFromObject' => $baseDir . '/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromObject.php',
'Rector\\TypeDeclaration\\ValueObject\\AddParamTypeDeclaration' => $baseDir . '/rules/TypeDeclaration/ValueObject/AddParamTypeDeclaration.php',
'Rector\\TypeDeclaration\\ValueObject\\AddParamTypeForFunctionLikeWithinCallLikeArgDeclaration' => $baseDir . '/rules/TypeDeclaration/ValueObject/AddParamTypeForFunctionLikeWithinCallLikeArgDeclaration.php',
'Rector\\TypeDeclaration\\ValueObject\\AddPropertyTypeDeclaration' => $baseDir . '/rules/TypeDeclaration/ValueObject/AddPropertyTypeDeclaration.php',
@@ -2462,7 +2542,6 @@
'Rector\\Util\\StringUtils' => $baseDir . '/src/Util/StringUtils.php',
'Rector\\Validation\\RectorAssert' => $baseDir . '/src/Validation/RectorAssert.php',
'Rector\\Validation\\RectorConfigValidator' => $baseDir . '/src/Validation/RectorConfigValidator.php',
- 'Rector\\ValueObjectFactory\\Application\\FileFactory' => $baseDir . '/src/ValueObjectFactory/Application/FileFactory.php',
'Rector\\ValueObject\\Application\\File' => $baseDir . '/src/ValueObject/Application/File.php',
'Rector\\ValueObject\\Bootstrap\\BootstrapConfigs' => $baseDir . '/src/ValueObject/Bootstrap/BootstrapConfigs.php',
'Rector\\ValueObject\\ClassMethodWillChangeReturnType' => $vendorDir . '/rector/rector-downgrade-php/src/ValueObject/ClassMethodWillChangeReturnType.php',
diff --git a/vendor/rector/rector/vendor/composer/autoload_psr4.php b/vendor/rector/rector/vendor/composer/autoload_psr4.php
index 533aa09ae..8e441342f 100644
--- a/vendor/rector/rector/vendor/composer/autoload_psr4.php
+++ b/vendor/rector/rector/vendor/composer/autoload_psr4.php
@@ -14,34 +14,34 @@
'Rector\\PHPUnit\\' => array($vendorDir . '/rector/rector-phpunit/src', $vendorDir . '/rector/rector-phpunit/rules'),
'Rector\\Doctrine\\' => array($vendorDir . '/rector/rector-doctrine/src', $vendorDir . '/rector/rector-doctrine/rules'),
'Rector\\' => array($baseDir . '/rules', $baseDir . '/src', $vendorDir . '/rector/rector-downgrade-php/src', $vendorDir . '/rector/rector-downgrade-php/rules'),
- 'RectorPrefix202405\\Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
- 'RectorPrefix202405\\Symplify\\EasyParallel\\' => array($vendorDir . '/symplify/easy-parallel/src'),
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
- 'RectorPrefix202405\\Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'),
- 'RectorPrefix202405\\Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
- 'RectorPrefix202405\\React\\Stream\\' => array($vendorDir . '/react/stream/src'),
- 'RectorPrefix202405\\React\\Socket\\' => array($vendorDir . '/react/socket/src'),
- 'RectorPrefix202405\\React\\Promise\\' => array($vendorDir . '/react/promise/src'),
- 'RectorPrefix202405\\React\\EventLoop\\' => array($vendorDir . '/react/event-loop/src'),
- 'RectorPrefix202405\\React\\Dns\\' => array($vendorDir . '/react/dns/src'),
- 'RectorPrefix202405\\React\\ChildProcess\\' => array($vendorDir . '/react/child-process/src'),
- 'RectorPrefix202405\\React\\Cache\\' => array($vendorDir . '/react/cache/src'),
- 'RectorPrefix202405\\Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
- 'RectorPrefix202405\\Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
- 'RectorPrefix202405\\Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
- 'RectorPrefix202405\\OndraM\\CiDetector\\' => array($vendorDir . '/ondram/ci-detector/src'),
- 'RectorPrefix202405\\Illuminate\\Contracts\\' => array($vendorDir . '/illuminate/contracts'),
- 'RectorPrefix202405\\Illuminate\\Container\\' => array($vendorDir . '/illuminate/container'),
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\' => array($vendorDir . '/fidry/cpu-core-counter/src'),
- 'RectorPrefix202405\\Evenement\\' => array($vendorDir . '/evenement/evenement/src'),
- 'RectorPrefix202405\\Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'),
- 'RectorPrefix202405\\Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'),
- 'RectorPrefix202405\\Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'),
- 'RectorPrefix202405\\Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'),
- 'RectorPrefix202405\\Clue\\React\\NDJson\\' => array($vendorDir . '/clue/ndjson-react/src'),
+ 'RectorPrefix202410\\Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\' => array($vendorDir . '/symplify/easy-parallel/src'),
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'),
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
+ 'RectorPrefix202410\\React\\Stream\\' => array($vendorDir . '/react/stream/src'),
+ 'RectorPrefix202410\\React\\Socket\\' => array($vendorDir . '/react/socket/src'),
+ 'RectorPrefix202410\\React\\Promise\\' => array($vendorDir . '/react/promise/src'),
+ 'RectorPrefix202410\\React\\EventLoop\\' => array($vendorDir . '/react/event-loop/src'),
+ 'RectorPrefix202410\\React\\Dns\\' => array($vendorDir . '/react/dns/src'),
+ 'RectorPrefix202410\\React\\ChildProcess\\' => array($vendorDir . '/react/child-process/src'),
+ 'RectorPrefix202410\\React\\Cache\\' => array($vendorDir . '/react/cache/src'),
+ 'RectorPrefix202410\\Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
+ 'RectorPrefix202410\\Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
+ 'RectorPrefix202410\\Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
+ 'RectorPrefix202410\\OndraM\\CiDetector\\' => array($vendorDir . '/ondram/ci-detector/src'),
+ 'RectorPrefix202410\\Illuminate\\Contracts\\' => array($vendorDir . '/illuminate/contracts'),
+ 'RectorPrefix202410\\Illuminate\\Container\\' => array($vendorDir . '/illuminate/container'),
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\' => array($vendorDir . '/fidry/cpu-core-counter/src'),
+ 'RectorPrefix202410\\Evenement\\' => array($vendorDir . '/evenement/evenement/src'),
+ 'RectorPrefix202410\\Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'),
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'),
+ 'RectorPrefix202410\\Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'),
+ 'RectorPrefix202410\\Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'),
+ 'RectorPrefix202410\\Clue\\React\\NDJson\\' => array($vendorDir . '/clue/ndjson-react/src'),
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
'PHPStan\\PhpDocParser\\' => array($vendorDir . '/phpstan/phpdoc-parser/src'),
);
diff --git a/vendor/rector/rector/vendor/composer/autoload_real.php b/vendor/rector/rector/vendor/composer/autoload_real.php
index 54e8ee141..82f820f61 100644
--- a/vendor/rector/rector/vendor/composer/autoload_real.php
+++ b/vendor/rector/rector/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInit70e3025dac7e7555f69a9b4ca9e3dfde
+class ComposerAutoloaderInit7c12491db1a700dd78980ecb6595c088
{
private static $loader;
@@ -22,17 +22,17 @@ public static function getLoader()
return self::$loader;
}
- spl_autoload_register(array('ComposerAutoloaderInit70e3025dac7e7555f69a9b4ca9e3dfde', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInit7c12491db1a700dd78980ecb6595c088', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
- spl_autoload_unregister(array('ComposerAutoloaderInit70e3025dac7e7555f69a9b4ca9e3dfde', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInit7c12491db1a700dd78980ecb6595c088', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
- call_user_func(\Composer\Autoload\ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde::getInitializer($loader));
+ call_user_func(\Composer\Autoload\ComposerStaticInit7c12491db1a700dd78980ecb6595c088::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
- $filesToLoad = \Composer\Autoload\ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde::$files;
+ $filesToLoad = \Composer\Autoload\ComposerStaticInit7c12491db1a700dd78980ecb6595c088::$files;
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
diff --git a/vendor/rector/rector/vendor/composer/autoload_static.php b/vendor/rector/rector/vendor/composer/autoload_static.php
index c09f620ef..8a5537adf 100644
--- a/vendor/rector/rector/vendor/composer/autoload_static.php
+++ b/vendor/rector/rector/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
namespace Composer\Autoload;
-class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
+class ComposerStaticInit7c12491db1a700dd78980ecb6595c088
{
public static $files = array (
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@@ -27,34 +27,34 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\PHPUnit\\' => 15,
'Rector\\Doctrine\\' => 16,
'Rector\\' => 7,
- 'RectorPrefix202405\\Webmozart\\Assert\\' => 36,
- 'RectorPrefix202405\\Symplify\\EasyParallel\\' => 41,
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\' => 45,
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\' => 42,
- 'RectorPrefix202405\\Symfony\\Component\\Process\\' => 45,
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\' => 44,
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\' => 48,
- 'RectorPrefix202405\\Symfony\\Component\\Console\\' => 45,
- 'RectorPrefix202405\\React\\Stream\\' => 32,
- 'RectorPrefix202405\\React\\Socket\\' => 32,
- 'RectorPrefix202405\\React\\Promise\\' => 33,
- 'RectorPrefix202405\\React\\EventLoop\\' => 35,
- 'RectorPrefix202405\\React\\Dns\\' => 29,
- 'RectorPrefix202405\\React\\ChildProcess\\' => 38,
- 'RectorPrefix202405\\React\\Cache\\' => 31,
- 'RectorPrefix202405\\Psr\\SimpleCache\\' => 35,
- 'RectorPrefix202405\\Psr\\Log\\' => 27,
- 'RectorPrefix202405\\Psr\\Container\\' => 33,
- 'RectorPrefix202405\\OndraM\\CiDetector\\' => 37,
- 'RectorPrefix202405\\Illuminate\\Contracts\\' => 40,
- 'RectorPrefix202405\\Illuminate\\Container\\' => 40,
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\' => 40,
- 'RectorPrefix202405\\Evenement\\' => 29,
- 'RectorPrefix202405\\Doctrine\\Inflector\\' => 38,
- 'RectorPrefix202405\\Composer\\XdebugHandler\\' => 42,
- 'RectorPrefix202405\\Composer\\Semver\\' => 35,
- 'RectorPrefix202405\\Composer\\Pcre\\' => 33,
- 'RectorPrefix202405\\Clue\\React\\NDJson\\' => 37,
+ 'RectorPrefix202410\\Webmozart\\Assert\\' => 36,
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\' => 41,
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\' => 45,
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\' => 42,
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\' => 45,
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\' => 44,
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\' => 48,
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\' => 45,
+ 'RectorPrefix202410\\React\\Stream\\' => 32,
+ 'RectorPrefix202410\\React\\Socket\\' => 32,
+ 'RectorPrefix202410\\React\\Promise\\' => 33,
+ 'RectorPrefix202410\\React\\EventLoop\\' => 35,
+ 'RectorPrefix202410\\React\\Dns\\' => 29,
+ 'RectorPrefix202410\\React\\ChildProcess\\' => 38,
+ 'RectorPrefix202410\\React\\Cache\\' => 31,
+ 'RectorPrefix202410\\Psr\\SimpleCache\\' => 35,
+ 'RectorPrefix202410\\Psr\\Log\\' => 27,
+ 'RectorPrefix202410\\Psr\\Container\\' => 33,
+ 'RectorPrefix202410\\OndraM\\CiDetector\\' => 37,
+ 'RectorPrefix202410\\Illuminate\\Contracts\\' => 40,
+ 'RectorPrefix202410\\Illuminate\\Container\\' => 40,
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\' => 40,
+ 'RectorPrefix202410\\Evenement\\' => 29,
+ 'RectorPrefix202410\\Doctrine\\Inflector\\' => 38,
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\' => 42,
+ 'RectorPrefix202410\\Composer\\Semver\\' => 35,
+ 'RectorPrefix202410\\Composer\\Pcre\\' => 33,
+ 'RectorPrefix202410\\Clue\\React\\NDJson\\' => 37,
),
'P' =>
array (
@@ -102,115 +102,115 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
2 => __DIR__ . '/..' . '/rector/rector-downgrade-php/src',
3 => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules',
),
- 'RectorPrefix202405\\Webmozart\\Assert\\' =>
+ 'RectorPrefix202410\\Webmozart\\Assert\\' =>
array (
0 => __DIR__ . '/..' . '/webmozart/assert/src',
),
- 'RectorPrefix202405\\Symplify\\EasyParallel\\' =>
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\' =>
array (
0 => __DIR__ . '/..' . '/symplify/easy-parallel/src',
),
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\' =>
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/service-contracts',
),
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\' =>
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/yaml',
),
- 'RectorPrefix202405\\Symfony\\Component\\Process\\' =>
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/process',
),
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\' =>
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/finder',
),
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\' =>
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/filesystem',
),
- 'RectorPrefix202405\\Symfony\\Component\\Console\\' =>
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/console',
),
- 'RectorPrefix202405\\React\\Stream\\' =>
+ 'RectorPrefix202410\\React\\Stream\\' =>
array (
0 => __DIR__ . '/..' . '/react/stream/src',
),
- 'RectorPrefix202405\\React\\Socket\\' =>
+ 'RectorPrefix202410\\React\\Socket\\' =>
array (
0 => __DIR__ . '/..' . '/react/socket/src',
),
- 'RectorPrefix202405\\React\\Promise\\' =>
+ 'RectorPrefix202410\\React\\Promise\\' =>
array (
0 => __DIR__ . '/..' . '/react/promise/src',
),
- 'RectorPrefix202405\\React\\EventLoop\\' =>
+ 'RectorPrefix202410\\React\\EventLoop\\' =>
array (
0 => __DIR__ . '/..' . '/react/event-loop/src',
),
- 'RectorPrefix202405\\React\\Dns\\' =>
+ 'RectorPrefix202410\\React\\Dns\\' =>
array (
0 => __DIR__ . '/..' . '/react/dns/src',
),
- 'RectorPrefix202405\\React\\ChildProcess\\' =>
+ 'RectorPrefix202410\\React\\ChildProcess\\' =>
array (
0 => __DIR__ . '/..' . '/react/child-process/src',
),
- 'RectorPrefix202405\\React\\Cache\\' =>
+ 'RectorPrefix202410\\React\\Cache\\' =>
array (
0 => __DIR__ . '/..' . '/react/cache/src',
),
- 'RectorPrefix202405\\Psr\\SimpleCache\\' =>
+ 'RectorPrefix202410\\Psr\\SimpleCache\\' =>
array (
0 => __DIR__ . '/..' . '/psr/simple-cache/src',
),
- 'RectorPrefix202405\\Psr\\Log\\' =>
+ 'RectorPrefix202410\\Psr\\Log\\' =>
array (
0 => __DIR__ . '/..' . '/psr/log/src',
),
- 'RectorPrefix202405\\Psr\\Container\\' =>
+ 'RectorPrefix202410\\Psr\\Container\\' =>
array (
0 => __DIR__ . '/..' . '/psr/container/src',
),
- 'RectorPrefix202405\\OndraM\\CiDetector\\' =>
+ 'RectorPrefix202410\\OndraM\\CiDetector\\' =>
array (
0 => __DIR__ . '/..' . '/ondram/ci-detector/src',
),
- 'RectorPrefix202405\\Illuminate\\Contracts\\' =>
+ 'RectorPrefix202410\\Illuminate\\Contracts\\' =>
array (
0 => __DIR__ . '/..' . '/illuminate/contracts',
),
- 'RectorPrefix202405\\Illuminate\\Container\\' =>
+ 'RectorPrefix202410\\Illuminate\\Container\\' =>
array (
0 => __DIR__ . '/..' . '/illuminate/container',
),
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\' =>
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\' =>
array (
0 => __DIR__ . '/..' . '/fidry/cpu-core-counter/src',
),
- 'RectorPrefix202405\\Evenement\\' =>
+ 'RectorPrefix202410\\Evenement\\' =>
array (
0 => __DIR__ . '/..' . '/evenement/evenement/src',
),
- 'RectorPrefix202405\\Doctrine\\Inflector\\' =>
+ 'RectorPrefix202410\\Doctrine\\Inflector\\' =>
array (
0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector',
),
- 'RectorPrefix202405\\Composer\\XdebugHandler\\' =>
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\' =>
array (
0 => __DIR__ . '/..' . '/composer/xdebug-handler/src',
),
- 'RectorPrefix202405\\Composer\\Semver\\' =>
+ 'RectorPrefix202410\\Composer\\Semver\\' =>
array (
0 => __DIR__ . '/..' . '/composer/semver/src',
),
- 'RectorPrefix202405\\Composer\\Pcre\\' =>
+ 'RectorPrefix202410\\Composer\\Pcre\\' =>
array (
0 => __DIR__ . '/..' . '/composer/pcre/src',
),
- 'RectorPrefix202405\\Clue\\React\\NDJson\\' =>
+ 'RectorPrefix202410\\Clue\\React\\NDJson\\' =>
array (
0 => __DIR__ . '/..' . '/clue/ndjson-react/src',
),
@@ -272,6 +272,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTextNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PhpDocTextNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PropertyTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PropertyTagValueNode.php',
+ 'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PureUnlessCallableIsImpureTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/PureUnlessCallableIsImpureTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\RequireExtendsTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireExtendsTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\RequireImplementsTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/RequireImplementsTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\ReturnTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/ReturnTagValueNode.php',
@@ -285,6 +286,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'PHPStan\\PhpDocParser\\Ast\\PhpDoc\\VarTagValueNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/PhpDoc/VarTagValueNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeItemNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeItemNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeNode.php',
+ 'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayShapeUnsealedTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeUnsealedTypeNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\ArrayTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/ArrayTypeNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\CallableTypeNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeNode.php',
'PHPStan\\PhpDocParser\\Ast\\Type\\CallableTypeParameterNode' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Type/CallableTypeParameterNode.php',
@@ -562,635 +564,653 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'PhpParser\\Parser\\Tokens' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php',
'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php',
'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php',
- 'RectorPrefix202405\\Clue\\React\\NDJson\\Decoder' => __DIR__ . '/..' . '/clue/ndjson-react/src/Decoder.php',
- 'RectorPrefix202405\\Clue\\React\\NDJson\\Encoder' => __DIR__ . '/..' . '/clue/ndjson-react/src/Encoder.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchAllResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchAllStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllStrictGroupsResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchAllWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllWithOffsetsResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchStrictGroupsResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\MatchWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchWithOffsetsResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\PcreException' => __DIR__ . '/..' . '/composer/pcre/src/PcreException.php',
- 'RectorPrefix202405\\Composer\\Pcre\\Preg' => __DIR__ . '/..' . '/composer/pcre/src/Preg.php',
- 'RectorPrefix202405\\Composer\\Pcre\\Regex' => __DIR__ . '/..' . '/composer/pcre/src/Regex.php',
- 'RectorPrefix202405\\Composer\\Pcre\\ReplaceResult' => __DIR__ . '/..' . '/composer/pcre/src/ReplaceResult.php',
- 'RectorPrefix202405\\Composer\\Pcre\\UnexpectedNullMatchException' => __DIR__ . '/..' . '/composer/pcre/src/UnexpectedNullMatchException.php',
- 'RectorPrefix202405\\Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php',
- 'RectorPrefix202405\\Composer\\Semver\\CompilingMatcher' => __DIR__ . '/..' . '/composer/semver/src/CompilingMatcher.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\Bound' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Bound.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\MatchAllConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchAllConstraint.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchNoneConstraint.php',
- 'RectorPrefix202405\\Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php',
- 'RectorPrefix202405\\Composer\\Semver\\Interval' => __DIR__ . '/..' . '/composer/semver/src/Interval.php',
- 'RectorPrefix202405\\Composer\\Semver\\Intervals' => __DIR__ . '/..' . '/composer/semver/src/Intervals.php',
- 'RectorPrefix202405\\Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php',
- 'RectorPrefix202405\\Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php',
- 'RectorPrefix202405\\Composer\\XdebugHandler\\PhpConfig' => __DIR__ . '/..' . '/composer/xdebug-handler/src/PhpConfig.php',
- 'RectorPrefix202405\\Composer\\XdebugHandler\\Process' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Process.php',
- 'RectorPrefix202405\\Composer\\XdebugHandler\\Status' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Status.php',
- 'RectorPrefix202405\\Composer\\XdebugHandler\\XdebugHandler' => __DIR__ . '/..' . '/composer/xdebug-handler/src/XdebugHandler.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\CachedWordInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\GenericLanguageInflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Inflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Language' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Language.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\LanguageInflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/LanguageInflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\NoopWordInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/NoopWordInflector.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\English\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\English\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\English\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\English\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\French\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\French\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\French\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\French\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Pattern' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Pattern.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Patterns' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Portuguese\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Portuguese\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Portuguese\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Portuguese\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Ruleset' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Ruleset.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Spanish\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Spanish\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Spanish\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Spanish\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Substitution' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitution.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Substitutions' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Transformation' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Transformations' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Turkish\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Turkish\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/InflectorFactory.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Turkish\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Rules.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Turkish\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\Rules\\Word' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Word.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\RulesetInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php',
- 'RectorPrefix202405\\Doctrine\\Inflector\\WordInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php',
- 'RectorPrefix202405\\Evenement\\EventEmitter' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitter.php',
- 'RectorPrefix202405\\Evenement\\EventEmitterInterface' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitterInterface.php',
- 'RectorPrefix202405\\Evenement\\EventEmitterTrait' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitterTrait.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\CpuCoreCounter' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/CpuCoreCounter.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Diagnoser' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Diagnoser.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\LscpuLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\LscpuPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
- 'RectorPrefix202405\\Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
- 'RectorPrefix202405\\Illuminate\\Container\\BoundMethod' => __DIR__ . '/..' . '/illuminate/container/BoundMethod.php',
- 'RectorPrefix202405\\Illuminate\\Container\\Container' => __DIR__ . '/..' . '/illuminate/container/Container.php',
- 'RectorPrefix202405\\Illuminate\\Container\\ContextualBindingBuilder' => __DIR__ . '/..' . '/illuminate/container/ContextualBindingBuilder.php',
- 'RectorPrefix202405\\Illuminate\\Container\\EntryNotFoundException' => __DIR__ . '/..' . '/illuminate/container/EntryNotFoundException.php',
- 'RectorPrefix202405\\Illuminate\\Container\\RewindableGenerator' => __DIR__ . '/..' . '/illuminate/container/RewindableGenerator.php',
- 'RectorPrefix202405\\Illuminate\\Container\\Util' => __DIR__ . '/..' . '/illuminate/container/Util.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Access\\Authorizable' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Access/Authorizable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Access\\Gate' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Access/Gate.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Authenticatable' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Authenticatable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\CanResetPassword' => __DIR__ . '/..' . '/illuminate/contracts/Auth/CanResetPassword.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Guard' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Guard.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\MustVerifyEmail' => __DIR__ . '/..' . '/illuminate/contracts/Auth/MustVerifyEmail.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\PasswordBroker' => __DIR__ . '/..' . '/illuminate/contracts/Auth/PasswordBroker.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => __DIR__ . '/..' . '/illuminate/contracts/Auth/PasswordBrokerFactory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\StatefulGuard' => __DIR__ . '/..' . '/illuminate/contracts/Auth/StatefulGuard.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => __DIR__ . '/..' . '/illuminate/contracts/Auth/SupportsBasicAuth.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Auth\\UserProvider' => __DIR__ . '/..' . '/illuminate/contracts/Auth/UserProvider.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\Broadcaster' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/Broadcaster.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/HasBroadcastChannel.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\ShouldBeUnique' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBeUnique.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBroadcast.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Bus\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Bus/Dispatcher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Bus\\QueueingDispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Bus/QueueingDispatcher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\Lock' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Lock.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\LockProvider' => __DIR__ . '/..' . '/illuminate/contracts/Cache/LockProvider.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\LockTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Cache/LockTimeoutException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\Repository' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Repository.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cache\\Store' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Store.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Config\\Repository' => __DIR__ . '/..' . '/illuminate/contracts/Config/Repository.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Console\\Application' => __DIR__ . '/..' . '/illuminate/contracts/Console/Application.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Console\\Isolatable' => __DIR__ . '/..' . '/illuminate/contracts/Console/Isolatable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Console\\Kernel' => __DIR__ . '/..' . '/illuminate/contracts/Console/Kernel.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Console\\PromptsForMissingInput' => __DIR__ . '/..' . '/illuminate/contracts/Console/PromptsForMissingInput.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Container\\BindingResolutionException' => __DIR__ . '/..' . '/illuminate/contracts/Container/BindingResolutionException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Container\\CircularDependencyException' => __DIR__ . '/..' . '/illuminate/contracts/Container/CircularDependencyException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Container\\Container' => __DIR__ . '/..' . '/illuminate/contracts/Container/Container.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => __DIR__ . '/..' . '/illuminate/contracts/Container/ContextualBindingBuilder.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cookie\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Cookie/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Cookie\\QueueingFactory' => __DIR__ . '/..' . '/illuminate/contracts/Cookie/QueueingFactory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\Builder' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/Builder.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\Castable' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/Castable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/CastsAttributes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\DeviatesCastableAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\SerializesCastableAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/SerializesCastableAttributes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Eloquent\\SupportsPartialRelations' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => __DIR__ . '/..' . '/illuminate/contracts/Database/Events/MigrationEvent.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\ModelIdentifier' => __DIR__ . '/..' . '/illuminate/contracts/Database/ModelIdentifier.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Query\\Builder' => __DIR__ . '/..' . '/illuminate/contracts/Database/Query/Builder.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Query\\ConditionExpression' => __DIR__ . '/..' . '/illuminate/contracts/Database/Query/ConditionExpression.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Database\\Query\\Expression' => __DIR__ . '/..' . '/illuminate/contracts/Database/Query/Expression.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Debug\\ExceptionHandler' => __DIR__ . '/..' . '/illuminate/contracts/Debug/ExceptionHandler.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Encryption\\DecryptException' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/DecryptException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Encryption\\EncryptException' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/EncryptException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Encryption\\Encrypter' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/Encrypter.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Encryption\\StringEncrypter' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/StringEncrypter.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Events\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Events/Dispatcher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Events\\ShouldDispatchAfterCommit' => __DIR__ . '/..' . '/illuminate/contracts/Events/ShouldDispatchAfterCommit.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Events\\ShouldHandleEventsAfterCommit' => __DIR__ . '/..' . '/illuminate/contracts/Events/ShouldHandleEventsAfterCommit.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\Cloud' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Cloud.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/FileNotFoundException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Filesystem.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Filesystem\\LockTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/LockTimeoutException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\Application' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/Application.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\CachesConfiguration' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/CachesConfiguration.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\CachesRoutes' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/CachesRoutes.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\ExceptionRenderer' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/ExceptionRenderer.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Foundation\\MaintenanceMode' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/MaintenanceMode.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Hashing\\Hasher' => __DIR__ . '/..' . '/illuminate/contracts/Hashing/Hasher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Http\\Kernel' => __DIR__ . '/..' . '/illuminate/contracts/Http/Kernel.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\Attachable' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Attachable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\MailQueue' => __DIR__ . '/..' . '/illuminate/contracts/Mail/MailQueue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\Mailable' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Mailable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Mail\\Mailer' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Mailer.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Notifications\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Notifications/Dispatcher.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Notifications\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Notifications/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pagination\\CursorPaginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/CursorPaginator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/LengthAwarePaginator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pagination\\Paginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/Paginator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pipeline\\Hub' => __DIR__ . '/..' . '/illuminate/contracts/Pipeline/Hub.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Pipeline\\Pipeline' => __DIR__ . '/..' . '/illuminate/contracts/Pipeline/Pipeline.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Process\\InvokedProcess' => __DIR__ . '/..' . '/illuminate/contracts/Process/InvokedProcess.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Process\\ProcessResult' => __DIR__ . '/..' . '/illuminate/contracts/Process/ProcessResult.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ClearableQueue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ClearableQueue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\EntityNotFoundException' => __DIR__ . '/..' . '/illuminate/contracts/Queue/EntityNotFoundException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\EntityResolver' => __DIR__ . '/..' . '/illuminate/contracts/Queue/EntityResolver.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\Job' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Job.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\Monitor' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Monitor.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\Queue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Queue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\QueueableCollection' => __DIR__ . '/..' . '/illuminate/contracts/Queue/QueueableCollection.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\QueueableEntity' => __DIR__ . '/..' . '/illuminate/contracts/Queue/QueueableEntity.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldBeEncrypted' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldBeEncrypted.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldBeUnique' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldBeUnique.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldBeUniqueUntilProcessing' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldBeUniqueUntilProcessing.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldQueue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldQueue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Queue\\ShouldQueueAfterCommit' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldQueueAfterCommit.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Redis\\Connection' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Connection.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Redis\\Connector' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Connector.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Redis\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Redis/LimiterTimeoutException.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\BindingRegistrar' => __DIR__ . '/..' . '/illuminate/contracts/Routing/BindingRegistrar.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\Registrar' => __DIR__ . '/..' . '/illuminate/contracts/Routing/Registrar.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\ResponseFactory' => __DIR__ . '/..' . '/illuminate/contracts/Routing/ResponseFactory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\UrlGenerator' => __DIR__ . '/..' . '/illuminate/contracts/Routing/UrlGenerator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Routing\\UrlRoutable' => __DIR__ . '/..' . '/illuminate/contracts/Routing/UrlRoutable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Session\\Middleware\\AuthenticatesSessions' => __DIR__ . '/..' . '/illuminate/contracts/Session/Middleware/AuthenticatesSessions.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Session\\Session' => __DIR__ . '/..' . '/illuminate/contracts/Session/Session.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Arrayable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Arrayable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\CanBeEscapedWhenCastToString' => __DIR__ . '/..' . '/illuminate/contracts/Support/CanBeEscapedWhenCastToString.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\DeferrableProvider' => __DIR__ . '/..' . '/illuminate/contracts/Support/DeferrableProvider.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\DeferringDisplayableValue' => __DIR__ . '/..' . '/illuminate/contracts/Support/DeferringDisplayableValue.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Htmlable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Htmlable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Jsonable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Jsonable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\MessageBag' => __DIR__ . '/..' . '/illuminate/contracts/Support/MessageBag.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\MessageProvider' => __DIR__ . '/..' . '/illuminate/contracts/Support/MessageProvider.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Renderable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Renderable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\Responsable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Responsable.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Support\\ValidatedData' => __DIR__ . '/..' . '/illuminate/contracts/Support/ValidatedData.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Translation\\HasLocalePreference' => __DIR__ . '/..' . '/illuminate/contracts/Translation/HasLocalePreference.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Translation\\Loader' => __DIR__ . '/..' . '/illuminate/contracts/Translation/Loader.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Translation\\Translator' => __DIR__ . '/..' . '/illuminate/contracts/Translation/Translator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\DataAwareRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/DataAwareRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\ImplicitRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ImplicitRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\InvokableRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/InvokableRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\Rule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Rule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\UncompromisedVerifier' => __DIR__ . '/..' . '/illuminate/contracts/Validation/UncompromisedVerifier.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ValidatesWhenResolved.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\ValidationRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ValidationRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\Validator' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Validator.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\Validation\\ValidatorAwareRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ValidatorAwareRule.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\View\\Engine' => __DIR__ . '/..' . '/illuminate/contracts/View/Engine.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\View\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/View/Factory.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\View\\View' => __DIR__ . '/..' . '/illuminate/contracts/View/View.php',
- 'RectorPrefix202405\\Illuminate\\Contracts\\View\\ViewCompilationException' => __DIR__ . '/..' . '/illuminate/contracts/View/ViewCompilationException.php',
- 'RectorPrefix202405\\Nette\\ArgumentOutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\DeprecatedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\DirectoryNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\FileNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\HtmlStringable' => __DIR__ . '/..' . '/nette/utils/src/HtmlStringable.php',
- 'RectorPrefix202405\\Nette\\IOException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\InvalidArgumentException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\InvalidStateException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\Iterators\\CachingIterator' => __DIR__ . '/..' . '/nette/utils/src/Iterators/CachingIterator.php',
- 'RectorPrefix202405\\Nette\\Iterators\\Mapper' => __DIR__ . '/..' . '/nette/utils/src/Iterators/Mapper.php',
- 'RectorPrefix202405\\Nette\\Localization\\ITranslator' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
- 'RectorPrefix202405\\Nette\\Localization\\Translator' => __DIR__ . '/..' . '/nette/utils/src/Translator.php',
- 'RectorPrefix202405\\Nette\\MemberAccessException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\NotImplementedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\NotSupportedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\OutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/SmartObject.php',
- 'RectorPrefix202405\\Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/StaticClass.php',
- 'RectorPrefix202405\\Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\ArrayHash' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayHash.php',
- 'RectorPrefix202405\\Nette\\Utils\\ArrayList' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayList.php',
- 'RectorPrefix202405\\Nette\\Utils\\Arrays' => __DIR__ . '/..' . '/nette/utils/src/Utils/Arrays.php',
- 'RectorPrefix202405\\Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php',
- 'RectorPrefix202405\\Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php',
- 'RectorPrefix202405\\Nette\\Utils\\FileInfo' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileInfo.php',
- 'RectorPrefix202405\\Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php',
- 'RectorPrefix202405\\Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/utils/src/Utils/Finder.php',
- 'RectorPrefix202405\\Nette\\Utils\\Floats' => __DIR__ . '/..' . '/nette/utils/src/Utils/Floats.php',
- 'RectorPrefix202405\\Nette\\Utils\\Helpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/Helpers.php',
- 'RectorPrefix202405\\Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php',
- 'RectorPrefix202405\\Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
- 'RectorPrefix202405\\Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php',
- 'RectorPrefix202405\\Nette\\Utils\\ImageColor' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageColor.php',
- 'RectorPrefix202405\\Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\ImageType' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageType.php',
- 'RectorPrefix202405\\Nette\\Utils\\Iterables' => __DIR__ . '/..' . '/nette/utils/src/Utils/Iterables.php',
- 'RectorPrefix202405\\Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php',
- 'RectorPrefix202405\\Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php',
- 'RectorPrefix202405\\Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php',
- 'RectorPrefix202405\\Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php',
- 'RectorPrefix202405\\Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php',
- 'RectorPrefix202405\\Nette\\Utils\\ReflectionMethod' => __DIR__ . '/..' . '/nette/utils/src/Utils/ReflectionMethod.php',
- 'RectorPrefix202405\\Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php',
- 'RectorPrefix202405\\Nette\\Utils\\Type' => __DIR__ . '/..' . '/nette/utils/src/Utils/Type.php',
- 'RectorPrefix202405\\Nette\\Utils\\UnknownImageFileException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
- 'RectorPrefix202405\\Nette\\Utils\\Validators' => __DIR__ . '/..' . '/nette/utils/src/Utils/Validators.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\CiDetector' => __DIR__ . '/..' . '/ondram/ci-detector/src/CiDetector.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\CiDetectorInterface' => __DIR__ . '/..' . '/ondram/ci-detector/src/CiDetectorInterface.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\AbstractCi' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AbstractCi.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\AppVeyor' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AppVeyor.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\AwsCodeBuild' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AwsCodeBuild.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\AzurePipelines' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AzurePipelines.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Bamboo' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Bamboo.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\BitbucketPipelines' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/BitbucketPipelines.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Buddy' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Buddy.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\CiInterface' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/CiInterface.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Circle' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Circle.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Codeship' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Codeship.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Continuousphp' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Continuousphp.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Drone' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Drone.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\GitHubActions' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/GitHubActions.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\GitLab' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/GitLab.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Jenkins' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Jenkins.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\SourceHut' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/SourceHut.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\TeamCity' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/TeamCity.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Travis' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Travis.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Ci\\Wercker' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Wercker.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Env' => __DIR__ . '/..' . '/ondram/ci-detector/src/Env.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\Exception\\CiNotDetectedException' => __DIR__ . '/..' . '/ondram/ci-detector/src/Exception/CiNotDetectedException.php',
- 'RectorPrefix202405\\OndraM\\CiDetector\\TrinaryLogic' => __DIR__ . '/..' . '/ondram/ci-detector/src/TrinaryLogic.php',
- 'RectorPrefix202405\\Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php',
- 'RectorPrefix202405\\Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php',
- 'RectorPrefix202405\\Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php',
- 'RectorPrefix202405\\Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/src/AbstractLogger.php',
- 'RectorPrefix202405\\Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/src/InvalidArgumentException.php',
- 'RectorPrefix202405\\Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/src/LogLevel.php',
- 'RectorPrefix202405\\Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareInterface.php',
- 'RectorPrefix202405\\Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareTrait.php',
- 'RectorPrefix202405\\Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerInterface.php',
- 'RectorPrefix202405\\Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerTrait.php',
- 'RectorPrefix202405\\Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/src/NullLogger.php',
- 'RectorPrefix202405\\Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php',
- 'RectorPrefix202405\\Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php',
- 'RectorPrefix202405\\Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php',
- 'RectorPrefix202405\\React\\Cache\\ArrayCache' => __DIR__ . '/..' . '/react/cache/src/ArrayCache.php',
- 'RectorPrefix202405\\React\\Cache\\CacheInterface' => __DIR__ . '/..' . '/react/cache/src/CacheInterface.php',
- 'RectorPrefix202405\\React\\ChildProcess\\Process' => __DIR__ . '/..' . '/react/child-process/src/Process.php',
- 'RectorPrefix202405\\React\\Dns\\BadServerException' => __DIR__ . '/..' . '/react/dns/src/BadServerException.php',
- 'RectorPrefix202405\\React\\Dns\\Config\\Config' => __DIR__ . '/..' . '/react/dns/src/Config/Config.php',
- 'RectorPrefix202405\\React\\Dns\\Config\\HostsFile' => __DIR__ . '/..' . '/react/dns/src/Config/HostsFile.php',
- 'RectorPrefix202405\\React\\Dns\\Model\\Message' => __DIR__ . '/..' . '/react/dns/src/Model/Message.php',
- 'RectorPrefix202405\\React\\Dns\\Model\\Record' => __DIR__ . '/..' . '/react/dns/src/Model/Record.php',
- 'RectorPrefix202405\\React\\Dns\\Protocol\\BinaryDumper' => __DIR__ . '/..' . '/react/dns/src/Protocol/BinaryDumper.php',
- 'RectorPrefix202405\\React\\Dns\\Protocol\\Parser' => __DIR__ . '/..' . '/react/dns/src/Protocol/Parser.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\CachingExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/CachingExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\CancellationException' => __DIR__ . '/..' . '/react/dns/src/Query/CancellationException.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\CoopExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/CoopExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\ExecutorInterface' => __DIR__ . '/..' . '/react/dns/src/Query/ExecutorInterface.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\FallbackExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/FallbackExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\HostsFileExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/HostsFileExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\Query' => __DIR__ . '/..' . '/react/dns/src/Query/Query.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\RetryExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/RetryExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\SelectiveTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/SelectiveTransportExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\TcpTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/TcpTransportExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\TimeoutException' => __DIR__ . '/..' . '/react/dns/src/Query/TimeoutException.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\TimeoutExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/TimeoutExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\Query\\UdpTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/UdpTransportExecutor.php',
- 'RectorPrefix202405\\React\\Dns\\RecordNotFoundException' => __DIR__ . '/..' . '/react/dns/src/RecordNotFoundException.php',
- 'RectorPrefix202405\\React\\Dns\\Resolver\\Factory' => __DIR__ . '/..' . '/react/dns/src/Resolver/Factory.php',
- 'RectorPrefix202405\\React\\Dns\\Resolver\\Resolver' => __DIR__ . '/..' . '/react/dns/src/Resolver/Resolver.php',
- 'RectorPrefix202405\\React\\Dns\\Resolver\\ResolverInterface' => __DIR__ . '/..' . '/react/dns/src/Resolver/ResolverInterface.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtEvLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtEvLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtEventLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtEventLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtLibevLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtLibevLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtLibeventLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtLibeventLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\ExtUvLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtUvLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\Factory' => __DIR__ . '/..' . '/react/event-loop/src/Factory.php',
- 'RectorPrefix202405\\React\\EventLoop\\Loop' => __DIR__ . '/..' . '/react/event-loop/src/Loop.php',
- 'RectorPrefix202405\\React\\EventLoop\\LoopInterface' => __DIR__ . '/..' . '/react/event-loop/src/LoopInterface.php',
- 'RectorPrefix202405\\React\\EventLoop\\SignalsHandler' => __DIR__ . '/..' . '/react/event-loop/src/SignalsHandler.php',
- 'RectorPrefix202405\\React\\EventLoop\\StreamSelectLoop' => __DIR__ . '/..' . '/react/event-loop/src/StreamSelectLoop.php',
- 'RectorPrefix202405\\React\\EventLoop\\Tick\\FutureTickQueue' => __DIR__ . '/..' . '/react/event-loop/src/Tick/FutureTickQueue.php',
- 'RectorPrefix202405\\React\\EventLoop\\TimerInterface' => __DIR__ . '/..' . '/react/event-loop/src/TimerInterface.php',
- 'RectorPrefix202405\\React\\EventLoop\\Timer\\Timer' => __DIR__ . '/..' . '/react/event-loop/src/Timer/Timer.php',
- 'RectorPrefix202405\\React\\EventLoop\\Timer\\Timers' => __DIR__ . '/..' . '/react/event-loop/src/Timer/Timers.php',
- 'RectorPrefix202405\\React\\Promise\\CancellablePromiseInterface' => __DIR__ . '/..' . '/react/promise/src/CancellablePromiseInterface.php',
- 'RectorPrefix202405\\React\\Promise\\CancellationQueue' => __DIR__ . '/..' . '/react/promise/src/CancellationQueue.php',
- 'RectorPrefix202405\\React\\Promise\\Deferred' => __DIR__ . '/..' . '/react/promise/src/Deferred.php',
- 'RectorPrefix202405\\React\\Promise\\Exception\\LengthException' => __DIR__ . '/..' . '/react/promise/src/Exception/LengthException.php',
- 'RectorPrefix202405\\React\\Promise\\ExtendedPromiseInterface' => __DIR__ . '/..' . '/react/promise/src/ExtendedPromiseInterface.php',
- 'RectorPrefix202405\\React\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/react/promise/src/FulfilledPromise.php',
- 'RectorPrefix202405\\React\\Promise\\LazyPromise' => __DIR__ . '/..' . '/react/promise/src/LazyPromise.php',
- 'RectorPrefix202405\\React\\Promise\\Promise' => __DIR__ . '/..' . '/react/promise/src/Promise.php',
- 'RectorPrefix202405\\React\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/react/promise/src/PromiseInterface.php',
- 'RectorPrefix202405\\React\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/react/promise/src/PromisorInterface.php',
- 'RectorPrefix202405\\React\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/react/promise/src/RejectedPromise.php',
- 'RectorPrefix202405\\React\\Promise\\UnhandledRejectionException' => __DIR__ . '/..' . '/react/promise/src/UnhandledRejectionException.php',
- 'RectorPrefix202405\\React\\Socket\\Connection' => __DIR__ . '/..' . '/react/socket/src/Connection.php',
- 'RectorPrefix202405\\React\\Socket\\ConnectionInterface' => __DIR__ . '/..' . '/react/socket/src/ConnectionInterface.php',
- 'RectorPrefix202405\\React\\Socket\\Connector' => __DIR__ . '/..' . '/react/socket/src/Connector.php',
- 'RectorPrefix202405\\React\\Socket\\ConnectorInterface' => __DIR__ . '/..' . '/react/socket/src/ConnectorInterface.php',
- 'RectorPrefix202405\\React\\Socket\\DnsConnector' => __DIR__ . '/..' . '/react/socket/src/DnsConnector.php',
- 'RectorPrefix202405\\React\\Socket\\FdServer' => __DIR__ . '/..' . '/react/socket/src/FdServer.php',
- 'RectorPrefix202405\\React\\Socket\\FixedUriConnector' => __DIR__ . '/..' . '/react/socket/src/FixedUriConnector.php',
- 'RectorPrefix202405\\React\\Socket\\HappyEyeBallsConnectionBuilder' => __DIR__ . '/..' . '/react/socket/src/HappyEyeBallsConnectionBuilder.php',
- 'RectorPrefix202405\\React\\Socket\\HappyEyeBallsConnector' => __DIR__ . '/..' . '/react/socket/src/HappyEyeBallsConnector.php',
- 'RectorPrefix202405\\React\\Socket\\LimitingServer' => __DIR__ . '/..' . '/react/socket/src/LimitingServer.php',
- 'RectorPrefix202405\\React\\Socket\\SecureConnector' => __DIR__ . '/..' . '/react/socket/src/SecureConnector.php',
- 'RectorPrefix202405\\React\\Socket\\SecureServer' => __DIR__ . '/..' . '/react/socket/src/SecureServer.php',
- 'RectorPrefix202405\\React\\Socket\\Server' => __DIR__ . '/..' . '/react/socket/src/Server.php',
- 'RectorPrefix202405\\React\\Socket\\ServerInterface' => __DIR__ . '/..' . '/react/socket/src/ServerInterface.php',
- 'RectorPrefix202405\\React\\Socket\\SocketServer' => __DIR__ . '/..' . '/react/socket/src/SocketServer.php',
- 'RectorPrefix202405\\React\\Socket\\StreamEncryption' => __DIR__ . '/..' . '/react/socket/src/StreamEncryption.php',
- 'RectorPrefix202405\\React\\Socket\\TcpConnector' => __DIR__ . '/..' . '/react/socket/src/TcpConnector.php',
- 'RectorPrefix202405\\React\\Socket\\TcpServer' => __DIR__ . '/..' . '/react/socket/src/TcpServer.php',
- 'RectorPrefix202405\\React\\Socket\\TimeoutConnector' => __DIR__ . '/..' . '/react/socket/src/TimeoutConnector.php',
- 'RectorPrefix202405\\React\\Socket\\UnixConnector' => __DIR__ . '/..' . '/react/socket/src/UnixConnector.php',
- 'RectorPrefix202405\\React\\Socket\\UnixServer' => __DIR__ . '/..' . '/react/socket/src/UnixServer.php',
- 'RectorPrefix202405\\React\\Stream\\CompositeStream' => __DIR__ . '/..' . '/react/stream/src/CompositeStream.php',
- 'RectorPrefix202405\\React\\Stream\\DuplexResourceStream' => __DIR__ . '/..' . '/react/stream/src/DuplexResourceStream.php',
- 'RectorPrefix202405\\React\\Stream\\DuplexStreamInterface' => __DIR__ . '/..' . '/react/stream/src/DuplexStreamInterface.php',
- 'RectorPrefix202405\\React\\Stream\\ReadableResourceStream' => __DIR__ . '/..' . '/react/stream/src/ReadableResourceStream.php',
- 'RectorPrefix202405\\React\\Stream\\ReadableStreamInterface' => __DIR__ . '/..' . '/react/stream/src/ReadableStreamInterface.php',
- 'RectorPrefix202405\\React\\Stream\\ThroughStream' => __DIR__ . '/..' . '/react/stream/src/ThroughStream.php',
- 'RectorPrefix202405\\React\\Stream\\Util' => __DIR__ . '/..' . '/react/stream/src/Util.php',
- 'RectorPrefix202405\\React\\Stream\\WritableResourceStream' => __DIR__ . '/..' . '/react/stream/src/WritableResourceStream.php',
- 'RectorPrefix202405\\React\\Stream\\WritableStreamInterface' => __DIR__ . '/..' . '/react/stream/src/WritableStreamInterface.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
- 'RectorPrefix202405\\SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Attribute\\AsCommand' => __DIR__ . '/..' . '/symfony/console/Attribute/AsCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\CI\\GithubActionReporter' => __DIR__ . '/..' . '/symfony/console/CI/GithubActionReporter.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Color' => __DIR__ . '/..' . '/symfony/console/Color.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\CompleteCommand' => __DIR__ . '/..' . '/symfony/console/Command/CompleteCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => __DIR__ . '/..' . '/symfony/console/Command/DumpCompletionCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\LazyCommand' => __DIR__ . '/..' . '/symfony/console/Command/LazyCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => __DIR__ . '/..' . '/symfony/console/Command/SignalableCommandInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Command\\TraceableCommand' => __DIR__ . '/..' . '/symfony/console/Command/TraceableCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\CompletionInput' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionInput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionSuggestions.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/BashCompletionOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => __DIR__ . '/..' . '/symfony/console/Completion/Output/CompletionOutputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/FishCompletionOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/ZshCompletionOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Completion\\Suggestion' => __DIR__ . '/..' . '/symfony/console/Completion/Suggestion.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => __DIR__ . '/..' . '/symfony/console/DataCollector/CommandDataCollector.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Debug\\CliRequest' => __DIR__ . '/..' . '/symfony/console/Debug/CliRequest.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => __DIR__ . '/..' . '/symfony/console/Exception/RunCommandFailedException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\OutputWrapper' => __DIR__ . '/..' . '/symfony/console/Helper/OutputWrapper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableCellStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableCellStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Messenger\\RunCommandContext' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandContext.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessage.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessageHandler.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\AnsiColorMode' => __DIR__ . '/..' . '/symfony/console/Output/AnsiColorMode.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => __DIR__ . '/..' . '/symfony/console/Output/TrimmedBufferOutput.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalMap.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalRegistry.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php',
- 'RectorPrefix202405\\Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/InvalidArgumentException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/RuntimeException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php',
- 'RectorPrefix202405\\Symfony\\Component\\Filesystem\\Path' => __DIR__ . '/..' . '/symfony/filesystem/Path.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\LazyIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/LazyIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php',
- 'RectorPrefix202405\\Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/RunProcessFailedException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Messenger\\RunProcessContext' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessContext.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessage.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessageHandler.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\PhpSubprocess' => __DIR__ . '/..' . '/symfony/process/PhpSubprocess.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php',
- 'RectorPrefix202405\\Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Command\\LintCommand' => __DIR__ . '/..' . '/symfony/yaml/Command/LintCommand.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Dumper' => __DIR__ . '/..' . '/symfony/yaml/Dumper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Escaper' => __DIR__ . '/..' . '/symfony/yaml/Escaper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Exception\\DumpException' => __DIR__ . '/..' . '/symfony/yaml/Exception/DumpException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/yaml/Exception/ExceptionInterface.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Exception\\ParseException' => __DIR__ . '/..' . '/symfony/yaml/Exception/ParseException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/yaml/Exception/RuntimeException.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Inline' => __DIR__ . '/..' . '/symfony/yaml/Inline.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Parser' => __DIR__ . '/..' . '/symfony/yaml/Parser.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Tag\\TaggedValue' => __DIR__ . '/..' . '/symfony/yaml/Tag/TaggedValue.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Unescaper' => __DIR__ . '/..' . '/symfony/yaml/Unescaper.php',
- 'RectorPrefix202405\\Symfony\\Component\\Yaml\\Yaml' => __DIR__ . '/..' . '/symfony/yaml/Yaml.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceCollectionInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceCollectionInterface.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php',
- 'RectorPrefix202405\\Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\CommandLine\\WorkerCommandLineFactory' => __DIR__ . '/..' . '/symplify/easy-parallel/src/CommandLine/WorkerCommandLineFactory.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Contract\\SerializableInterface' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Contract/SerializableInterface.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\CpuCoreCountProvider' => __DIR__ . '/..' . '/symplify/easy-parallel/src/CpuCoreCountProvider.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Enum\\Action' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Enum/Action.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Enum\\Content' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Enum/Content.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Enum\\ReactCommand' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Enum/ReactCommand.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Enum\\ReactEvent' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Enum/ReactEvent.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Exception\\ParallelShouldNotHappenException' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Exception/ParallelShouldNotHappenException.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\Reflection\\CommandFromReflectionFactory' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Reflection/CommandFromReflectionFactory.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ScheduleFactory' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ScheduleFactory.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ValueObject\\EasyParallelConfig' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/EasyParallelConfig.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ValueObject\\ParallelProcess' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/ParallelProcess.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ValueObject\\ProcessPool' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/ProcessPool.php',
- 'RectorPrefix202405\\Symplify\\EasyParallel\\ValueObject\\Schedule' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/Schedule.php',
- 'RectorPrefix202405\\Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php',
- 'RectorPrefix202405\\Webmozart\\Assert\\InvalidArgumentException' => __DIR__ . '/..' . '/webmozart/assert/src/InvalidArgumentException.php',
- 'RectorPrefix202405\\Webmozart\\Assert\\Mixin' => __DIR__ . '/..' . '/webmozart/assert/src/Mixin.php',
+ 'RectorPrefix202410\\Clue\\React\\NDJson\\Decoder' => __DIR__ . '/..' . '/clue/ndjson-react/src/Decoder.php',
+ 'RectorPrefix202410\\Clue\\React\\NDJson\\Encoder' => __DIR__ . '/..' . '/clue/ndjson-react/src/Encoder.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchAllResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchAllStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllStrictGroupsResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchAllWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllWithOffsetsResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchStrictGroupsResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\MatchWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchWithOffsetsResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\InvalidRegexPatternRule' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\PregMatchFlags' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchFlags.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\PregMatchParameterOutTypeExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\PregMatchTypeSpecifyingExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\PregReplaceCallbackClosureTypeExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PHPStan\\UnsafeStrictGroupsCallRule' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\PcreException' => __DIR__ . '/..' . '/composer/pcre/src/PcreException.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\Preg' => __DIR__ . '/..' . '/composer/pcre/src/Preg.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\Regex' => __DIR__ . '/..' . '/composer/pcre/src/Regex.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\ReplaceResult' => __DIR__ . '/..' . '/composer/pcre/src/ReplaceResult.php',
+ 'RectorPrefix202410\\Composer\\Pcre\\UnexpectedNullMatchException' => __DIR__ . '/..' . '/composer/pcre/src/UnexpectedNullMatchException.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php',
+ 'RectorPrefix202410\\Composer\\Semver\\CompilingMatcher' => __DIR__ . '/..' . '/composer/semver/src/CompilingMatcher.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\Bound' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Bound.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\MatchAllConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchAllConstraint.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchNoneConstraint.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Interval' => __DIR__ . '/..' . '/composer/semver/src/Interval.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Intervals' => __DIR__ . '/..' . '/composer/semver/src/Intervals.php',
+ 'RectorPrefix202410\\Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php',
+ 'RectorPrefix202410\\Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php',
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\PhpConfig' => __DIR__ . '/..' . '/composer/xdebug-handler/src/PhpConfig.php',
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\Process' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Process.php',
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\Status' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Status.php',
+ 'RectorPrefix202410\\Composer\\XdebugHandler\\XdebugHandler' => __DIR__ . '/..' . '/composer/xdebug-handler/src/XdebugHandler.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\CachedWordInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\GenericLanguageInflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Inflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Language' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Language.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\LanguageInflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/LanguageInflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\NoopWordInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/NoopWordInflector.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\English\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\English\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\English\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\English\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\French\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\French\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\French\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\French\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\NorwegianBokmal\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Pattern' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Pattern.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Patterns' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Portuguese\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Portuguese\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Portuguese\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Portuguese\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Ruleset' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Ruleset.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Spanish\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Spanish\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Spanish\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Spanish\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Substitution' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitution.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Substitutions' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Transformation' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Transformations' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Turkish\\Inflectible' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Turkish\\InflectorFactory' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/InflectorFactory.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Turkish\\Rules' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Rules.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Turkish\\Uninflected' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\Rules\\Word' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/Rules/Word.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\RulesetInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php',
+ 'RectorPrefix202410\\Doctrine\\Inflector\\WordInflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php',
+ 'RectorPrefix202410\\Evenement\\EventEmitter' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitter.php',
+ 'RectorPrefix202410\\Evenement\\EventEmitterInterface' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitterInterface.php',
+ 'RectorPrefix202410\\Evenement\\EventEmitterTrait' => __DIR__ . '/..' . '/evenement/evenement/src/EventEmitterTrait.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\CpuCoreCounter' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/CpuCoreCounter.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Diagnoser' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Diagnoser.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\LscpuLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\LscpuPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
+ 'RectorPrefix202410\\Fidry\\CpuCoreCounter\\ParallelisationResult' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/ParallelisationResult.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Auth' => __DIR__ . '/..' . '/illuminate/container/Attributes/Auth.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Authenticated' => __DIR__ . '/..' . '/illuminate/container/Attributes/Authenticated.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Cache' => __DIR__ . '/..' . '/illuminate/container/Attributes/Cache.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Config' => __DIR__ . '/..' . '/illuminate/container/Attributes/Config.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\CurrentUser' => __DIR__ . '/..' . '/illuminate/container/Attributes/CurrentUser.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\DB' => __DIR__ . '/..' . '/illuminate/container/Attributes/DB.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Database' => __DIR__ . '/..' . '/illuminate/container/Attributes/Database.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Log' => __DIR__ . '/..' . '/illuminate/container/Attributes/Log.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Storage' => __DIR__ . '/..' . '/illuminate/container/Attributes/Storage.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Attributes\\Tag' => __DIR__ . '/..' . '/illuminate/container/Attributes/Tag.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\BoundMethod' => __DIR__ . '/..' . '/illuminate/container/BoundMethod.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Container' => __DIR__ . '/..' . '/illuminate/container/Container.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\ContextualBindingBuilder' => __DIR__ . '/..' . '/illuminate/container/ContextualBindingBuilder.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\EntryNotFoundException' => __DIR__ . '/..' . '/illuminate/container/EntryNotFoundException.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\RewindableGenerator' => __DIR__ . '/..' . '/illuminate/container/RewindableGenerator.php',
+ 'RectorPrefix202410\\Illuminate\\Container\\Util' => __DIR__ . '/..' . '/illuminate/container/Util.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Access\\Authorizable' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Access/Authorizable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Access\\Gate' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Access/Gate.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Authenticatable' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Authenticatable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\CanResetPassword' => __DIR__ . '/..' . '/illuminate/contracts/Auth/CanResetPassword.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Guard' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Guard.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\Middleware\\AuthenticatesRequests' => __DIR__ . '/..' . '/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\MustVerifyEmail' => __DIR__ . '/..' . '/illuminate/contracts/Auth/MustVerifyEmail.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\PasswordBroker' => __DIR__ . '/..' . '/illuminate/contracts/Auth/PasswordBroker.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\PasswordBrokerFactory' => __DIR__ . '/..' . '/illuminate/contracts/Auth/PasswordBrokerFactory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\StatefulGuard' => __DIR__ . '/..' . '/illuminate/contracts/Auth/StatefulGuard.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\SupportsBasicAuth' => __DIR__ . '/..' . '/illuminate/contracts/Auth/SupportsBasicAuth.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Auth\\UserProvider' => __DIR__ . '/..' . '/illuminate/contracts/Auth/UserProvider.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\Broadcaster' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/Broadcaster.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/HasBroadcastChannel.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\ShouldBeUnique' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBeUnique.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBroadcast.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Broadcasting\\ShouldBroadcastNow' => __DIR__ . '/..' . '/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Bus\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Bus/Dispatcher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Bus\\QueueingDispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Bus/QueueingDispatcher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\Lock' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Lock.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\LockProvider' => __DIR__ . '/..' . '/illuminate/contracts/Cache/LockProvider.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\LockTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Cache/LockTimeoutException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\Repository' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Repository.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cache\\Store' => __DIR__ . '/..' . '/illuminate/contracts/Cache/Store.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Concurrency\\Driver' => __DIR__ . '/..' . '/illuminate/contracts/Concurrency/Driver.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Config\\Repository' => __DIR__ . '/..' . '/illuminate/contracts/Config/Repository.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Console\\Application' => __DIR__ . '/..' . '/illuminate/contracts/Console/Application.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Console\\Isolatable' => __DIR__ . '/..' . '/illuminate/contracts/Console/Isolatable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Console\\Kernel' => __DIR__ . '/..' . '/illuminate/contracts/Console/Kernel.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Console\\PromptsForMissingInput' => __DIR__ . '/..' . '/illuminate/contracts/Console/PromptsForMissingInput.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\BindingResolutionException' => __DIR__ . '/..' . '/illuminate/contracts/Container/BindingResolutionException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\CircularDependencyException' => __DIR__ . '/..' . '/illuminate/contracts/Container/CircularDependencyException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\Container' => __DIR__ . '/..' . '/illuminate/contracts/Container/Container.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\ContextualAttribute' => __DIR__ . '/..' . '/illuminate/contracts/Container/ContextualAttribute.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Container\\ContextualBindingBuilder' => __DIR__ . '/..' . '/illuminate/contracts/Container/ContextualBindingBuilder.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cookie\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Cookie/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Cookie\\QueueingFactory' => __DIR__ . '/..' . '/illuminate/contracts/Cookie/QueueingFactory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\Builder' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/Builder.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\Castable' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/Castable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\CastsAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/CastsAttributes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\CastsInboundAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\DeviatesCastableAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\SerializesCastableAttributes' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/SerializesCastableAttributes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Eloquent\\SupportsPartialRelations' => __DIR__ . '/..' . '/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Events\\MigrationEvent' => __DIR__ . '/..' . '/illuminate/contracts/Database/Events/MigrationEvent.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\ModelIdentifier' => __DIR__ . '/..' . '/illuminate/contracts/Database/ModelIdentifier.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Query\\Builder' => __DIR__ . '/..' . '/illuminate/contracts/Database/Query/Builder.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Query\\ConditionExpression' => __DIR__ . '/..' . '/illuminate/contracts/Database/Query/ConditionExpression.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Database\\Query\\Expression' => __DIR__ . '/..' . '/illuminate/contracts/Database/Query/Expression.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Debug\\ExceptionHandler' => __DIR__ . '/..' . '/illuminate/contracts/Debug/ExceptionHandler.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Debug\\ShouldntReport' => __DIR__ . '/..' . '/illuminate/contracts/Debug/ShouldntReport.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Encryption\\DecryptException' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/DecryptException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Encryption\\EncryptException' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/EncryptException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Encryption\\Encrypter' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/Encrypter.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Encryption\\StringEncrypter' => __DIR__ . '/..' . '/illuminate/contracts/Encryption/StringEncrypter.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Events\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Events/Dispatcher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Events\\ShouldDispatchAfterCommit' => __DIR__ . '/..' . '/illuminate/contracts/Events/ShouldDispatchAfterCommit.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Events\\ShouldHandleEventsAfterCommit' => __DIR__ . '/..' . '/illuminate/contracts/Events/ShouldHandleEventsAfterCommit.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\Cloud' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Cloud.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\FileNotFoundException' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/FileNotFoundException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/Filesystem.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Filesystem\\LockTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Filesystem/LockTimeoutException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\Application' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/Application.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\CachesConfiguration' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/CachesConfiguration.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\CachesRoutes' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/CachesRoutes.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\ExceptionRenderer' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/ExceptionRenderer.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Foundation\\MaintenanceMode' => __DIR__ . '/..' . '/illuminate/contracts/Foundation/MaintenanceMode.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Hashing\\Hasher' => __DIR__ . '/..' . '/illuminate/contracts/Hashing/Hasher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Http\\Kernel' => __DIR__ . '/..' . '/illuminate/contracts/Http/Kernel.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\Attachable' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Attachable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\MailQueue' => __DIR__ . '/..' . '/illuminate/contracts/Mail/MailQueue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\Mailable' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Mailable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Mail\\Mailer' => __DIR__ . '/..' . '/illuminate/contracts/Mail/Mailer.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Notifications\\Dispatcher' => __DIR__ . '/..' . '/illuminate/contracts/Notifications/Dispatcher.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Notifications\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Notifications/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pagination\\CursorPaginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/CursorPaginator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pagination\\LengthAwarePaginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/LengthAwarePaginator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pagination\\Paginator' => __DIR__ . '/..' . '/illuminate/contracts/Pagination/Paginator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pipeline\\Hub' => __DIR__ . '/..' . '/illuminate/contracts/Pipeline/Hub.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Pipeline\\Pipeline' => __DIR__ . '/..' . '/illuminate/contracts/Pipeline/Pipeline.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Process\\InvokedProcess' => __DIR__ . '/..' . '/illuminate/contracts/Process/InvokedProcess.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Process\\ProcessResult' => __DIR__ . '/..' . '/illuminate/contracts/Process/ProcessResult.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ClearableQueue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ClearableQueue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\EntityNotFoundException' => __DIR__ . '/..' . '/illuminate/contracts/Queue/EntityNotFoundException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\EntityResolver' => __DIR__ . '/..' . '/illuminate/contracts/Queue/EntityResolver.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\Job' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Job.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\Monitor' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Monitor.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\Queue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/Queue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\QueueableCollection' => __DIR__ . '/..' . '/illuminate/contracts/Queue/QueueableCollection.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\QueueableEntity' => __DIR__ . '/..' . '/illuminate/contracts/Queue/QueueableEntity.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldBeEncrypted' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldBeEncrypted.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldBeUnique' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldBeUnique.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldBeUniqueUntilProcessing' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldBeUniqueUntilProcessing.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldQueue' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldQueue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Queue\\ShouldQueueAfterCommit' => __DIR__ . '/..' . '/illuminate/contracts/Queue/ShouldQueueAfterCommit.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Redis\\Connection' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Connection.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Redis\\Connector' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Connector.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Redis\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Redis/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => __DIR__ . '/..' . '/illuminate/contracts/Redis/LimiterTimeoutException.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\BindingRegistrar' => __DIR__ . '/..' . '/illuminate/contracts/Routing/BindingRegistrar.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\Registrar' => __DIR__ . '/..' . '/illuminate/contracts/Routing/Registrar.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\ResponseFactory' => __DIR__ . '/..' . '/illuminate/contracts/Routing/ResponseFactory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\UrlGenerator' => __DIR__ . '/..' . '/illuminate/contracts/Routing/UrlGenerator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Routing\\UrlRoutable' => __DIR__ . '/..' . '/illuminate/contracts/Routing/UrlRoutable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Session\\Middleware\\AuthenticatesSessions' => __DIR__ . '/..' . '/illuminate/contracts/Session/Middleware/AuthenticatesSessions.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Session\\Session' => __DIR__ . '/..' . '/illuminate/contracts/Session/Session.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Arrayable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Arrayable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\CanBeEscapedWhenCastToString' => __DIR__ . '/..' . '/illuminate/contracts/Support/CanBeEscapedWhenCastToString.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\DeferrableProvider' => __DIR__ . '/..' . '/illuminate/contracts/Support/DeferrableProvider.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\DeferringDisplayableValue' => __DIR__ . '/..' . '/illuminate/contracts/Support/DeferringDisplayableValue.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Htmlable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Htmlable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Jsonable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Jsonable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\MessageBag' => __DIR__ . '/..' . '/illuminate/contracts/Support/MessageBag.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\MessageProvider' => __DIR__ . '/..' . '/illuminate/contracts/Support/MessageProvider.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Renderable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Renderable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\Responsable' => __DIR__ . '/..' . '/illuminate/contracts/Support/Responsable.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Support\\ValidatedData' => __DIR__ . '/..' . '/illuminate/contracts/Support/ValidatedData.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Translation\\HasLocalePreference' => __DIR__ . '/..' . '/illuminate/contracts/Translation/HasLocalePreference.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Translation\\Loader' => __DIR__ . '/..' . '/illuminate/contracts/Translation/Loader.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Translation\\Translator' => __DIR__ . '/..' . '/illuminate/contracts/Translation/Translator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\DataAwareRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/DataAwareRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\ImplicitRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ImplicitRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\InvokableRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/InvokableRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\Rule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Rule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\UncompromisedVerifier' => __DIR__ . '/..' . '/illuminate/contracts/Validation/UncompromisedVerifier.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\ValidatesWhenResolved' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ValidatesWhenResolved.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\ValidationRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ValidationRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\Validator' => __DIR__ . '/..' . '/illuminate/contracts/Validation/Validator.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\Validation\\ValidatorAwareRule' => __DIR__ . '/..' . '/illuminate/contracts/Validation/ValidatorAwareRule.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\View\\Engine' => __DIR__ . '/..' . '/illuminate/contracts/View/Engine.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\View\\Factory' => __DIR__ . '/..' . '/illuminate/contracts/View/Factory.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\View\\View' => __DIR__ . '/..' . '/illuminate/contracts/View/View.php',
+ 'RectorPrefix202410\\Illuminate\\Contracts\\View\\ViewCompilationException' => __DIR__ . '/..' . '/illuminate/contracts/View/ViewCompilationException.php',
+ 'RectorPrefix202410\\Nette\\ArgumentOutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\DeprecatedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\DirectoryNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\FileNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\HtmlStringable' => __DIR__ . '/..' . '/nette/utils/src/HtmlStringable.php',
+ 'RectorPrefix202410\\Nette\\IOException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\InvalidArgumentException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\InvalidStateException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Iterators\\CachingIterator' => __DIR__ . '/..' . '/nette/utils/src/Iterators/CachingIterator.php',
+ 'RectorPrefix202410\\Nette\\Iterators\\Mapper' => __DIR__ . '/..' . '/nette/utils/src/Iterators/Mapper.php',
+ 'RectorPrefix202410\\Nette\\Localization\\ITranslator' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
+ 'RectorPrefix202410\\Nette\\Localization\\Translator' => __DIR__ . '/..' . '/nette/utils/src/Translator.php',
+ 'RectorPrefix202410\\Nette\\MemberAccessException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\NotImplementedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\NotSupportedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\OutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/SmartObject.php',
+ 'RectorPrefix202410\\Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/StaticClass.php',
+ 'RectorPrefix202410\\Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ArrayHash' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayHash.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ArrayList' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayList.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Arrays' => __DIR__ . '/..' . '/nette/utils/src/Utils/Arrays.php',
+ 'RectorPrefix202410\\Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php',
+ 'RectorPrefix202410\\Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php',
+ 'RectorPrefix202410\\Nette\\Utils\\FileInfo' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileInfo.php',
+ 'RectorPrefix202410\\Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/utils/src/Utils/Finder.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Floats' => __DIR__ . '/..' . '/nette/utils/src/Utils/Floats.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Helpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/Helpers.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php',
+ 'RectorPrefix202410\\Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ImageColor' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageColor.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ImageType' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageType.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Iterables' => __DIR__ . '/..' . '/nette/utils/src/Utils/Iterables.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php',
+ 'RectorPrefix202410\\Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php',
+ 'RectorPrefix202410\\Nette\\Utils\\ReflectionMethod' => __DIR__ . '/..' . '/nette/utils/src/Utils/ReflectionMethod.php',
+ 'RectorPrefix202410\\Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Type' => __DIR__ . '/..' . '/nette/utils/src/Utils/Type.php',
+ 'RectorPrefix202410\\Nette\\Utils\\UnknownImageFileException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'RectorPrefix202410\\Nette\\Utils\\Validators' => __DIR__ . '/..' . '/nette/utils/src/Utils/Validators.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\CiDetector' => __DIR__ . '/..' . '/ondram/ci-detector/src/CiDetector.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\CiDetectorInterface' => __DIR__ . '/..' . '/ondram/ci-detector/src/CiDetectorInterface.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\AbstractCi' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AbstractCi.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\AppVeyor' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AppVeyor.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\AwsCodeBuild' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AwsCodeBuild.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\AzurePipelines' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/AzurePipelines.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Bamboo' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Bamboo.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\BitbucketPipelines' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/BitbucketPipelines.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Buddy' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Buddy.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\CiInterface' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/CiInterface.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Circle' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Circle.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Codeship' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Codeship.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Continuousphp' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Continuousphp.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Drone' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Drone.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\GitHubActions' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/GitHubActions.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\GitLab' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/GitLab.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Jenkins' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Jenkins.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\SourceHut' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/SourceHut.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\TeamCity' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/TeamCity.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Travis' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Travis.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Ci\\Wercker' => __DIR__ . '/..' . '/ondram/ci-detector/src/Ci/Wercker.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Env' => __DIR__ . '/..' . '/ondram/ci-detector/src/Env.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\Exception\\CiNotDetectedException' => __DIR__ . '/..' . '/ondram/ci-detector/src/Exception/CiNotDetectedException.php',
+ 'RectorPrefix202410\\OndraM\\CiDetector\\TrinaryLogic' => __DIR__ . '/..' . '/ondram/ci-detector/src/TrinaryLogic.php',
+ 'RectorPrefix202410\\Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php',
+ 'RectorPrefix202410\\Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php',
+ 'RectorPrefix202410\\Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php',
+ 'RectorPrefix202410\\Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/src/AbstractLogger.php',
+ 'RectorPrefix202410\\Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/src/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/src/LogLevel.php',
+ 'RectorPrefix202410\\Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareInterface.php',
+ 'RectorPrefix202410\\Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareTrait.php',
+ 'RectorPrefix202410\\Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerInterface.php',
+ 'RectorPrefix202410\\Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerTrait.php',
+ 'RectorPrefix202410\\Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/src/NullLogger.php',
+ 'RectorPrefix202410\\Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php',
+ 'RectorPrefix202410\\Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php',
+ 'RectorPrefix202410\\Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php',
+ 'RectorPrefix202410\\React\\Cache\\ArrayCache' => __DIR__ . '/..' . '/react/cache/src/ArrayCache.php',
+ 'RectorPrefix202410\\React\\Cache\\CacheInterface' => __DIR__ . '/..' . '/react/cache/src/CacheInterface.php',
+ 'RectorPrefix202410\\React\\ChildProcess\\Process' => __DIR__ . '/..' . '/react/child-process/src/Process.php',
+ 'RectorPrefix202410\\React\\Dns\\BadServerException' => __DIR__ . '/..' . '/react/dns/src/BadServerException.php',
+ 'RectorPrefix202410\\React\\Dns\\Config\\Config' => __DIR__ . '/..' . '/react/dns/src/Config/Config.php',
+ 'RectorPrefix202410\\React\\Dns\\Config\\HostsFile' => __DIR__ . '/..' . '/react/dns/src/Config/HostsFile.php',
+ 'RectorPrefix202410\\React\\Dns\\Model\\Message' => __DIR__ . '/..' . '/react/dns/src/Model/Message.php',
+ 'RectorPrefix202410\\React\\Dns\\Model\\Record' => __DIR__ . '/..' . '/react/dns/src/Model/Record.php',
+ 'RectorPrefix202410\\React\\Dns\\Protocol\\BinaryDumper' => __DIR__ . '/..' . '/react/dns/src/Protocol/BinaryDumper.php',
+ 'RectorPrefix202410\\React\\Dns\\Protocol\\Parser' => __DIR__ . '/..' . '/react/dns/src/Protocol/Parser.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\CachingExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/CachingExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\CancellationException' => __DIR__ . '/..' . '/react/dns/src/Query/CancellationException.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\CoopExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/CoopExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\ExecutorInterface' => __DIR__ . '/..' . '/react/dns/src/Query/ExecutorInterface.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\FallbackExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/FallbackExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\HostsFileExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/HostsFileExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\Query' => __DIR__ . '/..' . '/react/dns/src/Query/Query.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\RetryExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/RetryExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\SelectiveTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/SelectiveTransportExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\TcpTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/TcpTransportExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\TimeoutException' => __DIR__ . '/..' . '/react/dns/src/Query/TimeoutException.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\TimeoutExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/TimeoutExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\Query\\UdpTransportExecutor' => __DIR__ . '/..' . '/react/dns/src/Query/UdpTransportExecutor.php',
+ 'RectorPrefix202410\\React\\Dns\\RecordNotFoundException' => __DIR__ . '/..' . '/react/dns/src/RecordNotFoundException.php',
+ 'RectorPrefix202410\\React\\Dns\\Resolver\\Factory' => __DIR__ . '/..' . '/react/dns/src/Resolver/Factory.php',
+ 'RectorPrefix202410\\React\\Dns\\Resolver\\Resolver' => __DIR__ . '/..' . '/react/dns/src/Resolver/Resolver.php',
+ 'RectorPrefix202410\\React\\Dns\\Resolver\\ResolverInterface' => __DIR__ . '/..' . '/react/dns/src/Resolver/ResolverInterface.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtEvLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtEvLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtEventLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtEventLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtLibevLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtLibevLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtLibeventLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtLibeventLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\ExtUvLoop' => __DIR__ . '/..' . '/react/event-loop/src/ExtUvLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Factory' => __DIR__ . '/..' . '/react/event-loop/src/Factory.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Loop' => __DIR__ . '/..' . '/react/event-loop/src/Loop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\LoopInterface' => __DIR__ . '/..' . '/react/event-loop/src/LoopInterface.php',
+ 'RectorPrefix202410\\React\\EventLoop\\SignalsHandler' => __DIR__ . '/..' . '/react/event-loop/src/SignalsHandler.php',
+ 'RectorPrefix202410\\React\\EventLoop\\StreamSelectLoop' => __DIR__ . '/..' . '/react/event-loop/src/StreamSelectLoop.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Tick\\FutureTickQueue' => __DIR__ . '/..' . '/react/event-loop/src/Tick/FutureTickQueue.php',
+ 'RectorPrefix202410\\React\\EventLoop\\TimerInterface' => __DIR__ . '/..' . '/react/event-loop/src/TimerInterface.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Timer\\Timer' => __DIR__ . '/..' . '/react/event-loop/src/Timer/Timer.php',
+ 'RectorPrefix202410\\React\\EventLoop\\Timer\\Timers' => __DIR__ . '/..' . '/react/event-loop/src/Timer/Timers.php',
+ 'RectorPrefix202410\\React\\Promise\\Deferred' => __DIR__ . '/..' . '/react/promise/src/Deferred.php',
+ 'RectorPrefix202410\\React\\Promise\\Exception\\CompositeException' => __DIR__ . '/..' . '/react/promise/src/Exception/CompositeException.php',
+ 'RectorPrefix202410\\React\\Promise\\Exception\\LengthException' => __DIR__ . '/..' . '/react/promise/src/Exception/LengthException.php',
+ 'RectorPrefix202410\\React\\Promise\\Internal\\CancellationQueue' => __DIR__ . '/..' . '/react/promise/src/Internal/CancellationQueue.php',
+ 'RectorPrefix202410\\React\\Promise\\Internal\\FulfilledPromise' => __DIR__ . '/..' . '/react/promise/src/Internal/FulfilledPromise.php',
+ 'RectorPrefix202410\\React\\Promise\\Internal\\RejectedPromise' => __DIR__ . '/..' . '/react/promise/src/Internal/RejectedPromise.php',
+ 'RectorPrefix202410\\React\\Promise\\Promise' => __DIR__ . '/..' . '/react/promise/src/Promise.php',
+ 'RectorPrefix202410\\React\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/react/promise/src/PromiseInterface.php',
+ 'RectorPrefix202410\\React\\Socket\\Connection' => __DIR__ . '/..' . '/react/socket/src/Connection.php',
+ 'RectorPrefix202410\\React\\Socket\\ConnectionInterface' => __DIR__ . '/..' . '/react/socket/src/ConnectionInterface.php',
+ 'RectorPrefix202410\\React\\Socket\\Connector' => __DIR__ . '/..' . '/react/socket/src/Connector.php',
+ 'RectorPrefix202410\\React\\Socket\\ConnectorInterface' => __DIR__ . '/..' . '/react/socket/src/ConnectorInterface.php',
+ 'RectorPrefix202410\\React\\Socket\\DnsConnector' => __DIR__ . '/..' . '/react/socket/src/DnsConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\FdServer' => __DIR__ . '/..' . '/react/socket/src/FdServer.php',
+ 'RectorPrefix202410\\React\\Socket\\FixedUriConnector' => __DIR__ . '/..' . '/react/socket/src/FixedUriConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\HappyEyeBallsConnectionBuilder' => __DIR__ . '/..' . '/react/socket/src/HappyEyeBallsConnectionBuilder.php',
+ 'RectorPrefix202410\\React\\Socket\\HappyEyeBallsConnector' => __DIR__ . '/..' . '/react/socket/src/HappyEyeBallsConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\LimitingServer' => __DIR__ . '/..' . '/react/socket/src/LimitingServer.php',
+ 'RectorPrefix202410\\React\\Socket\\SecureConnector' => __DIR__ . '/..' . '/react/socket/src/SecureConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\SecureServer' => __DIR__ . '/..' . '/react/socket/src/SecureServer.php',
+ 'RectorPrefix202410\\React\\Socket\\Server' => __DIR__ . '/..' . '/react/socket/src/Server.php',
+ 'RectorPrefix202410\\React\\Socket\\ServerInterface' => __DIR__ . '/..' . '/react/socket/src/ServerInterface.php',
+ 'RectorPrefix202410\\React\\Socket\\SocketServer' => __DIR__ . '/..' . '/react/socket/src/SocketServer.php',
+ 'RectorPrefix202410\\React\\Socket\\StreamEncryption' => __DIR__ . '/..' . '/react/socket/src/StreamEncryption.php',
+ 'RectorPrefix202410\\React\\Socket\\TcpConnector' => __DIR__ . '/..' . '/react/socket/src/TcpConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\TcpServer' => __DIR__ . '/..' . '/react/socket/src/TcpServer.php',
+ 'RectorPrefix202410\\React\\Socket\\TimeoutConnector' => __DIR__ . '/..' . '/react/socket/src/TimeoutConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\UnixConnector' => __DIR__ . '/..' . '/react/socket/src/UnixConnector.php',
+ 'RectorPrefix202410\\React\\Socket\\UnixServer' => __DIR__ . '/..' . '/react/socket/src/UnixServer.php',
+ 'RectorPrefix202410\\React\\Stream\\CompositeStream' => __DIR__ . '/..' . '/react/stream/src/CompositeStream.php',
+ 'RectorPrefix202410\\React\\Stream\\DuplexResourceStream' => __DIR__ . '/..' . '/react/stream/src/DuplexResourceStream.php',
+ 'RectorPrefix202410\\React\\Stream\\DuplexStreamInterface' => __DIR__ . '/..' . '/react/stream/src/DuplexStreamInterface.php',
+ 'RectorPrefix202410\\React\\Stream\\ReadableResourceStream' => __DIR__ . '/..' . '/react/stream/src/ReadableResourceStream.php',
+ 'RectorPrefix202410\\React\\Stream\\ReadableStreamInterface' => __DIR__ . '/..' . '/react/stream/src/ReadableStreamInterface.php',
+ 'RectorPrefix202410\\React\\Stream\\ThroughStream' => __DIR__ . '/..' . '/react/stream/src/ThroughStream.php',
+ 'RectorPrefix202410\\React\\Stream\\Util' => __DIR__ . '/..' . '/react/stream/src/Util.php',
+ 'RectorPrefix202410\\React\\Stream\\WritableResourceStream' => __DIR__ . '/..' . '/react/stream/src/WritableResourceStream.php',
+ 'RectorPrefix202410\\React\\Stream\\WritableStreamInterface' => __DIR__ . '/..' . '/react/stream/src/WritableStreamInterface.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
+ 'RectorPrefix202410\\SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Attribute\\AsCommand' => __DIR__ . '/..' . '/symfony/console/Attribute/AsCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\CI\\GithubActionReporter' => __DIR__ . '/..' . '/symfony/console/CI/GithubActionReporter.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Color' => __DIR__ . '/..' . '/symfony/console/Color.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\CompleteCommand' => __DIR__ . '/..' . '/symfony/console/Command/CompleteCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => __DIR__ . '/..' . '/symfony/console/Command/DumpCompletionCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\LazyCommand' => __DIR__ . '/..' . '/symfony/console/Command/LazyCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => __DIR__ . '/..' . '/symfony/console/Command/SignalableCommandInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Command\\TraceableCommand' => __DIR__ . '/..' . '/symfony/console/Command/TraceableCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\CompletionInput' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionInput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionSuggestions.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/BashCompletionOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => __DIR__ . '/..' . '/symfony/console/Completion/Output/CompletionOutputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/FishCompletionOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/ZshCompletionOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Completion\\Suggestion' => __DIR__ . '/..' . '/symfony/console/Completion/Suggestion.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => __DIR__ . '/..' . '/symfony/console/DataCollector/CommandDataCollector.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Debug\\CliRequest' => __DIR__ . '/..' . '/symfony/console/Debug/CliRequest.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => __DIR__ . '/..' . '/symfony/console/Exception/RunCommandFailedException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\OutputWrapper' => __DIR__ . '/..' . '/symfony/console/Helper/OutputWrapper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableCellStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableCellStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Messenger\\RunCommandContext' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandContext.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessage.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessageHandler.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\AnsiColorMode' => __DIR__ . '/..' . '/symfony/console/Output/AnsiColorMode.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => __DIR__ . '/..' . '/symfony/console/Output/TrimmedBufferOutput.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalMap.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalRegistry.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/RuntimeException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Filesystem\\Path' => __DIR__ . '/..' . '/symfony/filesystem/Path.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\LazyIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/LazyIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/RunProcessFailedException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Messenger\\RunProcessContext' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessContext.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessage.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessageHandler.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\PhpSubprocess' => __DIR__ . '/..' . '/symfony/process/PhpSubprocess.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Command\\LintCommand' => __DIR__ . '/..' . '/symfony/yaml/Command/LintCommand.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Dumper' => __DIR__ . '/..' . '/symfony/yaml/Dumper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Escaper' => __DIR__ . '/..' . '/symfony/yaml/Escaper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Exception\\DumpException' => __DIR__ . '/..' . '/symfony/yaml/Exception/DumpException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/yaml/Exception/ExceptionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Exception\\ParseException' => __DIR__ . '/..' . '/symfony/yaml/Exception/ParseException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/yaml/Exception/RuntimeException.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Inline' => __DIR__ . '/..' . '/symfony/yaml/Inline.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Parser' => __DIR__ . '/..' . '/symfony/yaml/Parser.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Tag\\TaggedValue' => __DIR__ . '/..' . '/symfony/yaml/Tag/TaggedValue.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Unescaper' => __DIR__ . '/..' . '/symfony/yaml/Unescaper.php',
+ 'RectorPrefix202410\\Symfony\\Component\\Yaml\\Yaml' => __DIR__ . '/..' . '/symfony/yaml/Yaml.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceCollectionInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceCollectionInterface.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php',
+ 'RectorPrefix202410\\Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\CommandLine\\WorkerCommandLineFactory' => __DIR__ . '/..' . '/symplify/easy-parallel/src/CommandLine/WorkerCommandLineFactory.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Contract\\SerializableInterface' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Contract/SerializableInterface.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\CpuCoreCountProvider' => __DIR__ . '/..' . '/symplify/easy-parallel/src/CpuCoreCountProvider.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Enum\\Action' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Enum/Action.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Enum\\Content' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Enum/Content.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Enum\\ReactCommand' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Enum/ReactCommand.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Enum\\ReactEvent' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Enum/ReactEvent.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Exception\\ParallelShouldNotHappenException' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Exception/ParallelShouldNotHappenException.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\Reflection\\CommandFromReflectionFactory' => __DIR__ . '/..' . '/symplify/easy-parallel/src/Reflection/CommandFromReflectionFactory.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ScheduleFactory' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ScheduleFactory.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ValueObject\\EasyParallelConfig' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/EasyParallelConfig.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ValueObject\\ParallelProcess' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/ParallelProcess.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ValueObject\\ProcessPool' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/ProcessPool.php',
+ 'RectorPrefix202410\\Symplify\\EasyParallel\\ValueObject\\Schedule' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/Schedule.php',
+ 'RectorPrefix202410\\Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php',
+ 'RectorPrefix202410\\Webmozart\\Assert\\InvalidArgumentException' => __DIR__ . '/..' . '/webmozart/assert/src/InvalidArgumentException.php',
+ 'RectorPrefix202410\\Webmozart\\Assert\\Mixin' => __DIR__ . '/..' . '/webmozart/assert/src/Mixin.php',
'Rector\\Application\\ApplicationFileProcessor' => __DIR__ . '/../..' . '/src/Application/ApplicationFileProcessor.php',
'Rector\\Application\\ChangedNodeScopeRefresher' => __DIR__ . '/../..' . '/src/Application/ChangedNodeScopeRefresher.php',
'Rector\\Application\\FileProcessor' => __DIR__ . '/../..' . '/src/Application/FileProcessor.php',
+ 'Rector\\Application\\Provider\\CurrentFileProvider' => __DIR__ . '/../..' . '/src/Application/Provider/CurrentFileProvider.php',
'Rector\\Application\\VersionResolver' => __DIR__ . '/../..' . '/src/Application/VersionResolver.php',
'Rector\\Arguments\\ArgumentDefaultValueReplacer' => __DIR__ . '/../..' . '/rules/Arguments/ArgumentDefaultValueReplacer.php',
'Rector\\Arguments\\Contract\\ReplaceArgumentDefaultValueInterface' => __DIR__ . '/../..' . '/rules/Arguments/Contract/ReplaceArgumentDefaultValueInterface.php',
@@ -1261,6 +1281,8 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\BetterPhpDocParser\\ValueObject\\Type\\SpacingAwareCallableTypeNode' => __DIR__ . '/../..' . '/src/BetterPhpDocParser/ValueObject/Type/SpacingAwareCallableTypeNode.php',
'Rector\\Bootstrap\\ExtensionConfigResolver' => __DIR__ . '/../..' . '/src/Bootstrap/ExtensionConfigResolver.php',
'Rector\\Bootstrap\\RectorConfigsResolver' => __DIR__ . '/../..' . '/src/Bootstrap/RectorConfigsResolver.php',
+ 'Rector\\Bridge\\SetProviderCollector' => __DIR__ . '/../..' . '/src/Bridge/SetProviderCollector.php',
+ 'Rector\\Bridge\\SetRectorsResolver' => __DIR__ . '/../..' . '/src/Bridge/SetRectorsResolver.php',
'Rector\\Caching\\Cache' => __DIR__ . '/../..' . '/src/Caching/Cache.php',
'Rector\\Caching\\CacheFactory' => __DIR__ . '/../..' . '/src/Caching/CacheFactory.php',
'Rector\\Caching\\Config\\FileHashComputer' => __DIR__ . '/../..' . '/src/Caching/Config/FileHashComputer.php',
@@ -1272,8 +1294,11 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Caching\\ValueObject\\CacheItem' => __DIR__ . '/../..' . '/src/Caching/ValueObject/CacheItem.php',
'Rector\\Caching\\ValueObject\\Storage\\FileCacheStorage' => __DIR__ . '/../..' . '/src/Caching/ValueObject/Storage/FileCacheStorage.php',
'Rector\\Caching\\ValueObject\\Storage\\MemoryCacheStorage' => __DIR__ . '/../..' . '/src/Caching/ValueObject/Storage/MemoryCacheStorage.php',
- 'Rector\\ChangesReporting\\Annotation\\AnnotationExtractor' => __DIR__ . '/../..' . '/src/ChangesReporting/Annotation/AnnotationExtractor.php',
- 'Rector\\ChangesReporting\\Annotation\\RectorsChangelogResolver' => __DIR__ . '/../..' . '/src/ChangesReporting/Annotation/RectorsChangelogResolver.php',
+ 'Rector\\Carbon\\NodeFactory\\CarbonCallFactory' => __DIR__ . '/../..' . '/rules/Carbon/NodeFactory/CarbonCallFactory.php',
+ 'Rector\\Carbon\\Rector\\FuncCall\\DateFuncCallToCarbonRector' => __DIR__ . '/../..' . '/rules/Carbon/Rector/FuncCall/DateFuncCallToCarbonRector.php',
+ 'Rector\\Carbon\\Rector\\FuncCall\\TimeFuncCallToCarbonRector' => __DIR__ . '/../..' . '/rules/Carbon/Rector/FuncCall/TimeFuncCallToCarbonRector.php',
+ 'Rector\\Carbon\\Rector\\MethodCall\\DateTimeMethodCallToCarbonRector' => __DIR__ . '/../..' . '/rules/Carbon/Rector/MethodCall/DateTimeMethodCallToCarbonRector.php',
+ 'Rector\\Carbon\\Rector\\New_\\DateTimeInstanceToCarbonRector' => __DIR__ . '/../..' . '/rules/Carbon/Rector/New_/DateTimeInstanceToCarbonRector.php',
'Rector\\ChangesReporting\\Contract\\Output\\OutputFormatterInterface' => __DIR__ . '/../..' . '/src/ChangesReporting/Contract/Output/OutputFormatterInterface.php',
'Rector\\ChangesReporting\\Output\\ConsoleOutputFormatter' => __DIR__ . '/../..' . '/src/ChangesReporting/Output/ConsoleOutputFormatter.php',
'Rector\\ChangesReporting\\Output\\JsonOutputFormatter' => __DIR__ . '/../..' . '/src/ChangesReporting/Output/JsonOutputFormatter.php',
@@ -1288,7 +1313,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\CodeQuality\\NodeFactory\\MissingPropertiesFactory' => __DIR__ . '/../..' . '/rules/CodeQuality/NodeFactory/MissingPropertiesFactory.php',
'Rector\\CodeQuality\\NodeFactory\\PropertyTypeDecorator' => __DIR__ . '/../..' . '/rules/CodeQuality/NodeFactory/PropertyTypeDecorator.php',
'Rector\\CodeQuality\\NodeManipulator\\ExprBoolCaster' => __DIR__ . '/../..' . '/rules/CodeQuality/NodeManipulator/ExprBoolCaster.php',
- 'Rector\\CodeQuality\\Rector\\Array_\\CallableThisArrayToAnonymousFunctionRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Array_/CallableThisArrayToAnonymousFunctionRector.php',
'Rector\\CodeQuality\\Rector\\Assign\\CombinedAssignRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Assign/CombinedAssignRector.php',
'Rector\\CodeQuality\\Rector\\BooleanAnd\\RemoveUselessIsObjectCheckRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector.php',
'Rector\\CodeQuality\\Rector\\BooleanAnd\\SimplifyEmptyArrayCheckRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanAnd/SimplifyEmptyArrayCheckRector.php',
@@ -1314,13 +1338,10 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachToCoalescingRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php',
'Rector\\CodeQuality\\Rector\\Foreach_\\UnusedForeachValueToArrayKeysRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Foreach_/UnusedForeachValueToArrayKeysRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\ArrayMergeOfNonArraysToSimpleArrayRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/ArrayMergeOfNonArraysToSimpleArrayRector.php',
- 'Rector\\CodeQuality\\Rector\\FuncCall\\BoolvalToTypeCastRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/BoolvalToTypeCastRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\CallUserFuncWithArrowFunctionToInlineRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/CallUserFuncWithArrowFunctionToInlineRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\ChangeArrayPushToArrayAssignRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/ChangeArrayPushToArrayAssignRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\CompactToVariablesRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/CompactToVariablesRector.php',
- 'Rector\\CodeQuality\\Rector\\FuncCall\\FloatvalToTypeCastRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/FloatvalToTypeCastRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\InlineIsAInstanceOfRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/InlineIsAInstanceOfRector.php',
- 'Rector\\CodeQuality\\Rector\\FuncCall\\IntvalToTypeCastRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/IntvalToTypeCastRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\IsAWithStringWithThirdArgumentRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/IsAWithStringWithThirdArgumentRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\RemoveSoleValueSprintfRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/RemoveSoleValueSprintfRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\SetTypeToCastRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/SetTypeToCastRector.php',
@@ -1329,12 +1350,10 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\CodeQuality\\Rector\\FuncCall\\SimplifyRegexPatternRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/SimplifyRegexPatternRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\SimplifyStrposLowerRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/SimplifyStrposLowerRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\SingleInArrayToCompareRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/SingleInArrayToCompareRector.php',
- 'Rector\\CodeQuality\\Rector\\FuncCall\\StrvalToTypeCastRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/StrvalToTypeCastRector.php',
'Rector\\CodeQuality\\Rector\\FuncCall\\UnwrapSprintfOneArgumentRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/UnwrapSprintfOneArgumentRector.php',
'Rector\\CodeQuality\\Rector\\FunctionLike\\SimplifyUselessVariableRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FunctionLike/SimplifyUselessVariableRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\BooleanNotIdenticalToNotIdenticalRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Identical/BooleanNotIdenticalToNotIdenticalRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\FlipTypeControlToUseExclusiveTypeRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Identical/FlipTypeControlToUseExclusiveTypeRector.php',
- 'Rector\\CodeQuality\\Rector\\Identical\\GetClassToInstanceOfRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Identical/GetClassToInstanceOfRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\SimplifyArraySearchRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Identical/SimplifyArraySearchRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\SimplifyBoolIdenticalTrueRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Identical/SimplifyBoolIdenticalTrueRector.php',
'Rector\\CodeQuality\\Rector\\Identical\\SimplifyConditionsRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Identical/SimplifyConditionsRector.php',
@@ -1395,15 +1414,16 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\CodingStyle\\Rector\\Closure\\StaticClosureRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/Closure/StaticClosureRector.php',
'Rector\\CodingStyle\\Rector\\Encapsed\\EncapsedStringsToSprintfRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/Encapsed/EncapsedStringsToSprintfRector.php',
'Rector\\CodingStyle\\Rector\\Encapsed\\WrapEncapsedVariableInCurlyBracesRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/Encapsed/WrapEncapsedVariableInCurlyBracesRector.php',
+ 'Rector\\CodingStyle\\Rector\\Foreach_\\MultiDimensionalArrayToArrayDestructRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/Foreach_/MultiDimensionalArrayToArrayDestructRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\ArraySpreadInsteadOfArrayMergeRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/FuncCall/ArraySpreadInsteadOfArrayMergeRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\CallUserFuncArrayToVariadicRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/FuncCall/CallUserFuncArrayToVariadicRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\CallUserFuncToMethodCallRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/FuncCall/CallUserFuncToMethodCallRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\ConsistentImplodeRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/FuncCall/ConsistentImplodeRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\CountArrayToEmptyArrayComparisonRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/FuncCall/CountArrayToEmptyArrayComparisonRector.php',
+ 'Rector\\CodingStyle\\Rector\\FuncCall\\FunctionFirstClassCallableRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\StrictArraySearchRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/FuncCall/StrictArraySearchRector.php',
'Rector\\CodingStyle\\Rector\\FuncCall\\VersionCompareFuncCallToConstantRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/FuncCall/VersionCompareFuncCallToConstantRector.php',
'Rector\\CodingStyle\\Rector\\If_\\NullableCompareToNullRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/If_/NullableCompareToNullRector.php',
- 'Rector\\CodingStyle\\Rector\\Plus\\UseIncrementAssignRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/Plus/UseIncrementAssignRector.php',
'Rector\\CodingStyle\\Rector\\PostInc\\PostIncDecToPreIncDecRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/PostInc/PostIncDecToPreIncDecRector.php',
'Rector\\CodingStyle\\Rector\\Property\\SplitGroupedPropertiesRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/Property/SplitGroupedPropertiesRector.php',
'Rector\\CodingStyle\\Rector\\Stmt\\NewlineAfterStatementRector' => __DIR__ . '/../..' . '/rules/CodingStyle/Rector/Stmt/NewlineAfterStatementRector.php',
@@ -1418,12 +1438,16 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Comments\\NodeDocBlock\\DocBlockUpdater' => __DIR__ . '/../..' . '/src/Comments/NodeDocBlock/DocBlockUpdater.php',
'Rector\\Comments\\NodeTraverser\\CommentRemovingNodeTraverser' => __DIR__ . '/../..' . '/src/Comments/NodeTraverser/CommentRemovingNodeTraverser.php',
'Rector\\Comments\\NodeVisitor\\CommentRemovingNodeVisitor' => __DIR__ . '/../..' . '/src/Comments/NodeVisitor/CommentRemovingNodeVisitor.php',
+ 'Rector\\Composer\\InstalledPackageResolver' => __DIR__ . '/../..' . '/src/Composer/InstalledPackageResolver.php',
+ 'Rector\\Composer\\ValueObject\\InstalledPackage' => __DIR__ . '/../..' . '/src/Composer/ValueObject/InstalledPackage.php',
+ 'Rector\\Config\\Level\\CodeQualityLevel' => __DIR__ . '/../..' . '/src/Config/Level/CodeQualityLevel.php',
'Rector\\Config\\Level\\DeadCodeLevel' => __DIR__ . '/../..' . '/src/Config/Level/DeadCodeLevel.php',
'Rector\\Config\\Level\\TypeDeclarationLevel' => __DIR__ . '/../..' . '/src/Config/Level/TypeDeclarationLevel.php',
'Rector\\Config\\RectorConfig' => __DIR__ . '/../..' . '/src/Config/RectorConfig.php',
'Rector\\Config\\RegisteredService' => __DIR__ . '/../..' . '/src/Config/RegisteredService.php',
'Rector\\Configuration\\ConfigInitializer' => __DIR__ . '/../..' . '/src/Configuration/ConfigInitializer.php',
'Rector\\Configuration\\ConfigurationFactory' => __DIR__ . '/../..' . '/src/Configuration/ConfigurationFactory.php',
+ 'Rector\\Configuration\\Deprecation\\Contract\\DeprecatedInterface' => __DIR__ . '/../..' . '/src/Configuration/Deprecation/Contract/DeprecatedInterface.php',
'Rector\\Configuration\\Levels\\LevelRulesResolver' => __DIR__ . '/../..' . '/src/Configuration/Levels/LevelRulesResolver.php',
'Rector\\Configuration\\Option' => __DIR__ . '/../..' . '/src/Configuration/Option.php',
'Rector\\Configuration\\Parameter\\SimpleParameterProvider' => __DIR__ . '/../..' . '/src/Configuration/Parameter/SimpleParameterProvider.php',
@@ -1432,7 +1456,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Configuration\\RenamedClassesDataCollector' => __DIR__ . '/../..' . '/src/Configuration/RenamedClassesDataCollector.php',
'Rector\\Configuration\\VendorMissAnalyseGuard' => __DIR__ . '/../..' . '/src/Configuration/VendorMissAnalyseGuard.php',
'Rector\\Console\\Command\\CustomRuleCommand' => __DIR__ . '/../..' . '/src/Console/Command/CustomRuleCommand.php',
- 'Rector\\Console\\Command\\DetectNodeCommand' => __DIR__ . '/../..' . '/src/Console/Command/DetectNodeCommand.php',
'Rector\\Console\\Command\\ListRulesCommand' => __DIR__ . '/../..' . '/src/Console/Command/ListRulesCommand.php',
'Rector\\Console\\Command\\ProcessCommand' => __DIR__ . '/../..' . '/src/Console/Command/ProcessCommand.php',
'Rector\\Console\\Command\\SetupCICommand' => __DIR__ . '/../..' . '/src/Console/Command/SetupCICommand.php',
@@ -1441,6 +1464,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Console\\ExitCode' => __DIR__ . '/../..' . '/src/Console/ExitCode.php',
'Rector\\Console\\Formatter\\ColorConsoleDiffFormatter' => __DIR__ . '/../..' . '/src/Console/Formatter/ColorConsoleDiffFormatter.php',
'Rector\\Console\\Formatter\\ConsoleDiffer' => __DIR__ . '/../..' . '/src/Console/Formatter/ConsoleDiffer.php',
+ 'Rector\\Console\\Notifier' => __DIR__ . '/../..' . '/src/Console/Notifier.php',
'Rector\\Console\\Output\\OutputFormatterCollector' => __DIR__ . '/../..' . '/src/Console/Output/OutputFormatterCollector.php',
'Rector\\Console\\ProcessConfigureDecorator' => __DIR__ . '/../..' . '/src/Console/ProcessConfigureDecorator.php',
'Rector\\Console\\Style\\RectorStyle' => __DIR__ . '/../..' . '/src/Console/Style/RectorStyle.php',
@@ -1462,6 +1486,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\DeadCode\\NodeAnalyzer\\SafeLeftTypeBooleanAndOrAnalyzer' => __DIR__ . '/../..' . '/rules/DeadCode/NodeAnalyzer/SafeLeftTypeBooleanAndOrAnalyzer.php',
'Rector\\DeadCode\\NodeAnalyzer\\UsedVariableNameAnalyzer' => __DIR__ . '/../..' . '/rules/DeadCode/NodeAnalyzer/UsedVariableNameAnalyzer.php',
'Rector\\DeadCode\\NodeCollector\\UnusedParameterResolver' => __DIR__ . '/../..' . '/rules/DeadCode/NodeCollector/UnusedParameterResolver.php',
+ 'Rector\\DeadCode\\NodeManipulator\\ClassMethodParamRemover' => __DIR__ . '/../..' . '/rules/DeadCode/NodeManipulator/ClassMethodParamRemover.php',
'Rector\\DeadCode\\NodeManipulator\\ControllerClassMethodManipulator' => __DIR__ . '/../..' . '/rules/DeadCode/NodeManipulator/ControllerClassMethodManipulator.php',
'Rector\\DeadCode\\NodeManipulator\\CountManipulator' => __DIR__ . '/../..' . '/rules/DeadCode/NodeManipulator/CountManipulator.php',
'Rector\\DeadCode\\NodeManipulator\\LivingCodeManipulator' => __DIR__ . '/../..' . '/rules/DeadCode/NodeManipulator/LivingCodeManipulator.php',
@@ -1486,6 +1511,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUnusedPrivateMethodParameterRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPrivateMethodParameterRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUnusedPrivateMethodRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPrivateMethodRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUnusedPromotedPropertyRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPromotedPropertyRector.php',
+ 'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUnusedPublicMethodParameterRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUnusedPublicMethodParameterRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessParamTagRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessParamTagRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnExprInConstructRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnExprInConstructRector.php',
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnTagRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector.php',
@@ -1551,10 +1577,14 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Doctrine\\CodeQuality\\Contract\\ClassAttributeTransformerInterface' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Contract/ClassAttributeTransformerInterface.php',
'Rector\\Doctrine\\CodeQuality\\Contract\\PropertyAttributeTransformerInterface' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Contract/PropertyAttributeTransformerInterface.php',
'Rector\\Doctrine\\CodeQuality\\EntityMappingResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/EntityMappingResolver.php',
+ 'Rector\\Doctrine\\CodeQuality\\Enum\\CollectionMapping' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Enum/CollectionMapping.php',
+ 'Rector\\Doctrine\\CodeQuality\\Enum\\DoctrineClass' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Enum/DoctrineClass.php',
'Rector\\Doctrine\\CodeQuality\\Enum\\EntityMappingKey' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Enum/EntityMappingKey.php',
- 'Rector\\Doctrine\\CodeQuality\\Enum\\ToManyMappings' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Enum/ToManyMappings.php',
+ 'Rector\\Doctrine\\CodeQuality\\Enum\\OdmMappingKey' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Enum/OdmMappingKey.php',
'Rector\\Doctrine\\CodeQuality\\Helper\\NodeValueNormalizer' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Helper/NodeValueNormalizer.php',
'Rector\\Doctrine\\CodeQuality\\NodeFactory\\AttributeFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/NodeFactory/AttributeFactory.php',
+ 'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\AddReturnDocBlockToCollectionPropertyGetterByToManyAnnotationRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/AddReturnDocBlockToCollectionPropertyGetterByToManyAnnotationRector.php',
+ 'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\ExplicitRelationCollectionRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/ExplicitRelationCollectionRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\InitializeDefaultEntityCollectionRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/InitializeDefaultEntityCollectionRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Class_\\MoveCurrentDateTimeDefaultInEntityToConstructorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Class_/MoveCurrentDateTimeDefaultInEntityToConstructorRector.php',
@@ -1563,21 +1593,24 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\CorrectDefaultTypesOnEntityPropertyRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/CorrectDefaultTypesOnEntityPropertyRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\ImproveDoctrineCollectionDocTypeInEntityRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/ImproveDoctrineCollectionDocTypeInEntityRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\MakeEntityDateTimePropertyDateTimeInterfaceRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/MakeEntityDateTimePropertyDateTimeInterfaceRector.php',
- 'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\OrderByKeyToClassConstRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/OrderByKeyToClassConstRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\TypedPropertyFromColumnTypeRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/TypedPropertyFromColumnTypeRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\TypedPropertyFromDoctrineCollectionRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/TypedPropertyFromDoctrineCollectionRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\TypedPropertyFromToManyRelationTypeRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/TypedPropertyFromToManyRelationTypeRector.php',
'Rector\\Doctrine\\CodeQuality\\Rector\\Property\\TypedPropertyFromToOneRelationTypeRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Rector/Property/TypedPropertyFromToOneRelationTypeRector.php',
+ 'Rector\\Doctrine\\CodeQuality\\SetterCollectionResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/SetterCollectionResolver.php',
'Rector\\Doctrine\\CodeQuality\\Utils\\CaseStringHelper' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/Utils/CaseStringHelper.php',
'Rector\\Doctrine\\CodeQuality\\ValueObject\\EntityMapping' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/CodeQuality/ValueObject/EntityMapping.php',
+ 'Rector\\Doctrine\\Collection22\\Rector\\CriteriaOrderingConstantsDeprecationRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/Collection22/Rector/CriteriaOrderingConstantsDeprecationRector.php',
'Rector\\Doctrine\\Dbal211\\Rector\\MethodCall\\ExtractArrayArgOnQueryBuilderSelectRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/Dbal211/Rector/MethodCall/ExtractArrayArgOnQueryBuilderSelectRector.php',
'Rector\\Doctrine\\Dbal211\\Rector\\MethodCall\\ReplaceFetchAllMethodCallRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/Dbal211/Rector/MethodCall/ReplaceFetchAllMethodCallRector.php',
'Rector\\Doctrine\\Dbal40\\Rector\\MethodCall\\ChangeCompositeExpressionAddMultipleWithWithRector' => __DIR__ . '/..' . '/rector/rector-doctrine/rules/Dbal40/Rector/MethodCall/ChangeCompositeExpressionAddMultipleWithWithRector.php',
'Rector\\Doctrine\\Enum\\MappingClass' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Enum/MappingClass.php',
+ 'Rector\\Doctrine\\Enum\\OdmMappingClass' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Enum/OdmMappingClass.php',
'Rector\\Doctrine\\NodeAnalyzer\\AttributeFinder' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeFinder.php',
'Rector\\Doctrine\\NodeAnalyzer\\AttrinationFinder' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/AttrinationFinder.php',
'Rector\\Doctrine\\NodeAnalyzer\\ConstructorAssignPropertyAnalyzer' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/ConstructorAssignPropertyAnalyzer.php',
'Rector\\Doctrine\\NodeAnalyzer\\DoctrineEntityDetector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/DoctrineEntityDetector.php',
+ 'Rector\\Doctrine\\NodeAnalyzer\\MethodUniqueReturnedPropertyResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/MethodUniqueReturnedPropertyResolver.php',
'Rector\\Doctrine\\NodeAnalyzer\\TargetEntityResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/TargetEntityResolver.php',
'Rector\\Doctrine\\NodeFactory\\ArrayCollectionAssignFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/ArrayCollectionAssignFactory.php',
'Rector\\Doctrine\\NodeFactory\\ValueAssignFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/ValueAssignFactory.php',
@@ -1591,10 +1624,10 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Doctrine\\PhpDocParser\\DoctrineDocBlockResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php',
'Rector\\Doctrine\\PhpDoc\\ShortClassExpander' => __DIR__ . '/..' . '/rector/rector-doctrine/src/PhpDoc/ShortClassExpander.php',
'Rector\\Doctrine\\Set\\DoctrineSetList' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Set/DoctrineSetList.php',
+ 'Rector\\Doctrine\\Set\\SetProvider\\DoctrineSetProvider' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Set/SetProvider/DoctrineSetProvider.php',
'Rector\\Doctrine\\TypeAnalyzer\\CollectionTypeFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionTypeFactory.php',
'Rector\\Doctrine\\TypeAnalyzer\\CollectionTypeResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionTypeResolver.php',
'Rector\\Doctrine\\TypeAnalyzer\\CollectionVarTagValueNodeResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionVarTagValueNodeResolver.php',
- 'Rector\\Doctrine\\TypeAnalyzer\\DoctrineCollectionTypeAnalyzer' => __DIR__ . '/..' . '/rector/rector-doctrine/src/TypeAnalyzer/DoctrineCollectionTypeAnalyzer.php',
'Rector\\DowngradePhp72\\NodeAnalyzer\\BuiltInMethodAnalyzer' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp72/NodeAnalyzer/BuiltInMethodAnalyzer.php',
'Rector\\DowngradePhp72\\NodeAnalyzer\\OverrideFromAnonymousClassMethodAnalyzer' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp72/NodeAnalyzer/OverrideFromAnonymousClassMethodAnalyzer.php',
'Rector\\DowngradePhp72\\NodeAnalyzer\\RegexFuncAnalyzer' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp72/NodeAnalyzer/RegexFuncAnalyzer.php',
@@ -1687,12 +1720,8 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\DowngradePhp82\\Rector\\Class_\\DowngradeReadonlyClassRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp82/Rector/Class_/DowngradeReadonlyClassRector.php',
'Rector\\DowngradePhp82\\Rector\\FunctionLike\\DowngradeStandaloneNullTrueFalseReturnTypeRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp82/Rector/FunctionLike/DowngradeStandaloneNullTrueFalseReturnTypeRector.php',
'Rector\\DowngradePhp83\\Rector\\ClassConst\\DowngradeTypedClassConstRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp83/Rector/ClassConst/DowngradeTypedClassConstRector.php',
- 'Rector\\EarlyReturn\\NodeAnalyzer\\IfAndAnalyzer' => __DIR__ . '/../..' . '/rules/EarlyReturn/NodeAnalyzer/IfAndAnalyzer.php',
- 'Rector\\EarlyReturn\\NodeAnalyzer\\SimpleScalarAnalyzer' => __DIR__ . '/../..' . '/rules/EarlyReturn/NodeAnalyzer/SimpleScalarAnalyzer.php',
- 'Rector\\EarlyReturn\\NodeFactory\\InvertedIfFactory' => __DIR__ . '/../..' . '/rules/EarlyReturn/NodeFactory/InvertedIfFactory.php',
'Rector\\EarlyReturn\\NodeTransformer\\ConditionInverter' => __DIR__ . '/../..' . '/rules/EarlyReturn/NodeTransformer/ConditionInverter.php',
'Rector\\EarlyReturn\\Rector\\Foreach_\\ChangeNestedForeachIfsToEarlyContinueRector' => __DIR__ . '/../..' . '/rules/EarlyReturn/Rector/Foreach_/ChangeNestedForeachIfsToEarlyContinueRector.php',
- 'Rector\\EarlyReturn\\Rector\\If_\\ChangeAndIfToEarlyReturnRector' => __DIR__ . '/../..' . '/rules/EarlyReturn/Rector/If_/ChangeAndIfToEarlyReturnRector.php',
'Rector\\EarlyReturn\\Rector\\If_\\ChangeIfElseValueAssignToEarlyReturnRector' => __DIR__ . '/../..' . '/rules/EarlyReturn/Rector/If_/ChangeIfElseValueAssignToEarlyReturnRector.php',
'Rector\\EarlyReturn\\Rector\\If_\\ChangeNestedIfsToEarlyReturnRector' => __DIR__ . '/../..' . '/rules/EarlyReturn/Rector/If_/ChangeNestedIfsToEarlyReturnRector.php',
'Rector\\EarlyReturn\\Rector\\If_\\ChangeOrIfContinueToMultiContinueRector' => __DIR__ . '/../..' . '/rules/EarlyReturn/Rector/If_/ChangeOrIfContinueToMultiContinueRector.php',
@@ -1703,7 +1732,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\EarlyReturn\\ValueObject\\BareSingleAssignIf' => __DIR__ . '/../..' . '/rules/EarlyReturn/ValueObject/BareSingleAssignIf.php',
'Rector\\Enum\\JsonConstant' => __DIR__ . '/..' . '/rector/rector-downgrade-php/src/Enum/JsonConstant.php',
'Rector\\Enum\\ObjectReference' => __DIR__ . '/../..' . '/src/Enum/ObjectReference.php',
- 'Rector\\Error\\ExceptionCorrector' => __DIR__ . '/../..' . '/src/Error/ExceptionCorrector.php',
'Rector\\Exception\\Cache\\CachingException' => __DIR__ . '/../..' . '/src/Exception/Cache/CachingException.php',
'Rector\\Exception\\Configuration\\InvalidConfigurationException' => __DIR__ . '/../..' . '/src/Exception/Configuration/InvalidConfigurationException.php',
'Rector\\Exception\\NotImplementedYetException' => __DIR__ . '/../..' . '/src/Exception/NotImplementedYetException.php',
@@ -1723,9 +1751,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Naming\\AssignVariableNameResolver\\NewAssignVariableNameResolver' => __DIR__ . '/../..' . '/rules/Naming/AssignVariableNameResolver/NewAssignVariableNameResolver.php',
'Rector\\Naming\\AssignVariableNameResolver\\PropertyFetchAssignVariableNameResolver' => __DIR__ . '/../..' . '/rules/Naming/AssignVariableNameResolver/PropertyFetchAssignVariableNameResolver.php',
'Rector\\Naming\\Contract\\AssignVariableNameResolverInterface' => __DIR__ . '/../..' . '/rules/Naming/Contract/AssignVariableNameResolverInterface.php',
- 'Rector\\Naming\\Contract\\RenameParamValueObjectInterface' => __DIR__ . '/../..' . '/rules/Naming/Contract/RenameParamValueObjectInterface.php',
- 'Rector\\Naming\\Contract\\RenamePropertyValueObjectInterface' => __DIR__ . '/../..' . '/rules/Naming/Contract/RenamePropertyValueObjectInterface.php',
- 'Rector\\Naming\\Contract\\RenameValueObjectInterface' => __DIR__ . '/../..' . '/rules/Naming/Contract/RenameValueObjectInterface.php',
'Rector\\Naming\\ExpectedNameResolver\\InflectorSingularResolver' => __DIR__ . '/../..' . '/rules/Naming/ExpectedNameResolver/InflectorSingularResolver.php',
'Rector\\Naming\\ExpectedNameResolver\\MatchParamTypeExpectedNameResolver' => __DIR__ . '/../..' . '/rules/Naming/ExpectedNameResolver/MatchParamTypeExpectedNameResolver.php',
'Rector\\Naming\\ExpectedNameResolver\\MatchPropertyTypeExpectedNameResolver' => __DIR__ . '/../..' . '/rules/Naming/ExpectedNameResolver/MatchPropertyTypeExpectedNameResolver.php',
@@ -1837,7 +1862,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\NodeTypeResolver\\NodeTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\CastTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/CastTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\ClassAndInterfaceTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/ClassAndInterfaceTypeResolver.php',
- 'Rector\\NodeTypeResolver\\NodeTypeResolver\\ClassMethodOrClassConstTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/ClassMethodOrClassConstTypeResolver.php',
+ 'Rector\\NodeTypeResolver\\NodeTypeResolver\\ClassConstFetchTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/ClassConstFetchTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\IdentifierTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/IdentifierTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\NameTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/NameTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\NewTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/NewTypeResolver.php',
@@ -1884,7 +1909,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\PHPStanStaticTypeMapper\\Enum\\TypeKind' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/Enum/TypeKind.php',
'Rector\\PHPStanStaticTypeMapper\\PHPStanStaticTypeMapper' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/PHPStanStaticTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\TypeAnalyzer\\UnionTypeAnalyzer' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php',
- 'Rector\\PHPStanStaticTypeMapper\\TypeAnalyzer\\UnionTypeCommonTypeNarrower' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeCommonTypeNarrower.php',
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\AccessoryLiteralStringTypeMapper' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/TypeMapper/AccessoryLiteralStringTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\AccessoryNonEmptyStringTypeMapper' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/TypeMapper/AccessoryNonEmptyStringTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\AccessoryNonFalsyStringTypeMapper' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/TypeMapper/AccessoryNonFalsyStringTypeMapper.php',
@@ -1923,8 +1947,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\UnionTypeMapper' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/TypeMapper/UnionTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\TypeMapper\\VoidTypeMapper' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/TypeMapper/VoidTypeMapper.php',
'Rector\\PHPStanStaticTypeMapper\\Utils\\TypeUnwrapper' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/Utils/TypeUnwrapper.php',
- 'Rector\\PHPStanStaticTypeMapper\\ValueObject\\UnionTypeAnalysis' => __DIR__ . '/../..' . '/src/PHPStanStaticTypeMapper/ValueObject/UnionTypeAnalysis.php',
- 'Rector\\PHPStan\\NodeVisitor\\ExprScopeFromStmtNodeVisitor' => __DIR__ . '/../..' . '/src/PHPStan/NodeVisitor/ExprScopeFromStmtNodeVisitor.php',
'Rector\\PHPStan\\NodeVisitor\\UnreachableStatementNodeVisitor' => __DIR__ . '/../..' . '/src/PHPStan/NodeVisitor/UnreachableStatementNodeVisitor.php',
'Rector\\PHPStan\\NodeVisitor\\WrappedNodeRestoringNodeVisitor' => __DIR__ . '/../..' . '/src/PHPStan/NodeVisitor/WrappedNodeRestoringNodeVisitor.php',
'Rector\\PHPUnit\\AnnotationsToAttributes\\Rector\\ClassMethod\\DataProviderAnnotationToAttributeRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/AnnotationsToAttributes/Rector/ClassMethod/DataProviderAnnotationToAttributeRector.php',
@@ -1933,16 +1955,21 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\PHPUnit\\AnnotationsToAttributes\\Rector\\Class_\\AnnotationWithValueToAttributeRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/AnnotationsToAttributes/Rector/Class_/AnnotationWithValueToAttributeRector.php',
'Rector\\PHPUnit\\AnnotationsToAttributes\\Rector\\Class_\\CoversAnnotationWithValueToAttributeRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/AnnotationsToAttributes/Rector/Class_/CoversAnnotationWithValueToAttributeRector.php',
'Rector\\PHPUnit\\AnnotationsToAttributes\\Rector\\Class_\\TicketAnnotationToAttributeRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/AnnotationsToAttributes/Rector/Class_/TicketAnnotationToAttributeRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\ClassMethod\\CreateMockToAnonymousClassRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/ClassMethod/CreateMockToAnonymousClassRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\ClassMethod\\DataProviderArrayItemsNewLinedRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\ClassMethod\\RemoveEmptyTestMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/ClassMethod/RemoveEmptyTestMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\ClassMethod\\ReplaceTestAnnotationWithPrefixedFunctionRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/ClassMethod/ReplaceTestAnnotationWithPrefixedFunctionRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\AddCoversClassAttributeRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/AddCoversClassAttributeRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\AddParentSetupCallOnSetupRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/AddParentSetupCallOnSetupRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\AddSeeTestAnnotationRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/AddSeeTestAnnotationRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\ConstructClassMethodToSetUpTestCaseRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/ConstructClassMethodToSetUpTestCaseRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\PreferPHPUnitSelfCallRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/PreferPHPUnitSelfCallRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\PreferPHPUnitThisCallRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/PreferPHPUnitThisCallRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\SetUpBeforeClassToSetUpRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/SetUpBeforeClassToSetUpRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\TestWithToDataProviderRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/TestWithToDataProviderRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Class_\\YieldDataProviderRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Class_/YieldDataProviderRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachInstanceOfRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/Foreach_/SimplifyForeachInstanceOfRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertCompareOnCountableWithMethodToAssertCountRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertCompareOnCountableWithMethodToAssertCountRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertCompareToSpecificMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertCompareToSpecificMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertComparisonToSpecificMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertComparisonToSpecificMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertEmptyNullableObjectToAssertInstanceofRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php',
@@ -1957,9 +1984,16 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertSameBoolNullToSpecificMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertSameBoolNullToSpecificMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertSameTrueFalseToAssertTrueFalseRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertSameTrueFalseToAssertTrueFalseRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\AssertTrueFalseToSpecificMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\NarrowIdenticalWithConsecutiveRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/NarrowIdenticalWithConsecutiveRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\NarrowSingleWillReturnCallbackRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/NarrowSingleWillReturnCallbackRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\RemoveExpectAnyFromMockRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/RemoveExpectAnyFromMockRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\SingleWithConsecutiveToWithRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/SingleWithConsecutiveToWithRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\UseSpecificWillMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/UseSpecificWillMethodRector.php',
'Rector\\PHPUnit\\CodeQuality\\Rector\\MethodCall\\UseSpecificWithMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/Rector/MethodCall/UseSpecificWithMethodRector.php',
+ 'Rector\\PHPUnit\\CodeQuality\\ValueObject\\MatchAndReturnMatch' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/CodeQuality/ValueObject/MatchAndReturnMatch.php',
+ 'Rector\\PHPUnit\\Composer\\ProjectPackageVersionResolver' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Composer/ProjectPackageVersionResolver.php',
+ 'Rector\\PHPUnit\\Enum\\AssertMethod' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Enum/AssertMethod.php',
+ 'Rector\\PHPUnit\\Enum\\ConsecutiveVariable' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Enum/ConsecutiveVariable.php',
'Rector\\PHPUnit\\Naming\\TestClassNameResolver' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Naming/TestClassNameResolver.php',
'Rector\\PHPUnit\\NodeAnalyzer\\ArgumentMover' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeAnalyzer/ArgumentMover.php',
'Rector\\PHPUnit\\NodeAnalyzer\\AssertCallAnalyzer' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeAnalyzer/AssertCallAnalyzer.php',
@@ -1968,13 +2002,19 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\PHPUnit\\NodeAnalyzer\\SetUpMethodDecorator' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeAnalyzer/SetUpMethodDecorator.php',
'Rector\\PHPUnit\\NodeAnalyzer\\TestsNodeAnalyzer' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeAnalyzer/TestsNodeAnalyzer.php',
'Rector\\PHPUnit\\NodeFactory\\AssertCallFactory' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeFactory/AssertCallFactory.php',
+ 'Rector\\PHPUnit\\NodeFactory\\ConsecutiveIfsFactory' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeFactory/ConsecutiveIfsFactory.php',
'Rector\\PHPUnit\\NodeFactory\\ExpectExceptionMethodCallFactory' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeFactory/ExpectExceptionMethodCallFactory.php',
+ 'Rector\\PHPUnit\\NodeFactory\\MatcherInvocationCountMethodCallNodeFactory' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeFactory/MatcherInvocationCountMethodCallNodeFactory.php',
+ 'Rector\\PHPUnit\\NodeFactory\\UsedVariablesResolver' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeFactory/UsedVariablesResolver.php',
+ 'Rector\\PHPUnit\\NodeFactory\\WithConsecutiveMatchFactory' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeFactory/WithConsecutiveMatchFactory.php',
'Rector\\PHPUnit\\NodeFinder\\DataProviderClassMethodFinder' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeFinder/DataProviderClassMethodFinder.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\AddProphecyTraitRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/AddProphecyTraitRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\PublicDataProviderClassMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/PublicDataProviderClassMethodRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\StaticDataProviderClassMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/StaticDataProviderClassMethodRector.php',
- 'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\PropertyExistsWithoutAssertRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/PropertyExistsWithoutAssertRector.php',
+ 'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\AssertIssetToAssertObjectHasPropertyRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/AssertIssetToAssertObjectHasPropertyRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\RemoveSetMethodsMethodCallRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/RemoveSetMethodsMethodCallRector.php',
+ 'Rector\\PHPUnit\\PHPUnit100\\Rector\\StmtsAwareInterface\\WithConsecutiveRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/StmtsAwareInterface/WithConsecutiveRector.php',
+ 'Rector\\PHPUnit\\PHPUnit110\\Rector\\Class_\\NamedArgumentForDataProviderRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit110/Rector/Class_/NamedArgumentForDataProviderRector.php',
'Rector\\PHPUnit\\PHPUnit50\\Rector\\StaticCall\\GetMockRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit50/Rector/StaticCall/GetMockRector.php',
'Rector\\PHPUnit\\PHPUnit60\\Rector\\ClassMethod\\AddDoesNotPerformAssertionToNonAssertingTestRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit60/Rector/ClassMethod/AddDoesNotPerformAssertionToNonAssertingTestRector.php',
'Rector\\PHPUnit\\PHPUnit60\\Rector\\ClassMethod\\ExceptionAnnotationRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit60/Rector/ClassMethod/ExceptionAnnotationRector.php',
@@ -1989,11 +2029,8 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\PHPUnit\\PHPUnit90\\Rector\\MethodCall\\SpecificAssertContainsWithoutIdentityRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit90/Rector/MethodCall/SpecificAssertContainsWithoutIdentityRector.php',
'Rector\\PHPUnit\\PhpDoc\\DataProviderMethodRenamer' => __DIR__ . '/..' . '/rector/rector-phpunit/src/PhpDoc/DataProviderMethodRenamer.php',
'Rector\\PHPUnit\\PhpDoc\\PhpDocValueToNodeMapper' => __DIR__ . '/..' . '/rector/rector-phpunit/src/PhpDoc/PhpDocValueToNodeMapper.php',
- 'Rector\\PHPUnit\\Rector\\ClassMethod\\CreateMockToAnonymousClassRector' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Rector/ClassMethod/CreateMockToAnonymousClassRector.php',
- 'Rector\\PHPUnit\\Rector\\Class_\\PreferPHPUnitSelfCallRector' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Rector/Class_/PreferPHPUnitSelfCallRector.php',
- 'Rector\\PHPUnit\\Rector\\StmtsAwareInterface\\WithConsecutiveRector' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Rector/StmtsAwareInterface/WithConsecutiveRector.php',
- 'Rector\\PHPUnit\\Set\\PHPUnitLevelSetList' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Set/PHPUnitLevelSetList.php',
'Rector\\PHPUnit\\Set\\PHPUnitSetList' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Set/PHPUnitSetList.php',
+ 'Rector\\PHPUnit\\Set\\SetProvider\\PHPUnitSetProvider' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Set/SetProvider/PHPUnitSetProvider.php',
'Rector\\PHPUnit\\ValueObject\\AnnotationWithValueToAttribute' => __DIR__ . '/..' . '/rector/rector-phpunit/src/ValueObject/AnnotationWithValueToAttribute.php',
'Rector\\PHPUnit\\ValueObject\\BinaryOpWithAssertMethod' => __DIR__ . '/..' . '/rector/rector-phpunit/src/ValueObject/BinaryOpWithAssertMethod.php',
'Rector\\PHPUnit\\ValueObject\\ConstantWithAssertMethods' => __DIR__ . '/..' . '/rector/rector-phpunit/src/ValueObject/ConstantWithAssertMethods.php',
@@ -2081,8 +2118,10 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Php74\\Rector\\Double\\RealToFloatTypeCastRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/Double/RealToFloatTypeCastRector.php',
'Rector\\Php74\\Rector\\FuncCall\\ArrayKeyExistsOnPropertyRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/FuncCall/ArrayKeyExistsOnPropertyRector.php',
'Rector\\Php74\\Rector\\FuncCall\\FilterVarToAddSlashesRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/FuncCall/FilterVarToAddSlashesRector.php',
+ 'Rector\\Php74\\Rector\\FuncCall\\HebrevcToNl2brHebrevRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/FuncCall/HebrevcToNl2brHebrevRector.php',
'Rector\\Php74\\Rector\\FuncCall\\MbStrrposEncodingArgumentPositionRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/FuncCall/MbStrrposEncodingArgumentPositionRector.php',
'Rector\\Php74\\Rector\\FuncCall\\MoneyFormatToNumberFormatRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/FuncCall/MoneyFormatToNumberFormatRector.php',
+ 'Rector\\Php74\\Rector\\FuncCall\\RestoreIncludePathToIniRestoreRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/FuncCall/RestoreIncludePathToIniRestoreRector.php',
'Rector\\Php74\\Rector\\LNumber\\AddLiteralSeparatorToNumberRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/LNumber/AddLiteralSeparatorToNumberRector.php',
'Rector\\Php74\\Rector\\Property\\RestoreDefaultNullToNullableTypePropertyRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/Property/RestoreDefaultNullToNullableTypePropertyRector.php',
'Rector\\Php74\\Rector\\StaticCall\\ExportToReflectionFunctionRector' => __DIR__ . '/../..' . '/rules/Php74/Rector/StaticCall/ExportToReflectionFunctionRector.php',
@@ -2145,7 +2184,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Php81\\NodeAnalyzer\\ComplexNewAnalyzer' => __DIR__ . '/../..' . '/rules/Php81/NodeAnalyzer/ComplexNewAnalyzer.php',
'Rector\\Php81\\NodeFactory\\EnumFactory' => __DIR__ . '/../..' . '/rules/Php81/NodeFactory/EnumFactory.php',
'Rector\\Php81\\Rector\\Array_\\FirstClassCallableRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/Array_/FirstClassCallableRector.php',
- 'Rector\\Php81\\Rector\\ClassConst\\FinalizePublicClassConstantRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/ClassConst/FinalizePublicClassConstantRector.php',
'Rector\\Php81\\Rector\\ClassMethod\\NewInInitializerRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/ClassMethod/NewInInitializerRector.php',
'Rector\\Php81\\Rector\\Class_\\MyCLabsClassToEnumRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/Class_/MyCLabsClassToEnumRector.php',
'Rector\\Php81\\Rector\\Class_\\SpatieEnumClassToEnumRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/Class_/SpatieEnumClassToEnumRector.php',
@@ -2174,6 +2212,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\PhpAttribute\\AttributeArrayNameInliner' => __DIR__ . '/../..' . '/src/PhpAttribute/AttributeArrayNameInliner.php',
'Rector\\PhpAttribute\\Contract\\AnnotationToAttributeMapperInterface' => __DIR__ . '/../..' . '/src/PhpAttribute/Contract/AnnotationToAttributeMapperInterface.php',
'Rector\\PhpAttribute\\Enum\\DocTagNodeState' => __DIR__ . '/../..' . '/src/PhpAttribute/Enum/DocTagNodeState.php',
+ 'Rector\\PhpAttribute\\NodeFactory\\AnnotationToAttributeIntegerValueCaster' => __DIR__ . '/../..' . '/src/PhpAttribute/NodeFactory/AnnotationToAttributeIntegerValueCaster.php',
'Rector\\PhpAttribute\\NodeFactory\\AttributeNameFactory' => __DIR__ . '/../..' . '/src/PhpAttribute/NodeFactory/AttributeNameFactory.php',
'Rector\\PhpAttribute\\NodeFactory\\NamedArgsFactory' => __DIR__ . '/../..' . '/src/PhpAttribute/NodeFactory/NamedArgsFactory.php',
'Rector\\PhpAttribute\\NodeFactory\\PhpAttributeGroupFactory' => __DIR__ . '/../..' . '/src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php',
@@ -2207,20 +2246,22 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\PhpParser\\Node\\NodeFactory' => __DIR__ . '/../..' . '/src/PhpParser/Node/NodeFactory.php',
'Rector\\PhpParser\\Node\\Value\\ValueResolver' => __DIR__ . '/../..' . '/src/PhpParser/Node/Value/ValueResolver.php',
'Rector\\PhpParser\\Parser\\InlineCodeParser' => __DIR__ . '/../..' . '/src/PhpParser/Parser/InlineCodeParser.php',
+ 'Rector\\PhpParser\\Parser\\ParserErrors' => __DIR__ . '/../..' . '/src/PhpParser/Parser/ParserErrors.php',
'Rector\\PhpParser\\Parser\\RectorParser' => __DIR__ . '/../..' . '/src/PhpParser/Parser/RectorParser.php',
'Rector\\PhpParser\\Parser\\SimplePhpParser' => __DIR__ . '/../..' . '/src/PhpParser/Parser/SimplePhpParser.php',
'Rector\\PhpParser\\Printer\\BetterStandardPrinter' => __DIR__ . '/../..' . '/src/PhpParser/Printer/BetterStandardPrinter.php',
- 'Rector\\PhpParser\\Printer\\FormatPerservingPrinter' => __DIR__ . '/../..' . '/src/PhpParser/Printer/FormatPerservingPrinter.php',
'Rector\\PhpParser\\ValueObject\\StmtsAndTokens' => __DIR__ . '/../..' . '/src/PhpParser/ValueObject/StmtsAndTokens.php',
'Rector\\Php\\PhpVersionProvider' => __DIR__ . '/../..' . '/src/Php/PhpVersionProvider.php',
- 'Rector\\Php\\PhpVersionResolver\\ProjectComposerJsonPhpVersionResolver' => __DIR__ . '/../..' . '/src/Php/PhpVersionResolver/ProjectComposerJsonPhpVersionResolver.php',
+ 'Rector\\Php\\PhpVersionResolver\\ComposerJsonPhpVersionResolver' => __DIR__ . '/../..' . '/src/Php/PhpVersionResolver/ComposerJsonPhpVersionResolver.php',
'Rector\\Php\\PolyfillPackagesProvider' => __DIR__ . '/../..' . '/src/Php/PolyfillPackagesProvider.php',
'Rector\\Php\\ReservedKeywordAnalyzer' => __DIR__ . '/../..' . '/src/Php/ReservedKeywordAnalyzer.php',
'Rector\\PostRector\\Application\\PostFileProcessor' => __DIR__ . '/../..' . '/src/PostRector/Application/PostFileProcessor.php',
'Rector\\PostRector\\Collector\\UseNodesToAddCollector' => __DIR__ . '/../..' . '/src/PostRector/Collector/UseNodesToAddCollector.php',
'Rector\\PostRector\\Contract\\Rector\\PostRectorInterface' => __DIR__ . '/../..' . '/src/PostRector/Contract/Rector/PostRectorInterface.php',
+ 'Rector\\PostRector\\Guard\\AddUseStatementGuard' => __DIR__ . '/../..' . '/src/PostRector/Guard/AddUseStatementGuard.php',
'Rector\\PostRector\\Rector\\AbstractPostRector' => __DIR__ . '/../..' . '/src/PostRector/Rector/AbstractPostRector.php',
'Rector\\PostRector\\Rector\\ClassRenamingPostRector' => __DIR__ . '/../..' . '/src/PostRector/Rector/ClassRenamingPostRector.php',
+ 'Rector\\PostRector\\Rector\\DocblockNameImportingPostRector' => __DIR__ . '/../..' . '/src/PostRector/Rector/DocblockNameImportingPostRector.php',
'Rector\\PostRector\\Rector\\NameImportingPostRector' => __DIR__ . '/../..' . '/src/PostRector/Rector/NameImportingPostRector.php',
'Rector\\PostRector\\Rector\\UnusedImportRemovingPostRector' => __DIR__ . '/../..' . '/src/PostRector/Rector/UnusedImportRemovingPostRector.php',
'Rector\\PostRector\\Rector\\UseAddingPostRector' => __DIR__ . '/../..' . '/src/PostRector/Rector/UseAddingPostRector.php',
@@ -2229,14 +2270,12 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Privatization\\Guard\\ParentPropertyLookupGuard' => __DIR__ . '/../..' . '/rules/Privatization/Guard/ParentPropertyLookupGuard.php',
'Rector\\Privatization\\NodeManipulator\\VisibilityManipulator' => __DIR__ . '/../..' . '/rules/Privatization/NodeManipulator/VisibilityManipulator.php',
'Rector\\Privatization\\Rector\\ClassMethod\\PrivatizeFinalClassMethodRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/ClassMethod/PrivatizeFinalClassMethodRector.php',
- 'Rector\\Privatization\\Rector\\Class_\\FinalizeClassesWithoutChildrenRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php',
'Rector\\Privatization\\Rector\\Class_\\FinalizeTestCaseClassRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/Class_/FinalizeTestCaseClassRector.php',
'Rector\\Privatization\\Rector\\MethodCall\\PrivatizeLocalGetterToPropertyRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/MethodCall/PrivatizeLocalGetterToPropertyRector.php',
'Rector\\Privatization\\Rector\\Property\\PrivatizeFinalClassPropertyRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/Property/PrivatizeFinalClassPropertyRector.php',
'Rector\\Privatization\\TypeManipulator\\TypeNormalizer' => __DIR__ . '/../..' . '/rules/Privatization/TypeManipulator/TypeNormalizer.php',
'Rector\\Privatization\\VisibilityGuard\\ClassMethodVisibilityGuard' => __DIR__ . '/../..' . '/rules/Privatization/VisibilityGuard/ClassMethodVisibilityGuard.php',
'Rector\\ProcessAnalyzer\\RectifiedAnalyzer' => __DIR__ . '/../..' . '/src/ProcessAnalyzer/RectifiedAnalyzer.php',
- 'Rector\\Provider\\CurrentFileProvider' => __DIR__ . '/../..' . '/src/Provider/CurrentFileProvider.php',
'Rector\\RectorInstaller\\Filesystem' => __DIR__ . '/..' . '/rector/extension-installer/src/Filesystem.php',
'Rector\\RectorInstaller\\GeneratedConfig' => __DIR__ . '/..' . '/rector/extension-installer/src/GeneratedConfig.php',
'Rector\\RectorInstaller\\LocalFilesystem' => __DIR__ . '/..' . '/rector/extension-installer/src/LocalFilesystem.php',
@@ -2264,6 +2303,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Renaming\\NodeManipulator\\SwitchManipulator' => __DIR__ . '/../..' . '/rules/Renaming/NodeManipulator/SwitchManipulator.php',
'Rector\\Renaming\\Rector\\ClassConstFetch\\RenameClassConstFetchRector' => __DIR__ . '/../..' . '/rules/Renaming/Rector/ClassConstFetch/RenameClassConstFetchRector.php',
'Rector\\Renaming\\Rector\\ClassMethod\\RenameAnnotationRector' => __DIR__ . '/../..' . '/rules/Renaming/Rector/ClassMethod/RenameAnnotationRector.php',
+ 'Rector\\Renaming\\Rector\\Class_\\RenameAttributeRector' => __DIR__ . '/../..' . '/rules/Renaming/Rector/Class_/RenameAttributeRector.php',
'Rector\\Renaming\\Rector\\ConstFetch\\RenameConstantRector' => __DIR__ . '/../..' . '/rules/Renaming/Rector/ConstFetch/RenameConstantRector.php',
'Rector\\Renaming\\Rector\\FuncCall\\RenameFunctionRector' => __DIR__ . '/../..' . '/rules/Renaming/Rector/FuncCall/RenameFunctionRector.php',
'Rector\\Renaming\\Rector\\FunctionLike\\RenameFunctionLikeParamWithinCallLikeArgRector' => __DIR__ . '/../..' . '/rules/Renaming/Rector/FunctionLike/RenameFunctionLikeParamWithinCallLikeArgRector.php',
@@ -2276,17 +2316,27 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Renaming\\ValueObject\\MethodCallRenameWithArrayKey' => __DIR__ . '/../..' . '/rules/Renaming/ValueObject/MethodCallRenameWithArrayKey.php',
'Rector\\Renaming\\ValueObject\\RenameAnnotation' => __DIR__ . '/../..' . '/rules/Renaming/ValueObject/RenameAnnotation.php',
'Rector\\Renaming\\ValueObject\\RenameAnnotationByType' => __DIR__ . '/../..' . '/rules/Renaming/ValueObject/RenameAnnotationByType.php',
+ 'Rector\\Renaming\\ValueObject\\RenameAttribute' => __DIR__ . '/../..' . '/rules/Renaming/ValueObject/RenameAttribute.php',
'Rector\\Renaming\\ValueObject\\RenameClassAndConstFetch' => __DIR__ . '/../..' . '/rules/Renaming/ValueObject/RenameClassAndConstFetch.php',
'Rector\\Renaming\\ValueObject\\RenameClassConstFetch' => __DIR__ . '/../..' . '/rules/Renaming/ValueObject/RenameClassConstFetch.php',
'Rector\\Renaming\\ValueObject\\RenameFunctionLikeParamWithinCallLikeArg' => __DIR__ . '/../..' . '/rules/Renaming/ValueObject/RenameFunctionLikeParamWithinCallLikeArg.php',
'Rector\\Renaming\\ValueObject\\RenameProperty' => __DIR__ . '/../..' . '/rules/Renaming/ValueObject/RenameProperty.php',
'Rector\\Renaming\\ValueObject\\RenameStaticMethod' => __DIR__ . '/../..' . '/rules/Renaming/ValueObject/RenameStaticMethod.php',
+ 'Rector\\Reporting\\DeprecatedRulesReporter' => __DIR__ . '/../..' . '/src/Reporting/DeprecatedRulesReporter.php',
+ 'Rector\\Reporting\\MissConfigurationReporter' => __DIR__ . '/../..' . '/src/Reporting/MissConfigurationReporter.php',
+ 'Rector\\Set\\Contract\\SetInterface' => __DIR__ . '/../..' . '/src/Set/Contract/SetInterface.php',
'Rector\\Set\\Contract\\SetListInterface' => __DIR__ . '/../..' . '/src/Set/Contract/SetListInterface.php',
+ 'Rector\\Set\\Contract\\SetProviderInterface' => __DIR__ . '/../..' . '/src/Set/Contract/SetProviderInterface.php',
+ 'Rector\\Set\\Enum\\SetGroup' => __DIR__ . '/../..' . '/src/Set/Enum/SetGroup.php',
+ 'Rector\\Set\\SetManager' => __DIR__ . '/../..' . '/src/Set/SetManager.php',
+ 'Rector\\Set\\SetProvider\\CoreSetProvider' => __DIR__ . '/../..' . '/src/Set/SetProvider/CoreSetProvider.php',
+ 'Rector\\Set\\SetProvider\\PHPSetProvider' => __DIR__ . '/../..' . '/src/Set/SetProvider/PHPSetProvider.php',
+ 'Rector\\Set\\ValueObject\\ComposerTriggeredSet' => __DIR__ . '/../..' . '/src/Set/ValueObject/ComposerTriggeredSet.php',
'Rector\\Set\\ValueObject\\DowngradeLevelSetList' => __DIR__ . '/..' . '/rector/rector-downgrade-php/src/Set/ValueObject/DowngradeLevelSetList.php',
'Rector\\Set\\ValueObject\\DowngradeSetList' => __DIR__ . '/..' . '/rector/rector-downgrade-php/src/Set/ValueObject/DowngradeSetList.php',
'Rector\\Set\\ValueObject\\LevelSetList' => __DIR__ . '/../..' . '/src/Set/ValueObject/LevelSetList.php',
+ 'Rector\\Set\\ValueObject\\Set' => __DIR__ . '/../..' . '/src/Set/ValueObject/Set.php',
'Rector\\Set\\ValueObject\\SetList' => __DIR__ . '/../..' . '/src/Set/ValueObject/SetList.php',
- 'Rector\\Skipper\\Contract\\SkipVoterInterface' => __DIR__ . '/../..' . '/src/Skipper/Contract/SkipVoterInterface.php',
'Rector\\Skipper\\FileSystem\\FnMatchPathNormalizer' => __DIR__ . '/../..' . '/src/Skipper/FileSystem/FnMatchPathNormalizer.php',
'Rector\\Skipper\\FileSystem\\PathNormalizer' => __DIR__ . '/../..' . '/src/Skipper/FileSystem/PathNormalizer.php',
'Rector\\Skipper\\Fnmatcher' => __DIR__ . '/../..' . '/src/Skipper/Fnmatcher.php',
@@ -2304,10 +2354,10 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\StaticTypeMapper\\Mapper\\PhpParserNodeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/Mapper/PhpParserNodeMapper.php',
'Rector\\StaticTypeMapper\\Mapper\\ScalarStringToTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/Mapper/ScalarStringToTypeMapper.php',
'Rector\\StaticTypeMapper\\Naming\\NameScopeFactory' => __DIR__ . '/../..' . '/src/StaticTypeMapper/Naming/NameScopeFactory.php',
- 'Rector\\StaticTypeMapper\\PhpDocParser\\IdentifierTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpDocParser/IdentifierTypeMapper.php',
- 'Rector\\StaticTypeMapper\\PhpDocParser\\IntersectionTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpDocParser/IntersectionTypeMapper.php',
- 'Rector\\StaticTypeMapper\\PhpDocParser\\NullableTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpDocParser/NullableTypeMapper.php',
- 'Rector\\StaticTypeMapper\\PhpDocParser\\UnionTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpDocParser/UnionTypeMapper.php',
+ 'Rector\\StaticTypeMapper\\PhpDocParser\\IdentifierPhpDocTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpDocParser/IdentifierPhpDocTypeMapper.php',
+ 'Rector\\StaticTypeMapper\\PhpDocParser\\IntersectionPhpDocTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpDocParser/IntersectionPhpDocTypeMapper.php',
+ 'Rector\\StaticTypeMapper\\PhpDocParser\\NullablePhpDocTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpDocParser/NullablePhpDocTypeMapper.php',
+ 'Rector\\StaticTypeMapper\\PhpDocParser\\UnionPhpDocTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpDocParser/UnionPhpDocTypeMapper.php',
'Rector\\StaticTypeMapper\\PhpDoc\\PhpDocTypeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpDoc/PhpDocTypeMapper.php',
'Rector\\StaticTypeMapper\\PhpParser\\ExprNodeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpParser/ExprNodeMapper.php',
'Rector\\StaticTypeMapper\\PhpParser\\FullyQualifiedNodeMapper' => __DIR__ . '/../..' . '/src/StaticTypeMapper/PhpParser/FullyQualifiedNodeMapper.php',
@@ -2343,6 +2393,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Symfony\\Bridge\\Symfony\\ContainerServiceProvider' => __DIR__ . '/..' . '/rector/rector-symfony/src/Bridge/Symfony/ContainerServiceProvider.php',
'Rector\\Symfony\\Bridge\\Symfony\\Routing\\SymfonyRoutesProvider' => __DIR__ . '/..' . '/rector/rector-symfony/src/Bridge/Symfony/Routing/SymfonyRoutesProvider.php',
'Rector\\Symfony\\BundleClassResolver' => __DIR__ . '/..' . '/rector/rector-symfony/src/BundleClassResolver.php',
+ 'Rector\\Symfony\\CodeQuality\\Enum\\ResponseClass' => __DIR__ . '/..' . '/rector/rector-symfony/rules/CodeQuality/Enum/ResponseClass.php',
'Rector\\Symfony\\CodeQuality\\NodeFactory\\SymfonyClosureFactory' => __DIR__ . '/..' . '/rector/rector-symfony/rules/CodeQuality/NodeFactory/SymfonyClosureFactory.php',
'Rector\\Symfony\\CodeQuality\\Rector\\BinaryOp\\ResponseStatusCodeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/CodeQuality/Rector/BinaryOp/ResponseStatusCodeRector.php',
'Rector\\Symfony\\CodeQuality\\Rector\\ClassMethod\\ActionSuffixRemoverRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/CodeQuality/Rector/ClassMethod/ActionSuffixRemoverRector.php',
@@ -2361,12 +2412,20 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Symfony\\Configs\\Enum\\DoctrineConfigKey' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Enum/DoctrineConfigKey.php',
'Rector\\Symfony\\Configs\\Enum\\GroupingMethods' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Enum/GroupingMethods.php',
'Rector\\Symfony\\Configs\\Enum\\SecurityConfigKey' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Enum/SecurityConfigKey.php',
+ 'Rector\\Symfony\\Configs\\NodeAnalyser\\ConfigServiceArgumentsResolver' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/NodeAnalyser/ConfigServiceArgumentsResolver.php',
+ 'Rector\\Symfony\\Configs\\NodeAnalyser\\SetServiceClassNameResolver' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/NodeAnalyser/SetServiceClassNameResolver.php',
+ 'Rector\\Symfony\\Configs\\NodeFactory\\AutowiredParamFactory' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/NodeFactory/AutowiredParamFactory.php',
+ 'Rector\\Symfony\\Configs\\NodeVisitor\\CollectServiceArgumentsNodeVisitor' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/NodeVisitor/CollectServiceArgumentsNodeVisitor.php',
'Rector\\Symfony\\Configs\\Rector\\ClassMethod\\AddRouteAnnotationRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/ClassMethod/AddRouteAnnotationRector.php',
+ 'Rector\\Symfony\\Configs\\Rector\\Class_\\AutowireAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Class_/AutowireAttributeRector.php',
+ 'Rector\\Symfony\\Configs\\Rector\\Class_\\ParameterBagToAutowireAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Class_/ParameterBagToAutowireAttributeRector.php',
+ 'Rector\\Symfony\\Configs\\Rector\\Closure\\MergeServiceNameTypeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Closure/MergeServiceNameTypeRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceArgsToServiceNamedArgRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceArgsToServiceNamedArgRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceSetStringNameToClassNameRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceSetStringNameToClassNameRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceSettersToSettersAutodiscoveryRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceSettersToSettersAutodiscoveryRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServiceTagsToDefaultsAutoconfigureRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServiceTagsToDefaultsAutoconfigureRector.php',
'Rector\\Symfony\\Configs\\Rector\\Closure\\ServicesSetNameToSetTypeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/Rector/Closure/ServicesSetNameToSetTypeRector.php',
+ 'Rector\\Symfony\\Configs\\ValueObject\\ServiceArguments' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Configs/ValueObject/ServiceArguments.php',
'Rector\\Symfony\\Contract\\Bridge\\Symfony\\Routing\\SymfonyRoutesProviderInterface' => __DIR__ . '/..' . '/rector/rector-symfony/src/Contract/Bridge/Symfony/Routing/SymfonyRoutesProviderInterface.php',
'Rector\\Symfony\\Contract\\EventReferenceToMethodNameInterface' => __DIR__ . '/..' . '/rector/rector-symfony/src/Contract/EventReferenceToMethodNameInterface.php',
'Rector\\Symfony\\Contract\\Tag\\TagInterface' => __DIR__ . '/..' . '/rector/rector-symfony/src/Contract/Tag/TagInterface.php',
@@ -2375,6 +2434,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Symfony\\DowngradeSymfony70\\Rector\\Class_\\DowngradeSymfonyCommandAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/DowngradeSymfony70/Rector/Class_/DowngradeSymfonyCommandAttributeRector.php',
'Rector\\Symfony\\Enum\\SensioAttribute' => __DIR__ . '/..' . '/rector/rector-symfony/src/Enum/SensioAttribute.php',
'Rector\\Symfony\\Enum\\SymfonyAnnotation' => __DIR__ . '/..' . '/rector/rector-symfony/src/Enum/SymfonyAnnotation.php',
+ 'Rector\\Symfony\\Enum\\SymfonyAttribute' => __DIR__ . '/..' . '/rector/rector-symfony/src/Enum/SymfonyAttribute.php',
'Rector\\Symfony\\Enum\\SymfonyClass' => __DIR__ . '/..' . '/rector/rector-symfony/src/Enum/SymfonyClass.php',
'Rector\\Symfony\\Exception\\XmlContainerNotExistsException' => __DIR__ . '/..' . '/rector/rector-symfony/src/Exception/XmlContainerNotExistsException.php',
'Rector\\Symfony\\FormHelper\\FormTypeStringToTypeProvider' => __DIR__ . '/..' . '/rector/rector-symfony/src/FormHelper/FormTypeStringToTypeProvider.php',
@@ -2386,8 +2446,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Symfony\\NodeAnalyzer\\Annotations\\PropertyAnnotationAssertResolver' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeAnalyzer/Annotations/PropertyAnnotationAssertResolver.php',
'Rector\\Symfony\\NodeAnalyzer\\Annotations\\StmtMethodCallMatcher' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeAnalyzer/Annotations/StmtMethodCallMatcher.php',
'Rector\\Symfony\\NodeAnalyzer\\ClassAnalyzer' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeAnalyzer/ClassAnalyzer.php',
- 'Rector\\Symfony\\NodeAnalyzer\\Command\\AttributeValueResolver' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeAnalyzer/Command/AttributeValueResolver.php',
- 'Rector\\Symfony\\NodeAnalyzer\\Command\\SetAliasesMethodCallExtractor' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeAnalyzer/Command/SetAliasesMethodCallExtractor.php',
'Rector\\Symfony\\NodeAnalyzer\\DependencyInjectionMethodCallAnalyzer' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeAnalyzer/DependencyInjectionMethodCallAnalyzer.php',
'Rector\\Symfony\\NodeAnalyzer\\FormAddMethodCallAnalyzer' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeAnalyzer/FormAddMethodCallAnalyzer.php',
'Rector\\Symfony\\NodeAnalyzer\\FormCollectionAnalyzer' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeAnalyzer/FormCollectionAnalyzer.php',
@@ -2415,14 +2473,16 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Symfony\\NodeManipulator\\ArrayManipulator' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeManipulator/ArrayManipulator.php',
'Rector\\Symfony\\NodeManipulator\\ClassManipulator' => __DIR__ . '/..' . '/rector/rector-symfony/src/NodeManipulator/ClassManipulator.php',
'Rector\\Symfony\\PhpDocNode\\SymfonyRouteTagValueNodeFactory' => __DIR__ . '/..' . '/rector/rector-symfony/src/PhpDocNode/SymfonyRouteTagValueNodeFactory.php',
+ 'Rector\\Symfony\\PhpParser\\NamedSimplePhpParser' => __DIR__ . '/..' . '/rector/rector-symfony/src/PhpParser/NamedSimplePhpParser.php',
'Rector\\Symfony\\Set\\FOSRestSetList' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/FOSRestSetList.php',
'Rector\\Symfony\\Set\\JMSSetList' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/JMSSetList.php',
'Rector\\Symfony\\Set\\SensiolabsSetList' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/SensiolabsSetList.php',
+ 'Rector\\Symfony\\Set\\SetProvider\\SymfonySetProvider' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/SetProvider/SymfonySetProvider.php',
+ 'Rector\\Symfony\\Set\\SetProvider\\TwigSetProvider' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/SetProvider/TwigSetProvider.php',
'Rector\\Symfony\\Set\\SwiftMailerSetList' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/SwiftMailerSetList.php',
- 'Rector\\Symfony\\Set\\SymfonyLevelSetList' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/SymfonyLevelSetList.php',
'Rector\\Symfony\\Set\\SymfonySetList' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/SymfonySetList.php',
- 'Rector\\Symfony\\Set\\TwigLevelSetList' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/TwigLevelSetList.php',
'Rector\\Symfony\\Set\\TwigSetList' => __DIR__ . '/..' . '/rector/rector-symfony/src/Set/TwigSetList.php',
+ 'Rector\\Symfony\\SwiftMailer\\Rector\\ClassMethod\\SwiftMessageToEmailRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/SwiftMailer/Rector/ClassMethod/SwiftMessageToEmailRector.php',
'Rector\\Symfony\\SwiftMailer\\Rector\\MethodCall\\SwiftCreateMessageToNewEmailRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/SwiftMailer/Rector/MethodCall/SwiftCreateMessageToNewEmailRector.php',
'Rector\\Symfony\\SwiftMailer\\Rector\\MethodCall\\SwiftSetBodyToHtmlPlainMethodCallRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/SwiftMailer/Rector/MethodCall/SwiftSetBodyToHtmlPlainMethodCallRector.php',
'Rector\\Symfony\\Symfony25\\Rector\\MethodCall\\AddViolationToBuildViolationRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony25/Rector/MethodCall/AddViolationToBuildViolationRector.php',
@@ -2478,6 +2538,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Symfony\\Symfony53\\Rector\\StaticPropertyFetch\\KernelTestCaseContainerPropertyDeprecationRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony53/Rector/StaticPropertyFetch/KernelTestCaseContainerPropertyDeprecationRector.php',
'Rector\\Symfony\\Symfony60\\Rector\\FuncCall\\ReplaceServiceArgumentRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony60/Rector/FuncCall/ReplaceServiceArgumentRector.php',
'Rector\\Symfony\\Symfony60\\Rector\\MethodCall\\GetHelperControllerToServiceRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony60/Rector/MethodCall/GetHelperControllerToServiceRector.php',
+ 'Rector\\Symfony\\Symfony61\\Rector\\Class_\\CommandConfigureToAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony61/Rector/Class_/CommandConfigureToAttributeRector.php',
'Rector\\Symfony\\Symfony61\\Rector\\Class_\\CommandPropertyToAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony61/Rector/Class_/CommandPropertyToAttributeRector.php',
'Rector\\Symfony\\Symfony61\\Rector\\Class_\\MagicClosureTwigExtensionToNativeMethodsRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony61/Rector/Class_/MagicClosureTwigExtensionToNativeMethodsRector.php',
'Rector\\Symfony\\Symfony61\\Rector\\StaticPropertyFetch\\ErrorNamesPropertyToConstantRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony61/Rector/StaticPropertyFetch/ErrorNamesPropertyToConstantRector.php',
@@ -2485,7 +2546,9 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Symfony\\Symfony62\\Rector\\ClassMethod\\ParamConverterAttributeToMapEntityAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony62/Rector/ClassMethod/ParamConverterAttributeToMapEntityAttributeRector.php',
'Rector\\Symfony\\Symfony62\\Rector\\Class_\\MessageHandlerInterfaceToAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony62/Rector/Class_/MessageHandlerInterfaceToAttributeRector.php',
'Rector\\Symfony\\Symfony62\\Rector\\Class_\\MessageSubscriberInterfaceToAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony62/Rector/Class_/MessageSubscriberInterfaceToAttributeRector.php',
+ 'Rector\\Symfony\\Symfony62\\Rector\\Class_\\SecurityAttributeToIsGrantedAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony62/Rector/Class_/SecurityAttributeToIsGrantedAttributeRector.php',
'Rector\\Symfony\\Symfony62\\Rector\\MethodCall\\SimplifyFormRenderingRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony62/Rector/MethodCall/SimplifyFormRenderingRector.php',
+ 'Rector\\Symfony\\Symfony63\\Rector\\Class_\\ParamAndEnvAttributeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony63/Rector/Class_/ParamAndEnvAttributeRector.php',
'Rector\\Symfony\\Symfony63\\Rector\\Class_\\SignalableCommandInterfaceReturnTypeRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony63/Rector/Class_/SignalableCommandInterfaceReturnTypeRector.php',
'Rector\\Symfony\\Symfony64\\Rector\\Class_\\ChangeRouteAttributeFromAnnotationSubnamespaceRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Symfony64/Rector/Class_/ChangeRouteAttributeFromAnnotationSubnamespaceRector.php',
'Rector\\Symfony\\Twig134\\Rector\\Return_\\SimpleFunctionAndFilterRector' => __DIR__ . '/..' . '/rector/rector-symfony/rules/Twig134/Rector/Return_/SimpleFunctionAndFilterRector.php',
@@ -2547,6 +2610,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Transform\\Rector\\MethodCall\\MethodCallToStaticCallRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/MethodCall/MethodCallToStaticCallRector.php',
'Rector\\Transform\\Rector\\MethodCall\\ReplaceParentCallByPropertyCallRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/MethodCall/ReplaceParentCallByPropertyCallRector.php',
'Rector\\Transform\\Rector\\New_\\NewToStaticCallRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/New_/NewToStaticCallRector.php',
+ 'Rector\\Transform\\Rector\\Scalar\\ScalarValueToConstFetchRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/Scalar/ScalarValueToConstFetchRector.php',
'Rector\\Transform\\Rector\\StaticCall\\StaticCallToFuncCallRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/StaticCall/StaticCallToFuncCallRector.php',
'Rector\\Transform\\Rector\\StaticCall\\StaticCallToMethodCallRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php',
'Rector\\Transform\\Rector\\StaticCall\\StaticCallToNewRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/StaticCall/StaticCallToNewRector.php',
@@ -2565,6 +2629,7 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Transform\\ValueObject\\PropertyAssignToMethodCall' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/PropertyAssignToMethodCall.php',
'Rector\\Transform\\ValueObject\\PropertyFetchToMethodCall' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/PropertyFetchToMethodCall.php',
'Rector\\Transform\\ValueObject\\ReplaceParentCallByPropertyCall' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/ReplaceParentCallByPropertyCall.php',
+ 'Rector\\Transform\\ValueObject\\ScalarValueToConstFetch' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/ScalarValueToConstFetch.php',
'Rector\\Transform\\ValueObject\\StaticCallToFuncCall' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/StaticCallToFuncCall.php',
'Rector\\Transform\\ValueObject\\StaticCallToMethodCall' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/StaticCallToMethodCall.php',
'Rector\\Transform\\ValueObject\\StaticCallToNew' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/StaticCallToNew.php',
@@ -2573,7 +2638,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\TypeDeclaration\\AlreadyAssignDetector\\ConstructorAssignDetector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/AlreadyAssignDetector/ConstructorAssignDetector.php',
'Rector\\TypeDeclaration\\AlreadyAssignDetector\\NullTypeAssignDetector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/AlreadyAssignDetector/NullTypeAssignDetector.php',
'Rector\\TypeDeclaration\\AlreadyAssignDetector\\PropertyDefaultAssignDetector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/AlreadyAssignDetector/PropertyDefaultAssignDetector.php',
- 'Rector\\TypeDeclaration\\Contract\\PHPStan\\TypeWithClassTypeSpecifierInterface' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Contract/PHPStan/TypeWithClassTypeSpecifierInterface.php',
'Rector\\TypeDeclaration\\FunctionLikeReturnTypeResolver' => __DIR__ . '/../..' . '/rules/TypeDeclaration/FunctionLikeReturnTypeResolver.php',
'Rector\\TypeDeclaration\\Guard\\ParamTypeAddGuard' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Guard/ParamTypeAddGuard.php',
'Rector\\TypeDeclaration\\Guard\\PropertyTypeOverrideGuard' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Guard/PropertyTypeOverrideGuard.php',
@@ -2588,53 +2652,70 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\TypeDeclaration\\NodeAnalyzer\\ParamAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeAnalyzer/ParamAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeAnalyzer/ReturnAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnFilter\\ExclusiveNativeCallLikeReturnMatcher' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeAnalyzer/ReturnFilter/ExclusiveNativeCallLikeReturnMatcher.php',
- 'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\AlwaysStrictReturnAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/AlwaysStrictReturnAnalyzer.php',
- 'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\StrictBoolReturnTypeAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictBoolReturnTypeAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\StrictNativeFunctionReturnTypeAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictNativeFunctionReturnTypeAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\StrictReturnNewAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictReturnNewAnalyzer.php',
- 'Rector\\TypeDeclaration\\NodeAnalyzer\\ReturnTypeAnalyzer\\StrictScalarReturnTypeAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeAnalyzer/ReturnTypeAnalyzer/StrictScalarReturnTypeAnalyzer.php',
'Rector\\TypeDeclaration\\NodeAnalyzer\\TypeNodeUnwrapper' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeAnalyzer/TypeNodeUnwrapper.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddNeverReturnType' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeManipulator/AddNeverReturnType.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddReturnTypeFromCast' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromCast.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddReturnTypeFromParam' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromParam.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddReturnTypeFromStrictNativeCall' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeManipulator/AddReturnTypeFromStrictNativeCall.php',
+ 'Rector\\TypeDeclaration\\NodeManipulator\\AddUnionReturnType' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeManipulator/AddUnionReturnType.php',
'Rector\\TypeDeclaration\\NodeTypeAnalyzer\\DetailedTypeAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeTypeAnalyzer/DetailedTypeAnalyzer.php',
'Rector\\TypeDeclaration\\NodeTypeAnalyzer\\PropertyTypeDecorator' => __DIR__ . '/../..' . '/rules/TypeDeclaration/NodeTypeAnalyzer/PropertyTypeDecorator.php',
'Rector\\TypeDeclaration\\PHPStan\\ObjectTypeSpecifier' => __DIR__ . '/../..' . '/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php',
- 'Rector\\TypeDeclaration\\PHPStan\\TypeSpecifier\\SameNamespacedTypeSpecifier' => __DIR__ . '/../..' . '/rules/TypeDeclaration/PHPStan/TypeSpecifier/SameNamespacedTypeSpecifier.php',
- 'Rector\\TypeDeclaration\\PHPStan\\TypeSpecifier\\SelfStaticParentTypeSpecifier' => __DIR__ . '/../..' . '/rules/TypeDeclaration/PHPStan/TypeSpecifier/SelfStaticParentTypeSpecifier.php',
'Rector\\TypeDeclaration\\PhpDocParser\\ParamPhpDocNodeFactory' => __DIR__ . '/../..' . '/rules/TypeDeclaration/PhpDocParser/ParamPhpDocNodeFactory.php',
+ 'Rector\\TypeDeclaration\\PhpDocParser\\TypeExpressionFromVarTagResolver' => __DIR__ . '/../..' . '/rules/TypeDeclaration/PhpDocParser/TypeExpressionFromVarTagResolver.php',
'Rector\\TypeDeclaration\\Rector\\ArrowFunction\\AddArrowFunctionReturnTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\BooleanAnd\\BinaryOpNullableToInstanceofRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/BooleanAnd/BinaryOpNullableToInstanceofRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddMethodCallBasedStrictParamTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddMethodCallBasedStrictParamTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddParamArrayDocblockBasedOnCallableNativeFuncCallRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddParamArrayDocblockBasedOnCallableNativeFuncCallRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddParamTypeBasedOnPHPUnitDataProviderRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddParamTypeDeclarationRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeDeclarationRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddParamTypeFromPropertyTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeFromPropertyTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddReturnArrayDocblockBasedOnArrayMapRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddReturnArrayDocblockBasedOnArrayMapRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddReturnTypeDeclarationBasedOnParentClassMethodRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationBasedOnParentClassMethodRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddReturnTypeDeclarationRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddReturnTypeDeclarationRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddTypeFromResourceDocblockRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddTypeFromResourceDocblockRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\AddVoidReturnTypeWhereNoReturnRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/AddVoidReturnTypeWhereNoReturnRector.php',
- 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\BoolReturnTypeFromStrictScalarReturnsRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromStrictScalarReturnsRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\BoolReturnTypeFromBooleanConstReturnsRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanConstReturnsRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\BoolReturnTypeFromBooleanStrictReturnsRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/BoolReturnTypeFromBooleanStrictReturnsRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\NumericReturnTypeFromStrictReturnsRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictReturnsRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\NumericReturnTypeFromStrictScalarReturnsRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/NumericReturnTypeFromStrictScalarReturnsRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ParamTypeByMethodCallTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ParamTypeByMethodCallTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ParamTypeByParentCallTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ParamTypeByParentCallTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnNeverTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnNeverTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnNullableTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnNullableTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromMockObjectRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromMockObjectRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromReturnCastRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnCastRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromReturnDirectArrayRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnDirectArrayRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromReturnNewRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php',
- 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictBoolReturnExprRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictBoolReturnExprRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictConstantReturnRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictConstantReturnRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictFluentReturnRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictFluentReturnRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictNativeCallRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNativeCallRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictNewArrayRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictNewArrayRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictParamRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictParamRector.php',
- 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictScalarReturnExprRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictTypedCallRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedCallRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictTypedPropertyRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromStrictTypedPropertyRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromSymfonySerializerRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromSymfonySerializerRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnUnionTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/ReturnUnionTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\StrictArrayParamDimFetchRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php',
'Rector\\TypeDeclaration\\Rector\\ClassMethod\\StrictStringParamConcatRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/StrictStringParamConcatRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\StringReturnTypeFromStrictScalarReturnsRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictScalarReturnsRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\ClassMethod\\StringReturnTypeFromStrictStringReturnsRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/ClassMethod/StringReturnTypeFromStrictStringReturnsRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\AddTestsVoidReturnTypeWhereNoReturnRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Class_/AddTestsVoidReturnTypeWhereNoReturnRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\ChildDoctrineRepositoryClassTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Class_/ChildDoctrineRepositoryClassTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\MergeDateTimePropertyTypeDeclarationRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Class_/MergeDateTimePropertyTypeDeclarationRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\PropertyTypeFromStrictSetterGetterRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Class_/PropertyTypeFromStrictSetterGetterRector.php',
'Rector\\TypeDeclaration\\Rector\\Class_\\ReturnTypeFromStrictTernaryRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Class_/ReturnTypeFromStrictTernaryRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Class_\\TypedPropertyFromCreateMockAssignRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromCreateMockAssignRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Class_\\TypedPropertyFromJMSSerializerAttributeTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Class_/TypedPropertyFromJMSSerializerAttributeTypeRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Closure\\AddClosureNeverReturnTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Closure/AddClosureNeverReturnTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\Closure\\AddClosureVoidReturnTypeWhereNoReturnRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Closure/AddClosureVoidReturnTypeWhereNoReturnRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Closure\\ClosureReturnTypeRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Closure/ClosureReturnTypeRector.php',
'Rector\\TypeDeclaration\\Rector\\Empty_\\EmptyOnNullableObjectToInstanceOfRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Empty_/EmptyOnNullableObjectToInstanceOfRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\Expression\\InlineVarDocTagToAssertRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/Expression/InlineVarDocTagToAssertRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddClosureParamTypeFromArgRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromArgRector.php',
+ 'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddClosureParamTypeFromObjectRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/FunctionLike/AddClosureParamTypeFromObjectRector.php',
'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/FunctionLike/AddParamTypeForFunctionLikeWithinCallLikeArgDeclarationRector.php',
'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddParamTypeSplFixedArrayRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/FunctionLike/AddParamTypeSplFixedArrayRector.php',
'Rector\\TypeDeclaration\\Rector\\FunctionLike\\AddReturnTypeDeclarationFromYieldsRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/FunctionLike/AddReturnTypeDeclarationFromYieldsRector.php',
@@ -2646,13 +2727,10 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\TypeDeclaration\\Rector\\StmtsAwareInterface\\DeclareStrictTypesRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/StmtsAwareInterface/DeclareStrictTypesRector.php',
'Rector\\TypeDeclaration\\Rector\\StmtsAwareInterface\\IncreaseDeclareStrictTypesRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/StmtsAwareInterface/IncreaseDeclareStrictTypesRector.php',
'Rector\\TypeDeclaration\\Rector\\While_\\WhileNullableToInstanceofRector' => __DIR__ . '/../..' . '/rules/TypeDeclaration/Rector/While_/WhileNullableToInstanceofRector.php',
- 'Rector\\TypeDeclaration\\TypeAnalyzer\\AlwaysStrictBoolExprAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictBoolExprAnalyzer.php',
- 'Rector\\TypeDeclaration\\TypeAnalyzer\\AlwaysStrictScalarExprAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeAnalyzer/AlwaysStrictScalarExprAnalyzer.php',
'Rector\\TypeDeclaration\\TypeAnalyzer\\GenericClassStringTypeNormalizer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeAnalyzer/GenericClassStringTypeNormalizer.php',
'Rector\\TypeDeclaration\\TypeAnalyzer\\NullableTypeAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeAnalyzer/NullableTypeAnalyzer.php',
'Rector\\TypeDeclaration\\TypeAnalyzer\\PropertyTypeDefaultValueAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeAnalyzer/PropertyTypeDefaultValueAnalyzer.php',
'Rector\\TypeDeclaration\\TypeAnalyzer\\ReturnStrictTypeAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeAnalyzer/ReturnStrictTypeAnalyzer.php',
- 'Rector\\TypeDeclaration\\TypeAnalyzer\\StrictReturnClassConstReturnTypeAnalyzer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeAnalyzer/StrictReturnClassConstReturnTypeAnalyzer.php',
'Rector\\TypeDeclaration\\TypeInferer\\AssignToPropertyTypeInferer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeInferer/AssignToPropertyTypeInferer.php',
'Rector\\TypeDeclaration\\TypeInferer\\PropertyTypeInferer\\AllAssignNodePropertyTypeInferer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeInferer/PropertyTypeInferer/AllAssignNodePropertyTypeInferer.php',
'Rector\\TypeDeclaration\\TypeInferer\\PropertyTypeInferer\\GetterTypeDeclarationPropertyTypeInferer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeInferer/PropertyTypeInferer/GetterTypeDeclarationPropertyTypeInferer.php',
@@ -2663,6 +2741,8 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\TypeDeclaration\\TypeInferer\\SilentVoidResolver' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeInferer/SilentVoidResolver.php',
'Rector\\TypeDeclaration\\TypeInferer\\SplArrayFixedTypeNarrower' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeInferer/SplArrayFixedTypeNarrower.php',
'Rector\\TypeDeclaration\\TypeNormalizer' => __DIR__ . '/../..' . '/rules/TypeDeclaration/TypeNormalizer.php',
+ 'Rector\\TypeDeclaration\\ValueObject\\AddClosureParamTypeFromArg' => __DIR__ . '/../..' . '/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromArg.php',
+ 'Rector\\TypeDeclaration\\ValueObject\\AddClosureParamTypeFromObject' => __DIR__ . '/../..' . '/rules/TypeDeclaration/ValueObject/AddClosureParamTypeFromObject.php',
'Rector\\TypeDeclaration\\ValueObject\\AddParamTypeDeclaration' => __DIR__ . '/../..' . '/rules/TypeDeclaration/ValueObject/AddParamTypeDeclaration.php',
'Rector\\TypeDeclaration\\ValueObject\\AddParamTypeForFunctionLikeWithinCallLikeArgDeclaration' => __DIR__ . '/../..' . '/rules/TypeDeclaration/ValueObject/AddParamTypeForFunctionLikeWithinCallLikeArgDeclaration.php',
'Rector\\TypeDeclaration\\ValueObject\\AddPropertyTypeDeclaration' => __DIR__ . '/../..' . '/rules/TypeDeclaration/ValueObject/AddPropertyTypeDeclaration.php',
@@ -2681,7 +2761,6 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
'Rector\\Util\\StringUtils' => __DIR__ . '/../..' . '/src/Util/StringUtils.php',
'Rector\\Validation\\RectorAssert' => __DIR__ . '/../..' . '/src/Validation/RectorAssert.php',
'Rector\\Validation\\RectorConfigValidator' => __DIR__ . '/../..' . '/src/Validation/RectorConfigValidator.php',
- 'Rector\\ValueObjectFactory\\Application\\FileFactory' => __DIR__ . '/../..' . '/src/ValueObjectFactory/Application/FileFactory.php',
'Rector\\ValueObject\\Application\\File' => __DIR__ . '/../..' . '/src/ValueObject/Application/File.php',
'Rector\\ValueObject\\Bootstrap\\BootstrapConfigs' => __DIR__ . '/../..' . '/src/ValueObject/Bootstrap/BootstrapConfigs.php',
'Rector\\ValueObject\\ClassMethodWillChangeReturnType' => __DIR__ . '/..' . '/rector/rector-downgrade-php/src/ValueObject/ClassMethodWillChangeReturnType.php',
@@ -2729,9 +2808,9 @@ class ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde::$prefixDirsPsr4;
- $loader->classMap = ComposerStaticInit70e3025dac7e7555f69a9b4ca9e3dfde::$classMap;
+ $loader->prefixLengthsPsr4 = ComposerStaticInit7c12491db1a700dd78980ecb6595c088::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInit7c12491db1a700dd78980ecb6595c088::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInit7c12491db1a700dd78980ecb6595c088::$classMap;
}, null, ClassLoader::class);
}
diff --git a/vendor/rector/rector/vendor/composer/installed.json b/vendor/rector/rector/vendor/composer/installed.json
index 69c383478..6f7a29d19 100644
--- a/vendor/rector/rector/vendor/composer/installed.json
+++ b/vendor/rector/rector/vendor/composer/installed.json
@@ -28,7 +28,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Clue\\React\\NDJson\\": "src\/"
+ "RectorPrefix202410\\Clue\\React\\NDJson\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -69,38 +69,46 @@
},
{
"name": "composer\/pcre",
- "version": "3.1.3",
- "version_normalized": "3.1.3.0",
+ "version": "3.3.1",
+ "version_normalized": "3.3.1.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/composer\/pcre.git",
- "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8"
+ "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/composer\/pcre\/zipball\/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
- "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
+ "url": "https:\/\/api.github.com\/repos\/composer\/pcre\/zipball\/63aaeac21d7e775ff9bc9d45021e1745c97521c4",
+ "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
+ "conflict": {
+ "phpstan\/phpstan": "<1.11.10"
+ },
"require-dev": {
- "phpstan\/phpstan": "^1.3",
+ "phpstan\/phpstan": "^1.11.10",
"phpstan\/phpstan-strict-rules": "^1.1",
- "symfony\/phpunit-bridge": "^5"
+ "phpunit\/phpunit": "^8 || ^9"
},
- "time": "2024-03-19T10:26:25+00:00",
+ "time": "2024-08-27T18:44:43+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Composer\\Pcre\\": "src"
+ "RectorPrefix202410\\Composer\\Pcre\\": "src"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -123,7 +131,7 @@
],
"support": {
"issues": "https:\/\/github.com\/composer\/pcre\/issues",
- "source": "https:\/\/github.com\/composer\/pcre\/tree\/3.1.3"
+ "source": "https:\/\/github.com\/composer\/pcre\/tree\/3.3.1"
},
"funding": [
{
@@ -143,27 +151,27 @@
},
{
"name": "composer\/semver",
- "version": "3.4.0",
- "version_normalized": "3.4.0.0",
+ "version": "3.4.3",
+ "version_normalized": "3.4.3.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/composer\/semver.git",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/composer\/semver\/zipball\/35e8d0af4486141bc745f23a29cc2091eb624a32",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "url": "https:\/\/api.github.com\/repos\/composer\/semver\/zipball\/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
- "phpstan\/phpstan": "^1.4",
- "symfony\/phpunit-bridge": "^4.2 || ^5"
+ "phpstan\/phpstan": "^1.11",
+ "symfony\/phpunit-bridge": "^3 || ^7"
},
- "time": "2023-08-31T09:50:34+00:00",
+ "time": "2024-09-19T14:15:21+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -173,7 +181,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Composer\\Semver\\": "src"
+ "RectorPrefix202410\\Composer\\Semver\\": "src"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -207,7 +215,7 @@
"support": {
"irc": "ircs:\/\/irc.libera.chat:6697\/composer",
"issues": "https:\/\/github.com\/composer\/semver\/issues",
- "source": "https:\/\/github.com\/composer\/semver\/tree\/3.4.0"
+ "source": "https:\/\/github.com\/composer\/semver\/tree\/3.4.3"
},
"funding": [
{
@@ -255,7 +263,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Composer\\XdebugHandler\\": "src"
+ "RectorPrefix202410\\Composer\\XdebugHandler\\": "src"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -325,7 +333,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Doctrine\\Inflector\\": "lib\/Doctrine\/Inflector"
+ "RectorPrefix202410\\Doctrine\\Inflector\\": "lib\/Doctrine\/Inflector"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -414,7 +422,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Evenement\\": "src\/"
+ "RectorPrefix202410\\Evenement\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -440,17 +448,17 @@
},
{
"name": "fidry\/cpu-core-counter",
- "version": "1.1.0",
- "version_normalized": "1.1.0.0",
+ "version": "1.2.0",
+ "version_normalized": "1.2.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/theofidry\/cpu-core-counter.git",
- "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42"
+ "reference": "8520451a140d3f46ac33042715115e290cf5785f"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/theofidry\/cpu-core-counter\/zipball\/f92996c4d5c1a696a6a970e20f7c4216200fcc42",
- "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42",
+ "url": "https:\/\/api.github.com\/repos\/theofidry\/cpu-core-counter\/zipball\/8520451a140d3f46ac33042715115e290cf5785f",
+ "reference": "8520451a140d3f46ac33042715115e290cf5785f",
"shasum": ""
},
"require": {
@@ -467,12 +475,12 @@
"phpunit\/phpunit": "^8.5.31 || ^9.5.26",
"webmozarts\/strict-phpunit": "^7.5"
},
- "time": "2024-02-07T09:43:46+00:00",
+ "time": "2024-08-06T10:04:20+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Fidry\\CpuCoreCounter\\": "src\/"
+ "RectorPrefix202410\\Fidry\\CpuCoreCounter\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -492,7 +500,7 @@
],
"support": {
"issues": "https:\/\/github.com\/theofidry\/cpu-core-counter\/issues",
- "source": "https:\/\/github.com\/theofidry\/cpu-core-counter\/tree\/1.1.0"
+ "source": "https:\/\/github.com\/theofidry\/cpu-core-counter\/tree\/1.2.0"
},
"funding": [
{
@@ -504,32 +512,32 @@
},
{
"name": "illuminate\/container",
- "version": "v10.48.10",
- "version_normalized": "10.48.10.0",
+ "version": "v11.26.0",
+ "version_normalized": "11.26.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/illuminate\/container.git",
- "reference": "ddc26273085fad3c471b2602ad820e0097ff7939"
+ "reference": "d6aca7c315d68cb6807c139facd7ea134b4f5104"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/illuminate\/container\/zipball\/ddc26273085fad3c471b2602ad820e0097ff7939",
- "reference": "ddc26273085fad3c471b2602ad820e0097ff7939",
+ "url": "https:\/\/api.github.com\/repos\/illuminate\/container\/zipball\/d6aca7c315d68cb6807c139facd7ea134b4f5104",
+ "reference": "d6aca7c315d68cb6807c139facd7ea134b4f5104",
"shasum": ""
},
"require": {
- "illuminate\/contracts": "^10.0",
- "php": "^8.1",
+ "illuminate\/contracts": "^11.0",
+ "php": "^8.2",
"psr\/container": "^1.1.1|^2.0.1"
},
"provide": {
"psr\/container-implementation": "1.1|2.0"
},
- "time": "2023-06-18T09:12:03+00:00",
+ "time": "2024-09-20T12:51:05+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "10.x-dev"
+ "dev-master": "11.x-dev"
},
"patches_applied": [
"https:\/\/raw.githubusercontent.com\/rectorphp\/vendor-patches\/main\/patches\/illuminate-container-container-php.patch"
@@ -538,7 +546,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Illuminate\\Container\\": ""
+ "RectorPrefix202410\\Illuminate\\Container\\": ""
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -561,35 +569,35 @@
},
{
"name": "illuminate\/contracts",
- "version": "v10.48.10",
- "version_normalized": "10.48.10.0",
+ "version": "v11.26.0",
+ "version_normalized": "11.26.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/illuminate\/contracts.git",
- "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac"
+ "reference": "56312862af937bd6da8e6dc8bbd88188dfb478f8"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/illuminate\/contracts\/zipball\/8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac",
- "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac",
+ "url": "https:\/\/api.github.com\/repos\/illuminate\/contracts\/zipball\/56312862af937bd6da8e6dc8bbd88188dfb478f8",
+ "reference": "56312862af937bd6da8e6dc8bbd88188dfb478f8",
"shasum": ""
},
"require": {
- "php": "^8.1",
+ "php": "^8.2",
"psr\/container": "^1.1.1|^2.0.1",
"psr\/simple-cache": "^1.0|^2.0|^3.0"
},
- "time": "2024-01-15T18:52:32+00:00",
+ "time": "2024-09-22T15:08:08+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "10.x-dev"
+ "dev-master": "11.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Illuminate\\Contracts\\": ""
+ "RectorPrefix202410\\Illuminate\\Contracts\\": ""
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -612,21 +620,21 @@
},
{
"name": "nette\/utils",
- "version": "v4.0.4",
- "version_normalized": "4.0.4.0",
+ "version": "v4.0.5",
+ "version_normalized": "4.0.5.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/nette\/utils.git",
- "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218"
+ "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/nette\/utils\/zipball\/d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
- "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
+ "url": "https:\/\/api.github.com\/repos\/nette\/utils\/zipball\/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
+ "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
"shasum": ""
},
"require": {
- "php": ">=8.0 <8.4"
+ "php": "8.0 - 8.4"
},
"conflict": {
"nette\/finder": "<3",
@@ -646,7 +654,7 @@
"ext-mbstring": "to use Strings::lower() etc...",
"ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
},
- "time": "2024-01-17T16:50:36+00:00",
+ "time": "2024-08-07T15:39:19+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -695,23 +703,23 @@
],
"support": {
"issues": "https:\/\/github.com\/nette\/utils\/issues",
- "source": "https:\/\/github.com\/nette\/utils\/tree\/v4.0.4"
+ "source": "https:\/\/github.com\/nette\/utils\/tree\/v4.0.5"
},
"install-path": "..\/nette\/utils"
},
{
"name": "nikic\/php-parser",
- "version": "v4.19.1",
- "version_normalized": "4.19.1.0",
+ "version": "v4.19.4",
+ "version_normalized": "4.19.4.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/nikic\/PHP-Parser.git",
- "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b"
+ "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/nikic\/PHP-Parser\/zipball\/4e1b88d21c69391150ace211e9eaf05810858d0b",
- "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
+ "url": "https:\/\/api.github.com\/repos\/nikic\/PHP-Parser\/zipball\/715f4d25e225bc47b293a8b997fe6ce99bf987d2",
+ "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2",
"shasum": ""
},
"require": {
@@ -720,9 +728,9 @@
},
"require-dev": {
"ircmaxell\/php-yacc": "^0.0.7",
- "phpunit\/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ "phpunit\/phpunit": "^7.0 || ^8.0 || ^9.0"
},
- "time": "2024-03-17T08:10:35+00:00",
+ "time": "2024-09-29T15:01:53+00:00",
"bin": [
"bin\/php-parse"
],
@@ -746,7 +754,8 @@
"https:\/\/raw.githubusercontent.com\/rectorphp\/vendor-patches\/main\/patches\/nikic-php-parser-lib-phpparser-node-stmt-if-php.patch",
"https:\/\/raw.githubusercontent.com\/rectorphp\/vendor-patches\/main\/patches\/nikic-php-parser-lib-phpparser-node-stmt-case-php.patch",
"https:\/\/raw.githubusercontent.com\/rectorphp\/vendor-patches\/main\/patches\/nikic-php-parser-lib-phpparser-node-stmt-elseif-php.patch",
- "https:\/\/raw.githubusercontent.com\/rectorphp\/vendor-patches\/main\/patches\/nikic-php-parser-lib-phpparser-node-stmt-namespace-php.patch"
+ "https:\/\/raw.githubusercontent.com\/rectorphp\/vendor-patches\/main\/patches\/nikic-php-parser-lib-phpparser-node-stmt-namespace-php.patch",
+ "https:\/\/raw.githubusercontent.com\/rectorphp\/vendor-patches\/main\/patches\/nikic-php-parser-lib-phpparser-nodetraverser-php.patch"
]
},
"installation-source": "dist",
@@ -771,7 +780,7 @@
],
"support": {
"issues": "https:\/\/github.com\/nikic\/PHP-Parser\/issues",
- "source": "https:\/\/github.com\/nikic\/PHP-Parser\/tree\/v4.19.1"
+ "source": "https:\/\/github.com\/nikic\/PHP-Parser\/tree\/v4.19.4"
},
"install-path": "..\/nikic\/php-parser"
},
@@ -807,7 +816,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\OndraM\\CiDetector\\": "src\/"
+ "RectorPrefix202410\\OndraM\\CiDetector\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -858,17 +867,17 @@
},
{
"name": "phpstan\/phpdoc-parser",
- "version": "1.29.0",
- "version_normalized": "1.29.0.0",
+ "version": "1.32.0",
+ "version_normalized": "1.32.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/phpstan\/phpdoc-parser.git",
- "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc"
+ "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/phpstan\/phpdoc-parser\/zipball\/536889f2b340489d328f5ffb7b02bb6b183ddedc",
- "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc",
+ "url": "https:\/\/api.github.com\/repos\/phpstan\/phpdoc-parser\/zipball\/6ca22b154efdd9e3c68c56f5d94670920a1c19a4",
+ "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4",
"shasum": ""
},
"require": {
@@ -885,7 +894,7 @@
"phpunit\/phpunit": "^9.5",
"symfony\/process": "^5.2"
},
- "time": "2024-05-06T12:04:23+00:00",
+ "time": "2024-09-26T07:23:32+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -902,7 +911,7 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https:\/\/github.com\/phpstan\/phpdoc-parser\/issues",
- "source": "https:\/\/github.com\/phpstan\/phpdoc-parser\/tree\/1.29.0"
+ "source": "https:\/\/github.com\/phpstan\/phpdoc-parser\/tree\/1.32.0"
},
"install-path": "..\/phpstan\/phpdoc-parser"
},
@@ -934,7 +943,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Psr\\Container\\": "src\/"
+ "RectorPrefix202410\\Psr\\Container\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -964,23 +973,23 @@
},
{
"name": "psr\/log",
- "version": "3.0.0",
- "version_normalized": "3.0.0.0",
+ "version": "3.0.2",
+ "version_normalized": "3.0.2.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/php-fig\/log.git",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/php-fig\/log\/zipball\/fe5ea303b0887d5caefd3d431c3e61ad47037001",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "url": "https:\/\/api.github.com\/repos\/php-fig\/log\/zipball\/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
"shasum": ""
},
"require": {
"php": ">=8.0.0"
},
- "time": "2021-07-14T16:46:02+00:00",
+ "time": "2024-09-11T13:17:53+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -990,7 +999,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Psr\\Log\\": "src"
+ "RectorPrefix202410\\Psr\\Log\\": "src"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -1011,7 +1020,7 @@
"psr-3"
],
"support": {
- "source": "https:\/\/github.com\/php-fig\/log\/tree\/3.0.0"
+ "source": "https:\/\/github.com\/php-fig\/log\/tree\/3.0.2"
},
"install-path": "..\/psr\/log"
},
@@ -1043,7 +1052,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Psr\\SimpleCache\\": "src\/"
+ "RectorPrefix202410\\Psr\\SimpleCache\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -1096,7 +1105,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\React\\Cache\\": "src\/"
+ "RectorPrefix202410\\React\\Cache\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -1175,7 +1184,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\React\\ChildProcess\\": "src"
+ "RectorPrefix202410\\React\\ChildProcess\\": "src"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -1228,36 +1237,36 @@
},
{
"name": "react\/dns",
- "version": "v1.12.0",
- "version_normalized": "1.12.0.0",
+ "version": "v1.13.0",
+ "version_normalized": "1.13.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/reactphp\/dns.git",
- "reference": "c134600642fa615b46b41237ef243daa65bb64ec"
+ "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/reactphp\/dns\/zipball\/c134600642fa615b46b41237ef243daa65bb64ec",
- "reference": "c134600642fa615b46b41237ef243daa65bb64ec",
+ "url": "https:\/\/api.github.com\/repos\/reactphp\/dns\/zipball\/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5",
+ "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react\/cache": "^1.0 || ^0.6 || ^0.5",
"react\/event-loop": "^1.2",
- "react\/promise": "^3.0 || ^2.7 || ^1.2.1"
+ "react\/promise": "^3.2 || ^2.7 || ^1.2.1"
},
"require-dev": {
"phpunit\/phpunit": "^9.6 || ^5.7 || ^4.8.36",
- "react\/async": "^4 || ^3 || ^2",
- "react\/promise-timer": "^1.9"
+ "react\/async": "^4.3 || ^3 || ^2",
+ "react\/promise-timer": "^1.11"
},
- "time": "2023-11-29T12:41:06+00:00",
+ "time": "2024-06-13T14:18:03+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\React\\Dns\\": "src\/"
+ "RectorPrefix202410\\React\\Dns\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -1295,7 +1304,7 @@
],
"support": {
"issues": "https:\/\/github.com\/reactphp\/dns\/issues",
- "source": "https:\/\/github.com\/reactphp\/dns\/tree\/v1.12.0"
+ "source": "https:\/\/github.com\/reactphp\/dns\/tree\/v1.13.0"
},
"funding": [
{
@@ -1334,7 +1343,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\React\\EventLoop\\": "src\/"
+ "RectorPrefix202410\\React\\EventLoop\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -1382,26 +1391,27 @@
},
{
"name": "react\/promise",
- "version": "v2.11.0",
- "version_normalized": "2.11.0.0",
+ "version": "v3.2.0",
+ "version_normalized": "3.2.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/reactphp\/promise.git",
- "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831"
+ "reference": "8a164643313c71354582dc850b42b33fa12a4b63"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/reactphp\/promise\/zipball\/1a8460931ea36dc5c76838fec5734d55c88c6831",
- "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831",
+ "url": "https:\/\/api.github.com\/repos\/reactphp\/promise\/zipball\/8a164643313c71354582dc850b42b33fa12a4b63",
+ "reference": "8a164643313c71354582dc850b42b33fa12a4b63",
"shasum": ""
},
"require": {
- "php": ">=5.4.0"
+ "php": ">=7.1.0"
},
"require-dev": {
- "phpunit\/phpunit": "^9.6 || ^5.7 || ^4.8.36"
+ "phpstan\/phpstan": "1.10.39 || 1.4.10",
+ "phpunit\/phpunit": "^9.6 || ^7.5"
},
- "time": "2023-11-16T16:16:50+00:00",
+ "time": "2024-05-24T10:39:05+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1409,7 +1419,7 @@
"src\/functions_include.php"
],
"psr-4": {
- "RectorPrefix202405\\React\\Promise\\": "src\/"
+ "RectorPrefix202410\\React\\Promise\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -1445,7 +1455,7 @@
],
"support": {
"issues": "https:\/\/github.com\/reactphp\/promise\/issues",
- "source": "https:\/\/github.com\/reactphp\/promise\/tree\/v2.11.0"
+ "source": "https:\/\/github.com\/reactphp\/promise\/tree\/v3.2.0"
},
"funding": [
{
@@ -1457,39 +1467,39 @@
},
{
"name": "react\/socket",
- "version": "v1.15.0",
- "version_normalized": "1.15.0.0",
+ "version": "v1.16.0",
+ "version_normalized": "1.16.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/reactphp\/socket.git",
- "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038"
+ "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/reactphp\/socket\/zipball\/216d3aec0b87f04a40ca04f481e6af01bdd1d038",
- "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038",
+ "url": "https:\/\/api.github.com\/repos\/reactphp\/socket\/zipball\/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1",
+ "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1",
"shasum": ""
},
"require": {
"evenement\/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.0",
- "react\/dns": "^1.11",
+ "react\/dns": "^1.13",
"react\/event-loop": "^1.2",
- "react\/promise": "^3 || ^2.6 || ^1.2.1",
- "react\/stream": "^1.2"
+ "react\/promise": "^3.2 || ^2.6 || ^1.2.1",
+ "react\/stream": "^1.4"
},
"require-dev": {
"phpunit\/phpunit": "^9.6 || ^5.7 || ^4.8.36",
- "react\/async": "^4 || ^3 || ^2",
+ "react\/async": "^4.3 || ^3.3 || ^2",
"react\/promise-stream": "^1.4",
- "react\/promise-timer": "^1.10"
+ "react\/promise-timer": "^1.11"
},
- "time": "2023-12-15T11:02:10+00:00",
+ "time": "2024-07-26T10:38:09+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\React\\Socket\\": "src\/"
+ "RectorPrefix202410\\React\\Socket\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -1528,7 +1538,7 @@
],
"support": {
"issues": "https:\/\/github.com\/reactphp\/socket\/issues",
- "source": "https:\/\/github.com\/reactphp\/socket\/tree\/v1.15.0"
+ "source": "https:\/\/github.com\/reactphp\/socket\/tree\/v1.16.0"
},
"funding": [
{
@@ -1540,17 +1550,17 @@
},
{
"name": "react\/stream",
- "version": "v1.3.0",
- "version_normalized": "1.3.0.0",
+ "version": "v1.4.0",
+ "version_normalized": "1.4.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/reactphp\/stream.git",
- "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66"
+ "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/reactphp\/stream\/zipball\/6fbc9672905c7d5a885f2da2fc696f65840f4a66",
- "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66",
+ "url": "https:\/\/api.github.com\/repos\/reactphp\/stream\/zipball\/1e5b0acb8fe55143b5b426817155190eb6f5b18d",
+ "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d",
"shasum": ""
},
"require": {
@@ -1560,14 +1570,14 @@
},
"require-dev": {
"clue\/stream-filter": "~1.2",
- "phpunit\/phpunit": "^9.5 || ^5.7 || ^4.8.35"
+ "phpunit\/phpunit": "^9.6 || ^5.7 || ^4.8.36"
},
- "time": "2023-06-16T10:52:11+00:00",
+ "time": "2024-06-11T12:45:25+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\React\\Stream\\": "src\/"
+ "RectorPrefix202410\\React\\Stream\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -1609,7 +1619,7 @@
],
"support": {
"issues": "https:\/\/github.com\/reactphp\/stream\/issues",
- "source": "https:\/\/github.com\/reactphp\/stream\/tree\/v1.3.0"
+ "source": "https:\/\/github.com\/reactphp\/stream\/tree\/v1.4.0"
},
"funding": [
{
@@ -1679,37 +1689,37 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-doctrine.git",
- "reference": "364e273976d869506f40126ea6b69330df69a45e"
+ "reference": "e75008c293679e0bb0637bf09cf6dd43ff34526a"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/364e273976d869506f40126ea6b69330df69a45e",
- "reference": "364e273976d869506f40126ea6b69330df69a45e",
+ "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/e75008c293679e0bb0637bf09cf6dd43ff34526a",
+ "reference": "e75008c293679e0bb0637bf09cf6dd43ff34526a",
"shasum": ""
},
"require": {
"php": ">=8.2",
- "symfony\/yaml": "^6.4"
+ "symfony\/yaml": "^7.1"
},
"require-dev": {
- "doctrine\/doctrine-bundle": "^2.11",
- "doctrine\/orm": "^2.18",
- "phpstan\/extension-installer": "^1.3",
- "phpstan\/phpstan": "^1.10.57",
+ "doctrine\/doctrine-bundle": "^2.12",
+ "doctrine\/orm": "^2.19",
+ "phpstan\/extension-installer": "^1.4",
+ "phpstan\/phpstan": "^1.11",
+ "phpstan\/phpstan-deprecation-rules": "^1.2",
"phpstan\/phpstan-webmozart-assert": "^1.2",
"phpunit\/phpunit": "^10.5",
- "rector\/rector-generator": "^0.7.10",
"rector\/rector-src": "dev-main",
- "symplify\/easy-coding-standard": "^12.1",
+ "rector\/type-perfect": "^0.2",
+ "symplify\/easy-coding-standard": "^12.3",
"symplify\/phpstan-extensions": "^11.4",
- "symplify\/phpstan-rules": "^11.4",
- "symplify\/rule-doc-generator": "^12.1",
+ "symplify\/phpstan-rules": "^13.0",
"symplify\/vendor-patches": "^11.3",
- "tomasvotruba\/class-leak": "^0.2.13",
- "tomasvotruba\/unused-public": "^0.3",
+ "tomasvotruba\/class-leak": "^0.2.15",
+ "tomasvotruba\/unused-public": "^0.4",
"tracy\/tracy": "^2.10"
},
- "time": "2024-04-29T12:43:39+00:00",
+ "time": "2024-09-18T08:20:56+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {
@@ -1742,12 +1752,12 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-downgrade-php.git",
- "reference": "4228a7305efbd92687cf7f6cbf7b683a28412eb1"
+ "reference": "d9cef571617b93e642b3ac45981b7092e1a2e89a"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/4228a7305efbd92687cf7f6cbf7b683a28412eb1",
- "reference": "4228a7305efbd92687cf7f6cbf7b683a28412eb1",
+ "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/d9cef571617b93e642b3ac45981b7092e1a2e89a",
+ "reference": "d9cef571617b93e642b3ac45981b7092e1a2e89a",
"shasum": ""
},
"require": {
@@ -1757,19 +1767,18 @@
"phpstan\/extension-installer": "^1.3",
"phpstan\/phpstan": "^1.10",
"phpstan\/phpstan-webmozart-assert": "^1.2",
- "phpunit\/phpunit": "^10.3",
- "rector\/phpstan-rules": "^0.7.4",
- "rector\/rector-generator": "^0.7.3",
+ "phpunit\/phpunit": "^10.5",
"rector\/rector-src": "dev-main",
- "symplify\/easy-coding-standard": "^12.0",
- "symplify\/phpstan-extensions": "^11.3",
- "symplify\/phpstan-rules": "^12.4",
- "symplify\/rule-doc-generator": "^12.0",
- "symplify\/vendor-patches": "^11.2",
+ "rector\/type-perfect": "^0.1.8",
+ "symplify\/easy-coding-standard": "^12.3",
+ "symplify\/phpstan-extensions": "^11.4",
+ "symplify\/phpstan-rules": "^13.0",
+ "symplify\/rule-doc-generator": "^12.2",
+ "symplify\/vendor-patches": "^11.3",
"tomasvotruba\/class-leak": "^0.2.13",
"tracy\/tracy": "^2.10"
},
- "time": "2024-04-29T12:46:18+00:00",
+ "time": "2024-09-26T16:45:00+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {
@@ -1802,12 +1811,12 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-phpunit.git",
- "reference": "d075c4f212255cbdeeb8ff837dd41762fbfce931"
+ "reference": "3e592ec6ce25d67c26faf78c91a8ac11fb310d25"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-phpunit\/zipball\/d075c4f212255cbdeeb8ff837dd41762fbfce931",
- "reference": "d075c4f212255cbdeeb8ff837dd41762fbfce931",
+ "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-phpunit\/zipball\/3e592ec6ce25d67c26faf78c91a8ac11fb310d25",
+ "reference": "3e592ec6ce25d67c26faf78c91a8ac11fb310d25",
"shasum": ""
},
"require": {
@@ -1817,20 +1826,21 @@
"rector\/rector": "<0.11"
},
"require-dev": {
- "phpstan\/extension-installer": "^1.3",
- "phpstan\/phpstan": "^1.10.56",
+ "phpstan\/extension-installer": "^1.4",
+ "phpstan\/phpstan": "^1.11",
"phpstan\/phpstan-webmozart-assert": "^1.2",
"phpunit\/phpunit": "^10.5",
"rector\/rector-src": "dev-main",
- "symplify\/easy-coding-standard": "^12.1",
+ "rector\/swiss-knife": "^0.2.35",
+ "rector\/type-perfect": "^0.2",
+ "symplify\/easy-coding-standard": "^12.3",
"symplify\/phpstan-extensions": "^11.2",
- "symplify\/phpstan-rules": "^12.0",
- "symplify\/rule-doc-generator": "^12.0",
+ "symplify\/phpstan-rules": "^13.0",
"symplify\/vendor-patches": "^11.2",
- "tomasvotruba\/class-leak": "^0.2.13",
+ "tomasvotruba\/class-leak": "^0.2",
"tracy\/tracy": "^2.10"
},
- "time": "2024-05-02T19:17:47+00:00",
+ "time": "2024-09-30T08:22:49+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {
@@ -1866,12 +1876,12 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-symfony.git",
- "reference": "040014c3af8a300dadfc1d9a0f09043572dfd79b"
+ "reference": "14fcc873fdd271467bc7d9d9aec4d0cd4359d360"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/040014c3af8a300dadfc1d9a0f09043572dfd79b",
- "reference": "040014c3af8a300dadfc1d9a0f09043572dfd79b",
+ "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/14fcc873fdd271467bc7d9d9aec4d0cd4359d360",
+ "reference": "14fcc873fdd271467bc7d9d9aec4d0cd4359d360",
"shasum": ""
},
"require": {
@@ -1879,28 +1889,28 @@
"php": ">=8.2"
},
"require-dev": {
- "phpstan\/extension-installer": "^1.3",
- "phpstan\/phpstan": "^1.10.57",
+ "phpstan\/extension-installer": "^1.4",
+ "phpstan\/phpstan": "^1.11",
"phpstan\/phpstan-webmozart-assert": "^1.2",
"phpunit\/phpunit": "^10.5",
- "rector\/rector-generator": "^0.7",
"rector\/rector-src": "dev-main",
- "symfony\/config": "^6.3",
- "symfony\/dependency-injection": "^6.3",
- "symfony\/http-kernel": "~6.2.0",
- "symfony\/routing": "^6.2",
- "symfony\/security-core": "^6.2",
- "symfony\/security-http": "^6.1",
- "symfony\/validator": "^6.2",
- "symplify\/easy-coding-standard": "^12.1",
- "symplify\/phpstan-extensions": "^11.1",
- "symplify\/phpstan-rules": "^12.0",
- "symplify\/rule-doc-generator": "^12.0",
- "symplify\/vendor-patches": "^11.2",
- "tomasvotruba\/class-leak": "^0.2.13",
+ "rector\/type-perfect": "^0.1.8",
+ "symfony\/config": "^6.4",
+ "symfony\/dependency-injection": "^6.4",
+ "symfony\/http-kernel": "~6.3",
+ "symfony\/routing": "^6.4",
+ "symfony\/security-core": "^6.4",
+ "symfony\/security-http": "^6.4",
+ "symfony\/validator": "^6.4",
+ "symplify\/easy-coding-standard": "^12.3",
+ "symplify\/phpstan-extensions": "^11.4",
+ "symplify\/phpstan-rules": "^13.0",
+ "symplify\/vendor-patches": "^11.3",
+ "tomasvotruba\/class-leak": "^0.2",
+ "tomasvotruba\/unused-public": "^0.4",
"tracy\/tracy": "^2.10"
},
- "time": "2024-04-29T12:43:48+00:00",
+ "time": "2024-09-27T14:39:18+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {
@@ -1998,17 +2008,17 @@
},
{
"name": "symfony\/console",
- "version": "v6.4.7",
- "version_normalized": "6.4.7.0",
+ "version": "v6.4.12",
+ "version_normalized": "6.4.12.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symfony\/console.git",
- "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f"
+ "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/symfony\/console\/zipball\/a170e64ae10d00ba89e2acbb590dc2e54da8ad8f",
- "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f",
+ "url": "https:\/\/api.github.com\/repos\/symfony\/console\/zipball\/72d080eb9edf80e36c19be61f72c98ed8273b765",
+ "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765",
"shasum": ""
},
"require": {
@@ -2041,7 +2051,7 @@
"symfony\/stopwatch": "^5.4|^6.0|^7.0",
"symfony\/var-dumper": "^5.4|^6.0|^7.0"
},
- "time": "2024-04-18T09:22:46+00:00",
+ "time": "2024-09-20T08:15:52+00:00",
"type": "library",
"extra": {
"patches_applied": [
@@ -2051,7 +2061,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Symfony\\Component\\Console\\": ""
+ "RectorPrefix202410\\Symfony\\Component\\Console\\": ""
},
"exclude-from-classmap": [
"\/Tests\/"
@@ -2080,7 +2090,7 @@
"terminal"
],
"support": {
- "source": "https:\/\/github.com\/symfony\/console\/tree\/v6.4.7"
+ "source": "https:\/\/github.com\/symfony\/console\/tree\/v6.4.12"
},
"funding": [
{
@@ -2170,31 +2180,33 @@
},
{
"name": "symfony\/filesystem",
- "version": "v6.4.7",
- "version_normalized": "6.4.7.0",
+ "version": "v6.4.12",
+ "version_normalized": "6.4.12.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symfony\/filesystem.git",
- "reference": "78dde75f8f6dbbca4ec436a4b0087f7af02076d4"
+ "reference": "f810e3cbdf7fdc35983968523d09f349fa9ada12"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/symfony\/filesystem\/zipball\/78dde75f8f6dbbca4ec436a4b0087f7af02076d4",
- "reference": "78dde75f8f6dbbca4ec436a4b0087f7af02076d4",
+ "url": "https:\/\/api.github.com\/repos\/symfony\/filesystem\/zipball\/f810e3cbdf7fdc35983968523d09f349fa9ada12",
+ "reference": "f810e3cbdf7fdc35983968523d09f349fa9ada12",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony\/polyfill-ctype": "~1.8",
- "symfony\/polyfill-mbstring": "~1.8",
- "symfony\/process": "^5.4|^6.4"
+ "symfony\/polyfill-mbstring": "~1.8"
+ },
+ "require-dev": {
+ "symfony\/process": "^5.4|^6.4|^7.0"
},
- "time": "2024-04-18T09:22:46+00:00",
+ "time": "2024-09-16T16:01:33+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Symfony\\Component\\Filesystem\\": ""
+ "RectorPrefix202410\\Symfony\\Component\\Filesystem\\": ""
},
"exclude-from-classmap": [
"\/Tests\/"
@@ -2217,7 +2229,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https:\/\/symfony.com",
"support": {
- "source": "https:\/\/github.com\/symfony\/filesystem\/tree\/v6.4.7"
+ "source": "https:\/\/github.com\/symfony\/filesystem\/tree\/v6.4.12"
},
"funding": [
{
@@ -2237,17 +2249,17 @@
},
{
"name": "symfony\/finder",
- "version": "v6.4.7",
- "version_normalized": "6.4.7.0",
+ "version": "v6.4.11",
+ "version_normalized": "6.4.11.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symfony\/finder.git",
- "reference": "511c48990be17358c23bf45c5d71ab85d40fb764"
+ "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/symfony\/finder\/zipball\/511c48990be17358c23bf45c5d71ab85d40fb764",
- "reference": "511c48990be17358c23bf45c5d71ab85d40fb764",
+ "url": "https:\/\/api.github.com\/repos\/symfony\/finder\/zipball\/d7eb6daf8cd7e9ac4976e9576b32042ef7253453",
+ "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453",
"shasum": ""
},
"require": {
@@ -2256,12 +2268,12 @@
"require-dev": {
"symfony\/filesystem": "^6.0|^7.0"
},
- "time": "2024-04-23T10:36:43+00:00",
+ "time": "2024-08-13T14:27:37+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Symfony\\Component\\Finder\\": ""
+ "RectorPrefix202410\\Symfony\\Component\\Finder\\": ""
},
"exclude-from-classmap": [
"\/Tests\/"
@@ -2284,7 +2296,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https:\/\/symfony.com",
"support": {
- "source": "https:\/\/github.com\/symfony\/finder\/tree\/v6.4.7"
+ "source": "https:\/\/github.com\/symfony\/finder\/tree\/v6.4.11"
},
"funding": [
{
@@ -2304,21 +2316,21 @@
},
{
"name": "symfony\/polyfill-mbstring",
- "version": "v1.29.0",
- "version_normalized": "1.29.0.0",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symfony\/polyfill-mbstring.git",
- "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/symfony\/polyfill-mbstring\/zipball\/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
- "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "url": "https:\/\/api.github.com\/repos\/symfony\/polyfill-mbstring\/zipball\/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
@@ -2326,7 +2338,7 @@
"suggest": {
"ext-mbstring": "For best performance"
},
- "time": "2024-01-29T20:11:03+00:00",
+ "time": "2024-09-09T11:45:10+00:00",
"type": "library",
"extra": {
"thanks": {
@@ -2367,7 +2379,7 @@
"shim"
],
"support": {
- "source": "https:\/\/github.com\/symfony\/polyfill-mbstring\/tree\/v1.29.0"
+ "source": "https:\/\/github.com\/symfony\/polyfill-mbstring\/tree\/v1.31.0"
},
"funding": [
{
@@ -2387,28 +2399,28 @@
},
{
"name": "symfony\/process",
- "version": "v6.4.7",
- "version_normalized": "6.4.7.0",
+ "version": "v6.4.12",
+ "version_normalized": "6.4.12.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symfony\/process.git",
- "reference": "cdb1c81c145fd5aa9b0038bab694035020943381"
+ "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/symfony\/process\/zipball\/cdb1c81c145fd5aa9b0038bab694035020943381",
- "reference": "cdb1c81c145fd5aa9b0038bab694035020943381",
+ "url": "https:\/\/api.github.com\/repos\/symfony\/process\/zipball\/3f94e5f13ff58df371a7ead461b6e8068900fbb3",
+ "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
- "time": "2024-04-18T09:22:46+00:00",
+ "time": "2024-09-17T12:47:12+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Symfony\\Component\\Process\\": ""
+ "RectorPrefix202410\\Symfony\\Component\\Process\\": ""
},
"exclude-from-classmap": [
"\/Tests\/"
@@ -2431,7 +2443,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https:\/\/symfony.com",
"support": {
- "source": "https:\/\/github.com\/symfony\/process\/tree\/v6.4.7"
+ "source": "https:\/\/github.com\/symfony\/process\/tree\/v6.4.12"
},
"funding": [
{
@@ -2486,7 +2498,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Symfony\\Contracts\\Service\\": ""
+ "RectorPrefix202410\\Symfony\\Contracts\\Service\\": ""
},
"exclude-from-classmap": [
"\/Test\/"
@@ -2537,31 +2549,30 @@
},
{
"name": "symfony\/yaml",
- "version": "v6.4.7",
- "version_normalized": "6.4.7.0",
+ "version": "v7.1.5",
+ "version_normalized": "7.1.5.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symfony\/yaml.git",
- "reference": "53e8b1ef30a65f78eac60fddc5ee7ebbbdb1dee0"
+ "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4"
},
"dist": {
"type": "zip",
- "url": "https:\/\/api.github.com\/repos\/symfony\/yaml\/zipball\/53e8b1ef30a65f78eac60fddc5ee7ebbbdb1dee0",
- "reference": "53e8b1ef30a65f78eac60fddc5ee7ebbbdb1dee0",
+ "url": "https:\/\/api.github.com\/repos\/symfony\/yaml\/zipball\/4e561c316e135e053bd758bf3b3eb291d9919de4",
+ "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony\/deprecation-contracts": "^2.5|^3",
+ "php": ">=8.2",
"symfony\/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony\/console": "<5.4"
+ "symfony\/console": "<6.4"
},
"require-dev": {
- "symfony\/console": "^5.4|^6.0|^7.0"
+ "symfony\/console": "^6.4|^7.0"
},
- "time": "2024-04-28T10:28:08+00:00",
+ "time": "2024-09-17T12:49:58+00:00",
"bin": [
"Resources\/bin\/yaml-lint"
],
@@ -2569,7 +2580,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Symfony\\Component\\Yaml\\": ""
+ "RectorPrefix202410\\Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"\/Tests\/"
@@ -2592,7 +2603,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https:\/\/symfony.com",
"support": {
- "source": "https:\/\/github.com\/symfony\/yaml\/tree\/v6.4.7"
+ "source": "https:\/\/github.com\/symfony\/yaml\/tree\/v7.1.5"
},
"funding": [
{
@@ -2646,7 +2657,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Symplify\\EasyParallel\\": "src"
+ "RectorPrefix202410\\Symplify\\EasyParallel\\": "src"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
@@ -2768,7 +2779,7 @@
"installation-source": "dist",
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Webmozart\\Assert\\": "src\/"
+ "RectorPrefix202410\\Webmozart\\Assert\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
diff --git a/vendor/rector/rector/vendor/composer/installed.php b/vendor/rector/rector/vendor/composer/installed.php
index 6e1a45a09..a6c872d92 100644
--- a/vendor/rector/rector/vendor/composer/installed.php
+++ b/vendor/rector/rector/vendor/composer/installed.php
@@ -1,5 +1,5 @@
array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.1.3', 'version' => '3.1.3.0', 'reference' => '5b16e25a5355f1f3afdfc2f954a0a80aec4826a8', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.0', 'version' => '3.4.0.0', 'reference' => '35e8d0af4486141bc745f23a29cc2091eb624a32', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.0.10', 'version' => '2.0.10.0', 'reference' => '5817d0659c5b50c9b950feb9af7b9668e2c436bc', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.1.0', 'version' => '1.1.0.0', 'reference' => 'f92996c4d5c1a696a6a970e20f7c4216200fcc42', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v10.48.10', 'version' => '10.48.10.0', 'reference' => 'ddc26273085fad3c471b2602ad820e0097ff7939', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v10.48.10', 'version' => '10.48.10.0', 'reference' => '8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.0.4', 'version' => '4.0.4.0', 'reference' => 'd3ad0aa3b9f934602cb3e3902ebccf10be34d218', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v4.19.1', 'version' => '4.19.1.0', 'reference' => '4e1b88d21c69391150ace211e9eaf05810858d0b', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '1.29.0', 'version' => '1.29.0.0', 'reference' => '536889f2b340489d328f5ffb7b02bb6b183ddedc', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '^1.10.57')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.5', 'version' => '0.6.5.0', 'reference' => 'e71eb1aa55f057c7a4a0d08d06b0b0a484bead43', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.12.0', 'version' => '1.12.0.0', 'reference' => 'c134600642fa615b46b41237ef243daa65bb64ec', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.5.0', 'version' => '1.5.0.0', 'reference' => 'bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v2.11.0', 'version' => '2.11.0.0', 'reference' => '1a8460931ea36dc5c76838fec5734d55c88c6831', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.15.0', 'version' => '1.15.0.0', 'reference' => '216d3aec0b87f04a40ca04f481e6af01bdd1d038', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '6fbc9672905c7d5a885f2da2fc696f65840f4a66', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '364e273976d869506f40126ea6b69330df69a45e', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '4228a7305efbd92687cf7f6cbf7b683a28412eb1', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd075c4f212255cbdeeb8ff837dd41762fbfce931', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '0.11.x-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '040014c3af8a300dadfc1d9a0f09043572dfd79b', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '5.1.1', 'version' => '5.1.1.0', 'reference' => 'c41e007b4b62af48218231d6c2275e4c9b975b2e', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.7', 'version' => '6.4.7.0', 'reference' => 'a170e64ae10d00ba89e2acbb590dc2e54da8ad8f', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.5.0', 'version' => '3.5.0.0', 'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v6.4.7', 'version' => '6.4.7.0', 'reference' => '78dde75f8f6dbbca4ec436a4b0087f7af02076d4', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.7', 'version' => '6.4.7.0', 'reference' => '511c48990be17358c23bf45c5d71ab85d40fb764', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/polyfill-intl-grapheme' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.29.0', 'version' => '1.29.0.0', 'reference' => '9773676c8a1bb1f8d4340a62efe641cf76eda7ec', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v6.4.7', 'version' => '6.4.7.0', 'reference' => 'cdb1c81c145fd5aa9b0038bab694035020943381', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.5.0', 'version' => '3.5.0.0', 'reference' => 'bd1d9e59a81d8fa4acdcea3f617c581f7475a80f', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/yaml' => array('pretty_version' => 'v6.4.7', 'version' => '6.4.7.0', 'reference' => '53e8b1ef30a65f78eac60fddc5ee7ebbbdb1dee0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false)));
+return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.3.1', 'version' => '3.3.1.0', 'reference' => '63aaeac21d7e775ff9bc9d45021e1745c97521c4', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.3', 'version' => '3.4.3.0', 'reference' => '4313d26ada5e0c4edfbd1dc481a92ff7bff91f12', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.0.10', 'version' => '2.0.10.0', 'reference' => '5817d0659c5b50c9b950feb9af7b9668e2c436bc', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.2.0', 'version' => '1.2.0.0', 'reference' => '8520451a140d3f46ac33042715115e290cf5785f', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v11.26.0', 'version' => '11.26.0.0', 'reference' => 'd6aca7c315d68cb6807c139facd7ea134b4f5104', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v11.26.0', 'version' => '11.26.0.0', 'reference' => '56312862af937bd6da8e6dc8bbd88188dfb478f8', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.0.5', 'version' => '4.0.5.0', 'reference' => '736c567e257dbe0fcf6ce81b4d6dbe05c6899f96', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v4.19.4', 'version' => '4.19.4.0', 'reference' => '715f4d25e225bc47b293a8b997fe6ce99bf987d2', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '1.32.0', 'version' => '1.32.0.0', 'reference' => '6ca22b154efdd9e3c68c56f5d94670920a1c19a4', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '1.12.5')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.5', 'version' => '0.6.5.0', 'reference' => 'e71eb1aa55f057c7a4a0d08d06b0b0a484bead43', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.13.0', 'version' => '1.13.0.0', 'reference' => 'eb8ae001b5a455665c89c1df97f6fb682f8fb0f5', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.5.0', 'version' => '1.5.0.0', 'reference' => 'bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v3.2.0', 'version' => '3.2.0.0', 'reference' => '8a164643313c71354582dc850b42b33fa12a4b63', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.16.0', 'version' => '1.16.0.0', 'reference' => '23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'e75008c293679e0bb0637bf09cf6dd43ff34526a', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd9cef571617b93e642b3ac45981b7092e1a2e89a', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '3e592ec6ce25d67c26faf78c91a8ac11fb310d25', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '0.11.x-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '14fcc873fdd271467bc7d9d9aec4d0cd4359d360', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '5.1.1', 'version' => '5.1.1.0', 'reference' => 'c41e007b4b62af48218231d6c2275e4c9b975b2e', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.12', 'version' => '6.4.12.0', 'reference' => '72d080eb9edf80e36c19be61f72c98ed8273b765', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.5.0', 'version' => '3.5.0.0', 'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v6.4.12', 'version' => '6.4.12.0', 'reference' => 'f810e3cbdf7fdc35983968523d09f349fa9ada12', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.11', 'version' => '6.4.11.0', 'reference' => 'd7eb6daf8cd7e9ac4976e9576b32042ef7253453', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/polyfill-intl-grapheme' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', 'reference' => '85181ba99b2345b0ef10ce42ecac37612d9fd341', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v6.4.12', 'version' => '6.4.12.0', 'reference' => '3f94e5f13ff58df371a7ead461b6e8068900fbb3', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.5.0', 'version' => '3.5.0.0', 'reference' => 'bd1d9e59a81d8fa4acdcea3f617c581f7475a80f', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/yaml' => array('pretty_version' => 'v7.1.5', 'version' => '7.1.5.0', 'reference' => '4e561c316e135e053bd758bf3b3eb291d9919de4', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false)));
diff --git a/vendor/rector/rector/vendor/composer/pcre/README.md b/vendor/rector/rector/vendor/composer/pcre/README.md
index 973b17d8d..490651499 100644
--- a/vendor/rector/rector/vendor/composer/pcre/README.md
+++ b/vendor/rector/rector/vendor/composer/pcre/README.md
@@ -12,7 +12,8 @@ to understand the implications.
It thus makes it easier to work with static analysis tools like PHPStan or Psalm as it
simplifies and reduces the possible return values from all the `preg_*` functions which
-are quite packed with edge cases.
+are quite packed with edge cases. As of v2.2.0 / v3.2.0 the library also comes with a
+[PHPStan extension](#phpstan-extension) for parsing regular expressions and giving you even better output types.
This library is a thin wrapper around `preg_*` functions with [some limitations](#restrictions--limitations).
If you are looking for a richer API to handle regular expressions have a look at
@@ -175,6 +176,13 @@ preg_match('/(a)(b)*(c)(d)*/', 'ac', $matches, $flags);
| group 2 (any unmatched group preceding one that matched) is set to `''`. You cannot tell if it matched an empty string or did not match at all | group 2 is `null` when unmatched and a string if it matched, easy to check for |
| group 4 (any optional group without a matching one following) is missing altogether. So you have to check with `isset()`, but really you want `isset($m[4]) && $m[4] !== ''` for safety unless you are very careful to check that a non-optional group follows it | group 4 is always set, and null in this case as there was no match, easy to check for with `$m[4] !== null` |
+PHPStan Extension
+-----------------
+
+To use the PHPStan extension if you do not use `phpstan/extension-installer` you can include `vendor/composer/pcre/extension.neon` in your PHPStan config.
+
+The extension provides much better type information for $matches as well as regex validation where possible.
+
License
-------
diff --git a/vendor/rector/rector/vendor/composer/pcre/composer.json b/vendor/rector/rector/vendor/composer/pcre/composer.json
index ddda47e0e..ebe3fe8d2 100644
--- a/vendor/rector/rector/vendor/composer/pcre/composer.json
+++ b/vendor/rector/rector/vendor/composer/pcre/composer.json
@@ -20,27 +20,35 @@
"php": "^7.4 || ^8.0"
},
"require-dev": {
- "symfony\/phpunit-bridge": "^5",
- "phpstan\/phpstan": "^1.3",
+ "phpunit\/phpunit": "^8 || ^9",
+ "phpstan\/phpstan": "^1.11.10",
"phpstan\/phpstan-strict-rules": "^1.1"
},
+ "conflict": {
+ "phpstan\/phpstan": "<1.11.10"
+ },
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Composer\\Pcre\\": "src"
+ "RectorPrefix202410\\Composer\\Pcre\\": "src"
}
},
"autoload-dev": {
"psr-4": {
- "RectorPrefix202405\\Composer\\Pcre\\": "tests"
+ "RectorPrefix202410\\Composer\\Pcre\\": "tests"
}
},
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
}
},
"scripts": {
- "test": "vendor\/bin\/simple-phpunit",
- "phpstan": "phpstan analyse"
+ "test": "@php vendor\/bin\/phpunit",
+ "phpstan": "@php phpstan analyse"
}
}
\ No newline at end of file
diff --git a/vendor/rector/rector/vendor/composer/pcre/extension.neon b/vendor/rector/rector/vendor/composer/pcre/extension.neon
new file mode 100644
index 000000000..b9cea113f
--- /dev/null
+++ b/vendor/rector/rector/vendor/composer/pcre/extension.neon
@@ -0,0 +1,22 @@
+# composer/pcre PHPStan extensions
+#
+# These can be reused by third party packages by including 'vendor/composer/pcre/extension.neon'
+# in your phpstan config
+
+services:
+ -
+ class: Composer\Pcre\PHPStan\PregMatchParameterOutTypeExtension
+ tags:
+ - phpstan.staticMethodParameterOutTypeExtension
+ -
+ class: Composer\Pcre\PHPStan\PregMatchTypeSpecifyingExtension
+ tags:
+ - phpstan.typeSpecifier.staticMethodTypeSpecifyingExtension
+ -
+ class: Composer\Pcre\PHPStan\PregReplaceCallbackClosureTypeExtension
+ tags:
+ - phpstan.staticMethodParameterClosureTypeExtension
+
+rules:
+ - Composer\Pcre\PHPStan\UnsafeStrictGroupsCallRule
+ - Composer\Pcre\PHPStan\InvalidRegexPatternRule
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/MatchAllResult.php b/vendor/rector/rector/vendor/composer/pcre/src/MatchAllResult.php
index 998c9339f..511d96e16 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/MatchAllResult.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/MatchAllResult.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
final class MatchAllResult
{
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php b/vendor/rector/rector/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php
index ba10da5b4..4658c18f1 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
final class MatchAllStrictGroupsResult
{
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php b/vendor/rector/rector/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php
index 6b57bb51e..eacd1090c 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
final class MatchAllWithOffsetsResult
{
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/MatchResult.php b/vendor/rector/rector/vendor/composer/pcre/src/MatchResult.php
index 2b5bef515..d5af0fd93 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/MatchResult.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/MatchResult.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
final class MatchResult
{
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/MatchStrictGroupsResult.php b/vendor/rector/rector/vendor/composer/pcre/src/MatchStrictGroupsResult.php
index adacd26c9..315309ba7 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/MatchStrictGroupsResult.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/MatchStrictGroupsResult.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
final class MatchStrictGroupsResult
{
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/MatchWithOffsetsResult.php b/vendor/rector/rector/vendor/composer/pcre/src/MatchWithOffsetsResult.php
index be73e44dc..4260bfc8c 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/MatchWithOffsetsResult.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/MatchWithOffsetsResult.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
final class MatchWithOffsetsResult
{
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php
new file mode 100644
index 000000000..e5fa71c72
--- /dev/null
+++ b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php
@@ -0,0 +1,116 @@
+
+ */
+class InvalidRegexPatternRule implements Rule
+{
+ public function getNodeType() : string
+ {
+ return StaticCall::class;
+ }
+ public function processNode(Node $node, Scope $scope) : array
+ {
+ $patterns = $this->extractPatterns($node, $scope);
+ $errors = [];
+ foreach ($patterns as $pattern) {
+ $errorMessage = $this->validatePattern($pattern);
+ if ($errorMessage === null) {
+ continue;
+ }
+ $errors[] = RuleErrorBuilder::message(sprintf('Regex pattern is invalid: %s', $errorMessage))->identifier('regexp.pattern')->build();
+ }
+ return $errors;
+ }
+ /**
+ * @return string[]
+ */
+ private function extractPatterns(StaticCall $node, Scope $scope) : array
+ {
+ if (!$node->class instanceof FullyQualified) {
+ return [];
+ }
+ $isRegex = $node->class->toString() === Regex::class;
+ $isPreg = $node->class->toString() === Preg::class;
+ if (!$isRegex && !$isPreg) {
+ return [];
+ }
+ if (!$node->name instanceof Node\Identifier || !Preg::isMatch('{^(match|isMatch|grep|replace|split)}', $node->name->name)) {
+ return [];
+ }
+ $functionName = $node->name->name;
+ if (!isset($node->getArgs()[0])) {
+ return [];
+ }
+ $patternNode = $node->getArgs()[0]->value;
+ $patternType = $scope->getType($patternNode);
+ $patternStrings = [];
+ foreach ($patternType->getConstantStrings() as $constantStringType) {
+ if ($functionName === 'replaceCallbackArray') {
+ continue;
+ }
+ $patternStrings[] = $constantStringType->getValue();
+ }
+ foreach ($patternType->getConstantArrays() as $constantArrayType) {
+ if (in_array($functionName, ['replace', 'replaceCallback'], \true)) {
+ foreach ($constantArrayType->getValueTypes() as $arrayKeyType) {
+ foreach ($arrayKeyType->getConstantStrings() as $constantString) {
+ $patternStrings[] = $constantString->getValue();
+ }
+ }
+ }
+ if ($functionName !== 'replaceCallbackArray') {
+ continue;
+ }
+ foreach ($constantArrayType->getKeyTypes() as $arrayKeyType) {
+ foreach ($arrayKeyType->getConstantStrings() as $constantString) {
+ $patternStrings[] = $constantString->getValue();
+ }
+ }
+ }
+ return $patternStrings;
+ }
+ private function validatePattern(string $pattern) : ?string
+ {
+ try {
+ $msg = null;
+ $prev = \set_error_handler(function (int $severity, string $message, string $file) use(&$msg) : bool {
+ $msg = \preg_replace("#^preg_match(_all)?\\(.*?\\): #", '', $message);
+ return \true;
+ });
+ if ($pattern === '') {
+ return 'Empty string is not a valid regular expression';
+ }
+ Preg::match($pattern, '');
+ if ($msg !== null) {
+ return $msg;
+ }
+ } catch (PcreException $e) {
+ if ($e->getCode() === \PREG_INTERNAL_ERROR && $msg !== null) {
+ return $msg;
+ }
+ return \preg_replace('{.*? failed executing ".*": }', '', $e->getMessage());
+ } finally {
+ \restore_error_handler();
+ }
+ return null;
+ }
+}
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregMatchFlags.php b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregMatchFlags.php
new file mode 100644
index 000000000..77e3f8235
--- /dev/null
+++ b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregMatchFlags.php
@@ -0,0 +1,55 @@
+getType($flagsArg->value);
+ $constantScalars = $flagsType->getConstantScalarValues();
+ if ($constantScalars === []) {
+ return null;
+ }
+ $internalFlagsTypes = [];
+ foreach ($flagsType->getConstantScalarValues() as $constantScalarValue) {
+ if (!\is_int($constantScalarValue)) {
+ return null;
+ }
+ $internalFlagsTypes[] = new ConstantIntegerType($constantScalarValue | \PREG_UNMATCHED_AS_NULL);
+ }
+ return TypeCombinator::union(...$internalFlagsTypes);
+ }
+ public static function removeNullFromMatches(Type $matchesType) : Type
+ {
+ return TypeTraverser::map($matchesType, static function (Type $type, callable $traverse) : Type {
+ if ($type instanceof UnionType || $type instanceof IntersectionType) {
+ return $traverse($type);
+ }
+ if ($type instanceof ConstantArrayType) {
+ return new ConstantArrayType($type->getKeyTypes(), \array_map(static function (Type $valueType) use($traverse) : Type {
+ return $traverse($valueType);
+ }, $type->getValueTypes()), $type->getNextAutoIndexes(), [], $type->isList());
+ }
+ if ($type instanceof ArrayType) {
+ return new ArrayType($type->getKeyType(), $traverse($type->getItemType()));
+ }
+ return TypeCombinator::removeNull($type);
+ });
+ }
+}
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php
new file mode 100644
index 000000000..9665cfaf1
--- /dev/null
+++ b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php
@@ -0,0 +1,47 @@
+regexShapeMatcher = $regexShapeMatcher;
+ }
+ public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter) : bool
+ {
+ return $methodReflection->getDeclaringClass()->getName() === Preg::class && \in_array($methodReflection->getName(), ['match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups', 'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], \true) && $parameter->getName() === 'matches';
+ }
+ public function getParameterOutTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope) : ?Type
+ {
+ $args = $methodCall->getArgs();
+ $patternArg = $args[0] ?? null;
+ $matchesArg = $args[2] ?? null;
+ $flagsArg = $args[3] ?? null;
+ if ($patternArg === null || $matchesArg === null) {
+ return null;
+ }
+ $flagsType = PregMatchFlags::getType($flagsArg, $scope);
+ if ($flagsType === null) {
+ return null;
+ }
+ if (\stripos($methodReflection->getName(), 'matchAll') !== \false) {
+ return $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope);
+ }
+ return $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope);
+ }
+}
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php
new file mode 100644
index 000000000..d56627952
--- /dev/null
+++ b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php
@@ -0,0 +1,77 @@
+regexShapeMatcher = $regexShapeMatcher;
+ }
+ public function setTypeSpecifier(TypeSpecifier $typeSpecifier) : void
+ {
+ $this->typeSpecifier = $typeSpecifier;
+ }
+ public function getClass() : string
+ {
+ return Preg::class;
+ }
+ public function isStaticMethodSupported(MethodReflection $methodReflection, StaticCall $node, TypeSpecifierContext $context) : bool
+ {
+ return \in_array($methodReflection->getName(), ['match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups', 'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], \true) && !$context->null();
+ }
+ public function specifyTypes(MethodReflection $methodReflection, StaticCall $node, Scope $scope, TypeSpecifierContext $context) : SpecifiedTypes
+ {
+ $args = $node->getArgs();
+ $patternArg = $args[0] ?? null;
+ $matchesArg = $args[2] ?? null;
+ $flagsArg = $args[3] ?? null;
+ if ($patternArg === null || $matchesArg === null) {
+ return new SpecifiedTypes();
+ }
+ $flagsType = PregMatchFlags::getType($flagsArg, $scope);
+ if ($flagsType === null) {
+ return new SpecifiedTypes();
+ }
+ if (\stripos($methodReflection->getName(), 'matchAll') !== \false) {
+ $matchedType = $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope);
+ } else {
+ $matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope);
+ }
+ if ($matchedType === null) {
+ return new SpecifiedTypes();
+ }
+ if (\in_array($methodReflection->getName(), ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], \true)) {
+ $matchedType = PregMatchFlags::removeNullFromMatches($matchedType);
+ }
+ $overwrite = \false;
+ if ($context->false()) {
+ $overwrite = \true;
+ $context = $context->negate();
+ }
+ return $this->typeSpecifier->create($matchesArg->value, $matchedType, $context, $overwrite, $scope, $node);
+ }
+}
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php
new file mode 100644
index 000000000..6640ce30a
--- /dev/null
+++ b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php
@@ -0,0 +1,62 @@
+regexShapeMatcher = $regexShapeMatcher;
+ }
+ public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter) : bool
+ {
+ return \in_array($methodReflection->getDeclaringClass()->getName(), [Preg::class, Regex::class], \true) && \in_array($methodReflection->getName(), ['replaceCallback', 'replaceCallbackStrictGroups'], \true) && $parameter->getName() === 'replacement';
+ }
+ public function getTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope) : ?Type
+ {
+ $args = $methodCall->getArgs();
+ $patternArg = $args[0] ?? null;
+ $flagsArg = $args[5] ?? null;
+ if ($patternArg === null) {
+ return null;
+ }
+ $flagsType = PregMatchFlags::getType($flagsArg, $scope);
+ $matchesType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope);
+ if ($matchesType === null) {
+ return null;
+ }
+ if ($methodReflection->getName() === 'replaceCallbackStrictGroups' && \count($matchesType->getConstantArrays()) === 1) {
+ $matchesType = $matchesType->getConstantArrays()[0];
+ $matchesType = new ConstantArrayType($matchesType->getKeyTypes(), \array_map(static function (Type $valueType) : Type {
+ if (\count($valueType->getConstantArrays()) === 1) {
+ $valueTypeArray = $valueType->getConstantArrays()[0];
+ return new ConstantArrayType($valueTypeArray->getKeyTypes(), \array_map(static function (Type $valueType) : Type {
+ return TypeCombinator::removeNull($valueType);
+ }, $valueTypeArray->getValueTypes()), $valueTypeArray->getNextAutoIndexes(), [], $valueTypeArray->isList());
+ }
+ return TypeCombinator::removeNull($valueType);
+ }, $matchesType->getValueTypes()), $matchesType->getNextAutoIndexes(), [], $matchesType->isList());
+ }
+ return new ClosureType([new NativeParameterReflection($parameter->getName(), $parameter->isOptional(), $matchesType, $parameter->passedByReference(), $parameter->isVariadic(), $parameter->getDefaultValue())], new StringType());
+ }
+}
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php
new file mode 100644
index 000000000..6e3d3dfe7
--- /dev/null
+++ b/vendor/rector/rector/vendor/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php
@@ -0,0 +1,90 @@
+
+ */
+final class UnsafeStrictGroupsCallRule implements Rule
+{
+ /**
+ * @var RegexArrayShapeMatcher
+ */
+ private $regexShapeMatcher;
+ public function __construct(RegexArrayShapeMatcher $regexShapeMatcher)
+ {
+ $this->regexShapeMatcher = $regexShapeMatcher;
+ }
+ public function getNodeType() : string
+ {
+ return StaticCall::class;
+ }
+ public function processNode(Node $node, Scope $scope) : array
+ {
+ if (!$node->class instanceof FullyQualified) {
+ return [];
+ }
+ $isRegex = $node->class->toString() === Regex::class;
+ $isPreg = $node->class->toString() === Preg::class;
+ if (!$isRegex && !$isPreg) {
+ return [];
+ }
+ if (!$node->name instanceof Node\Identifier || !\in_array($node->name->name, ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], \true)) {
+ return [];
+ }
+ $args = $node->getArgs();
+ if (!isset($args[0])) {
+ return [];
+ }
+ $patternArg = $args[0] ?? null;
+ if ($isPreg) {
+ if (!isset($args[2])) {
+ // no matches set, skip as the matches won't be used anyway
+ return [];
+ }
+ $flagsArg = $args[3] ?? null;
+ } else {
+ $flagsArg = $args[2] ?? null;
+ }
+ if ($patternArg === null) {
+ return [];
+ }
+ $flagsType = PregMatchFlags::getType($flagsArg, $scope);
+ if ($flagsType === null) {
+ return [];
+ }
+ $matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope);
+ if ($matchedType === null) {
+ return [RuleErrorBuilder::message(sprintf('The %s call is potentially unsafe as $matches\' type could not be inferred.', $node->name->name))->identifier('composerPcre.maybeUnsafeStrictGroups')->build()];
+ }
+ if (\count($matchedType->getConstantArrays()) === 1) {
+ $matchedType = $matchedType->getConstantArrays()[0];
+ $nullableGroups = [];
+ foreach ($matchedType->getValueTypes() as $index => $type) {
+ if (TypeCombinator::containsNull($type)) {
+ $nullableGroups[] = $matchedType->getKeyTypes()[$index]->getValue();
+ }
+ }
+ if (\count($nullableGroups) > 0) {
+ return [RuleErrorBuilder::message(sprintf('The %s call is unsafe as match group%s "%s" %s optional and may be null.', $node->name->name, \count($nullableGroups) > 1 ? 's' : '', \implode('", "', $nullableGroups), \count($nullableGroups) > 1 ? 'are' : 'is'))->identifier('composerPcre.unsafeStrictGroups')->build()];
+ }
+ }
+ return [];
+ }
+}
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/PcreException.php b/vendor/rector/rector/vendor/composer/pcre/src/PcreException.php
index 1e0889945..3ab33f2f8 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/PcreException.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/PcreException.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
class PcreException extends \RuntimeException
{
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/Preg.php b/vendor/rector/rector/vendor/composer/pcre/src/Preg.php
index b5e30cb43..1957ef828 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/Preg.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/Preg.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
class Preg
{
@@ -180,7 +180,7 @@ public static function replaceCallback($pattern, callable $replacement, $subject
*
* @param-out int<0, max> $count
*/
- public static function replaceCallbackStrictGroups(string $pattern, callable $replacement, $subject, int $limit = -1, int &$count = null, int $flags = 0) : string
+ public static function replaceCallbackStrictGroups(string $pattern, callable $replacement, $subject, int $limit = -1, ?int &$count = null, int $flags = 0) : string
{
return self::replaceCallback($pattern, function (array $matches) use($pattern, $replacement) {
return $replacement(self::enforceNonNullMatches($pattern, $matches, 'replaceCallback'));
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/Regex.php b/vendor/rector/rector/vendor/composer/pcre/src/Regex.php
index ce14908e7..cfc9ed21b 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/Regex.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/Regex.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
class Regex
{
@@ -38,6 +38,7 @@ public static function match(string $pattern, string $subject, int $flags = 0, i
*/
public static function matchStrictGroups(string $pattern, string $subject, int $flags = 0, int $offset = 0) : MatchStrictGroupsResult
{
+ // @phpstan-ignore composerPcre.maybeUnsafeStrictGroups
$count = Preg::matchStrictGroups($pattern, $subject, $matches, $flags, $offset);
return new MatchStrictGroupsResult($count, $matches);
}
@@ -74,6 +75,7 @@ public static function matchAllStrictGroups(string $pattern, string $subject, in
{
self::checkOffsetCapture($flags, 'matchAllWithOffsets');
self::checkSetOrder($flags);
+ // @phpstan-ignore composerPcre.maybeUnsafeStrictGroups
$count = Preg::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset);
return new MatchAllStrictGroupsResult($count, $matches);
}
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/ReplaceResult.php b/vendor/rector/rector/vendor/composer/pcre/src/ReplaceResult.php
index ed12f9e2e..2ea35941d 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/ReplaceResult.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/ReplaceResult.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
final class ReplaceResult
{
diff --git a/vendor/rector/rector/vendor/composer/pcre/src/UnexpectedNullMatchException.php b/vendor/rector/rector/vendor/composer/pcre/src/UnexpectedNullMatchException.php
index 00b58a210..4ba65fea1 100644
--- a/vendor/rector/rector/vendor/composer/pcre/src/UnexpectedNullMatchException.php
+++ b/vendor/rector/rector/vendor/composer/pcre/src/UnexpectedNullMatchException.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Pcre;
+namespace RectorPrefix202410\Composer\Pcre;
class UnexpectedNullMatchException extends PcreException
{
diff --git a/vendor/rector/rector/vendor/composer/semver/composer.json b/vendor/rector/rector/vendor/composer/semver/composer.json
index 8adef73de..c44b6f924 100644
--- a/vendor/rector/rector/vendor/composer/semver/composer.json
+++ b/vendor/rector/rector/vendor/composer/semver/composer.json
@@ -34,17 +34,17 @@
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
- "symfony\/phpunit-bridge": "^4.2 || ^5",
- "phpstan\/phpstan": "^1.4"
+ "symfony\/phpunit-bridge": "^3 || ^7",
+ "phpstan\/phpstan": "^1.11"
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Composer\\Semver\\": "src"
+ "RectorPrefix202410\\Composer\\Semver\\": "src"
}
},
"autoload-dev": {
"psr-4": {
- "RectorPrefix202405\\Composer\\Semver\\": "tests"
+ "RectorPrefix202410\\Composer\\Semver\\": "tests"
}
},
"extra": {
diff --git a/vendor/rector/rector/vendor/composer/semver/phpstan-baseline.neon b/vendor/rector/rector/vendor/composer/semver/phpstan-baseline.neon
deleted file mode 100644
index 933cf2031..000000000
--- a/vendor/rector/rector/vendor/composer/semver/phpstan-baseline.neon
+++ /dev/null
@@ -1,11 +0,0 @@
-parameters:
- ignoreErrors:
- -
- message: "#^Parameter \\#1 \\$operator of class Composer\\\\Semver\\\\Constraint\\\\Constraint constructor expects '\\!\\='\\|'\\<'\\|'\\<\\='\\|'\\<\\>'\\|'\\='\\|'\\=\\='\\|'\\>'\\|'\\>\\=', non\\-falsy\\-string given\\.$#"
- count: 1
- path: src/VersionParser.php
-
- -
- message: "#^Strict comparison using \\=\\=\\= between null and non\\-empty\\-string will always evaluate to false\\.$#"
- count: 2
- path: src/VersionParser.php
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Comparator.php b/vendor/rector/rector/vendor/composer/semver/src/Comparator.php
index 275307097..856c0bef9 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Comparator.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Comparator.php
@@ -8,9 +8,9 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver;
+namespace RectorPrefix202410\Composer\Semver;
-use RectorPrefix202405\Composer\Semver\Constraint\Constraint;
+use RectorPrefix202410\Composer\Semver\Constraint\Constraint;
class Comparator
{
/**
diff --git a/vendor/rector/rector/vendor/composer/semver/src/CompilingMatcher.php b/vendor/rector/rector/vendor/composer/semver/src/CompilingMatcher.php
index 799c2c163..92dc4ac99 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/CompilingMatcher.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/CompilingMatcher.php
@@ -8,10 +8,10 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver;
+namespace RectorPrefix202410\Composer\Semver;
-use RectorPrefix202405\Composer\Semver\Constraint\Constraint;
-use RectorPrefix202405\Composer\Semver\Constraint\ConstraintInterface;
+use RectorPrefix202410\Composer\Semver\Constraint\Constraint;
+use RectorPrefix202410\Composer\Semver\Constraint\ConstraintInterface;
/**
* Helper class to evaluate constraint by compiling and reusing the code to evaluate
*/
@@ -51,7 +51,7 @@ public static function clear()
* @phpstan-param Constraint::OP_* $operator
* @param string $version
*
- * @return mixed
+ * @return bool
*/
public static function match(ConstraintInterface $constraint, $operator, $version)
{
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Constraint/Bound.php b/vendor/rector/rector/vendor/composer/semver/src/Constraint/Bound.php
index cd4d0d74b..4a65dae9a 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Constraint/Bound.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Constraint/Bound.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver\Constraint;
+namespace RectorPrefix202410\Composer\Semver\Constraint;
class Bound
{
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Constraint/Constraint.php b/vendor/rector/rector/vendor/composer/semver/src/Constraint/Constraint.php
index 40e35a342..378afd5a9 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Constraint/Constraint.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Constraint/Constraint.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver\Constraint;
+namespace RectorPrefix202410\Composer\Semver\Constraint;
/**
* Defines a constraint.
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/vendor/rector/rector/vendor/composer/semver/src/Constraint/ConstraintInterface.php
index 2fbac32dc..ad561acd2 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Constraint/ConstraintInterface.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Constraint/ConstraintInterface.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver\Constraint;
+namespace RectorPrefix202410\Composer\Semver\Constraint;
/**
* DO NOT IMPLEMENT this interface. It is only meant for usage as a type hint
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Constraint/MatchAllConstraint.php b/vendor/rector/rector/vendor/composer/semver/src/Constraint/MatchAllConstraint.php
index c247829eb..ec569b1a2 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Constraint/MatchAllConstraint.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Constraint/MatchAllConstraint.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver\Constraint;
+namespace RectorPrefix202410\Composer\Semver\Constraint;
/**
* Defines the absence of a constraint.
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php b/vendor/rector/rector/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php
index 819ad64d6..4972e6701 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver\Constraint;
+namespace RectorPrefix202410\Composer\Semver\Constraint;
/**
* Blackhole of constraints, nothing escapes it
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Constraint/MultiConstraint.php b/vendor/rector/rector/vendor/composer/semver/src/Constraint/MultiConstraint.php
index aeb0e8f54..ff371d14a 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Constraint/MultiConstraint.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Constraint/MultiConstraint.php
@@ -8,7 +8,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver\Constraint;
+namespace RectorPrefix202410\Composer\Semver\Constraint;
/**
* Defines a conjunctive or disjunctive set of constraints.
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Interval.php b/vendor/rector/rector/vendor/composer/semver/src/Interval.php
index f67d79424..c44fc2fcf 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Interval.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Interval.php
@@ -8,9 +8,9 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver;
+namespace RectorPrefix202410\Composer\Semver;
-use RectorPrefix202405\Composer\Semver\Constraint\Constraint;
+use RectorPrefix202410\Composer\Semver\Constraint\Constraint;
class Interval
{
/** @var Constraint */
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Intervals.php b/vendor/rector/rector/vendor/composer/semver/src/Intervals.php
index 672bdf0df..b4961d13d 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Intervals.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Intervals.php
@@ -8,13 +8,13 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver;
+namespace RectorPrefix202410\Composer\Semver;
-use RectorPrefix202405\Composer\Semver\Constraint\Constraint;
-use RectorPrefix202405\Composer\Semver\Constraint\ConstraintInterface;
-use RectorPrefix202405\Composer\Semver\Constraint\MatchAllConstraint;
-use RectorPrefix202405\Composer\Semver\Constraint\MatchNoneConstraint;
-use RectorPrefix202405\Composer\Semver\Constraint\MultiConstraint;
+use RectorPrefix202410\Composer\Semver\Constraint\Constraint;
+use RectorPrefix202410\Composer\Semver\Constraint\ConstraintInterface;
+use RectorPrefix202410\Composer\Semver\Constraint\MatchAllConstraint;
+use RectorPrefix202410\Composer\Semver\Constraint\MatchNoneConstraint;
+use RectorPrefix202410\Composer\Semver\Constraint\MultiConstraint;
/**
* Helper class generating intervals from constraints
*
diff --git a/vendor/rector/rector/vendor/composer/semver/src/Semver.php b/vendor/rector/rector/vendor/composer/semver/src/Semver.php
index cdbdcfddd..efe51fc1d 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/Semver.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/Semver.php
@@ -8,9 +8,9 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver;
+namespace RectorPrefix202410\Composer\Semver;
-use RectorPrefix202405\Composer\Semver\Constraint\Constraint;
+use RectorPrefix202410\Composer\Semver\Constraint\Constraint;
class Semver
{
const SORT_ASC = 1;
diff --git a/vendor/rector/rector/vendor/composer/semver/src/VersionParser.php b/vendor/rector/rector/vendor/composer/semver/src/VersionParser.php
index 6aa06ae5e..29cc5a0e0 100644
--- a/vendor/rector/rector/vendor/composer/semver/src/VersionParser.php
+++ b/vendor/rector/rector/vendor/composer/semver/src/VersionParser.php
@@ -8,12 +8,12 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\Semver;
+namespace RectorPrefix202410\Composer\Semver;
-use RectorPrefix202405\Composer\Semver\Constraint\ConstraintInterface;
-use RectorPrefix202405\Composer\Semver\Constraint\MatchAllConstraint;
-use RectorPrefix202405\Composer\Semver\Constraint\MultiConstraint;
-use RectorPrefix202405\Composer\Semver\Constraint\Constraint;
+use RectorPrefix202410\Composer\Semver\Constraint\ConstraintInterface;
+use RectorPrefix202410\Composer\Semver\Constraint\MatchAllConstraint;
+use RectorPrefix202410\Composer\Semver\Constraint\MultiConstraint;
+use RectorPrefix202410\Composer\Semver\Constraint\Constraint;
/**
* Version parser.
*
@@ -72,10 +72,14 @@ public static function parseStability($version)
* @param string $stability
*
* @return string
+ * @phpstan-return 'stable'|'RC'|'beta'|'alpha'|'dev'
*/
public static function normalizeStability($stability)
{
$stability = \strtolower((string) $stability);
+ if (!\in_array($stability, array('stable', 'rc', 'beta', 'alpha', 'dev'), \true)) {
+ throw new \InvalidArgumentException('Invalid stability string "' . $stability . '", expected one of stable, RC, beta, alpha or dev');
+ }
return $stability === 'rc' ? 'RC' : $stability;
}
/**
diff --git a/vendor/rector/rector/vendor/composer/xdebug-handler/composer.json b/vendor/rector/rector/vendor/composer/xdebug-handler/composer.json
index 15ef001d7..e7cd6b230 100644
--- a/vendor/rector/rector/vendor/composer/xdebug-handler/composer.json
+++ b/vendor/rector/rector/vendor/composer/xdebug-handler/composer.json
@@ -29,12 +29,12 @@
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Composer\\XdebugHandler\\": "src"
+ "RectorPrefix202410\\Composer\\XdebugHandler\\": "src"
}
},
"autoload-dev": {
"psr-4": {
- "RectorPrefix202405\\Composer\\XdebugHandler\\Tests\\": "tests"
+ "RectorPrefix202410\\Composer\\XdebugHandler\\Tests\\": "tests"
}
},
"scripts": {
diff --git a/vendor/rector/rector/vendor/composer/xdebug-handler/src/PhpConfig.php b/vendor/rector/rector/vendor/composer/xdebug-handler/src/PhpConfig.php
index 4c58e9aee..33f66af01 100644
--- a/vendor/rector/rector/vendor/composer/xdebug-handler/src/PhpConfig.php
+++ b/vendor/rector/rector/vendor/composer/xdebug-handler/src/PhpConfig.php
@@ -9,7 +9,7 @@
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
-namespace RectorPrefix202405\Composer\XdebugHandler;
+namespace RectorPrefix202410\Composer\XdebugHandler;
/**
* @author John Stevenson
diff --git a/vendor/rector/rector/vendor/composer/xdebug-handler/src/Process.php b/vendor/rector/rector/vendor/composer/xdebug-handler/src/Process.php
index 645c436e6..353ff21c4 100644
--- a/vendor/rector/rector/vendor/composer/xdebug-handler/src/Process.php
+++ b/vendor/rector/rector/vendor/composer/xdebug-handler/src/Process.php
@@ -9,9 +9,9 @@
* the LICENSE file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Composer\XdebugHandler;
+namespace RectorPrefix202410\Composer\XdebugHandler;
-use RectorPrefix202405\Composer\Pcre\Preg;
+use RectorPrefix202410\Composer\Pcre\Preg;
/**
* Process utility functions
*
diff --git a/vendor/rector/rector/vendor/composer/xdebug-handler/src/Status.php b/vendor/rector/rector/vendor/composer/xdebug-handler/src/Status.php
index 7e5358e02..ff9c7ef24 100644
--- a/vendor/rector/rector/vendor/composer/xdebug-handler/src/Status.php
+++ b/vendor/rector/rector/vendor/composer/xdebug-handler/src/Status.php
@@ -9,10 +9,10 @@
* the LICENSE file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Composer\XdebugHandler;
+namespace RectorPrefix202410\Composer\XdebugHandler;
-use RectorPrefix202405\Psr\Log\LoggerInterface;
-use RectorPrefix202405\Psr\Log\LogLevel;
+use RectorPrefix202410\Psr\Log\LoggerInterface;
+use RectorPrefix202410\Psr\Log\LogLevel;
/**
* @author John Stevenson
* @internal
diff --git a/vendor/rector/rector/vendor/composer/xdebug-handler/src/XdebugHandler.php b/vendor/rector/rector/vendor/composer/xdebug-handler/src/XdebugHandler.php
index af9a07697..27ddc2c29 100644
--- a/vendor/rector/rector/vendor/composer/xdebug-handler/src/XdebugHandler.php
+++ b/vendor/rector/rector/vendor/composer/xdebug-handler/src/XdebugHandler.php
@@ -9,10 +9,10 @@
* the LICENSE file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Composer\XdebugHandler;
+namespace RectorPrefix202410\Composer\XdebugHandler;
-use RectorPrefix202405\Composer\Pcre\Preg;
-use RectorPrefix202405\Psr\Log\LoggerInterface;
+use RectorPrefix202410\Composer\Pcre\Preg;
+use RectorPrefix202410\Psr\Log\LoggerInterface;
/**
* @author John Stevenson
*
diff --git a/vendor/rector/rector/vendor/doctrine/inflector/composer.json b/vendor/rector/rector/vendor/doctrine/inflector/composer.json
index 0f31ef5b8..4ccec43f9 100644
--- a/vendor/rector/rector/vendor/doctrine/inflector/composer.json
+++ b/vendor/rector/rector/vendor/doctrine/inflector/composer.json
@@ -51,12 +51,12 @@
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Doctrine\\Inflector\\": "lib\/Doctrine\/Inflector"
+ "RectorPrefix202410\\Doctrine\\Inflector\\": "lib\/Doctrine\/Inflector"
}
},
"autoload-dev": {
"psr-4": {
- "RectorPrefix202405\\Doctrine\\Tests\\Inflector\\": "tests\/Doctrine\/Tests\/Inflector"
+ "RectorPrefix202410\\Doctrine\\Tests\\Inflector\\": "tests\/Doctrine\/Tests\/Inflector"
}
},
"config": {
diff --git a/vendor/rector/rector/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php b/vendor/rector/rector/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php
index bbd7d7970..2a2594329 100644
--- a/vendor/rector/rector/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php
+++ b/vendor/rector/rector/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php
@@ -1,7 +1,7 @@
' ', '/([A-Z]+)([A-Z][a-z])/' => 'RectorPrefix202405\\1_\\2', '/([a-z\\d])([A-Z])/' => 'RectorPrefix202405\\1_\\2', '/[^A-Z^a-z^0-9^\\/]+/' => '-'];
+ $replacements = ['/\\W/' => ' ', '/([A-Z]+)([A-Z][a-z])/' => 'RectorPrefix202410\\1_\\2', '/([a-z\\d])([A-Z])/' => 'RectorPrefix202410\\1_\\2', '/[^A-Z^a-z^0-9^\\/]+/' => '-'];
$urlized = $lowered;
foreach ($replacements as $pattern => $replacement) {
$replaced = preg_replace($pattern, $replacement, $urlized);
diff --git a/vendor/rector/rector/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php b/vendor/rector/rector/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php
index fc2388b13..c3b53f1b4 100644
--- a/vendor/rector/rector/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php
+++ b/vendor/rector/rector/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php
@@ -1,14 +1,14 @@
getAvailableForParallelisation()->availableCpus;
+
+// Get the number of CPU cores (by default it will use the logical cores count):
try {
$counter->getCount(); // e.g. 8
} catch (NumberOfCpuCoreNotFound) {
@@ -29,6 +33,10 @@ $counter = new CpuCoreCounter([
new DummyCpuCoreFinder(1), // Fallback value
]);
+// A type-safe alternative form:
+$counter->getCountWithFallback(1);
+
+// Note that the result is memoized.
$counter->getCount(); // e.g. 8
```
@@ -68,30 +76,46 @@ $cores = (new CpuCoreCounter($finders))->getCount();
`FinderRegistry` provides two helpful entries:
- `::getDefaultLogicalFinders()`: gives an ordered list of finders that will
- look for the _logical_ CPU cores count
+ look for the _logical_ CPU cores count.
- `::getDefaultPhysicalFinders()`: gives an ordered list of finders that will
- look for the _physical_ CPU cores count
+ look for the _physical_ CPU cores count.
-By default when using `CpuCoreCounter`, it will use the logical finders since
+By default, when using `CpuCoreCounter`, it will use the logical finders since
it is more likely what you are looking for and is what is used by PHP source to
build the PHP binary.
### Checks what finders find what on your system
-You have two commands available that provides insight about what the finders
+You have three scrips available that provides insight about what the finders
can find:
-```
-$ make diagnose # From this repository
-$ ./vendor/fidry/cpu-core-counter/bin/diagnose.php # From the library
+```shell
+# Checks what each given finder will find on your system with details about the
+# information it had.
+make diagnose # From this repository
+./vendor/fidry/cpu-core-counter/bin/diagnose.php # From the library
```
And:
+```shell
+# Execute all finders and display the result they found.
+make execute # From this repository
+./vendor/fidry/cpu-core-counter/bin/execute.php # From the library
```
-$ make execute # From this repository
-$ ./vendor/fidry/cpu-core-counter/bin/execute.php # From the library
-```
+
+
+### Debug the results found
+
+You have 3 methods available to help you find out what happened:
+
+1. If you are using the default configuration of finder registries, you can check
+ the previous section which will provide plenty of information.
+2. If what you are interested in is how many CPU cores were found, you can use
+ the `CpuCoreCounter::trace()` method.
+3. If what you are interested in is how the calculation of CPU cores available
+ for parallelisation was done, you can inspect the values of `ParallelisationResult`
+ returned by `CpuCoreCounter::getAvailableForParallelisation()`.
## Backward Compatibility Promise (BCP)
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/diagnose.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/diagnose.php
index c15e4a0bb..2d6702277 100755
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/diagnose.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/diagnose.php
@@ -9,10 +9,10 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405;
+namespace RectorPrefix202410;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Diagnoser;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Finder\FinderRegistry;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Diagnoser;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Finder\FinderRegistry;
require_once __DIR__ . '/../vendor/autoload.php';
echo 'Running diagnosis...' . \PHP_EOL . \PHP_EOL;
echo Diagnoser::diagnose(FinderRegistry::getAllVariants()) . \PHP_EOL;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/execute.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/execute.php
index c3c79f617..201268d5f 100755
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/execute.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/execute.php
@@ -9,10 +9,10 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405;
+namespace RectorPrefix202410;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Diagnoser;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Finder\FinderRegistry;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Diagnoser;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Finder\FinderRegistry;
require_once __DIR__ . '/../vendor/autoload.php';
echo 'Executing finders...' . \PHP_EOL . \PHP_EOL;
echo Diagnoser::execute(FinderRegistry::getAllVariants()) . \PHP_EOL;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/trace.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/trace.php
new file mode 100755
index 000000000..6c4381c60
--- /dev/null
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/bin/trace.php
@@ -0,0 +1,26 @@
+#!/usr/bin/env php
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+declare (strict_types=1);
+namespace RectorPrefix202410;
+
+use RectorPrefix202410\Fidry\CpuCoreCounter\CpuCoreCounter;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Finder\FinderRegistry;
+require_once __DIR__ . '/../vendor/autoload.php';
+$separator = \str_repeat('–', 80);
+echo 'With all finders...' . \PHP_EOL . \PHP_EOL;
+echo (new CpuCoreCounter(FinderRegistry::getAllVariants()))->trace() . \PHP_EOL;
+echo $separator . \PHP_EOL . \PHP_EOL;
+echo 'Logical CPU cores finders...' . \PHP_EOL . \PHP_EOL;
+echo (new CpuCoreCounter(FinderRegistry::getDefaultLogicalFinders()))->trace() . \PHP_EOL;
+echo $separator . \PHP_EOL . \PHP_EOL;
+echo 'Physical CPU cores finders...' . \PHP_EOL . \PHP_EOL;
+echo (new CpuCoreCounter(FinderRegistry::getDefaultPhysicalFinders()))->trace() . \PHP_EOL;
+echo $separator . \PHP_EOL . \PHP_EOL;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/composer.json b/vendor/rector/rector/vendor/fidry/cpu-core-counter/composer.json
index eea5f0d6b..10a6e2fbc 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/composer.json
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/composer.json
@@ -29,12 +29,12 @@
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Fidry\\CpuCoreCounter\\": "src\/"
+ "RectorPrefix202410\\Fidry\\CpuCoreCounter\\": "src\/"
}
},
"autoload-dev": {
"psr-4": {
- "RectorPrefix202405\\Fidry\\CpuCoreCounter\\Test\\": "tests\/"
+ "RectorPrefix202410\\Fidry\\CpuCoreCounter\\Test\\": "tests\/"
}
},
"config": {
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php
index 5ed06ea7f..03c757901 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php
@@ -9,10 +9,17 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Finder\CpuCoreFinder;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Finder\FinderRegistry;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Finder\CpuCoreFinder;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Finder\EnvVariableFinder;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Finder\FinderRegistry;
+use InvalidArgumentException;
+use function implode;
+use function max;
+use function sprintf;
+use function sys_getloadavg;
+use const PHP_EOL;
final class CpuCoreCounter
{
/**
@@ -30,6 +37,62 @@ public function __construct(?array $finders = null)
{
$this->finders = $finders ?? FinderRegistry::getDefaultLogicalFinders();
}
+ /**
+ * @param positive-int|0 $reservedCpus Number of CPUs to reserve. This is useful when you want
+ * to reserve some CPUs for other processes. If the main
+ * process is going to be busy still, you may want to set
+ * this value to 1.
+ * @param non-zero-int|null $countLimit The maximum number of CPUs to return. If not provided, it
+ * may look for a limit in the environment variables, e.g.
+ * KUBERNETES_CPU_LIMIT. If negative, the limit will be
+ * the total number of cores found minus the absolute value.
+ * For instance if the system has 10 cores and countLimit=-2,
+ * then the effective limit considered will be 8.
+ * @param float|null $loadLimit Element of [0., 1.]. Percentage representing the
+ * amount of cores that should be used among the available
+ * resources. For instance, if set to 0.7, it will use 70%
+ * of the available cores, i.e. if 1 core is reserved, 11
+ * cores are available and 5 are busy, it will use 70%
+ * of (11-1-5)=5 cores, so 3 cores. Set this parameter to null
+ * to skip this check. Beware that 1 does not mean "no limit",
+ * but 100% of the _available_ resources, i.e. with the
+ * previous example, it will return 5 cores. How busy is
+ * the system is determined by the system load average
+ * (see $systemLoadAverage).
+ * @param float|null $systemLoadAverage The system load average. If passed, it will use
+ * this information to limit the available cores based
+ * on the _available_ resources. For instance, if there
+ * is 10 cores but 3 are busy, then only 7 cores will
+ * be considered for further calculation. If set to
+ * `null`, it will use `sys_getloadavg()` to check the
+ * load of the system in the past minute. You can
+ * otherwise pass an arbitrary value. Should be a
+ * positive float.
+ *
+ * @see https://php.net/manual/en/function.sys-getloadavg.php
+ */
+ public function getAvailableForParallelisation(int $reservedCpus = 0, ?int $countLimit = null, ?float $loadLimit = null, ?float $systemLoadAverage = 0.0) : ParallelisationResult
+ {
+ self::checkCountLimit($countLimit);
+ self::checkLoadLimit($loadLimit);
+ self::checkSystemLoadAverage($systemLoadAverage);
+ $totalCoreCount = $this->getCountWithFallback(1);
+ $availableCores = max(1, $totalCoreCount - $reservedCpus);
+ // Adjust available CPUs based on current load
+ if (null !== $loadLimit) {
+ $correctedSystemLoadAverage = null === $systemLoadAverage ? sys_getloadavg()[0] ?? 0.0 : $systemLoadAverage;
+ $availableCores = max(1, $loadLimit * ($availableCores - $correctedSystemLoadAverage));
+ }
+ if (null === $countLimit) {
+ $correctedCountLimit = self::getKubernetesLimit();
+ } else {
+ $correctedCountLimit = $countLimit > 0 ? $countLimit : max(1, $totalCoreCount + $countLimit);
+ }
+ if (null !== $correctedCountLimit && $availableCores > $correctedCountLimit) {
+ $availableCores = $correctedCountLimit;
+ }
+ return new ParallelisationResult($reservedCpus, $countLimit, $loadLimit, $systemLoadAverage, $correctedCountLimit, $correctedSystemLoadAverage ?? $systemLoadAverage, $totalCoreCount, (int) $availableCores);
+ }
/**
* @throws NumberOfCpuCoreNotFound
*
@@ -43,6 +106,37 @@ public function getCount() : int
}
return $this->count;
}
+ /**
+ * @param positive-int $fallback
+ *
+ * @return positive-int
+ */
+ public function getCountWithFallback(int $fallback) : int
+ {
+ try {
+ return $this->getCount();
+ } catch (NumberOfCpuCoreNotFound $exception) {
+ return $fallback;
+ }
+ }
+ /**
+ * This method is mostly for debugging purposes.
+ */
+ public function trace() : string
+ {
+ $output = [];
+ foreach ($this->finders as $finder) {
+ $output[] = sprintf('Executing the finder "%s":', $finder->toString());
+ $output[] = $finder->diagnose();
+ $cores = $finder->find();
+ if (null !== $cores) {
+ $output[] = 'Result found: ' . $cores;
+ break;
+ }
+ $output[] = '–––';
+ }
+ return implode(PHP_EOL, $output);
+ }
/**
* @throws NumberOfCpuCoreNotFound
*
@@ -73,4 +167,33 @@ public function getFinderAndCores() : array
}
throw NumberOfCpuCoreNotFound::create();
}
+ /**
+ * @return positive-int|null
+ */
+ public static function getKubernetesLimit() : ?int
+ {
+ $finder = new EnvVariableFinder('KUBERNETES_CPU_LIMIT');
+ return $finder->find();
+ }
+ private static function checkCountLimit(?int $countLimit) : void
+ {
+ if (0 === $countLimit) {
+ throw new InvalidArgumentException('The count limit must be a non zero integer. Got "0".');
+ }
+ }
+ private static function checkLoadLimit(?float $loadLimit) : void
+ {
+ if (null === $loadLimit) {
+ return;
+ }
+ if ($loadLimit < 0.0 || $loadLimit > 1.0) {
+ throw new InvalidArgumentException(sprintf('The load limit must be in the range [0., 1.], got "%s".', $loadLimit));
+ }
+ }
+ private static function checkSystemLoadAverage(?float $systemLoadAverage) : void
+ {
+ if (null !== $systemLoadAverage && $systemLoadAverage < 0.0) {
+ throw new InvalidArgumentException(sprintf('The system load average must be a positive float, got "%s".', $systemLoadAverage));
+ }
+ }
}
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Diagnoser.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Diagnoser.php
index 9b3894236..777a15740 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Diagnoser.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Diagnoser.php
@@ -9,9 +9,9 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Finder\CpuCoreFinder;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Finder\CpuCoreFinder;
use function array_map;
use function explode;
use function implode;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php
index 98f2f513d..f7d9b21ad 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Executor;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Executor;
use function fclose;
use function function_exists;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php
index d0498375d..a964afb35 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Executor;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Executor;
interface ProcessExecutor
{
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php
index 2c16029aa..c525eb6e0 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function preg_match;
/**
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php
index 28c815fe9..2ac3b1a8f 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function preg_match;
/**
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php
index c31b8cec9..c8c5165d0 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
interface CpuCoreFinder
{
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php
index a3c56e262..6b88db441 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function file_get_contents;
use function is_file;
@@ -35,7 +35,7 @@ public function diagnose() : string
if (\false === $cpuInfo) {
return sprintf('Could not get the content of the file "%s".', self::CPU_INFO_PATH);
}
- return sprintf('Found the file "%s" with the content:%s%s', self::CPU_INFO_PATH, PHP_EOL, $cpuInfo);
+ return sprintf('Found the file "%s" with the content:%s%s%sWill return "%s".', self::CPU_INFO_PATH, PHP_EOL, $cpuInfo, PHP_EOL, self::countCpuCores($cpuInfo));
}
/**
* @return positive-int|null
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php
index 1428831c9..f98c9fe13 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function sprintf;
/**
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php
new file mode 100644
index 000000000..978b2faaa
--- /dev/null
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php
@@ -0,0 +1,47 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+declare (strict_types=1);
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
+
+use function getenv;
+use function preg_match;
+use function sprintf;
+use function var_export;
+final class EnvVariableFinder implements CpuCoreFinder
+{
+ /** @var string */
+ private $environmentVariableName;
+ public function __construct(string $environmentVariableName)
+ {
+ $this->environmentVariableName = $environmentVariableName;
+ }
+ public function diagnose() : string
+ {
+ $value = getenv($this->environmentVariableName);
+ return sprintf('parse(getenv(%s)=%s)=%s', $this->environmentVariableName, var_export($value, \true), self::isPositiveInteger($value) ? $value : 'null');
+ }
+ public function find() : ?int
+ {
+ $value = getenv($this->environmentVariableName);
+ return self::isPositiveInteger($value) ? (int) $value : null;
+ }
+ public function toString() : string
+ {
+ return sprintf('getenv(%s)', $this->environmentVariableName);
+ }
+ /**
+ * @param string|false $value
+ */
+ private static function isPositiveInteger($value) : bool
+ {
+ return \false !== $value && 1 === preg_match('/^\\d+$/', $value) && (int) $value > 0;
+ }
+}
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/FinderRegistry.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/FinderRegistry.php
index 41d859ac0..8eca4725d 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/FinderRegistry.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/FinderRegistry.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
final class FinderRegistry
{
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php
index 5ba1c6828..a2e115cd5 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
/**
* Find the number of logical CPU cores for Linux, BSD and OSX.
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php
index 9e862335a..d38806541 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
/**
* Find the number of physical CPU cores for Linux, BSD and OSX.
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php
index 16ff0fc91..1bb0e9d0e 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/LscpuLogicalFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function count;
use function explode;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php
index d0842984d..1813ea5f6 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/LscpuPhysicalFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function count;
use function explode;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.php
index 36a6d5b06..c0cc8958a 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.php
@@ -9,9 +9,9 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Executor\ProcessExecutor;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Executor\ProcessExecutor;
use function sprintf;
/**
* The number of (logical) cores.
@@ -26,9 +26,12 @@ final class NProcFinder extends ProcOpenBasedFinder
*/
private $all;
/**
- * @param bool $all If disabled will give the number of cores available for the current process only.
+ * @param bool $all If disabled will give the number of cores available for the current process
+ * only. This is disabled by default as it is known to be "buggy" on virtual
+ * environments as the virtualization tool, e.g. VMWare, might over-commit
+ * resources by default.
*/
- public function __construct(bool $all = \true, ?ProcessExecutor $executor = null)
+ public function __construct(bool $all = \false, ?ProcessExecutor $executor = null)
{
parent::__construct($executor);
$this->all = $all;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php
index 047e13eb7..5c91cd3c1 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
/**
* Find the number of logical CPU cores for FreeSBD, Solaris and the likes.
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php
index af02cdc8e..e06e063e3 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
/**
* This finder returns whatever value you gave to it. This is useful for testing.
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php
index d6585786e..b7312e75b 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function getenv;
use function sprintf;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php
index b2437b098..d9085cdb6 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function implode;
use function sprintf;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php
index 2419ff5b6..d700b2150 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php
@@ -9,10 +9,10 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Executor\ProcessExecutor;
-use RectorPrefix202405\Fidry\CpuCoreCounter\Executor\ProcOpenExecutor;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Executor\ProcessExecutor;
+use RectorPrefix202410\Fidry\CpuCoreCounter\Executor\ProcOpenExecutor;
use function filter_var;
use function function_exists;
use function is_int;
@@ -42,7 +42,7 @@ public function diagnose() : string
}
[$stdout, $stderr] = $output;
$failed = '' !== trim($stderr);
- return $failed ? sprintf('Executed the command "%s" which wrote the following output to the STDERR:%s%s', $command, PHP_EOL, $stderr) : sprintf('Executed the command "%s" and got the following (STDOUT) output:%s%s', $command, PHP_EOL, $stdout);
+ return $failed ? sprintf('Executed the command "%s" which wrote the following output to the STDERR:%s%s%sWill return "null".', $command, PHP_EOL, $stderr, PHP_EOL) : sprintf('Executed the command "%s" and got the following (STDOUT) output:%s%s%sWill return "%s".', $command, PHP_EOL, $stdout, PHP_EOL, $this->countCpuCores($stdout) ?? 'null');
}
/**
* @return positive-int|null
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php
index 55b465142..7a183856f 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function implode;
use function in_array;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php
index 083f08628..f6765e553 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function array_filter;
use function count;
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php
index b05e0743d..007c33013 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function preg_match;
/**
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php
index 447a10ec6..a7e8b3b72 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
use function preg_match;
/**
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php
index f7e8356da..96bf9994d 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter\Finder;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter\Finder;
/**
* Find the number of logical CPU cores for Linux and the likes.
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php
index 25aa3bda4..c81547617 100644
--- a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Fidry\CpuCoreCounter;
+namespace RectorPrefix202410\Fidry\CpuCoreCounter;
use RuntimeException;
final class NumberOfCpuCoreNotFound extends RuntimeException
diff --git a/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/ParallelisationResult.php b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/ParallelisationResult.php
new file mode 100644
index 000000000..6dca45755
--- /dev/null
+++ b/vendor/rector/rector/vendor/fidry/cpu-core-counter/src/ParallelisationResult.php
@@ -0,0 +1,69 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+declare (strict_types=1);
+namespace RectorPrefix202410\Fidry\CpuCoreCounter;
+
+/**
+ * @readonly
+ */
+final class ParallelisationResult
+{
+ /**
+ * @var positive-int|0
+ */
+ public $passedReservedCpus;
+ /**
+ * @var non-zero-int|null
+ */
+ public $passedCountLimit;
+ /**
+ * @var float|null
+ */
+ public $passedLoadLimit;
+ /**
+ * @var float|null
+ */
+ public $passedSystemLoadAverage;
+ /**
+ * @var non-zero-int|null
+ */
+ public $correctedCountLimit;
+ /**
+ * @var float|null
+ */
+ public $correctedSystemLoadAverage;
+ /**
+ * @var positive-int
+ */
+ public $totalCoresCount;
+ /**
+ * @var positive-int
+ */
+ public $availableCpus;
+ /**
+ * @param positive-int|0 $passedReservedCpus
+ * @param non-zero-int|null $passedCountLimit
+ * @param non-zero-int|null $correctedCountLimit
+ * @param positive-int $totalCoresCount
+ * @param positive-int $availableCpus
+ */
+ public function __construct(int $passedReservedCpus, ?int $passedCountLimit, ?float $passedLoadLimit, ?float $passedSystemLoadAverage, ?int $correctedCountLimit, ?float $correctedSystemLoadAverage, int $totalCoresCount, int $availableCpus)
+ {
+ $this->passedReservedCpus = $passedReservedCpus;
+ $this->passedCountLimit = $passedCountLimit;
+ $this->passedLoadLimit = $passedLoadLimit;
+ $this->passedSystemLoadAverage = $passedSystemLoadAverage;
+ $this->correctedCountLimit = $correctedCountLimit;
+ $this->correctedSystemLoadAverage = $correctedSystemLoadAverage;
+ $this->totalCoresCount = $totalCoresCount;
+ $this->availableCpus = $availableCpus;
+ }
+}
diff --git a/vendor/rector/rector/vendor/illuminate/container/Attributes/Auth.php b/vendor/rector/rector/vendor/illuminate/container/Attributes/Auth.php
new file mode 100644
index 000000000..05e8e9f03
--- /dev/null
+++ b/vendor/rector/rector/vendor/illuminate/container/Attributes/Auth.php
@@ -0,0 +1,33 @@
+guard = $guard;
+ }
+ /**
+ * Resolve the authentication guard.
+ *
+ * @param self $attribute
+ * @param \Illuminate\Contracts\Container\Container $container
+ * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard
+ */
+ public static function resolve(self $attribute, Container $container)
+ {
+ return $container->make('auth')->guard($attribute->guard);
+ }
+}
diff --git a/vendor/rector/rector/vendor/illuminate/container/Attributes/Authenticated.php b/vendor/rector/rector/vendor/illuminate/container/Attributes/Authenticated.php
new file mode 100644
index 000000000..16c8caf8a
--- /dev/null
+++ b/vendor/rector/rector/vendor/illuminate/container/Attributes/Authenticated.php
@@ -0,0 +1,33 @@
+guard = $guard;
+ }
+ /**
+ * Resolve the currently authenticated user.
+ *
+ * @param self $attribute
+ * @param \Illuminate\Contracts\Container\Container $container
+ * @return \Illuminate\Contracts\Auth\Authenticatable|null
+ */
+ public static function resolve(self $attribute, Container $container)
+ {
+ return $container->make('auth')->guard($attribute->guard)->user();
+ }
+}
diff --git a/vendor/rector/rector/vendor/illuminate/container/Attributes/Cache.php b/vendor/rector/rector/vendor/illuminate/container/Attributes/Cache.php
new file mode 100644
index 000000000..5ff86b582
--- /dev/null
+++ b/vendor/rector/rector/vendor/illuminate/container/Attributes/Cache.php
@@ -0,0 +1,33 @@
+store = $store;
+ }
+ /**
+ * Resolve the cache store.
+ *
+ * @param self $attribute
+ * @param \Illuminate\Contracts\Container\Container $container
+ * @return \Illuminate\Contracts\Cache\Repository
+ */
+ public static function resolve(self $attribute, Container $container)
+ {
+ return $container->make('cache')->store($attribute->store);
+ }
+}
diff --git a/vendor/rector/rector/vendor/illuminate/container/Attributes/Config.php b/vendor/rector/rector/vendor/illuminate/container/Attributes/Config.php
new file mode 100644
index 000000000..5143ba0b6
--- /dev/null
+++ b/vendor/rector/rector/vendor/illuminate/container/Attributes/Config.php
@@ -0,0 +1,39 @@
+key = $key;
+ $this->default = $default;
+ }
+ /**
+ * Resolve the configuration value.
+ *
+ * @param self $attribute
+ * @param \Illuminate\Contracts\Container\Container $container
+ * @return mixed
+ */
+ public static function resolve(self $attribute, Container $container)
+ {
+ return $container->make('config')->get($attribute->key, $attribute->default);
+ }
+}
diff --git a/vendor/rector/rector/vendor/illuminate/container/Attributes/CurrentUser.php b/vendor/rector/rector/vendor/illuminate/container/Attributes/CurrentUser.php
new file mode 100644
index 000000000..6590d8c8c
--- /dev/null
+++ b/vendor/rector/rector/vendor/illuminate/container/Attributes/CurrentUser.php
@@ -0,0 +1,10 @@
+connection = $connection;
+ }
+ /**
+ * Resolve the database connection.
+ *
+ * @param self $attribute
+ * @param \Illuminate\Contracts\Container\Container $container
+ * @return \Illuminate\Database\Connection
+ */
+ public static function resolve(self $attribute, Container $container)
+ {
+ return $container->make('db')->connection($attribute->connection);
+ }
+}
diff --git a/vendor/rector/rector/vendor/illuminate/container/Attributes/Log.php b/vendor/rector/rector/vendor/illuminate/container/Attributes/Log.php
new file mode 100644
index 000000000..a39087e71
--- /dev/null
+++ b/vendor/rector/rector/vendor/illuminate/container/Attributes/Log.php
@@ -0,0 +1,33 @@
+channel = $channel;
+ }
+ /**
+ * Resolve the log channel.
+ *
+ * @param self $attribute
+ * @param \Illuminate\Contracts\Container\Container $container
+ * @return \Psr\Log\LoggerInterface
+ */
+ public static function resolve(self $attribute, Container $container)
+ {
+ return $container->make('log')->channel($attribute->channel);
+ }
+}
diff --git a/vendor/rector/rector/vendor/illuminate/container/Attributes/Storage.php b/vendor/rector/rector/vendor/illuminate/container/Attributes/Storage.php
new file mode 100644
index 000000000..a71b3e3e8
--- /dev/null
+++ b/vendor/rector/rector/vendor/illuminate/container/Attributes/Storage.php
@@ -0,0 +1,33 @@
+disk = $disk;
+ }
+ /**
+ * Resolve the storage disk.
+ *
+ * @param self $attribute
+ * @param \Illuminate\Contracts\Container\Container $container
+ * @return \Illuminate\Contracts\Filesystem\Filesystem
+ */
+ public static function resolve(self $attribute, Container $container)
+ {
+ return $container->make('filesystem')->disk($attribute->disk);
+ }
+}
diff --git a/vendor/rector/rector/vendor/illuminate/container/Attributes/Tag.php b/vendor/rector/rector/vendor/illuminate/container/Attributes/Tag.php
new file mode 100644
index 000000000..c5cd0c7bc
--- /dev/null
+++ b/vendor/rector/rector/vendor/illuminate/container/Attributes/Tag.php
@@ -0,0 +1,31 @@
+tag = $tag;
+ }
+ /**
+ * Resolve the tag.
+ *
+ * @param self $attribute
+ * @param \Illuminate\Contracts\Container\Container $container
+ * @return mixed
+ */
+ public static function resolve(self $attribute, Container $container)
+ {
+ return $container->tagged($attribute->tag);
+ }
+}
diff --git a/vendor/rector/rector/vendor/illuminate/container/BoundMethod.php b/vendor/rector/rector/vendor/illuminate/container/BoundMethod.php
index 2e440bf50..ae4dc3d33 100644
--- a/vendor/rector/rector/vendor/illuminate/container/BoundMethod.php
+++ b/vendor/rector/rector/vendor/illuminate/container/BoundMethod.php
@@ -1,9 +1,9 @@
getName(), $parameters)) {
- $dependencies[] = $parameters[$paramName];
+ $pendingDependencies[] = $parameters[$paramName];
unset($parameters[$paramName]);
+ } elseif ($attribute = Util::getContextualAttributeFromDependency($parameter)) {
+ $pendingDependencies[] = $container->resolveFromAttribute($attribute);
} elseif (!\is_null($className = Util::getParameterClassName($parameter))) {
if (\array_key_exists($className, $parameters)) {
- $dependencies[] = $parameters[$className];
+ $pendingDependencies[] = $parameters[$className];
unset($parameters[$className]);
} elseif ($parameter->isVariadic()) {
$variadicDependencies = $container->make($className);
- $dependencies = \array_merge($dependencies, \is_array($variadicDependencies) ? $variadicDependencies : [$variadicDependencies]);
+ $pendingDependencies = \array_merge($pendingDependencies, \is_array($variadicDependencies) ? $variadicDependencies : [$variadicDependencies]);
} else {
- $dependencies[] = $container->make($className);
+ $pendingDependencies[] = $container->make($className);
}
} elseif ($parameter->isDefaultValueAvailable()) {
- $dependencies[] = $parameter->getDefaultValue();
+ $pendingDependencies[] = $parameter->getDefaultValue();
} elseif (!$parameter->isOptional() && !\array_key_exists($paramName, $parameters)) {
$message = "Unable to resolve dependency [{$parameter}] in class {$parameter->getDeclaringClass()->getName()}";
throw new BindingResolutionException($message);
}
+ foreach ($pendingDependencies as $dependency) {
+ $container->fireAfterResolvingAttributeCallbacks(\method_exists($parameter, 'getAttributes') ? $parameter->getAttributes() : [], $dependency);
+ }
+ $dependencies = \array_merge($dependencies, $pendingDependencies);
}
/**
* Determine if the given string is in Class@method syntax.
diff --git a/vendor/rector/rector/vendor/illuminate/container/Container.php b/vendor/rector/rector/vendor/illuminate/container/Container.php
index 2b723405d..fc30f551b 100755
--- a/vendor/rector/rector/vendor/illuminate/container/Container.php
+++ b/vendor/rector/rector/vendor/illuminate/container/Container.php
@@ -1,14 +1,16 @@
contextualAttributes[$attribute] = $handler;
+ }
/**
* Determine if the given abstract type has been bound.
*
@@ -584,16 +609,10 @@ public function call($callback, array $parameters = [], $defaultMethod = null)
*/
protected function getClassForCallable($callback)
{
- if (\PHP_VERSION_ID >= 80200) {
- if (\is_callable($callback) && !($reflector = new ReflectionFunction(\Closure::fromCallable($callback)))->isAnonymous()) {
- return $reflector->getClosureScopeClass()->name ?? \false;
- }
- return \false;
- }
- if (!\is_array($callback)) {
- return \false;
+ if (\is_callable($callback) && !($reflector = new ReflectionFunction(\Closure::fromCallable($callback)))->isAnonymous()) {
+ return $reflector->getClosureScopeClass()->name ?? \false;
}
- return \is_string($callback[0]) ? $callback[0] : \get_class($callback[0]);
+ return \false;
}
/**
* Get a closure to resolve the given type from the container.
@@ -623,7 +642,7 @@ public function makeWith($abstract, array $parameters = [])
/**
* Resolve the given type from the container.
*
- * @param string|callable $abstract
+ * @param string $abstract
* @param array $parameters
* @return mixed
*
@@ -782,7 +801,12 @@ public function build($concrete)
// hand back the results of the functions, which allows functions to be
// used as resolvers for more fine-tuned resolution of these objects.
if ($concrete instanceof Closure) {
- return $concrete($this, $this->getLastParameterOverride());
+ $this->buildStack[] = \spl_object_hash($concrete);
+ try {
+ return $concrete($this, $this->getLastParameterOverride());
+ } finally {
+ \array_pop($this->buildStack);
+ }
}
try {
$reflector = new ReflectionClass($concrete);
@@ -802,7 +826,8 @@ public function build($concrete)
// resolving any other types or dependencies out of these containers.
if (\is_null($constructor)) {
\array_pop($this->buildStack);
- return new $concrete();
+ $this->fireAfterResolvingAttributeCallbacks(\method_exists($reflector, 'getAttributes') ? $reflector->getAttributes() : [], $instance = new $concrete());
+ return $instance;
}
$dependencies = $constructor->getParameters();
// Once we have all the constructor's parameters we can create each of the
@@ -815,7 +840,8 @@ public function build($concrete)
throw $e;
}
\array_pop($this->buildStack);
- return $reflector->newInstanceArgs($instances);
+ $this->fireAfterResolvingAttributeCallbacks(\method_exists($reflector, 'getAttributes') ? $reflector->getAttributes() : [], $instance = $reflector->newInstanceArgs($instances));
+ return $instance;
}
/**
* Resolve all of the dependencies from the ReflectionParameters.
@@ -836,10 +862,15 @@ protected function resolveDependencies(array $dependencies)
$results[] = $this->getParameterOverride($dependency);
continue;
}
+ $result = null;
+ if (!\is_null($attribute = Util::getContextualAttributeFromDependency($dependency))) {
+ $result = $this->resolveFromAttribute($attribute);
+ }
// If the class is null, it means the dependency is a string or some other
// primitive type which we can not resolve since it is not a class and
// we will just bomb out with an error since we have no-where to go.
- $result = \is_null(Util::getParameterClassName($dependency)) ? $this->resolvePrimitive($dependency) : $this->resolveClass($dependency);
+ $result = $result ?? (\is_null(Util::getParameterClassName($dependency)) ? $this->resolvePrimitive($dependency) : $this->resolveClass($dependency));
+ $this->fireAfterResolvingAttributeCallbacks(\method_exists($dependency, 'getAttributes') ? $dependency->getAttributes() : [], $result);
if ($dependency->isVariadic()) {
$results = \array_merge($results, $result);
} else {
@@ -896,6 +927,9 @@ protected function resolvePrimitive(ReflectionParameter $parameter)
if ($parameter->isVariadic()) {
return [];
}
+ if ($parameter->hasType() && $parameter->allowsNull()) {
+ return null;
+ }
$this->unresolvablePrimitive($parameter);
}
/**
@@ -939,6 +973,24 @@ protected function resolveVariadicClass(ReflectionParameter $parameter)
return $this->resolve($abstract);
}, $concrete);
}
+ /**
+ * Resolve a dependency based on an attribute.
+ *
+ * @param \ReflectionAttribute $attribute
+ * @return mixed
+ */
+ public function resolveFromAttribute(ReflectionAttribute $attribute)
+ {
+ $handler = $this->contextualAttributes[$attribute->getName()] ?? null;
+ $instance = $attribute->newInstance();
+ if (\is_null($handler) && \method_exists($instance, 'resolve')) {
+ $handler = \Closure::fromCallable([$instance, 'resolve']);
+ }
+ if (\is_null($handler)) {
+ throw new BindingResolutionException("Contextual binding attribute [{$attribute->getName()}] has no registered handler.");
+ }
+ return $handler($instance, $this);
+ }
/**
* Throw an exception that the concrete is not instantiable.
*
@@ -977,7 +1029,7 @@ protected function unresolvablePrimitive(ReflectionParameter $parameter)
* @param \Closure|null $callback
* @return void
*/
- public function beforeResolving($abstract, Closure $callback = null)
+ public function beforeResolving($abstract, ?Closure $callback = null)
{
if (\is_string($abstract)) {
$abstract = $this->getAlias($abstract);
@@ -995,7 +1047,7 @@ public function beforeResolving($abstract, Closure $callback = null)
* @param \Closure|null $callback
* @return void
*/
- public function resolving($abstract, Closure $callback = null)
+ public function resolving($abstract, ?Closure $callback = null)
{
if (\is_string($abstract)) {
$abstract = $this->getAlias($abstract);
@@ -1013,7 +1065,7 @@ public function resolving($abstract, Closure $callback = null)
* @param \Closure|null $callback
* @return void
*/
- public function afterResolving($abstract, Closure $callback = null)
+ public function afterResolving($abstract, ?Closure $callback = null)
{
if (\is_string($abstract)) {
$abstract = $this->getAlias($abstract);
@@ -1024,6 +1076,17 @@ public function afterResolving($abstract, Closure $callback = null)
$this->afterResolvingCallbacks[$abstract][] = $callback;
}
}
+ /**
+ * Register a new after resolving attribute callback for all types.
+ *
+ * @param string $attribute
+ * @param \Closure $callback
+ * @return void
+ */
+ public function afterResolvingAttribute(string $attribute, \Closure $callback)
+ {
+ $this->afterResolvingAttributeCallbacks[$attribute][] = $callback;
+ }
/**
* Fire all of the before resolving callbacks.
*
@@ -1079,6 +1142,28 @@ protected function fireAfterResolvingCallbacks($abstract, $object)
$this->fireCallbackArray($object, $this->globalAfterResolvingCallbacks);
$this->fireCallbackArray($object, $this->getCallbacksForType($abstract, $object, $this->afterResolvingCallbacks));
}
+ /**
+ * Fire all of the after resolving attribute callbacks.
+ *
+ * @param \ReflectionAttribute[] $abstract
+ * @param mixed $object
+ * @return void
+ */
+ public function fireAfterResolvingAttributeCallbacks(array $attributes, $object)
+ {
+ foreach ($attributes as $attribute) {
+ if (\is_a($attribute->getName(), ContextualAttribute::class, \true)) {
+ $instance = $attribute->newInstance();
+ if (\method_exists($instance, 'after')) {
+ $instance->after($instance, $object, $this);
+ }
+ }
+ $callbacks = $this->getCallbacksForType($attribute->getName(), $object, $this->afterResolvingAttributeCallbacks);
+ foreach ($callbacks as $callback) {
+ $callback($attribute->newInstance(), $object, $this);
+ }
+ }
+ }
/**
* Get all callbacks for a given type.
*
@@ -1210,10 +1295,7 @@ public function flush()
*/
public static function getInstance()
{
- if (\is_null(static::$instance)) {
- static::$instance = new static();
- }
- return static::$instance;
+ return static::$instance = static::$instance ?? new static();
}
/**
* Set the shared instance of the container.
@@ -1221,7 +1303,7 @@ public static function getInstance()
* @param \Illuminate\Contracts\Container\Container|null $container
* @return \Illuminate\Contracts\Container\Container|static
*/
- public static function setInstance(ContainerContract $container = null)
+ public static function setInstance(?ContainerContract $container = null)
{
return static::$instance = $container;
}
diff --git a/vendor/rector/rector/vendor/illuminate/container/ContextualBindingBuilder.php b/vendor/rector/rector/vendor/illuminate/container/ContextualBindingBuilder.php
index 37ac1f401..336a5b6e2 100644
--- a/vendor/rector/rector/vendor/illuminate/container/ContextualBindingBuilder.php
+++ b/vendor/rector/rector/vendor/illuminate/container/ContextualBindingBuilder.php
@@ -1,9 +1,9 @@
getAttributes(ContextualAttribute::class, ReflectionAttribute::IS_INSTANCEOF) : [])[0] ?? null;
+ }
}
diff --git a/vendor/rector/rector/vendor/illuminate/container/composer.json b/vendor/rector/rector/vendor/illuminate/container/composer.json
index f4213082a..e1dd2f1bf 100755
--- a/vendor/rector/rector/vendor/illuminate/container/composer.json
+++ b/vendor/rector/rector/vendor/illuminate/container/composer.json
@@ -14,8 +14,8 @@
}
],
"require": {
- "php": "^8.1",
- "illuminate\/contracts": "^10.0",
+ "php": "^8.2",
+ "illuminate\/contracts": "^11.0",
"psr\/container": "^1.1.1|^2.0.1"
},
"provide": {
@@ -23,12 +23,12 @@
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Illuminate\\Container\\": ""
+ "RectorPrefix202410\\Illuminate\\Container\\": ""
}
},
"extra": {
"branch-alias": {
- "dev-master": "10.x-dev"
+ "dev-master": "11.x-dev"
}
},
"config": {
diff --git a/vendor/rector/rector/vendor/illuminate/contracts/Auth/Access/Authorizable.php b/vendor/rector/rector/vendor/illuminate/contracts/Auth/Access/Authorizable.php
index f0010341a..2872792a7 100644
--- a/vendor/rector/rector/vendor/illuminate/contracts/Auth/Access/Authorizable.php
+++ b/vendor/rector/rector/vendor/illuminate/contracts/Auth/Access/Authorizable.php
@@ -1,6 +1,6 @@
$attributes
* @return mixed
*/
public function set(Model $model, string $key, $value, array $attributes);
diff --git a/vendor/rector/rector/vendor/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php b/vendor/rector/rector/vendor/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php
index c950c08a0..fe6efb388 100644
--- a/vendor/rector/rector/vendor/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php
+++ b/vendor/rector/rector/vendor/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php
@@ -1,6 +1,6 @@
$attributes
* @return mixed
*/
public function serialize(Model $model, string $key, $value, array $attributes);
diff --git a/vendor/rector/rector/vendor/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php b/vendor/rector/rector/vendor/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php
index c0f929a8f..9017a4735 100644
--- a/vendor/rector/rector/vendor/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php
+++ b/vendor/rector/rector/vendor/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php
@@ -1,6 +1,6 @@
=8.0 <8.4"
+ "php": "8.0 - 8.4"
},
"require-dev": {
"nette\/tester": "^2.5",
diff --git a/vendor/rector/rector/vendor/nette/utils/readme.md b/vendor/rector/rector/vendor/nette/utils/readme.md
index 530915f8f..0038f534f 100644
--- a/vendor/rector/rector/vendor/nette/utils/readme.md
+++ b/vendor/rector/rector/vendor/nette/utils/readme.md
@@ -1,5 +1,4 @@
-Nette Utility Classes
-=====================
+[![Nette Utils](https://github.com/nette/utils/assets/194960/c33fdb74-0652-4cad-ac6e-c1ce0d29e32a)](https://doc.nette.org/en/utils)
[![Downloads this Month](https://img.shields.io/packagist/dm/nette/utils.svg)](https://packagist.org/packages/nette/utils)
[![Tests](https://github.com/nette/utils/workflows/Tests/badge.svg?branch=master)](https://github.com/nette/utils/actions)
@@ -11,25 +10,27 @@ Nette Utility Classes
Introduction
------------
-In package nette/utils you will find a set of [useful classes](https://doc.nette.org/utils) for everyday use:
-
-- [Arrays](https://doc.nette.org/utils/arrays) - manipulate arrays
-- [Callback](https://doc.nette.org/utils/callback) - PHP callbacks
-- [Date and Time](https://doc.nette.org/utils/datetime) - modify times and dates
-- [Filesystem](https://doc.nette.org/utils/filesystem) - copying, renaming, …
-- [Finder](https://doc.nette.org/utils/finder) - finds files and directories
-- [Helper Functions](https://doc.nette.org/utils/helpers)
-- [HTML elements](https://doc.nette.org/utils/html-elements) - generate HTML
-- [Images](https://doc.nette.org/utils/images) - crop, resize, rotate images
-- [JSON](https://doc.nette.org/utils/json) - encoding and decoding
-- [Generating Random Strings](https://doc.nette.org/utils/random)
-- [Paginator](https://doc.nette.org/utils/paginator) - pagination math
-- [PHP Reflection](https://doc.nette.org/utils/reflection)
-- [Strings](https://doc.nette.org/utils/strings) - useful text functions
-- [SmartObject](https://doc.nette.org/utils/smartobject) - PHP object enhancements
-- [Validation](https://doc.nette.org/utils/validators) - validate inputs
-- [Type](https://doc.nette.org/utils/type) - PHP data type
-
+In package nette/utils you will find a set of useful classes for everyday use:
+
+✅ [Arrays](https://doc.nette.org/utils/arrays)
+✅ [Callback](https://doc.nette.org/utils/callback) - PHP callbacks
+✅ [Filesystem](https://doc.nette.org/utils/filesystem) - copying, renaming, …
+✅ [Finder](https://doc.nette.org/utils/finder) - finds files and directories
+✅ [Floats](https://doc.nette.org/utils/floats) - floating point numbers
+✅ [Helper Functions](https://doc.nette.org/utils/helpers)
+✅ [HTML elements](https://doc.nette.org/utils/html-elements) - generate HTML
+✅ [Images](https://doc.nette.org/utils/images) - crop, resize, rotate images
+✅ [Iterables](https://doc.nette.org/utils/iterables)
+✅ [JSON](https://doc.nette.org/utils/json) - encoding and decoding
+✅ [Generating Random Strings](https://doc.nette.org/utils/random)
+✅ [Paginator](https://doc.nette.org/utils/paginator) - pagination math
+✅ [PHP Reflection](https://doc.nette.org/utils/reflection)
+✅ [Strings](https://doc.nette.org/utils/strings) - useful text functions
+✅ [SmartObject](https://doc.nette.org/utils/smartobject) - PHP object enhancements
+✅ [Type](https://doc.nette.org/utils/type) - PHP data type
+✅ [Validation](https://doc.nette.org/utils/validators) - validate inputs
+
+
Installation
------------
@@ -40,11 +41,9 @@ The recommended way to install is via Composer:
composer require nette/utils
```
-- Nette Utils 4.0 is compatible with PHP 8.0 to 8.3
-- Nette Utils 3.2 is compatible with PHP 7.2 to 8.3
-- Nette Utils 3.1 is compatible with PHP 7.1 to 8.0
-- Nette Utils 3.0 is compatible with PHP 7.1 to 8.0
-- Nette Utils 2.5 is compatible with PHP 5.6 to 8.0
+Nette Utils 4.0 is compatible with PHP 8.0 to 8.4.
+
+
[Support Me](https://github.com/sponsors/dg)
--------------------------------------------
diff --git a/vendor/rector/rector/vendor/nette/utils/src/HtmlStringable.php b/vendor/rector/rector/vendor/nette/utils/src/HtmlStringable.php
index a0b7cdafe..5aff8732e 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/HtmlStringable.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/HtmlStringable.php
@@ -5,7 +5,7 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette;
+namespace RectorPrefix202410\Nette;
interface HtmlStringable
{
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Iterators/CachingIterator.php b/vendor/rector/rector/vendor/nette/utils/src/Iterators/CachingIterator.php
index a8365747a..e285fb70b 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Iterators/CachingIterator.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Iterators/CachingIterator.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Iterators;
+namespace RectorPrefix202410\Nette\Iterators;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Smarter caching iterator.
*
@@ -27,22 +27,13 @@ class CachingIterator extends \CachingIterator implements \Countable
* @var int
*/
private $counter = 0;
- public function __construct($iterator)
+ /**
+ * @param iterable|\stdClass $iterable
+ */
+ public function __construct($iterable)
{
- if (\is_array($iterator) || $iterator instanceof \stdClass) {
- $iterator = new \ArrayIterator($iterator);
- } elseif ($iterator instanceof \IteratorAggregate) {
- do {
- $iterator = $iterator->getIterator();
- } while ($iterator instanceof \IteratorAggregate);
- \assert($iterator instanceof \Iterator);
- } elseif ($iterator instanceof \Iterator) {
- } elseif ($iterator instanceof \Traversable) {
- $iterator = new \IteratorIterator($iterator);
- } else {
- throw new Nette\InvalidArgumentException(\sprintf('Invalid argument passed to %s; array or Traversable expected, %s given.', self::class, \get_debug_type($iterator)));
- }
- parent::__construct($iterator, 0);
+ $iterable = $iterable instanceof \stdClass ? new \ArrayIterator($iterable) : Nette\Utils\Iterables::toIterator($iterable);
+ parent::__construct($iterable, 0);
}
/**
* Is the current element the first one?
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Iterators/Mapper.php b/vendor/rector/rector/vendor/nette/utils/src/Iterators/Mapper.php
index c7b52c028..9a7a5c8ed 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Iterators/Mapper.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Iterators/Mapper.php
@@ -5,10 +5,10 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Iterators;
+namespace RectorPrefix202410\Nette\Iterators;
/**
- * Applies the callback to the elements of the inner iterator.
+ * @deprecated use Nette\Utils\Iterables::map()
*/
class Mapper extends \IteratorIterator
{
diff --git a/vendor/rector/rector/vendor/nette/utils/src/SmartObject.php b/vendor/rector/rector/vendor/nette/utils/src/SmartObject.php
index 5692e15c5..d7c382505 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/SmartObject.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/SmartObject.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette;
+namespace RectorPrefix202410\Nette;
-use RectorPrefix202405\Nette\Utils\ObjectHelpers;
+use RectorPrefix202410\Nette\Utils\ObjectHelpers;
/**
* Strict class for better experience.
* - 'did you mean' hints
diff --git a/vendor/rector/rector/vendor/nette/utils/src/StaticClass.php b/vendor/rector/rector/vendor/nette/utils/src/StaticClass.php
index 01cb33c2d..72003961b 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/StaticClass.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/StaticClass.php
@@ -5,7 +5,7 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette;
+namespace RectorPrefix202410\Nette;
/**
* Static class.
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Translator.php b/vendor/rector/rector/vendor/nette/utils/src/Translator.php
index 4f6b3037b..cf5ce3aa4 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Translator.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Translator.php
@@ -5,7 +5,7 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Localization;
+namespace RectorPrefix202410\Nette\Localization;
/**
* Translator adapter.
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/ArrayHash.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/ArrayHash.php
index b36a85153..593e24da5 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/ArrayHash.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/ArrayHash.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Provides objects to work as array.
* @template T
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/ArrayList.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/ArrayList.php
index 3ec63e7f3..df748b3b2 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/ArrayList.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/ArrayList.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Provides the base class for a generic list (items can be accessed by index).
* @template T
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Arrays.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Arrays.php
index ac88431c1..f3b5ae31c 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Arrays.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Arrays.php
@@ -5,10 +5,10 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\JetBrains\PhpStorm\Language;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\JetBrains\PhpStorm\Language;
+use RectorPrefix202410\Nette;
use function is_array, is_int, is_object, count;
/**
* Array tools library.
@@ -103,10 +103,11 @@ public static function contains(array $array, $value) : bool
}
/**
* Returns the first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null.
- * The $predicate has the signature `function (mixed $value, int|string $key, array $array): bool`.
- * @template T
- * @param array $array
- * @return ?T
+ * @template K of int|string
+ * @template V
+ * @param array $array
+ * @param ?callable(V, K, array): bool $predicate
+ * @return ?V
*/
public static function first(array $array, ?callable $predicate = null, ?callable $else = null)
{
@@ -115,10 +116,11 @@ public static function first(array $array, ?callable $predicate = null, ?callabl
}
/**
* Returns the last item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null.
- * The $predicate has the signature `function (mixed $value, int|string $key, array $array): bool`.
- * @template T
- * @param array $array
- * @return ?T
+ * @template K of int|string
+ * @template V
+ * @param array $array
+ * @param ?callable(V, K, array): bool $predicate
+ * @return ?V
*/
public static function last(array $array, ?callable $predicate = null, ?callable $else = null)
{
@@ -127,8 +129,11 @@ public static function last(array $array, ?callable $predicate = null, ?callable
}
/**
* Returns the key of first item (matching the specified predicate if given) or null if there is no such item.
- * The $predicate has the signature `function (mixed $value, int|string $key, array $array): bool`.
- * @return int|string|null
+ * @template K of int|string
+ * @template V
+ * @param array $array
+ * @param ?callable(V, K, array): bool $predicate
+ * @return ?K
*/
public static function firstKey(array $array, ?callable $predicate = null)
{
@@ -145,8 +150,11 @@ public static function firstKey(array $array, ?callable $predicate = null)
}
/**
* Returns the key of last item (matching the specified predicate if given) or null if there is no such item.
- * The $predicate has the signature `function (mixed $value, int|string $key, array $array): bool`.
- * @return int|string|null
+ * @template K of int|string
+ * @template V
+ * @param array $array
+ * @param ?callable(V, K, array): bool $predicate
+ * @return ?K
*/
public static function lastKey(array $array, ?callable $predicate = null)
{
@@ -328,12 +336,11 @@ public static function pick(array &$array, $key, $default = null)
}
}
/**
- * Tests whether at least one element in the array passes the test implemented by the provided function,
- * which has the signature `function ($value, $key, array $array): bool`.
- * @template K
+ * Tests whether at least one element in the array passes the test implemented by the provided function.
+ * @template K of int|string
* @template V
- * @param iterable $array
- * @param callable(V, K, ($array is array ? array : iterable)): bool $predicate
+ * @param array $array
+ * @param callable(V, K, array): bool $predicate
*/
public static function some(iterable $array, callable $predicate) : bool
{
@@ -345,12 +352,11 @@ public static function some(iterable $array, callable $predicate) : bool
return \false;
}
/**
- * Tests whether all elements in the array pass the test implemented by the provided function,
- * which has the signature `function ($value, $key, array $array): bool`.
- * @template K
+ * Tests whether all elements in the array pass the test implemented by the provided function.
+ * @template K of int|string
* @template V
- * @param iterable $array
- * @param callable(V, K, ($array is array ? array : iterable)): bool $predicate
+ * @param array $array
+ * @param callable(V, K, array): bool $predicate
*/
public static function every(iterable $array, callable $predicate) : bool
{
@@ -363,11 +369,10 @@ public static function every(iterable $array, callable $predicate) : bool
}
/**
* Returns a new array containing all key-value pairs matching the given $predicate.
- * The callback has the signature `function (mixed $value, int|string $key, array $array): bool`.
- * @template K of array-key
+ * @template K of int|string
* @template V
- * @param array $array
- * @param callable(V, K, array): bool $predicate
+ * @param array $array
+ * @param callable(V, K, array): bool $predicate
* @return array
*/
public static function filter(array $array, callable $predicate) : array
@@ -382,12 +387,11 @@ public static function filter(array $array, callable $predicate) : array
}
/**
* Returns an array containing the original keys and results of applying the given transform function to each element.
- * The function has signature `function ($value, $key, array $array): mixed`.
- * @template K of array-key
+ * @template K of int|string
* @template V
* @template R
- * @param iterable $array
- * @param callable(V, K, ($array is array ? array : iterable)): R $transformer
+ * @param array $array
+ * @param callable(V, K, array): R $transformer
* @return array
*/
public static function map(iterable $array, callable $transformer) : array
@@ -398,6 +402,28 @@ public static function map(iterable $array, callable $transformer) : array
}
return $res;
}
+ /**
+ * Returns an array containing new keys and values generated by applying the given transform function to each element.
+ * If the function returns null, the element is skipped.
+ * @template K of int|string
+ * @template V
+ * @template ResK of int|string
+ * @template ResV
+ * @param array $array
+ * @param callable(V, K, array): ?array{ResK, ResV} $transformer
+ * @return array
+ */
+ public static function mapWithKeys(array $array, callable $transformer) : array
+ {
+ $res = [];
+ foreach ($array as $k => $v) {
+ $pair = $transformer($v, $k, $array);
+ if ($pair) {
+ $res[$pair[0]] = $pair[1];
+ }
+ }
+ return $res;
+ }
/**
* Invokes all callbacks and returns array of results.
* @param callable[] $callbacks
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Callback.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Callback.php
index 237e7c45a..9fc9fde6c 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Callback.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Callback.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
use function is_array, is_object, is_string;
/**
* PHP callable tools.
@@ -77,7 +77,7 @@ public static function toReflection($callable)
$callable = self::unwrap($callable);
}
if (is_string($callable) && \strpos($callable, '::') !== \false) {
- return new ReflectionMethod($callable);
+ return new ReflectionMethod(...\explode('::', $callable, 2));
} elseif (is_array($callable)) {
return new ReflectionMethod($callable[0], $callable[1]);
} elseif (is_object($callable) && !$callable instanceof \Closure) {
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/DateTime.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/DateTime.php
index 10e8c0952..f5f466e39 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/DateTime.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/DateTime.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* DateTime.
*/
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/FileInfo.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/FileInfo.php
index d76a2bb39..505771d31 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/FileInfo.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/FileInfo.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Represents the file or directory returned by the Finder.
* @internal do not create instances directly
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/FileSystem.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/FileSystem.php
index e4f178d6d..eaf7246c9 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/FileSystem.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/FileSystem.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* File system tool.
*/
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Finder.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Finder.php
index a99f6a690..a92c0c9f4 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Finder.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Finder.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Finder allows searching through directory trees using iterator.
*
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Floats.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Floats.php
index fc0c0ac85..78bab203c 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Floats.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Floats.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Floating-point numbers comparison.
*/
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Helpers.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Helpers.php
index aad77787a..16730d8bd 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Helpers.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Helpers.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
class Helpers
{
/**
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Html.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Html.php
index 418cdf9fe..dc8a1a108 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Html.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Html.php
@@ -5,10 +5,10 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
-use RectorPrefix202405\Nette\HtmlStringable;
+use RectorPrefix202410\Nette;
+use RectorPrefix202410\Nette\HtmlStringable;
use function is_array, is_float, is_object, is_string;
/**
* HTML helper.
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Image.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Image.php
index 57605da14..ccb2a1806 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Image.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Image.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Basic manipulation with images. Supported types are JPEG, PNG, GIF, WEBP, AVIF and BMP.
*
@@ -133,9 +133,7 @@ public static function rgb(int $red, int $green, int $blue, int $transparency =
*/
public static function fromFile(string $file, ?int &$type = null)
{
- if (!\extension_loaded('gd')) {
- throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
- }
+ self::ensureExtension();
$type = self::detectTypeFromFile($file);
if (!$type) {
throw new UnknownImageFileException(\is_file($file) ? "Unknown type of file '{$file}'." : "File '{$file}' not found.");
@@ -150,9 +148,7 @@ public static function fromFile(string $file, ?int &$type = null)
*/
public static function fromString(string $s, ?int &$type = null)
{
- if (!\extension_loaded('gd')) {
- throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
- }
+ self::ensureExtension();
$type = self::detectTypeFromString($s);
if (!$type) {
throw new UnknownImageFileException('Unknown type of image.');
@@ -185,9 +181,7 @@ private static function invokeSafe(string $func, string $arg, string $message, s
*/
public static function fromBlank(int $width, int $height, $color = null)
{
- if (!\extension_loaded('gd')) {
- throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
- }
+ self::ensureExtension();
if ($width < 1 || $height < 1) {
throw new Nette\InvalidArgumentException('Image width and height must be greater than zero.');
}
@@ -257,6 +251,7 @@ public static function typeToMimeType(int $type) : string
*/
public static function isTypeSupported(int $type) : bool
{
+ self::ensureExtension();
switch ($type) {
case ImageType::JPEG:
return \IMG_JPG;
@@ -277,6 +272,7 @@ public static function isTypeSupported(int $type) : bool
/** @return ImageType[] */
public static function getSupportedTypes() : array
{
+ self::ensureExtension();
$flag = \imagetypes();
return \array_filter([
$flag & \IMG_GIF ? ImageType::GIF : null,
@@ -526,6 +522,7 @@ public function place(self $image, $left = 0, $top = 0, int $opacity = 100)
*/
public static function calculateTextBox(string $text, string $fontFile, float $size, float $angle = 0, array $options = []) : array
{
+ self::ensureExtension();
$box = \imagettfbbox($size, $angle, $fontFile, $text, $options);
return ['left' => $minX = \min([$box[0], $box[2], $box[4], $box[6]]), 'top' => $minY = \min([$box[1], $box[3], $box[5], $box[7]]), 'width' => \max([$box[0], $box[2], $box[4], $box[6]]) - $minX + 1, 'height' => \max([$box[1], $box[3], $box[5], $box[7]]) - $minY + 1];
}
@@ -684,4 +681,10 @@ public function resolveColor($color) : int
$color = $color instanceof ImageColor ? $color->toRGBA() : \array_values($color);
return \imagecolorallocatealpha($this->image, ...$color) ?: \imagecolorresolvealpha($this->image, ...$color);
}
+ private static function ensureExtension() : void
+ {
+ if (!\extension_loaded('gd')) {
+ throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
+ }
+ }
}
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/ImageColor.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/ImageColor.php
index 9194b7803..42fc9e082 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/ImageColor.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/ImageColor.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Represent RGB color (0..255) with opacity (0..1).
*/
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/ImageType.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/ImageType.php
index 7654a0169..a4c521312 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/ImageType.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/ImageType.php
@@ -5,7 +5,7 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
/**
* Type of image file.
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Iterables.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Iterables.php
index 07d97f14c..da58b591e 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Iterables.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Iterables.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Utilities for iterables.
*/
@@ -42,10 +42,11 @@ public static function containsKey(iterable $iterable, $key) : bool
}
/**
* Returns the first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null.
- * The $predicate has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`.
- * @template T
- * @param iterable $iterable
- * @return ?T
+ * @template K
+ * @template V
+ * @param iterable $iterable
+ * @param ?callable(V, K, iterable): bool $predicate
+ * @return ?V
*/
public static function first(iterable $iterable, ?callable $predicate = null, ?callable $else = null)
{
@@ -58,10 +59,11 @@ public static function first(iterable $iterable, ?callable $predicate = null, ?c
}
/**
* Returns the key of first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null.
- * The $predicate has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`.
- * @template T
- * @param iterable $iterable
- * @return ?T
+ * @template K
+ * @template V
+ * @param iterable $iterable
+ * @param ?callable(V, K, iterable): bool $predicate
+ * @return ?K
*/
public static function firstKey(iterable $iterable, ?callable $predicate = null, ?callable $else = null)
{
@@ -73,11 +75,10 @@ public static function firstKey(iterable $iterable, ?callable $predicate = null,
return $else ? $else() : null;
}
/**
- * Tests whether at least one element in the iterator passes the test implemented by the
- * provided callback with signature `function (mixed $value, mixed $key, iterable $iterable): bool`.
+ * Tests whether at least one element in the iterator passes the test implemented by the provided function.
* @template K
* @template V
- * @param iterable $iterable
+ * @param iterable $iterable
* @param callable(V, K, iterable): bool $predicate
*/
public static function some(iterable $iterable, callable $predicate) : bool
@@ -90,11 +91,10 @@ public static function some(iterable $iterable, callable $predicate) : bool
return \false;
}
/**
- * Tests whether all elements in the iterator pass the test implemented by the provided function,
- * which has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`.
+ * Tests whether all elements in the iterator pass the test implemented by the provided function.
* @template K
* @template V
- * @param iterable $iterable
+ * @param iterable $iterable
* @param callable(V, K, iterable): bool $predicate
*/
public static function every(iterable $iterable, callable $predicate) : bool
@@ -108,11 +108,10 @@ public static function every(iterable $iterable, callable $predicate) : bool
}
/**
* Iterator that filters elements according to a given $predicate. Maintains original keys.
- * The callback has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`.
* @template K
* @template V
- * @param iterable $iterable
- * @param callable(V, K, iterable): bool $predicate
+ * @param iterable $iterable
+ * @param callable(V, K, iterable): bool $predicate
* @return \Generator
*/
public static function filter(iterable $iterable, callable $predicate) : \Generator
@@ -125,12 +124,11 @@ public static function filter(iterable $iterable, callable $predicate) : \Genera
}
/**
* Iterator that transforms values by calling $transformer. Maintains original keys.
- * The callback has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`.
* @template K
* @template V
* @template R
- * @param iterable $iterable
- * @param callable(V, K, iterable): R $transformer
+ * @param iterable $iterable
+ * @param callable(V, K, iterable): R $transformer
* @return \Generator
*/
public static function map(iterable $iterable, callable $transformer) : \Generator
@@ -139,4 +137,89 @@ public static function map(iterable $iterable, callable $transformer) : \Generat
(yield $k => $transformer($v, $k, $iterable));
}
}
+ /**
+ * Iterator that transforms keys and values by calling $transformer. If it returns null, the element is skipped.
+ * @template K
+ * @template V
+ * @template ResV
+ * @template ResK
+ * @param iterable $iterable
+ * @param callable(V, K, iterable): ?array{ResV, ResK} $transformer
+ * @return \Generator
+ */
+ public static function mapWithKeys(iterable $iterable, callable $transformer) : \Generator
+ {
+ foreach ($iterable as $k => $v) {
+ $pair = $transformer($v, $k, $iterable);
+ if ($pair) {
+ (yield $pair[0] => $pair[1]);
+ }
+ }
+ }
+ /**
+ * Wraps around iterator and caches its keys and values during iteration.
+ * This allows the data to be re-iterated multiple times.
+ * @template K
+ * @template V
+ * @param iterable $iterable
+ * @return \IteratorAggregate
+ */
+ public static function memoize(iterable $iterable) : iterable
+ {
+ return new class(self::toIterator($iterable)) implements \IteratorAggregate
+ {
+ /**
+ * @var \Iterator
+ */
+ private $iterator;
+ /**
+ * @var mixed[]
+ */
+ private $cache = [];
+ public function __construct(\Iterator $iterator, array $cache = [])
+ {
+ $this->iterator = $iterator;
+ $this->cache = $cache;
+ }
+ public function getIterator() : \Generator
+ {
+ if (!$this->cache) {
+ $this->iterator->rewind();
+ }
+ $i = 0;
+ while (\true) {
+ if (isset($this->cache[$i])) {
+ [$k, $v] = $this->cache[$i];
+ } elseif ($this->iterator->valid()) {
+ $k = $this->iterator->key();
+ $v = $this->iterator->current();
+ $this->iterator->next();
+ $this->cache[$i] = [$k, $v];
+ } else {
+ break;
+ }
+ (yield $k => $v);
+ $i++;
+ }
+ }
+ };
+ }
+ /**
+ * Creates an iterator from anything that is iterable.
+ * @template K
+ * @template V
+ * @param iterable $iterable
+ * @return \Iterator
+ */
+ public static function toIterator(iterable $iterable) : \Iterator
+ {
+ switch (\true) {
+ case $iterable instanceof \Iterator:
+ return $iterable;
+ case $iterable instanceof \IteratorAggregate:
+ return self::toIterator($iterable->getIterator());
+ case \is_array($iterable):
+ return new \ArrayIterator($iterable);
+ }
+ }
}
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Json.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Json.php
index a1f58bde9..24608ea37 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Json.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Json.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* JSON encoder and decoder.
*/
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/ObjectHelpers.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/ObjectHelpers.php
index 122f93e7d..edad04521 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/ObjectHelpers.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/ObjectHelpers.php
@@ -5,10 +5,10 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
-use RectorPrefix202405\Nette\MemberAccessException;
+use RectorPrefix202410\Nette;
+use RectorPrefix202410\Nette\MemberAccessException;
/**
* Nette\SmartObject helpers.
* @internal
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Paginator.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Paginator.php
index 8ea6bf980..bea1c463c 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Paginator.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Paginator.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Paginating math.
*
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Random.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Random.php
index 2cd0d8a8d..70d7ee5fa 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Random.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Random.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
use Random\Randomizer;
/**
* Secure random string generator.
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Reflection.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Reflection.php
index 21fbb73b3..9e11d7471 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Reflection.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Reflection.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* PHP reflection helpers.
*/
@@ -75,7 +75,7 @@ public static function getMethodDeclaringMethod(\ReflectionMethod $method) : \Re
return $method;
}
$hash = [$method->getFileName(), $method->getStartLine(), $method->getEndLine()];
- if (($alias = $decl->getTraitAliases()[$method->name] ?? null) && ($m = new \ReflectionMethod($alias)) && $hash === [$m->getFileName(), $m->getStartLine(), $m->getEndLine()]) {
+ if (($alias = $decl->getTraitAliases()[$method->name] ?? null) && ($m = new \ReflectionMethod(...\explode('::', $alias, 2))) && $hash === [$m->getFileName(), $m->getStartLine(), $m->getEndLine()]) {
return self::getMethodDeclaringMethod($m);
}
foreach ($decl->getTraits() as $trait) {
@@ -91,7 +91,7 @@ public static function getMethodDeclaringMethod(\ReflectionMethod $method) : \Re
public static function areCommentsAvailable() : bool
{
static $res;
- return $res ?? ($res = (bool) (new \ReflectionMethod(__METHOD__))->getDocComment());
+ return $res ?? ($res = (bool) (new \ReflectionMethod(self::class, __FUNCTION__))->getDocComment());
}
public static function toString(\Reflector $ref) : string
{
@@ -100,7 +100,7 @@ public static function toString(\Reflector $ref) : string
} elseif ($ref instanceof \ReflectionMethod) {
return $ref->getDeclaringClass()->name . '::' . $ref->name . '()';
} elseif ($ref instanceof \ReflectionFunction) {
- return $ref->name . '()';
+ return \PHP_VERSION_ID >= 80200 && $ref->isAnonymous() ? '{closure}()' : $ref->name . '()';
} elseif ($ref instanceof \ReflectionProperty) {
return self::getPropertyDeclaringClass($ref)->name . '::$' . $ref->name;
} elseif ($ref instanceof \ReflectionParameter) {
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/ReflectionMethod.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/ReflectionMethod.php
index 6025eb55b..e65b7cbc3 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/ReflectionMethod.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/ReflectionMethod.php
@@ -5,7 +5,7 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
/**
* ReflectionMethod preserving the original class name.
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Strings.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Strings.php
index 09807fdf3..cc29a932e 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Strings.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Strings.php
@@ -5,10 +5,10 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\JetBrains\PhpStorm\Language;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\JetBrains\PhpStorm\Language;
+use RectorPrefix202410\Nette;
use function is_array, is_object, strlen;
/**
* String tools library.
@@ -486,6 +486,7 @@ public static function match(
/**
* Searches the string for all occurrences matching the regular expression and
* returns an array of arrays containing the found expression and each subexpression.
+ * @return ($lazy is true ? \Generator : array[])
* @param bool|int $captureOffset
*/
public static function matchAll(
@@ -498,17 +499,35 @@ public static function matchAll(
int $offset = 0,
bool $unmatchedAsNull = \false,
bool $patternOrder = \false,
- bool $utf8 = \false
- ) : array
+ bool $utf8 = \false,
+ bool $lazy = \false
+ )
{
- $flags = \is_int($captureOffset) ? $captureOffset : ($captureOffset ? \PREG_OFFSET_CAPTURE : 0) | ($unmatchedAsNull ? \PREG_UNMATCHED_AS_NULL : 0) | ($patternOrder ? \PREG_PATTERN_ORDER : 0);
if ($utf8) {
$offset = strlen(self::substring($subject, 0, $offset));
$pattern .= 'u';
}
+ if ($lazy) {
+ $flags = \PREG_OFFSET_CAPTURE | ($unmatchedAsNull ? \PREG_UNMATCHED_AS_NULL : 0);
+ return (function () use($utf8, $captureOffset, $flags, $subject, $pattern, $offset) {
+ $counter = 0;
+ while ($offset <= strlen($subject) - ($counter ? 1 : 0) && self::pcre('preg_match', [$pattern, $subject, &$m, $flags, $offset])) {
+ $offset = $m[0][1] + \max(1, strlen($m[0][0]));
+ if (!$captureOffset) {
+ $m = \array_map(function ($item) {
+ return $item[0];
+ }, $m);
+ } elseif ($utf8) {
+ $m = self::bytesToChars($subject, [$m])[0];
+ }
+ (yield $counter++ => $m);
+ }
+ })();
+ }
if ($offset > strlen($subject)) {
return [];
}
+ $flags = \is_int($captureOffset) ? $captureOffset : ($captureOffset ? \PREG_OFFSET_CAPTURE : 0) | ($unmatchedAsNull ? \PREG_UNMATCHED_AS_NULL : 0) | ($patternOrder ? \PREG_PATTERN_ORDER : 0);
self::pcre('preg_match_all', [$pattern, $subject, &$m, $flags & \PREG_PATTERN_ORDER ? $flags : $flags | \PREG_SET_ORDER, $offset]);
return $utf8 && $captureOffset ? self::bytesToChars($subject, $m) : $m;
}
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Type.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Type.php
index 4565d38e1..c89b17456 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Type.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Type.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* PHP type reflection.
*/
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/Validators.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/Validators.php
index 545477703..20122a6a7 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/Validators.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/Validators.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
/**
* Validation utilities.
*/
diff --git a/vendor/rector/rector/vendor/nette/utils/src/Utils/exceptions.php b/vendor/rector/rector/vendor/nette/utils/src/Utils/exceptions.php
index c5b9729c4..e3ce4eb7e 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/Utils/exceptions.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/Utils/exceptions.php
@@ -5,7 +5,7 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
/**
* The exception that is thrown when an image error occurs.
diff --git a/vendor/rector/rector/vendor/nette/utils/src/compatibility.php b/vendor/rector/rector/vendor/nette/utils/src/compatibility.php
index 590dbb5ff..7573196c5 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/compatibility.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/compatibility.php
@@ -5,9 +5,9 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette\Utils;
+namespace RectorPrefix202410\Nette\Utils;
-use RectorPrefix202405\Nette;
+use RectorPrefix202410\Nette;
if (\false) {
/** @deprecated use Nette\HtmlStringable */
interface IHtmlString extends Nette\HtmlStringable
@@ -16,7 +16,7 @@ interface IHtmlString extends Nette\HtmlStringable
} elseif (!\interface_exists(IHtmlString::class)) {
\class_alias(Nette\HtmlStringable::class, IHtmlString::class);
}
-namespace RectorPrefix202405\Nette\Localization;
+namespace RectorPrefix202410\Nette\Localization;
if (\false) {
/** @deprecated use Nette\Localization\Translator */
diff --git a/vendor/rector/rector/vendor/nette/utils/src/exceptions.php b/vendor/rector/rector/vendor/nette/utils/src/exceptions.php
index cfa90f2bc..b24bc6117 100644
--- a/vendor/rector/rector/vendor/nette/utils/src/exceptions.php
+++ b/vendor/rector/rector/vendor/nette/utils/src/exceptions.php
@@ -5,7 +5,7 @@
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
declare (strict_types=1);
-namespace RectorPrefix202405\Nette;
+namespace RectorPrefix202410\Nette;
/**
* The exception that is thrown when the value of an argument is
diff --git a/vendor/rector/rector/vendor/nikic/php-parser/PATCHES.txt b/vendor/rector/rector/vendor/nikic/php-parser/PATCHES.txt
index 03f744076..5719846b6 100644
--- a/vendor/rector/rector/vendor/nikic/php-parser/PATCHES.txt
+++ b/vendor/rector/rector/vendor/nikic/php-parser/PATCHES.txt
@@ -61,3 +61,7 @@ Source: https://raw.githubusercontent.com/rectorphp/vendor-patches/main/patches/
Source: https://raw.githubusercontent.com/rectorphp/vendor-patches/main/patches/nikic-php-parser-lib-phpparser-node-stmt-namespace-php.patch
+15
+Source: https://raw.githubusercontent.com/rectorphp/vendor-patches/main/patches/nikic-php-parser-lib-phpparser-nodetraverser-php.patch
+
+
diff --git a/vendor/rector/rector/vendor/nikic/php-parser/bin/php-parse b/vendor/rector/rector/vendor/nikic/php-parser/bin/php-parse
index 14cbc88b9..5050b6680 100755
--- a/vendor/rector/rector/vendor/nikic/php-parser/bin/php-parse
+++ b/vendor/rector/rector/vendor/nikic/php-parser/bin/php-parse
@@ -1,6 +1,6 @@
#!/usr/bin/env php
name));
+ }
throw new \LogicException('Invalid value');
}
/**
diff --git a/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php b/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
index 165b8367d..56d22cccb 100644
--- a/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
+++ b/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
@@ -109,7 +109,8 @@ protected function traverseNode(\PhpParser\Node $node) : \PhpParser\Node
} elseif ($subNode instanceof \PhpParser\Node) {
$traverseChildren = \true;
$breakVisitorIndex = null;
- foreach ($this->visitors as $visitorIndex => $visitor) {
+ $visitors = $this->getVisitorsForNode($subNode);
+ foreach ($visitors as $visitorIndex => $visitor) {
$return = $visitor->enterNode($subNode);
if (null !== $return) {
if ($return instanceof \PhpParser\Node) {
@@ -135,7 +136,7 @@ protected function traverseNode(\PhpParser\Node $node) : \PhpParser\Node
break;
}
}
- foreach ($this->visitors as $visitorIndex => $visitor) {
+ foreach ($visitors as $visitorIndex => $visitor) {
$return = $visitor->leaveNode($subNode);
if (null !== $return) {
if ($return instanceof \PhpParser\Node) {
@@ -172,7 +173,8 @@ protected function traverseArray(array $nodes) : array
if ($node instanceof \PhpParser\Node) {
$traverseChildren = \true;
$breakVisitorIndex = null;
- foreach ($this->visitors as $visitorIndex => $visitor) {
+ $visitors = $this->getVisitorsForNode($node);
+ foreach ($visitors as $visitorIndex => $visitor) {
$return = $visitor->enterNode($node);
if (null !== $return) {
if ($return instanceof \PhpParser\Node) {
@@ -198,7 +200,7 @@ protected function traverseArray(array $nodes) : array
break;
}
}
- foreach ($this->visitors as $visitorIndex => $visitor) {
+ foreach ($visitors as $visitorIndex => $visitor) {
$return = $visitor->leaveNode($node);
if (null !== $return) {
if ($return instanceof \PhpParser\Node) {
@@ -234,6 +236,13 @@ protected function traverseArray(array $nodes) : array
}
return $nodes;
}
+ /**
+ * @return NodeVisitor[]
+ */
+ public function getVisitorsForNode(\PhpParser\Node $node)
+ {
+ return $this->visitors;
+ }
private function ensureReplacementReasonable($old, $new)
{
if ($old instanceof \PhpParser\Node\Stmt && $new instanceof \PhpParser\Node\Expr) {
diff --git a/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php b/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
index d2b38cdbc..187660dd3 100644
--- a/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
+++ b/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
@@ -24,19 +24,19 @@ class Php5 extends \PhpParser\ParserAbstract
protected $defaultAction = -32766;
protected $unexpectedTokenRule = 32767;
protected $YY2TBLSTATE = 415;
- protected $numNonLeafStates = 663;
+ protected $numNonLeafStates = 664;
protected $symbolToName = array("EOF", "error", "T_THROW", "T_INCLUDE", "T_INCLUDE_ONCE", "T_EVAL", "T_REQUIRE", "T_REQUIRE_ONCE", "','", "T_LOGICAL_OR", "T_LOGICAL_XOR", "T_LOGICAL_AND", "T_PRINT", "T_YIELD", "T_DOUBLE_ARROW", "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", "T_MUL_EQUAL", "T_DIV_EQUAL", "T_CONCAT_EQUAL", "T_MOD_EQUAL", "T_AND_EQUAL", "T_OR_EQUAL", "T_XOR_EQUAL", "T_SL_EQUAL", "T_SR_EQUAL", "T_POW_EQUAL", "T_COALESCE_EQUAL", "'?'", "':'", "T_COALESCE", "T_BOOLEAN_OR", "T_BOOLEAN_AND", "'|'", "'^'", "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", "T_IS_EQUAL", "T_IS_NOT_EQUAL", "T_IS_IDENTICAL", "T_IS_NOT_IDENTICAL", "T_SPACESHIP", "'<'", "T_IS_SMALLER_OR_EQUAL", "'>'", "T_IS_GREATER_OR_EQUAL", "T_SL", "T_SR", "'+'", "'-'", "'.'", "'*'", "'/'", "'%'", "'!'", "T_INSTANCEOF", "'~'", "T_INC", "T_DEC", "T_INT_CAST", "T_DOUBLE_CAST", "T_STRING_CAST", "T_ARRAY_CAST", "T_OBJECT_CAST", "T_BOOL_CAST", "T_UNSET_CAST", "'@'", "T_POW", "'['", "T_NEW", "T_CLONE", "T_EXIT", "T_IF", "T_ELSEIF", "T_ELSE", "T_ENDIF", "T_LNUMBER", "T_DNUMBER", "T_STRING", "T_STRING_VARNAME", "T_VARIABLE", "T_NUM_STRING", "T_INLINE_HTML", "T_ENCAPSED_AND_WHITESPACE", "T_CONSTANT_ENCAPSED_STRING", "T_ECHO", "T_DO", "T_WHILE", "T_ENDWHILE", "T_FOR", "T_ENDFOR", "T_FOREACH", "T_ENDFOREACH", "T_DECLARE", "T_ENDDECLARE", "T_AS", "T_SWITCH", "T_MATCH", "T_ENDSWITCH", "T_CASE", "T_DEFAULT", "T_BREAK", "T_CONTINUE", "T_GOTO", "T_FUNCTION", "T_FN", "T_CONST", "T_RETURN", "T_TRY", "T_CATCH", "T_FINALLY", "T_USE", "T_INSTEADOF", "T_GLOBAL", "T_STATIC", "T_ABSTRACT", "T_FINAL", "T_PRIVATE", "T_PROTECTED", "T_PUBLIC", "T_READONLY", "T_VAR", "T_UNSET", "T_ISSET", "T_EMPTY", "T_HALT_COMPILER", "T_CLASS", "T_TRAIT", "T_INTERFACE", "T_EXTENDS", "T_IMPLEMENTS", "T_OBJECT_OPERATOR", "T_LIST", "T_ARRAY", "T_CALLABLE", "T_CLASS_C", "T_TRAIT_C", "T_METHOD_C", "T_FUNC_C", "T_LINE", "T_FILE", "T_START_HEREDOC", "T_END_HEREDOC", "T_DOLLAR_OPEN_CURLY_BRACES", "T_CURLY_OPEN", "T_PAAMAYIM_NEKUDOTAYIM", "T_NAMESPACE", "T_NS_C", "T_DIR", "T_NS_SEPARATOR", "T_ELLIPSIS", "T_NAME_FULLY_QUALIFIED", "T_NAME_QUALIFIED", "T_NAME_RELATIVE", "';'", "'{'", "'}'", "'('", "')'", "'\$'", "'`'", "']'", "'\"'", "T_ENUM", "T_NULLSAFE_OBJECT_OPERATOR", "T_ATTRIBUTE");
protected $tokenToSymbol = array(0, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 56, 164, 168, 161, 55, 168, 168, 159, 160, 53, 50, 8, 51, 52, 54, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 31, 156, 44, 16, 46, 30, 68, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 70, 168, 163, 36, 168, 162, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 157, 35, 158, 58, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 49, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 165, 131, 132, 133, 166, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 167);
- protected $action = array(700, 670, 671, 672, 673, 674, 286, 675, 676, 677, 713, 714, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 245, 246, 242, 243, 244, -32766, -32766, 678, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 1229, 245, 246, 1230, 679, 680, 681, 682, 683, 684, 685, 899, 900, 747, -32766, -32766, -32766, -32766, -32766, -32766, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 716, 739, 717, 718, 719, 720, 708, 709, 710, 738, 711, 712, 697, 698, 699, 701, 702, 703, 741, 742, 743, 744, 745, 746, 875, 704, 705, 706, 707, 737, 728, 726, 727, 723, 724, 1046, 715, 721, 722, 729, 730, 732, 731, 733, 734, 55, 56, 425, 57, 58, 725, 736, 735, 755, 59, 60, -226, 61, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 337, -32767, -32767, -32767, -32767, 29, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 620, -32766, -32766, -32766, -32766, 62, 63, 1046, -32766, -32766, -32766, 64, 419, 65, 294, 295, 66, 67, 68, 69, 70, 71, 72, 73, 823, 25, 302, 74, 418, 984, 986, 669, 668, 1100, 1101, 1078, 755, 755, 767, 1220, 768, 470, -32766, -32766, -32766, 341, 749, 824, 54, -32767, -32767, -32767, -32767, 98, 99, 100, 101, 102, 220, 221, 222, 362, 876, -32766, 27, -32766, -32766, -32766, -32766, -32766, 1046, 493, 126, 1080, 1079, 1081, 370, 1068, 930, 207, 478, 479, 952, 953, 954, 951, 950, 949, 128, 480, 481, 803, 1106, 1107, 1108, 1109, 1103, 1104, 319, 32, 297, 10, 211, -515, 1110, 1105, 669, 668, 1080, 1079, 1081, 220, 221, 222, 41, 364, 341, 334, 421, 336, 426, -128, -128, -128, 313, 1046, 469, -4, 824, 54, 812, 770, 207, 40, 21, 427, -128, 471, -128, 472, -128, 473, -128, 1046, 428, 220, 221, 222, -32766, 33, 34, 429, 361, 327, 52, 35, 474, -32766, -32766, -32766, 342, 357, 358, 475, 476, 48, 207, 249, 669, 668, 477, 443, 300, 795, 846, 430, 431, 28, -32766, 814, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 952, 953, 954, 951, 950, 949, 422, 755, 424, 426, 826, 634, -128, -32766, -32766, 469, 824, 54, 288, 812, 1151, 755, 40, 21, 427, 317, 471, 345, 472, 129, 473, 9, 1186, 428, 769, 360, 324, 905, 33, 34, 429, 361, 1046, 415, 35, 474, 944, 1068, 315, 125, 357, 358, 475, 476, -32766, -32766, -32766, 926, 302, 477, 121, 1068, 759, 846, 430, 431, 669, 668, 423, 755, 1152, 809, 1046, 480, 766, -32766, 805, -32766, -32766, -32766, -32766, -261, 127, 347, 436, 841, 341, 1078, 1200, 426, 446, 826, 634, -4, 807, 469, 824, 54, 436, 812, 341, 755, 40, 21, 427, 444, 471, 130, 472, 1068, 473, 346, 767, 428, 768, -211, -211, -211, 33, 34, 429, 361, 308, 1076, 35, 474, -32766, -32766, -32766, 1046, 357, 358, 475, 476, -32766, -32766, -32766, 906, 120, 477, 539, 1068, 795, 846, 430, 431, 436, -32766, 341, -32766, -32766, -32766, 1046, 480, 810, -32766, 925, -32766, -32766, 754, 1080, 1079, 1081, 49, -32766, -32766, -32766, 749, 751, 426, 1201, 826, 634, -211, 30, 469, 669, 668, 436, 812, 341, 75, 40, 21, 427, -32766, 471, 1064, 472, 124, 473, 669, 668, 428, 212, -210, -210, -210, 33, 34, 429, 361, 51, 1186, 35, 474, 755, -32766, -32766, -32766, 357, 358, 475, 476, 213, 824, 54, 221, 222, 477, 20, 581, 795, 846, 430, 431, 220, 221, 222, 755, 222, 247, 78, 79, 80, 81, 341, 207, 517, 103, 104, 105, 752, 307, 131, 637, 1068, 207, 341, 207, 122, 826, 634, -210, 36, 106, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 1112, 307, 346, 436, 214, 341, 824, 54, 426, 123, 250, 129, 134, 106, 469, -32766, 572, 1112, 812, 245, 246, 40, 21, 427, 251, 471, 252, 472, 341, 473, 453, 22, 428, 207, 899, 900, 638, 33, 34, 429, 824, 54, -86, 35, 474, 220, 221, 222, 314, 357, 358, 100, 101, 102, 239, 240, 241, 645, 477, -230, 458, 589, 135, 374, 596, 597, 207, 760, 640, 648, 642, 941, 654, 929, 662, 822, 133, 307, 837, 426, -32766, 106, 749, 43, 44, 469, 45, 442, 46, 812, 826, 634, 40, 21, 427, 47, 471, 50, 472, 53, 473, 132, 608, 428, 302, 604, -280, -32766, 33, 34, 429, 824, 54, 426, 35, 474, 755, 957, -84, 469, 357, 358, 521, 812, 628, 363, 40, 21, 427, 477, 471, 575, 472, -515, 473, 847, 616, 428, -423, -32766, 11, 646, 33, 34, 429, 824, 54, 445, 35, 474, 462, 285, 578, 1111, 357, 358, 593, 369, 848, 594, 290, 826, 634, 477, 0, 0, 532, 0, 0, 325, 0, 0, 0, 0, 0, 651, 0, 0, 0, 322, 326, 0, 0, 0, 426, 0, 0, 0, 0, 323, 469, 316, 318, -516, 812, 862, 634, 40, 21, 427, 0, 471, 0, 472, 0, 473, 1158, 0, 428, 0, -414, 6, 7, 33, 34, 429, 824, 54, 426, 35, 474, 12, 14, 373, 469, 357, 358, -424, 812, 563, 754, 40, 21, 427, 477, 471, 248, 472, 839, 473, 38, 39, 428, 657, 658, 765, 813, 33, 34, 429, 821, 800, 815, 35, 474, 215, 216, 878, 869, 357, 358, 217, 870, 218, 798, 863, 826, 634, 477, 860, 858, 936, 937, 934, 820, 209, 804, 806, 808, 811, 933, 763, 764, 1100, 1101, 935, 659, 78, 335, 426, 359, 1102, 635, 639, 641, 469, 643, 644, 647, 812, 826, 634, 40, 21, 427, 649, 471, 650, 472, 652, 473, 653, 636, 428, 796, 1226, 1228, 762, 33, 34, 429, 215, 216, 845, 35, 474, 761, 217, 844, 218, 357, 358, 1227, 843, 1060, 831, 1048, 842, 1049, 477, 559, 209, 1106, 1107, 1108, 1109, 1103, 1104, 398, 1100, 1101, 829, 942, 867, 1110, 1105, 868, 1102, 457, 1225, 1194, 1192, 1177, 1157, 219, 1190, 1091, 917, 1198, 1188, 0, 826, 634, 24, -433, 26, 31, 37, 42, 76, 77, 210, 287, 292, 293, 308, 309, 310, 311, 339, 356, 416, 0, -227, -226, 16, 17, 18, 393, 454, 461, 463, 467, 553, 625, 1051, 559, 1054, 1106, 1107, 1108, 1109, 1103, 1104, 398, 907, 1116, 1050, 1026, 564, 1110, 1105, 1025, 1093, 1055, 0, 1044, 0, 1057, 1056, 219, 1059, 1058, 1075, 0, 1191, 1176, 1172, 1189, 1090, 1223, 1117, 1171, 600);
- protected $actionCheck = array(2, 3, 4, 5, 6, 7, 14, 9, 10, 11, 12, 13, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 69, 70, 53, 54, 55, 9, 10, 57, 30, 116, 32, 33, 34, 35, 36, 37, 38, 80, 69, 70, 83, 71, 72, 73, 74, 75, 76, 77, 135, 136, 80, 33, 34, 35, 36, 37, 38, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 31, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 13, 134, 135, 136, 137, 138, 139, 140, 141, 142, 3, 4, 5, 6, 7, 148, 149, 150, 82, 12, 13, 160, 15, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 8, 44, 45, 46, 47, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 80, 33, 34, 35, 36, 50, 51, 13, 9, 10, 11, 56, 128, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, 72, 73, 59, 60, 37, 38, 78, 79, 80, 82, 82, 106, 85, 108, 86, 9, 10, 11, 161, 80, 1, 2, 44, 45, 46, 47, 48, 49, 50, 51, 52, 9, 10, 11, 106, 156, 30, 8, 32, 33, 34, 35, 36, 13, 116, 8, 153, 154, 155, 8, 122, 158, 30, 125, 126, 116, 117, 118, 119, 120, 121, 31, 134, 135, 156, 137, 138, 139, 140, 141, 142, 143, 145, 146, 8, 8, 133, 149, 150, 37, 38, 153, 154, 155, 9, 10, 11, 159, 8, 161, 162, 8, 164, 74, 75, 76, 77, 8, 13, 80, 0, 1, 2, 84, 158, 30, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 13, 98, 9, 10, 11, 9, 103, 104, 105, 106, 8, 70, 109, 110, 9, 10, 11, 8, 115, 116, 117, 118, 70, 30, 31, 37, 38, 124, 31, 8, 127, 128, 129, 130, 8, 30, 156, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 116, 117, 118, 119, 120, 121, 8, 82, 8, 74, 156, 157, 158, 33, 34, 80, 1, 2, 8, 84, 163, 82, 87, 88, 89, 133, 91, 70, 93, 152, 95, 108, 82, 98, 158, 8, 113, 160, 103, 104, 105, 106, 13, 108, 109, 110, 123, 122, 113, 157, 115, 116, 117, 118, 9, 10, 11, 156, 71, 124, 157, 122, 127, 128, 129, 130, 37, 38, 8, 82, 160, 156, 13, 134, 156, 30, 156, 32, 33, 34, 35, 158, 157, 148, 159, 122, 161, 80, 1, 74, 133, 156, 157, 158, 156, 80, 1, 2, 159, 84, 161, 82, 87, 88, 89, 157, 91, 157, 93, 122, 95, 161, 106, 98, 108, 100, 101, 102, 103, 104, 105, 106, 159, 116, 109, 110, 9, 10, 11, 13, 115, 116, 117, 118, 9, 10, 11, 160, 16, 124, 81, 122, 127, 128, 129, 130, 159, 30, 161, 32, 33, 34, 13, 134, 156, 30, 156, 32, 33, 153, 153, 154, 155, 70, 9, 10, 11, 80, 80, 74, 160, 156, 157, 158, 14, 80, 37, 38, 159, 84, 161, 152, 87, 88, 89, 30, 91, 160, 93, 14, 95, 37, 38, 98, 16, 100, 101, 102, 103, 104, 105, 106, 70, 82, 109, 110, 82, 33, 34, 35, 115, 116, 117, 118, 16, 1, 2, 10, 11, 124, 160, 85, 127, 128, 129, 130, 9, 10, 11, 82, 11, 14, 157, 9, 10, 11, 161, 30, 85, 53, 54, 55, 154, 57, 157, 31, 122, 30, 161, 30, 157, 156, 157, 158, 30, 69, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 144, 57, 161, 159, 16, 161, 1, 2, 74, 157, 16, 152, 157, 69, 80, 116, 161, 144, 84, 69, 70, 87, 88, 89, 16, 91, 16, 93, 161, 95, 75, 76, 98, 30, 135, 136, 31, 103, 104, 105, 1, 2, 31, 109, 110, 9, 10, 11, 31, 115, 116, 50, 51, 52, 50, 51, 52, 31, 124, 160, 75, 76, 101, 102, 111, 112, 30, 156, 157, 31, 31, 156, 157, 156, 157, 31, 31, 57, 38, 74, 33, 69, 80, 70, 70, 80, 70, 89, 70, 84, 156, 157, 87, 88, 89, 70, 91, 70, 93, 70, 95, 70, 96, 98, 71, 77, 82, 85, 103, 104, 105, 1, 2, 74, 109, 110, 82, 82, 97, 80, 115, 116, 85, 84, 92, 106, 87, 88, 89, 124, 91, 90, 93, 133, 95, 128, 94, 98, 147, 116, 97, 31, 103, 104, 105, 1, 2, 97, 109, 110, 97, 97, 100, 144, 115, 116, 100, 106, 128, 113, 161, 156, 157, 124, -1, -1, 151, -1, -1, 114, -1, -1, -1, -1, -1, 31, -1, -1, -1, 131, 131, -1, -1, -1, 74, -1, -1, -1, -1, 132, 80, 133, 133, 133, 84, 156, 157, 87, 88, 89, -1, 91, -1, 93, -1, 95, 144, -1, 98, -1, 147, 147, 147, 103, 104, 105, 1, 2, 74, 109, 110, 147, 147, 147, 80, 115, 116, 147, 84, 151, 153, 87, 88, 89, 124, 91, 31, 93, 152, 95, 156, 156, 98, 156, 156, 156, 156, 103, 104, 105, 156, 156, 156, 109, 110, 50, 51, 156, 156, 115, 116, 56, 156, 58, 156, 156, 156, 157, 124, 156, 156, 156, 156, 156, 156, 70, 156, 156, 156, 156, 156, 156, 156, 78, 79, 156, 158, 157, 157, 74, 157, 86, 157, 157, 157, 80, 157, 157, 157, 84, 156, 157, 87, 88, 89, 157, 91, 157, 93, 157, 95, 157, 157, 98, 158, 158, 158, 158, 103, 104, 105, 50, 51, 158, 109, 110, 158, 56, 158, 58, 115, 116, 158, 158, 158, 158, 158, 158, 158, 124, 135, 70, 137, 138, 139, 140, 141, 142, 143, 78, 79, 158, 158, 158, 149, 150, 158, 86, 158, 158, 158, 158, 158, 164, 159, 158, 158, 158, 158, 158, -1, 156, 157, 159, 162, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, -1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 135, 160, 137, 138, 139, 140, 141, 142, 143, 160, 160, 160, 160, 160, 149, 150, 160, 160, 163, -1, 162, -1, 163, 163, 159, 163, 163, 163, -1, 163, 163, 163, 163, 163, 163, 163, 163, 163);
- protected $actionBase = array(0, 229, 310, 390, 470, 103, 325, 325, 784, -2, -2, 149, -2, -2, -2, 660, 765, 799, 765, 589, 694, 870, 870, 870, 252, 404, 404, 404, 514, 177, 177, 918, 434, 118, 295, 313, 240, 491, 491, 491, 491, 138, 138, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 89, 206, 773, 550, 535, 775, 776, 777, 912, 709, 913, 856, 857, 700, 858, 859, 862, 863, 864, 855, 865, 935, 866, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 322, 592, 285, 319, 232, 44, 691, 691, 691, 691, 691, 691, 691, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 582, 530, 530, 530, 594, 860, 658, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 500, -21, -21, 492, 702, 420, 355, 216, 549, 151, 26, 26, 331, 331, 331, 331, 331, 46, 46, 5, 5, 5, 5, 153, 188, 188, 188, 188, 121, 121, 121, 121, 314, 314, 394, 394, 362, 300, 298, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 67, 656, 656, 659, 659, 522, 554, 554, 554, 554, 679, -59, -59, 381, 462, 462, 462, 528, 717, 854, 382, 382, 382, 382, 382, 382, 561, 561, 561, -3, -3, -3, 692, 115, 137, 115, 137, 678, 732, 450, 732, 338, 677, -15, 510, 810, 468, 707, 850, 711, 853, 572, 735, 267, 529, 654, 674, 463, 529, 529, 529, 529, 654, 610, 640, 608, 463, 529, 463, 718, 323, 496, 89, 570, 507, 675, 778, 293, 670, 780, 290, 373, 332, 566, 278, 435, 733, 781, 914, 917, 385, 715, 675, 675, 675, 352, 511, 278, -8, 605, 605, 605, 605, 156, 605, 605, 605, 605, 251, 276, 375, 402, 779, 657, 657, 690, 872, 869, 869, 657, 689, 657, 690, 874, 874, 874, 874, 657, 657, 657, 657, 869, 869, 869, 688, 869, 239, 703, 704, 704, 874, 742, 743, 657, 657, 712, 869, 869, 869, 712, 695, 874, 701, 741, 277, 869, 874, 672, 689, 672, 657, 701, 672, 689, 689, 672, 22, 666, 668, 873, 875, 887, 790, 662, 685, 879, 880, 876, 878, 871, 699, 744, 745, 497, 669, 671, 673, 680, 719, 682, 713, 674, 667, 667, 667, 655, 720, 655, 667, 667, 667, 667, 667, 667, 667, 667, 916, 646, 731, 714, 653, 749, 553, 573, 791, 664, 811, 900, 893, 867, 919, 881, 898, 655, 920, 739, 247, 643, 882, 783, 786, 655, 883, 655, 792, 655, 902, 812, 686, 813, 814, 667, 910, 921, 923, 924, 925, 927, 928, 929, 930, 684, 931, 750, 696, 894, 299, 877, 718, 729, 705, 788, 751, 820, 328, 932, 823, 655, 655, 794, 785, 655, 795, 756, 740, 890, 757, 895, 933, 664, 708, 896, 655, 706, 825, 934, 328, 681, 683, 888, 661, 761, 886, 911, 885, 796, 649, 663, 829, 830, 831, 693, 763, 891, 892, 889, 764, 803, 665, 805, 697, 832, 807, 884, 768, 833, 834, 899, 676, 730, 710, 698, 687, 809, 835, 897, 769, 770, 771, 848, 772, 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 138, 138, 138, -2, -2, -2, -2, 0, 0, -2, 0, 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, -21, -21, -21, -21, 599, -21, -21, -21, -21, -21, -21, -21, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, -21, 599, 599, 599, -21, 382, -21, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 599, 0, 0, 599, -21, 599, -21, 599, -21, -21, 599, 599, 599, 599, 599, 599, 599, -21, -21, -21, -21, -21, -21, 0, 561, 561, 561, 561, -21, -21, -21, -21, 382, 382, 382, 382, 382, 382, 259, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 561, 561, -3, -3, 382, 382, 382, 382, 382, 259, 382, 382, 463, 689, 689, 689, 137, 137, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 463, 0, 463, 0, 382, 463, 689, 463, 657, 137, 689, 689, 463, 869, 616, 616, 616, 616, 328, 278, 0, 0, 689, 689, 0, 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, 869, 0, 0, 0, 0, 0, 667, 247, 0, 705, 335, 0, 0, 0, 0, 0, 0, 705, 335, 347, 347, 0, 684, 667, 667, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328);
- protected $actionDefault = array(3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 544, 544, 499, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 299, 299, 299, 32767, 32767, 32767, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 32767, 32767, 32767, 32767, 32767, 32767, 383, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 389, 549, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 364, 365, 367, 368, 298, 552, 533, 247, 390, 548, 297, 249, 327, 503, 32767, 32767, 32767, 329, 122, 258, 203, 502, 125, 296, 234, 382, 384, 328, 303, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 302, 458, 361, 360, 359, 460, 32767, 459, 496, 496, 499, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 325, 487, 486, 326, 456, 330, 457, 333, 461, 464, 331, 332, 349, 350, 347, 348, 351, 462, 463, 480, 481, 478, 479, 301, 352, 353, 354, 355, 482, 483, 484, 485, 32767, 32767, 543, 543, 32767, 32767, 282, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 340, 341, 471, 472, 32767, 238, 238, 238, 238, 283, 238, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 335, 336, 334, 466, 467, 465, 432, 32767, 32767, 32767, 434, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 504, 32767, 32767, 32767, 32767, 32767, 517, 421, 171, 32767, 413, 32767, 171, 171, 171, 171, 32767, 222, 224, 167, 32767, 171, 32767, 490, 32767, 32767, 32767, 32767, 522, 345, 32767, 32767, 116, 32767, 32767, 32767, 559, 32767, 517, 32767, 116, 32767, 32767, 32767, 32767, 358, 337, 338, 339, 32767, 32767, 521, 515, 474, 475, 476, 477, 32767, 468, 469, 470, 473, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 429, 435, 435, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 520, 519, 32767, 414, 498, 188, 186, 186, 32767, 208, 208, 32767, 32767, 190, 491, 510, 32767, 190, 173, 32767, 400, 175, 498, 32767, 32767, 240, 32767, 240, 32767, 400, 240, 32767, 32767, 240, 32767, 415, 439, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 379, 380, 493, 506, 32767, 507, 32767, 413, 343, 344, 346, 322, 32767, 324, 369, 370, 371, 372, 373, 374, 375, 377, 32767, 419, 32767, 422, 32767, 32767, 32767, 257, 32767, 557, 32767, 32767, 306, 557, 32767, 32767, 32767, 551, 32767, 32767, 300, 32767, 32767, 32767, 32767, 253, 32767, 169, 32767, 541, 32767, 558, 32767, 515, 32767, 342, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 516, 32767, 32767, 32767, 32767, 229, 32767, 452, 32767, 116, 32767, 32767, 32767, 189, 32767, 32767, 304, 248, 32767, 32767, 550, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 114, 32767, 170, 32767, 32767, 32767, 191, 32767, 32767, 515, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 295, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 515, 32767, 32767, 233, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 415, 32767, 276, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 127, 127, 3, 127, 127, 260, 3, 260, 127, 260, 260, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 216, 219, 208, 208, 164, 127, 127, 268);
- protected $goto = array(166, 140, 140, 140, 166, 187, 168, 144, 147, 141, 142, 143, 149, 163, 163, 163, 163, 144, 144, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 138, 159, 160, 161, 162, 184, 139, 185, 494, 495, 377, 496, 500, 501, 502, 503, 504, 505, 506, 507, 970, 164, 145, 146, 148, 171, 176, 186, 203, 253, 256, 258, 260, 263, 264, 265, 266, 267, 268, 269, 277, 278, 279, 280, 303, 304, 328, 329, 330, 394, 395, 396, 543, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 150, 151, 152, 167, 153, 169, 154, 204, 170, 155, 156, 157, 205, 158, 136, 621, 561, 757, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 1113, 629, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 758, 520, 531, 509, 656, 556, 1183, 750, 509, 592, 786, 1183, 888, 612, 613, 884, 617, 618, 624, 626, 631, 633, 817, 855, 855, 855, 855, 850, 856, 174, 891, 891, 1205, 1205, 177, 178, 179, 401, 402, 403, 404, 173, 202, 206, 208, 257, 259, 261, 262, 270, 271, 272, 273, 274, 275, 281, 282, 283, 284, 305, 306, 331, 332, 333, 406, 407, 408, 409, 175, 180, 254, 255, 181, 182, 183, 498, 498, 498, 498, 498, 498, 861, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 510, 586, 538, 601, 602, 510, 545, 546, 547, 548, 549, 550, 551, 552, 554, 587, 1209, 560, 350, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 400, 607, 537, 537, 569, 533, 909, 535, 535, 497, 499, 525, 541, 570, 573, 584, 591, 298, 296, 296, 296, 298, 289, 299, 611, 378, 511, 614, 595, 947, 375, 511, 437, 437, 437, 437, 437, 437, 1163, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 1077, 948, 338, 1175, 321, 1077, 898, 898, 898, 898, 606, 898, 898, 1217, 1217, 1202, 753, 576, 605, 756, 1077, 1077, 1077, 1077, 1077, 1077, 1069, 384, 384, 384, 391, 1217, 877, 859, 857, 859, 655, 466, 512, 886, 881, 753, 384, 753, 384, 968, 384, 895, 385, 588, 353, 414, 384, 1231, 1019, 542, 1197, 1197, 1197, 568, 1094, 386, 386, 386, 904, 915, 515, 1029, 19, 15, 372, 389, 915, 940, 448, 450, 632, 340, 1216, 1216, 1114, 615, 938, 840, 555, 775, 386, 913, 1070, 1073, 1074, 399, 1069, 1182, 660, 23, 1216, 773, 1182, 544, 603, 1066, 1219, 1071, 1174, 1071, 519, 1199, 1199, 1199, 1089, 1088, 1072, 343, 523, 534, 519, 519, 772, 351, 352, 13, 579, 583, 627, 1061, 388, 782, 562, 771, 515, 783, 1181, 3, 4, 918, 956, 865, 451, 574, 1160, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 514, 529, 0, 0, 0, 0, 514, 0, 529, 0, 0, 0, 0, 610, 513, 516, 439, 440, 1067, 619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 780, 1224, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 301);
- protected $gotoCheck = array(43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 57, 69, 15, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 128, 9, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 16, 102, 32, 69, 32, 32, 120, 6, 69, 32, 29, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 50, 69, 69, 69, 69, 69, 69, 27, 77, 77, 77, 77, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 119, 119, 119, 119, 119, 119, 33, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 67, 110, 67, 67, 119, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 142, 57, 72, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 51, 51, 51, 51, 51, 51, 84, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 5, 5, 5, 5, 5, 5, 5, 63, 46, 124, 63, 129, 98, 63, 124, 57, 57, 57, 57, 57, 57, 133, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 98, 127, 82, 127, 57, 57, 57, 57, 57, 49, 57, 57, 144, 144, 140, 11, 40, 40, 14, 57, 57, 57, 57, 57, 57, 82, 13, 13, 13, 48, 144, 14, 14, 14, 14, 14, 57, 14, 14, 14, 11, 13, 11, 13, 102, 13, 79, 11, 70, 70, 70, 13, 13, 103, 2, 9, 9, 9, 2, 34, 125, 125, 125, 81, 13, 13, 34, 34, 34, 34, 17, 13, 8, 8, 8, 8, 18, 143, 143, 8, 8, 8, 9, 34, 25, 125, 85, 82, 82, 82, 125, 82, 121, 74, 34, 143, 24, 121, 47, 34, 116, 143, 82, 82, 82, 47, 121, 121, 121, 126, 126, 82, 58, 58, 58, 47, 47, 23, 72, 72, 58, 62, 62, 62, 114, 12, 23, 12, 23, 13, 26, 121, 30, 30, 86, 100, 71, 65, 66, 132, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, 9, -1, 9, -1, -1, -1, -1, 13, 9, 9, 9, 9, 13, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5);
- protected $gotoBase = array(0, 0, -172, 0, 0, 353, 201, 0, 477, 149, 0, 110, 195, 117, 426, 112, 203, 140, 171, 0, 0, 0, 0, 168, 164, 157, 119, 27, 0, 205, -118, 0, -428, 266, 51, 0, 0, 0, 0, 0, 388, 0, 0, -24, 0, 0, 345, 484, 146, 133, 209, 75, 0, 0, 0, 0, 0, 107, 161, 0, 0, 0, 222, -77, 0, 106, 97, -343, 0, -94, 135, 123, -129, 0, 129, 0, 0, -50, 0, 143, 0, 159, 64, 0, 338, 132, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 121, 0, 165, 156, 0, 0, 0, 0, 0, 87, 273, 259, 0, 0, 114, 0, 150, 0, 0, -5, -91, 200, 0, 0, 84, 154, 202, 77, -48, 178, 0, 0, 93, 187, 0, 0, 0, 0, 0, 0, 136, 0, 286, 167, 102, 0, 0);
- protected $gotoDefault = array(-32768, 468, 664, 2, 665, 835, 740, 748, 598, 482, 630, 582, 380, 1193, 792, 793, 794, 381, 368, 483, 379, 410, 405, 781, 774, 776, 784, 172, 411, 787, 1, 789, 518, 825, 1020, 365, 797, 366, 590, 799, 527, 801, 802, 137, 382, 383, 528, 484, 390, 577, 816, 276, 387, 818, 367, 819, 828, 371, 465, 455, 460, 530, 557, 609, 432, 447, 571, 565, 536, 1086, 566, 864, 349, 872, 661, 880, 883, 485, 558, 894, 452, 902, 1099, 397, 908, 914, 919, 291, 922, 417, 412, 585, 927, 928, 5, 932, 622, 623, 8, 312, 955, 599, 969, 420, 1039, 1041, 486, 487, 522, 459, 508, 526, 488, 1062, 441, 413, 1065, 433, 489, 490, 434, 435, 1083, 355, 1168, 354, 449, 320, 1155, 580, 1118, 456, 1208, 1164, 348, 491, 492, 376, 1187, 392, 1203, 438, 1210, 1218, 344, 540, 567);
+ protected $action = array(701, 671, 672, 673, 674, 675, 286, 676, 677, 678, 714, 715, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 245, 246, 242, 243, 244, -32766, -32766, 679, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 1230, 245, 246, 1231, 680, 681, 682, 683, 684, 685, 686, 900, 901, 748, -32766, -32766, -32766, -32766, -32766, -32766, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 717, 740, 718, 719, 720, 721, 709, 710, 711, 739, 712, 713, 698, 699, 700, 702, 703, 704, 742, 743, 744, 745, 746, 747, 876, 705, 706, 707, 708, 738, 729, 727, 728, 724, 725, 1047, 716, 722, 723, 730, 731, 733, 732, 734, 735, 55, 56, 425, 57, 58, 726, 737, 736, 756, 59, 60, -226, 61, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 337, -32767, -32767, -32767, -32767, 29, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 621, -32766, -32766, -32766, -32766, 62, 63, 1047, -32766, -32766, -32766, 64, 419, 65, 294, 295, 66, 67, 68, 69, 70, 71, 72, 73, 824, 25, 302, 74, 418, 985, 987, 670, 669, 1101, 1102, 1079, 756, 756, 768, 1221, 769, 470, -32766, -32766, -32766, 341, 750, 825, 54, -32767, -32767, -32767, -32767, 98, 99, 100, 101, 102, 220, 221, 222, 362, 877, -32766, 27, -32766, -32766, -32766, -32766, -32766, 1047, 492, 126, 1081, 1080, 1082, 370, 1069, 931, 207, 478, 479, 953, 954, 955, 952, 951, 950, 128, 480, 481, 804, 1107, 1108, 1109, 1110, 1104, 1105, 319, 32, 297, 10, 211, -515, 1111, 1106, 670, 669, 1081, 1080, 1082, 220, 221, 222, 41, 364, 341, 334, 421, 336, 426, -128, -128, -128, 313, 1047, 469, -4, 825, 54, 813, 597, 207, 40, 21, 427, -128, 471, -128, 472, -128, 473, -128, 1047, 428, 220, 221, 222, -32766, 33, 34, 429, 361, 327, 52, 35, 474, -32766, -32766, -32766, 342, 357, 358, 475, 476, 48, 207, 249, 670, 669, 477, 443, 300, 796, 847, 430, 431, 28, -32766, 815, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 953, 954, 955, 952, 951, 950, 422, 756, 424, 426, 827, 635, -128, -32766, -32766, 469, 825, 54, 288, 813, 1152, 756, 40, 21, 427, 317, 471, 345, 472, 129, 473, 9, 1187, 428, 612, 360, 324, 906, 33, 34, 429, 361, 1047, 415, 35, 474, 945, 1069, 315, 125, 357, 358, 475, 476, -32766, -32766, -32766, 927, 302, 477, 121, 1069, 760, 847, 430, 431, 670, 669, 423, 756, 1153, 810, 1047, 480, 767, -32766, 806, -32766, -32766, -32766, -32766, -261, 127, 347, 436, 842, 341, 1079, 1201, 426, 446, 827, 635, -4, 808, 469, 825, 54, 436, 813, 341, 756, 40, 21, 427, 444, 471, 130, 472, 1069, 473, 346, 768, 428, 769, -211, -211, -211, 33, 34, 429, 361, 308, 1077, 35, 474, -32766, -32766, -32766, 1047, 357, 358, 475, 476, -32766, -32766, -32766, 907, 120, 477, 538, 1069, 796, 847, 430, 431, 436, -32766, 341, -32766, -32766, -32766, 1047, 480, 811, -32766, 926, -32766, -32766, 755, 1081, 1080, 1082, 49, -32766, -32766, -32766, 750, 752, 426, 1202, 827, 635, -211, 30, 469, 670, 669, 436, 813, 341, 75, 40, 21, 427, -32766, 471, 1065, 472, 124, 473, 670, 669, 428, 212, -210, -210, -210, 33, 34, 429, 361, 51, 1187, 35, 474, 756, -32766, -32766, -32766, 357, 358, 475, 476, 213, 825, 54, 221, 222, 477, 20, 580, 796, 847, 430, 431, 220, 221, 222, 756, 222, 247, 78, 79, 80, 81, 341, 207, 516, 103, 104, 105, 753, 307, 131, 638, 1069, 207, 341, 207, 122, 827, 635, -210, 36, 106, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 1113, 307, 346, 436, 214, 341, 825, 54, 426, 123, 250, 129, 134, 106, 469, -32766, 571, 1113, 813, 245, 246, 40, 21, 427, 251, 471, 252, 472, 341, 473, 453, 22, 428, 207, 900, 901, 639, 33, 34, 429, 825, 54, -86, 35, 474, 220, 221, 222, 314, 357, 358, 100, 101, 102, 239, 240, 241, 646, 477, -230, 458, 588, 135, 374, 595, 596, 207, 761, 641, 649, 643, 942, 655, 930, 663, 823, 133, 307, 838, 426, -32766, 106, 750, 43, 44, 469, 45, 442, 46, 813, 827, 635, 40, 21, 427, 47, 471, 50, 472, 53, 473, 132, 608, 428, 302, 604, -280, -32766, 33, 34, 429, 825, 54, 426, 35, 474, 756, 958, -84, 469, 357, 358, 520, 813, 629, 363, 40, 21, 427, 477, 471, 574, 472, -515, 473, 848, 617, 428, -423, -32766, 11, 647, 33, 34, 429, 825, 54, 445, 35, 474, 462, 285, 577, 1112, 357, 358, 592, 369, 849, 593, 290, 827, 635, 477, 0, 0, 531, 0, 0, 325, 0, 0, 0, 0, 0, 652, 0, 0, 0, 322, 326, 0, 0, 0, 426, 0, 0, 0, 0, 323, 469, 316, 318, -516, 813, 863, 635, 40, 21, 427, 0, 471, 0, 472, 0, 473, 1159, 0, 428, 0, -414, 6, 7, 33, 34, 429, 825, 54, 426, 35, 474, 12, 14, 373, 469, 357, 358, -424, 813, 562, 755, 40, 21, 427, 477, 471, 248, 472, 840, 473, 38, 39, 428, 658, 659, 814, 822, 33, 34, 429, 801, 816, 879, 35, 474, 215, 216, 870, 871, 357, 358, 217, 771, 218, 799, 864, 827, 635, 477, 770, 861, 859, 937, 938, 935, 209, 821, 805, 807, 809, 812, 934, 764, 1101, 1102, 765, 936, 24, 78, 426, 335, 1103, 359, 636, 640, 469, 642, 644, 645, 813, 827, 635, 40, 21, 427, 648, 471, 650, 472, 651, 473, 653, 654, 428, 637, 26, 660, 797, 33, 34, 429, 215, 216, 1227, 35, 474, 1229, 217, 763, 218, 357, 358, 846, 762, 845, 1228, 844, 1061, 832, 477, 558, 209, 1107, 1108, 1109, 1110, 1104, 1105, 398, 1101, 1102, 1049, 843, 1050, 1111, 1106, 830, 1103, 943, 868, 869, 457, 1226, 1158, 219, 1195, 1193, 1178, 1191, 1092, 918, 827, 635, 31, 1199, 1189, 1056, 37, 42, 76, 77, 210, 287, 292, 293, 308, 309, 310, 311, 339, 356, 416, 0, -227, -226, 16, 17, 18, 393, 454, 461, 463, 467, 552, 626, 1052, 558, 1055, 1107, 1108, 1109, 1110, 1104, 1105, 398, 908, 1117, 1051, 1027, 563, 1111, 1106, 1026, 1094, 1058, 0, -433, 1045, 0, 1057, 219, 1060, 1059, 1076, 0, 1192, 1177, 1173, 1190, 1091, 1224, 1118, 1172, 600);
+ protected $actionCheck = array(2, 3, 4, 5, 6, 7, 14, 9, 10, 11, 12, 13, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 69, 70, 53, 54, 55, 9, 10, 57, 30, 116, 32, 33, 34, 35, 36, 37, 38, 80, 69, 70, 83, 71, 72, 73, 74, 75, 76, 77, 135, 136, 80, 33, 34, 35, 36, 37, 38, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 31, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 13, 134, 135, 136, 137, 138, 139, 140, 141, 142, 3, 4, 5, 6, 7, 148, 149, 150, 82, 12, 13, 160, 15, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 8, 44, 45, 46, 47, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 80, 33, 34, 35, 36, 50, 51, 13, 9, 10, 11, 56, 128, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, 72, 73, 59, 60, 37, 38, 78, 79, 80, 82, 82, 106, 85, 108, 86, 9, 10, 11, 161, 80, 1, 2, 44, 45, 46, 47, 48, 49, 50, 51, 52, 9, 10, 11, 106, 156, 30, 8, 32, 33, 34, 35, 36, 13, 116, 8, 153, 154, 155, 8, 122, 158, 30, 125, 126, 116, 117, 118, 119, 120, 121, 31, 134, 135, 156, 137, 138, 139, 140, 141, 142, 143, 145, 146, 8, 8, 133, 149, 150, 37, 38, 153, 154, 155, 9, 10, 11, 159, 8, 161, 162, 8, 164, 74, 75, 76, 77, 8, 13, 80, 0, 1, 2, 84, 158, 30, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 13, 98, 9, 10, 11, 9, 103, 104, 105, 106, 8, 70, 109, 110, 9, 10, 11, 8, 115, 116, 117, 118, 70, 30, 31, 37, 38, 124, 31, 8, 127, 128, 129, 130, 8, 30, 156, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 116, 117, 118, 119, 120, 121, 8, 82, 8, 74, 156, 157, 158, 33, 34, 80, 1, 2, 8, 84, 163, 82, 87, 88, 89, 133, 91, 70, 93, 152, 95, 108, 82, 98, 158, 8, 113, 160, 103, 104, 105, 106, 13, 108, 109, 110, 123, 122, 113, 157, 115, 116, 117, 118, 9, 10, 11, 156, 71, 124, 157, 122, 127, 128, 129, 130, 37, 38, 8, 82, 160, 156, 13, 134, 156, 30, 156, 32, 33, 34, 35, 158, 157, 148, 159, 122, 161, 80, 1, 74, 133, 156, 157, 158, 156, 80, 1, 2, 159, 84, 161, 82, 87, 88, 89, 157, 91, 157, 93, 122, 95, 161, 106, 98, 108, 100, 101, 102, 103, 104, 105, 106, 159, 116, 109, 110, 9, 10, 11, 13, 115, 116, 117, 118, 9, 10, 11, 160, 16, 124, 81, 122, 127, 128, 129, 130, 159, 30, 161, 32, 33, 34, 13, 134, 156, 30, 156, 32, 33, 153, 153, 154, 155, 70, 9, 10, 11, 80, 80, 74, 160, 156, 157, 158, 14, 80, 37, 38, 159, 84, 161, 152, 87, 88, 89, 30, 91, 160, 93, 14, 95, 37, 38, 98, 16, 100, 101, 102, 103, 104, 105, 106, 70, 82, 109, 110, 82, 33, 34, 35, 115, 116, 117, 118, 16, 1, 2, 10, 11, 124, 160, 85, 127, 128, 129, 130, 9, 10, 11, 82, 11, 14, 157, 9, 10, 11, 161, 30, 85, 53, 54, 55, 154, 57, 157, 31, 122, 30, 161, 30, 157, 156, 157, 158, 30, 69, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 144, 57, 161, 159, 16, 161, 1, 2, 74, 157, 16, 152, 157, 69, 80, 116, 161, 144, 84, 69, 70, 87, 88, 89, 16, 91, 16, 93, 161, 95, 75, 76, 98, 30, 135, 136, 31, 103, 104, 105, 1, 2, 31, 109, 110, 9, 10, 11, 31, 115, 116, 50, 51, 52, 50, 51, 52, 31, 124, 160, 75, 76, 101, 102, 111, 112, 30, 156, 157, 31, 31, 156, 157, 156, 157, 31, 31, 57, 38, 74, 33, 69, 80, 70, 70, 80, 70, 89, 70, 84, 156, 157, 87, 88, 89, 70, 91, 70, 93, 70, 95, 70, 96, 98, 71, 77, 82, 85, 103, 104, 105, 1, 2, 74, 109, 110, 82, 82, 97, 80, 115, 116, 85, 84, 92, 106, 87, 88, 89, 124, 91, 90, 93, 133, 95, 128, 94, 98, 147, 116, 97, 31, 103, 104, 105, 1, 2, 97, 109, 110, 97, 97, 100, 144, 115, 116, 100, 106, 128, 113, 161, 156, 157, 124, -1, -1, 151, -1, -1, 114, -1, -1, -1, -1, -1, 31, -1, -1, -1, 131, 131, -1, -1, -1, 74, -1, -1, -1, -1, 132, 80, 133, 133, 133, 84, 156, 157, 87, 88, 89, -1, 91, -1, 93, -1, 95, 144, -1, 98, -1, 147, 147, 147, 103, 104, 105, 1, 2, 74, 109, 110, 147, 147, 147, 80, 115, 116, 147, 84, 151, 153, 87, 88, 89, 124, 91, 31, 93, 152, 95, 156, 156, 98, 156, 156, 156, 156, 103, 104, 105, 156, 156, 156, 109, 110, 50, 51, 156, 156, 115, 116, 56, 156, 58, 156, 156, 156, 157, 124, 156, 156, 156, 156, 156, 156, 70, 156, 156, 156, 156, 156, 156, 156, 78, 79, 156, 156, 159, 157, 74, 157, 86, 157, 157, 157, 80, 157, 157, 157, 84, 156, 157, 87, 88, 89, 157, 91, 157, 93, 157, 95, 157, 157, 98, 157, 159, 158, 158, 103, 104, 105, 50, 51, 158, 109, 110, 158, 56, 158, 58, 115, 116, 158, 158, 158, 158, 158, 158, 158, 124, 135, 70, 137, 138, 139, 140, 141, 142, 143, 78, 79, 158, 158, 158, 149, 150, 158, 86, 158, 158, 158, 158, 158, 164, 159, 158, 158, 158, 158, 158, 158, 156, 157, 159, 158, 158, 163, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, -1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 135, 160, 137, 138, 139, 140, 141, 142, 143, 160, 160, 160, 160, 160, 149, 150, 160, 160, 163, -1, 162, 162, -1, 163, 159, 163, 163, 163, -1, 163, 163, 163, 163, 163, 163, 163, 163, 163);
+ protected $actionBase = array(0, 229, 310, 390, 470, 103, 325, 325, 785, -2, -2, 149, -2, -2, -2, 660, 765, 799, 765, 589, 694, 870, 870, 870, 252, 404, 404, 404, 514, 177, 177, 918, 434, 118, 295, 313, 240, 491, 491, 491, 491, 138, 138, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 89, 206, 775, 550, 535, 776, 777, 778, 912, 709, 913, 859, 862, 700, 863, 864, 865, 866, 867, 858, 871, 935, 872, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 322, 592, 285, 319, 232, 44, 691, 691, 691, 691, 691, 691, 691, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 582, 530, 530, 530, 594, 860, 658, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 500, -21, -21, 492, 702, 420, 355, 216, 549, 151, 26, 26, 331, 331, 331, 331, 331, 46, 46, 5, 5, 5, 5, 153, 188, 188, 188, 188, 121, 121, 121, 121, 314, 314, 394, 394, 362, 300, 298, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 67, 656, 656, 659, 659, 522, 554, 554, 554, 554, 679, -59, -59, 381, 462, 462, 462, 528, 717, 854, 382, 382, 382, 382, 382, 382, 561, 561, 561, -3, -3, -3, 692, 115, 137, 115, 137, 678, 732, 450, 732, 338, 677, -15, 510, 812, 468, 707, 856, 711, 857, 572, 735, 267, 529, 654, 674, 463, 529, 529, 529, 529, 654, 610, 640, 608, 463, 529, 463, 718, 323, 496, 89, 570, 507, 675, 779, 293, 670, 781, 290, 373, 332, 566, 278, 435, 733, 784, 914, 917, 385, 715, 675, 675, 675, 352, 511, 278, -8, 605, 605, 605, 605, 156, 605, 605, 605, 605, 251, 276, 375, 402, 780, 657, 657, 690, 869, 783, 783, 657, 689, 657, 690, 874, 874, 874, 874, 657, 657, 657, 657, 783, 783, 783, 688, 783, 239, 703, 704, 704, 874, 742, 743, 657, 657, 712, 783, 783, 783, 712, 695, 874, 701, 741, 277, 783, 874, 672, 689, 672, 657, 701, 672, 689, 689, 672, 22, 666, 668, 873, 875, 887, 791, 662, 685, 879, 880, 876, 878, 811, 699, 744, 497, 669, 671, 673, 680, 719, 682, 713, 674, 667, 667, 667, 655, 720, 655, 667, 667, 667, 667, 667, 667, 667, 667, 868, 646, 731, 714, 653, 745, 553, 573, 792, 664, 814, 900, 893, 919, 920, 881, 898, 655, 916, 739, 247, 643, 882, 813, 788, 655, 883, 655, 794, 655, 902, 820, 686, 823, 825, 667, 910, 921, 923, 924, 925, 927, 928, 929, 930, 684, 931, 749, 696, 894, 299, 877, 718, 729, 705, 790, 750, 829, 328, 932, 830, 655, 655, 795, 786, 655, 796, 751, 740, 890, 756, 895, 933, 664, 708, 896, 655, 706, 831, 934, 328, 681, 683, 888, 661, 757, 886, 911, 885, 803, 761, 649, 663, 832, 833, 834, 693, 763, 891, 892, 889, 764, 805, 665, 807, 768, 697, 835, 809, 884, 769, 848, 849, 899, 676, 730, 710, 698, 687, 810, 850, 897, 770, 771, 772, 853, 773, 855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 138, 138, 138, -2, -2, -2, -2, 0, 0, -2, 0, 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, -21, -21, -21, -21, 599, -21, -21, -21, -21, -21, -21, -21, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, -21, 599, 599, 599, -21, 382, -21, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 599, 0, 0, 599, -21, 599, -21, 599, -21, -21, 599, 599, 599, 599, 599, 599, 599, -21, -21, -21, -21, -21, -21, 0, 561, 561, 561, 561, -21, -21, -21, -21, 382, 382, 382, 382, 382, 382, 259, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 561, 561, -3, -3, 382, 382, 382, 382, 382, 259, 382, 382, 463, 689, 689, 689, 137, 137, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 463, 0, 463, 0, 382, 463, 689, 463, 657, 137, 689, 689, 463, 783, 616, 616, 616, 616, 328, 278, 0, 0, 689, 689, 0, 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, 783, 0, 0, 0, 0, 0, 667, 247, 0, 705, 335, 0, 0, 0, 0, 0, 0, 705, 335, 347, 347, 0, 684, 667, 667, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328);
+ protected $actionDefault = array(3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 544, 544, 499, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 299, 299, 299, 32767, 32767, 32767, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 32767, 32767, 32767, 32767, 32767, 32767, 383, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 389, 549, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 364, 365, 367, 368, 298, 552, 533, 247, 390, 548, 297, 249, 327, 503, 32767, 32767, 32767, 329, 122, 258, 203, 502, 125, 296, 234, 382, 384, 328, 303, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 302, 458, 361, 360, 359, 460, 32767, 459, 496, 496, 499, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 325, 487, 486, 326, 456, 330, 457, 333, 461, 464, 331, 332, 349, 350, 347, 348, 351, 462, 463, 480, 481, 478, 479, 301, 352, 353, 354, 355, 482, 483, 484, 485, 32767, 32767, 543, 543, 32767, 32767, 282, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 340, 341, 471, 472, 32767, 238, 238, 238, 238, 283, 238, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 335, 336, 334, 466, 467, 465, 432, 32767, 32767, 32767, 434, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 504, 32767, 32767, 32767, 32767, 32767, 517, 421, 171, 32767, 413, 32767, 171, 171, 171, 171, 32767, 222, 224, 167, 32767, 171, 32767, 490, 32767, 32767, 32767, 32767, 522, 345, 32767, 32767, 116, 32767, 32767, 32767, 559, 32767, 517, 32767, 116, 32767, 32767, 32767, 32767, 358, 337, 338, 339, 32767, 32767, 521, 515, 474, 475, 476, 477, 32767, 468, 469, 470, 473, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 429, 435, 435, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 520, 519, 32767, 414, 498, 188, 186, 186, 32767, 208, 208, 32767, 32767, 190, 491, 510, 32767, 190, 173, 32767, 400, 175, 498, 32767, 32767, 240, 32767, 240, 32767, 400, 240, 32767, 32767, 240, 32767, 415, 439, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 379, 380, 493, 506, 32767, 507, 32767, 413, 343, 344, 346, 322, 32767, 324, 369, 370, 371, 372, 373, 374, 375, 377, 32767, 419, 32767, 422, 32767, 32767, 32767, 257, 32767, 557, 32767, 32767, 306, 557, 32767, 32767, 32767, 551, 32767, 32767, 300, 32767, 32767, 32767, 32767, 253, 32767, 169, 32767, 541, 32767, 558, 32767, 515, 32767, 342, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 516, 32767, 32767, 32767, 32767, 229, 32767, 452, 32767, 116, 32767, 32767, 32767, 189, 32767, 32767, 304, 248, 32767, 32767, 550, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 114, 32767, 170, 32767, 32767, 32767, 191, 32767, 32767, 515, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 295, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 515, 32767, 32767, 233, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 415, 32767, 276, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 127, 127, 3, 127, 127, 260, 3, 260, 127, 260, 260, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 216, 219, 208, 208, 164, 127, 127, 268);
+ protected $goto = array(166, 140, 140, 140, 166, 187, 168, 144, 147, 141, 142, 143, 149, 163, 163, 163, 163, 144, 144, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 138, 159, 160, 161, 162, 184, 139, 185, 493, 494, 377, 495, 499, 500, 501, 502, 503, 504, 505, 506, 971, 164, 145, 146, 148, 171, 176, 186, 203, 253, 256, 258, 260, 263, 264, 265, 266, 267, 268, 269, 277, 278, 279, 280, 303, 304, 328, 329, 330, 394, 395, 396, 542, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 150, 151, 152, 167, 153, 169, 154, 204, 170, 155, 156, 157, 205, 158, 136, 622, 560, 758, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1114, 630, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 759, 519, 530, 508, 657, 555, 1184, 350, 508, 591, 787, 1184, 889, 613, 614, 885, 618, 619, 625, 627, 632, 634, 751, 856, 856, 856, 856, 851, 857, 174, 892, 892, 1206, 1206, 177, 178, 179, 401, 402, 403, 404, 173, 202, 206, 208, 257, 259, 261, 262, 270, 271, 272, 273, 274, 275, 281, 282, 283, 284, 305, 306, 331, 332, 333, 406, 407, 408, 409, 175, 180, 254, 255, 181, 182, 183, 497, 497, 497, 497, 497, 497, 818, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 509, 585, 862, 601, 602, 509, 544, 545, 546, 547, 548, 549, 550, 551, 553, 586, 338, 559, 321, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 400, 607, 536, 536, 568, 532, 537, 534, 534, 496, 498, 524, 540, 569, 572, 583, 590, 298, 296, 296, 296, 298, 289, 299, 611, 1210, 510, 615, 910, 948, 375, 510, 437, 437, 437, 437, 437, 437, 594, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 1078, 949, 388, 1176, 561, 1078, 899, 899, 899, 899, 378, 899, 899, 1218, 1218, 1164, 754, 351, 352, 757, 1078, 1078, 1078, 1078, 1078, 1078, 1070, 384, 384, 384, 606, 1218, 878, 860, 858, 860, 656, 466, 511, 887, 882, 754, 384, 754, 384, 969, 384, 391, 385, 587, 353, 414, 384, 1232, 1203, 541, 1198, 1198, 1198, 567, 1095, 386, 386, 386, 1020, 916, 514, 1030, 19, 15, 372, 776, 916, 941, 448, 450, 633, 896, 1217, 1217, 1115, 616, 939, 841, 554, 905, 386, 340, 1071, 1074, 1075, 399, 1070, 1183, 914, 23, 1217, 774, 1183, 543, 603, 389, 1220, 1072, 1175, 1072, 518, 1200, 1200, 1200, 575, 605, 1073, 343, 522, 533, 518, 518, 773, 1090, 1089, 13, 578, 582, 628, 3, 4, 783, 1067, 772, 514, 1062, 1182, 784, 661, 919, 451, 866, 573, 957, 1161, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, 528, 0, 0, 0, 0, 513, 0, 528, 0, 0, 0, 0, 610, 512, 515, 439, 440, 1068, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 781, 1225, 0, 0, 0, 0, 0, 523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 301);
+ protected $gotoCheck = array(43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 57, 69, 15, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 128, 9, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 16, 102, 32, 69, 32, 32, 120, 72, 69, 32, 29, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 6, 69, 69, 69, 69, 69, 69, 27, 77, 77, 77, 77, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 119, 119, 119, 119, 119, 119, 50, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 67, 33, 67, 67, 119, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 127, 57, 127, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 51, 51, 51, 51, 51, 51, 110, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 5, 5, 5, 5, 5, 5, 5, 63, 142, 124, 63, 84, 98, 63, 124, 57, 57, 57, 57, 57, 57, 129, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 98, 12, 82, 12, 57, 57, 57, 57, 57, 46, 57, 57, 144, 144, 133, 11, 72, 72, 14, 57, 57, 57, 57, 57, 57, 82, 13, 13, 13, 49, 144, 14, 14, 14, 14, 14, 57, 14, 14, 14, 11, 13, 11, 13, 102, 13, 48, 11, 70, 70, 70, 13, 13, 140, 2, 9, 9, 9, 2, 34, 125, 125, 125, 103, 13, 13, 34, 34, 34, 34, 25, 13, 8, 8, 8, 8, 79, 143, 143, 8, 8, 8, 9, 34, 81, 125, 18, 82, 82, 82, 125, 82, 121, 85, 34, 143, 24, 121, 47, 34, 17, 143, 82, 82, 82, 47, 121, 121, 121, 40, 40, 82, 58, 58, 58, 47, 47, 23, 126, 126, 58, 62, 62, 62, 30, 30, 23, 116, 23, 13, 114, 121, 26, 74, 86, 65, 71, 66, 100, 132, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, 9, -1, 9, -1, -1, -1, -1, 13, 9, 9, 9, 9, 13, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5);
+ protected $gotoBase = array(0, 0, -173, 0, 0, 353, 216, 0, 477, 149, 0, 110, 71, 117, 426, 112, 203, 170, 181, 0, 0, 0, 0, 168, 164, 143, 121, 27, 0, 205, -127, 0, -429, 279, 51, 0, 0, 0, 0, 0, 481, 0, 0, -24, 0, 0, 379, 484, 163, 153, 268, 75, 0, 0, 0, 0, 0, 107, 161, 0, 0, 0, 222, -77, 0, 104, 96, -344, 0, -94, 135, 123, -232, 0, 169, 0, 0, -50, 0, 173, 0, 180, 64, 0, 360, 139, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 124, 0, 165, 166, 0, 0, 0, 0, 0, 87, 340, 259, 0, 0, 120, 0, 177, 0, 0, -5, -91, 200, 0, 0, 84, 154, 211, -21, -48, 188, 0, 0, 93, 213, 0, 0, 0, 0, 0, 0, 175, 0, 358, 167, 102, 0, 0);
+ protected $gotoDefault = array(-32768, 468, 665, 2, 666, 836, 741, 749, 598, 482, 631, 581, 380, 1194, 793, 794, 795, 381, 368, 766, 379, 410, 405, 782, 775, 777, 785, 172, 411, 788, 1, 790, 517, 826, 1021, 365, 798, 366, 589, 800, 526, 802, 803, 137, 382, 383, 527, 483, 390, 576, 817, 276, 387, 819, 367, 820, 829, 371, 465, 455, 460, 529, 556, 609, 432, 447, 570, 564, 535, 1087, 565, 865, 349, 873, 662, 881, 884, 484, 557, 895, 452, 903, 1100, 397, 909, 915, 920, 291, 923, 417, 412, 584, 928, 929, 5, 933, 623, 624, 8, 312, 956, 599, 970, 420, 1040, 1042, 485, 486, 521, 459, 507, 525, 487, 1063, 441, 413, 1066, 433, 488, 489, 434, 435, 1084, 355, 1169, 354, 449, 320, 1156, 579, 1119, 456, 1209, 1165, 348, 490, 491, 376, 1188, 392, 1204, 438, 1211, 1219, 344, 539, 566);
protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 12, 12, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 18, 18, 19, 19, 21, 21, 17, 17, 22, 22, 23, 23, 24, 24, 25, 25, 20, 20, 26, 28, 28, 29, 30, 30, 32, 31, 31, 31, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 14, 14, 54, 54, 56, 55, 55, 48, 48, 58, 58, 59, 59, 60, 60, 61, 61, 15, 16, 16, 16, 64, 64, 64, 65, 65, 68, 68, 66, 66, 70, 70, 41, 41, 50, 50, 53, 53, 53, 52, 52, 71, 42, 42, 42, 42, 72, 72, 73, 73, 74, 74, 39, 39, 35, 35, 75, 37, 37, 76, 36, 36, 38, 38, 49, 49, 49, 62, 62, 78, 78, 79, 79, 81, 81, 81, 80, 80, 63, 63, 82, 82, 82, 83, 83, 84, 84, 84, 44, 44, 85, 85, 85, 45, 45, 86, 86, 87, 87, 67, 88, 88, 88, 88, 93, 93, 94, 94, 95, 95, 95, 95, 95, 96, 97, 97, 92, 92, 89, 89, 91, 91, 99, 99, 98, 98, 98, 98, 98, 98, 90, 90, 101, 100, 100, 46, 46, 40, 40, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 34, 34, 47, 47, 106, 106, 107, 107, 107, 107, 113, 102, 102, 109, 109, 115, 115, 116, 117, 118, 118, 118, 118, 118, 118, 118, 69, 69, 57, 57, 57, 57, 103, 103, 122, 122, 119, 119, 123, 123, 123, 123, 104, 104, 104, 108, 108, 108, 114, 114, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 27, 27, 27, 27, 27, 27, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 112, 112, 105, 105, 105, 105, 129, 129, 132, 132, 131, 131, 133, 133, 51, 51, 51, 51, 135, 135, 134, 134, 134, 134, 134, 136, 136, 121, 121, 124, 124, 120, 120, 138, 137, 137, 137, 137, 125, 125, 125, 125, 111, 111, 126, 126, 126, 126, 77, 139, 139, 140, 140, 140, 110, 110, 141, 141, 142, 142, 142, 142, 142, 127, 127, 127, 127, 144, 145, 143, 143, 143, 143, 143, 143, 143, 146, 146, 146);
- protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 2, 3, 1, 3, 3, 1, 3, 2, 0, 1, 1, 1, 1, 1, 3, 5, 8, 3, 5, 9, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 1, 2, 2, 5, 7, 9, 5, 6, 3, 3, 2, 2, 1, 1, 1, 0, 2, 8, 0, 4, 1, 3, 0, 1, 0, 1, 0, 1, 1, 1, 10, 7, 6, 5, 1, 2, 2, 0, 2, 0, 2, 0, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 1, 4, 0, 2, 3, 0, 2, 4, 0, 2, 0, 3, 1, 2, 1, 1, 0, 1, 3, 4, 6, 1, 1, 1, 0, 1, 0, 2, 2, 3, 3, 1, 3, 1, 2, 2, 3, 1, 1, 2, 4, 3, 1, 1, 3, 2, 0, 1, 3, 3, 9, 3, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 3, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, 0, 1, 1, 3, 3, 4, 4, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 4, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, 1, 2, 10, 11, 3, 3, 2, 4, 4, 3, 4, 4, 4, 4, 7, 3, 2, 0, 4, 1, 3, 2, 1, 2, 2, 4, 6, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 0, 2, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 3, 1, 4, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 1, 3, 1, 1, 3, 3, 0, 2, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 6, 4, 3, 4, 2, 4, 4, 1, 3, 1, 2, 1, 1, 4, 1, 1, 3, 6, 4, 4, 4, 4, 1, 4, 0, 1, 1, 3, 1, 1, 4, 3, 1, 1, 1, 0, 0, 2, 3, 1, 3, 1, 4, 2, 2, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 6, 3, 1, 1, 1);
+ protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 1, 3, 1, 1, 8, 7, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 2, 3, 1, 3, 3, 1, 3, 2, 0, 1, 1, 1, 1, 1, 3, 5, 8, 3, 5, 9, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 1, 2, 2, 5, 7, 9, 5, 6, 3, 3, 2, 2, 1, 1, 1, 0, 2, 8, 0, 4, 1, 3, 0, 1, 0, 1, 0, 1, 1, 1, 10, 7, 6, 5, 1, 2, 2, 0, 2, 0, 2, 0, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 1, 4, 0, 2, 3, 0, 2, 4, 0, 2, 0, 3, 1, 2, 1, 1, 0, 1, 3, 4, 6, 1, 1, 1, 0, 1, 0, 2, 2, 3, 3, 1, 3, 1, 2, 2, 3, 1, 1, 2, 4, 3, 1, 1, 3, 2, 0, 1, 3, 3, 9, 3, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 3, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, 0, 1, 1, 3, 3, 4, 4, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 4, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, 1, 2, 10, 11, 3, 3, 2, 4, 4, 3, 4, 4, 4, 4, 7, 3, 2, 0, 4, 1, 3, 2, 1, 2, 2, 4, 6, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 0, 2, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 3, 1, 4, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 1, 3, 1, 1, 3, 3, 0, 2, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 6, 4, 3, 4, 2, 4, 4, 1, 3, 1, 2, 1, 1, 4, 1, 1, 3, 6, 4, 4, 4, 4, 1, 4, 0, 1, 1, 3, 1, 1, 4, 3, 1, 1, 1, 0, 0, 2, 3, 1, 3, 1, 4, 2, 2, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 6, 3, 1, 1, 1);
protected function initReduceCallbacks()
{
$this->reduceCallbacks = [0 => function ($stackPos) {
@@ -264,7 +264,7 @@ protected function initReduceCallbacks()
}, 101 => function ($stackPos) {
$this->semValue = new Stmt\Use_($this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 2)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes);
}, 102 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos - (2 - 1)];
+ $this->semValue = $this->semStack[$stackPos - (1 - 1)];
}, 103 => function ($stackPos) {
$this->semValue = new Stmt\Const_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes);
}, 104 => function ($stackPos) {
@@ -272,9 +272,9 @@ protected function initReduceCallbacks()
}, 105 => function ($stackPos) {
$this->semValue = Stmt\Use_::TYPE_CONSTANT;
}, 106 => function ($stackPos) {
- $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos - (7 - 3)], $this->semStack[$stackPos - (7 - 6)], $this->semStack[$stackPos - (7 - 2)], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes);
+ $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos - (8 - 3)], $this->semStack[$stackPos - (8 - 6)], $this->semStack[$stackPos - (8 - 2)], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes);
}, 107 => function ($stackPos) {
- $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes);
+ $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos - (7 - 2)], $this->semStack[$stackPos - (7 - 5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes);
}, 108 => function ($stackPos) {
$this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)];
$this->semValue = $this->semStack[$stackPos - (3 - 1)];
diff --git a/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php b/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
index e042bd333..1619488fd 100644
--- a/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
+++ b/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
@@ -23,20 +23,20 @@ class Php7 extends \PhpParser\ParserAbstract
protected $errorSymbol = 1;
protected $defaultAction = -32766;
protected $unexpectedTokenRule = 32767;
- protected $YY2TBLSTATE = 434;
- protected $numNonLeafStates = 736;
+ protected $YY2TBLSTATE = 435;
+ protected $numNonLeafStates = 737;
protected $symbolToName = array("EOF", "error", "T_THROW", "T_INCLUDE", "T_INCLUDE_ONCE", "T_EVAL", "T_REQUIRE", "T_REQUIRE_ONCE", "','", "T_LOGICAL_OR", "T_LOGICAL_XOR", "T_LOGICAL_AND", "T_PRINT", "T_YIELD", "T_DOUBLE_ARROW", "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", "T_MUL_EQUAL", "T_DIV_EQUAL", "T_CONCAT_EQUAL", "T_MOD_EQUAL", "T_AND_EQUAL", "T_OR_EQUAL", "T_XOR_EQUAL", "T_SL_EQUAL", "T_SR_EQUAL", "T_POW_EQUAL", "T_COALESCE_EQUAL", "'?'", "':'", "T_COALESCE", "T_BOOLEAN_OR", "T_BOOLEAN_AND", "'|'", "'^'", "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", "T_IS_EQUAL", "T_IS_NOT_EQUAL", "T_IS_IDENTICAL", "T_IS_NOT_IDENTICAL", "T_SPACESHIP", "'<'", "T_IS_SMALLER_OR_EQUAL", "'>'", "T_IS_GREATER_OR_EQUAL", "T_SL", "T_SR", "'+'", "'-'", "'.'", "'*'", "'/'", "'%'", "'!'", "T_INSTANCEOF", "'~'", "T_INC", "T_DEC", "T_INT_CAST", "T_DOUBLE_CAST", "T_STRING_CAST", "T_ARRAY_CAST", "T_OBJECT_CAST", "T_BOOL_CAST", "T_UNSET_CAST", "'@'", "T_POW", "'['", "T_NEW", "T_CLONE", "T_EXIT", "T_IF", "T_ELSEIF", "T_ELSE", "T_ENDIF", "T_LNUMBER", "T_DNUMBER", "T_STRING", "T_STRING_VARNAME", "T_VARIABLE", "T_NUM_STRING", "T_INLINE_HTML", "T_ENCAPSED_AND_WHITESPACE", "T_CONSTANT_ENCAPSED_STRING", "T_ECHO", "T_DO", "T_WHILE", "T_ENDWHILE", "T_FOR", "T_ENDFOR", "T_FOREACH", "T_ENDFOREACH", "T_DECLARE", "T_ENDDECLARE", "T_AS", "T_SWITCH", "T_MATCH", "T_ENDSWITCH", "T_CASE", "T_DEFAULT", "T_BREAK", "T_CONTINUE", "T_GOTO", "T_FUNCTION", "T_FN", "T_CONST", "T_RETURN", "T_TRY", "T_CATCH", "T_FINALLY", "T_USE", "T_INSTEADOF", "T_GLOBAL", "T_STATIC", "T_ABSTRACT", "T_FINAL", "T_PRIVATE", "T_PROTECTED", "T_PUBLIC", "T_READONLY", "T_VAR", "T_UNSET", "T_ISSET", "T_EMPTY", "T_HALT_COMPILER", "T_CLASS", "T_TRAIT", "T_INTERFACE", "T_ENUM", "T_EXTENDS", "T_IMPLEMENTS", "T_OBJECT_OPERATOR", "T_NULLSAFE_OBJECT_OPERATOR", "T_LIST", "T_ARRAY", "T_CALLABLE", "T_CLASS_C", "T_TRAIT_C", "T_METHOD_C", "T_FUNC_C", "T_LINE", "T_FILE", "T_START_HEREDOC", "T_END_HEREDOC", "T_DOLLAR_OPEN_CURLY_BRACES", "T_CURLY_OPEN", "T_PAAMAYIM_NEKUDOTAYIM", "T_NAMESPACE", "T_NS_C", "T_DIR", "T_NS_SEPARATOR", "T_ELLIPSIS", "T_NAME_FULLY_QUALIFIED", "T_NAME_QUALIFIED", "T_NAME_RELATIVE", "T_ATTRIBUTE", "';'", "']'", "'{'", "'}'", "'('", "')'", "'`'", "'\"'", "'\$'");
protected $tokenToSymbol = array(0, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 56, 166, 168, 167, 55, 168, 168, 163, 164, 53, 50, 8, 51, 52, 54, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 31, 159, 44, 16, 46, 30, 68, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 70, 168, 160, 36, 168, 165, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 161, 35, 162, 58, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 49, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158);
- protected $action = array(133, 134, 135, 579, 136, 137, 0, 748, 749, 750, 138, 38, 327, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 102, 103, 104, 105, 106, 1109, 1110, 1111, 1108, 1107, 1106, 1112, 742, 741, -32766, 1232, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 2, 107, 108, 109, 751, 274, 381, 380, -32766, -32766, -32766, -32766, 104, 105, 106, 1024, 422, 110, 265, 139, 403, 755, 756, 757, 758, 466, 467, 428, 938, 291, -32766, 287, -32766, -32766, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 789, 580, 790, 791, 792, 793, 781, 782, 344, 345, 784, 785, 770, 771, 772, 774, 775, 776, 355, 816, 817, 818, 819, 820, 581, 777, 778, 582, 583, 810, 801, 799, 800, 813, 796, 797, 687, -545, 584, 585, 795, 586, 587, 588, 589, 590, 591, -328, -593, -367, 1234, -367, 798, 592, 593, -593, 140, -32766, -32766, -32766, 133, 134, 135, 579, 136, 137, 1057, 748, 749, 750, 138, 38, 688, 1020, 1019, 1018, 1021, 390, -32766, 7, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 379, 380, 1033, 689, 690, 742, 741, -32766, -32766, -32766, 422, -545, -545, -590, -32766, -32766, -32766, 1032, -32766, 127, -590, 1236, 1235, 1237, 1318, 751, -545, 290, -32766, 283, -32766, -32766, -32766, -32766, -32766, 1236, 1235, 1237, -545, 265, 139, 403, 755, 756, 757, 758, 16, 481, 428, 458, 459, 460, 298, 722, 35, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 789, 580, 790, 791, 792, 793, 781, 782, 344, 345, 784, 785, 770, 771, 772, 774, 775, 776, 355, 816, 817, 818, 819, 820, 581, 777, 778, 582, 583, 810, 801, 799, 800, 813, 796, 797, 129, 824, 584, 585, 795, 586, 587, 588, 589, 590, 591, -328, 83, 84, 85, -593, 798, 592, 593, -593, 149, 773, 743, 744, 745, 746, 747, 824, 748, 749, 750, 786, 787, 37, 145, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 291, 274, 835, 254, 1109, 1110, 1111, 1108, 1107, 1106, 1112, -590, 860, 110, 861, -590, 482, 751, -32766, -32766, -32766, -32766, -32766, 142, 603, 1085, 742, 741, 1262, 326, 987, 752, 753, 754, 755, 756, 757, 758, 309, -32766, 822, -32766, -32766, -32766, -32766, 242, 553, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 789, 812, 790, 791, 792, 793, 781, 782, 783, 811, 784, 785, 770, 771, 772, 774, 775, 776, 815, 816, 817, 818, 819, 820, 821, 777, 778, 779, 780, 810, 801, 799, 800, 813, 796, 797, 311, 940, 788, 794, 795, 802, 803, 805, 804, 806, 807, 323, 609, 1274, 1033, 833, 798, 809, 808, 50, 51, 52, 512, 53, 54, 860, 241, 861, 918, 55, 56, -111, 57, -32766, -32766, -32766, -111, 826, -111, 290, 1302, 1347, 356, 305, 1348, 339, -111, -111, -111, -111, -111, -111, -111, -111, -32766, -194, -32766, -32766, -32766, -193, 956, 957, 829, -86, 988, 958, 834, 58, 59, 340, 428, 952, -544, 60, 832, 61, 247, 248, 62, 63, 64, 65, 66, 67, 68, 69, 1241, 28, 267, 70, 444, 513, -342, -32766, 141, 1268, 1269, 514, 918, 833, 326, -272, 918, 1266, 42, 25, 515, 940, 516, 14, 517, 908, 518, 828, 369, 519, 520, 373, 709, 1033, 44, 45, 445, 376, 375, 388, 46, 521, 712, -86, 440, 1101, 367, 338, -543, 441, -544, -544, 830, 1227, 442, 523, 524, 525, 290, 1236, 1235, 1237, 361, 1030, 443, -544, 1087, 526, 527, 839, 1255, 1256, 1257, 1258, 1252, 1253, 297, -544, 151, -550, -584, 833, 1259, 1254, -584, 1033, 1236, 1235, 1237, 298, -154, -154, -154, 152, 71, 908, 321, 322, 326, 908, 920, 1030, 707, 833, 154, -154, 1337, -154, 155, -154, 283, -154, -543, -543, 82, 1232, 1086, 1322, 734, 156, 326, 374, 158, 1033, 1321, -194, -79, -543, -88, -193, 742, 741, 956, 957, 653, 26, -32766, 522, -51, -543, 33, -549, 894, 952, -111, -111, -111, 32, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -59, 75, 28, 672, 673, 326, -58, 36, 250, 920, 124, 707, 125, 920, 833, 707, -154, 130, 1266, 131, -32766, -547, 144, -542, 150, 406, 1234, 377, 378, 1146, 1148, 382, 383, -32766, -32766, -32766, -85, -32766, 1056, -32766, -542, -32766, 644, 645, -32766, 159, 160, 161, 1232, -32766, -32766, -32766, 162, -79, 1227, -32766, -32766, 742, 741, 163, -302, -32766, 419, -75, -4, 918, -73, 287, 526, 527, -32766, 1255, 1256, 1257, 1258, 1252, 1253, -72, -71, -70, -69, -68, -67, 1259, 1254, -547, -547, -542, -542, 742, 741, -66, -47, -18, -32766, 73, 148, 918, 322, 326, 1234, 273, -542, 284, -542, -542, 723, -32766, -32766, -32766, 726, -32766, -547, -32766, -542, -32766, 917, 147, -32766, -542, 288, 289, -298, -32766, -32766, -32766, -32766, 713, 279, -32766, -32766, -542, 1234, 280, 285, -32766, 419, 48, 286, -32766, -32766, -32766, 332, -32766, -32766, -32766, 292, -32766, 908, 293, -32766, 934, 274, 1030, 918, -32766, -32766, -32766, 110, 682, 132, -32766, -32766, 833, 146, -32766, 559, -32766, 419, 659, 374, 824, 435, 1349, 74, 1033, -32766, 296, 654, 1116, 908, 956, 957, 306, 714, 698, 522, 555, 303, 13, 310, 852, 952, -111, -111, -111, 700, 463, 492, 953, 283, 299, 300, -32766, 49, 675, 918, 304, 660, 1234, 676, 936, 1273, -32766, 10, 1263, -32766, -32766, -32766, 642, -32766, 918, -32766, 920, -32766, 707, -4, -32766, 126, 34, 918, 565, -32766, -32766, -32766, -32766, 0, 908, -32766, -32766, 0, 1234, 918, 0, -32766, 419, 0, 0, -32766, -32766, -32766, 717, -32766, -32766, -32766, 920, -32766, 707, 1033, -32766, 724, 1275, 0, 487, -32766, -32766, -32766, -32766, 301, 302, -32766, -32766, -507, 1234, 571, -497, -32766, 419, 607, 8, -32766, -32766, -32766, 372, -32766, -32766, -32766, 17, -32766, 908, 371, -32766, 832, 298, 320, 128, -32766, -32766, -32766, 40, 370, 41, -32766, -32766, 908, -250, -250, -250, -32766, 419, 731, 374, 973, 908, 707, 732, 899, -32766, 997, 974, 728, 981, 956, 957, 971, 908, 982, 522, 897, 969, 1090, 1093, 894, 952, -111, -111, -111, 28, 1094, 1091, 1092, -249, -249, -249, 1241, 1098, 708, 374, 844, 833, 1288, 1306, 1340, 1266, 647, 1267, 711, 715, 956, 957, 716, 1241, 718, 522, 920, 719, 707, -250, 894, 952, -111, -111, -111, 720, -16, 721, 725, 710, -511, 920, 895, 707, -578, 1232, 1344, 1346, 855, 854, 920, 1227, 707, -577, 863, 946, 989, 862, 1345, 945, 943, 944, 920, 947, 707, -249, 527, 1218, 1255, 1256, 1257, 1258, 1252, 1253, 927, 937, 925, 979, 980, 631, 1259, 1254, 1343, 1300, -32766, 1289, 1307, 833, 1316, -275, 1234, -576, 73, -550, -549, 322, 326, -32766, -32766, -32766, -548, -32766, -491, -32766, 833, -32766, 1, 29, -32766, 30, 39, 43, 47, -32766, -32766, -32766, 72, 76, 77, -32766, -32766, 1232, -111, -111, 78, -32766, 419, -111, 79, 80, 81, 143, 153, -111, -32766, 157, 246, 328, 1232, -111, -111, 356, -32766, 357, -111, 358, 359, 360, 361, 362, -111, 363, 364, 365, 366, 368, 436, 0, -273, -32766, -272, 19, 20, 298, 21, 22, 24, 405, 75, 1203, 483, 484, 326, 491, 0, 494, 495, 496, 497, 501, 298, 502, 503, 510, 693, 75, 0, 1245, 1186, 326, 1264, 1059, 1058, 1039, 1222, 1035, -277, -103, 18, 23, 27, 295, 404, 600, 604, 633, 699, 1190, 1240, 1187, 1319, 0, 0, 0, 326);
+ protected $action = array(133, 134, 135, 580, 136, 137, 0, 749, 750, 751, 138, 38, 327, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 102, 103, 104, 105, 106, 1110, 1111, 1112, 1109, 1108, 1107, 1113, 743, 742, -32766, 1233, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 2, 107, 108, 109, 752, 274, 381, 380, -32766, -32766, -32766, -32766, 104, 105, 106, 1025, 423, 110, 265, 139, 402, 756, 757, 758, 759, 467, 468, 429, 939, 291, -32766, 287, -32766, -32766, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 790, 581, 791, 792, 793, 794, 782, 783, 344, 345, 785, 786, 771, 772, 773, 775, 776, 777, 355, 817, 818, 819, 820, 821, 582, 778, 779, 583, 584, 811, 802, 800, 801, 814, 797, 798, 688, -545, 585, 586, 796, 587, 588, 589, 590, 591, 592, -328, -593, -367, 1235, -367, 799, 593, 594, -593, 140, -32766, -32766, -32766, 133, 134, 135, 580, 136, 137, 1058, 749, 750, 751, 138, 38, 689, 1021, 1020, 1019, 1022, 390, -32766, 7, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 379, 380, 1034, 690, 691, 743, 742, -32766, -32766, -32766, 423, -545, -545, -590, -32766, -32766, -32766, 1033, -32766, 127, -590, 1237, 1236, 1238, 1319, 752, -545, 290, -32766, 283, -32766, -32766, -32766, -32766, -32766, 1237, 1236, 1238, -545, 265, 139, 402, 756, 757, 758, 759, 16, 482, 429, 459, 460, 461, 298, 723, 35, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 790, 581, 791, 792, 793, 794, 782, 783, 344, 345, 785, 786, 771, 772, 773, 775, 776, 777, 355, 817, 818, 819, 820, 821, 582, 778, 779, 583, 584, 811, 802, 800, 801, 814, 797, 798, 129, 825, 585, 586, 796, 587, 588, 589, 590, 591, 592, -328, 83, 84, 85, -593, 799, 593, 594, -593, 149, 774, 744, 745, 746, 747, 748, 825, 749, 750, 751, 787, 788, 37, 145, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 291, 274, 836, 254, 1110, 1111, 1112, 1109, 1108, 1107, 1113, -590, 861, 110, 862, -590, 483, 752, -32766, -32766, -32766, -32766, -32766, 142, 604, 1086, 743, 742, 1263, 326, 988, 753, 754, 755, 756, 757, 758, 759, 309, -32766, 823, -32766, -32766, -32766, -32766, 242, 554, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 790, 813, 791, 792, 793, 794, 782, 783, 784, 812, 785, 786, 771, 772, 773, 775, 776, 777, 816, 817, 818, 819, 820, 821, 822, 778, 779, 780, 781, 811, 802, 800, 801, 814, 797, 798, 311, 941, 789, 795, 796, 803, 804, 806, 805, 807, 808, 323, 610, 1275, 1034, 834, 799, 810, 809, 50, 51, 52, 513, 53, 54, 861, 241, 862, 919, 55, 56, -111, 57, -32766, -32766, -32766, -111, 827, -111, 290, 1303, 1348, 356, 305, 1349, 339, -111, -111, -111, -111, -111, -111, -111, -111, -32766, -194, -32766, -32766, -32766, -193, 957, 958, 830, -86, 989, 959, 835, 58, 59, 340, 429, 953, -544, 60, 833, 61, 247, 248, 62, 63, 64, 65, 66, 67, 68, 69, 1242, 28, 267, 70, 445, 514, -342, -32766, 141, 1269, 1270, 515, 919, 834, 326, -272, 919, 1267, 42, 25, 516, 941, 517, 14, 518, 909, 519, 829, 369, 520, 521, 373, 710, 1034, 44, 45, 446, 376, 375, 388, 46, 522, 713, -86, 441, 1102, 367, 338, -543, 442, -544, -544, 831, 1228, 443, 524, 525, 526, 290, 1237, 1236, 1238, 361, 1031, 444, -544, 1088, 527, 528, 840, 1256, 1257, 1258, 1259, 1253, 1254, 297, -544, 151, -550, -584, 834, 1260, 1255, -584, 1034, 1237, 1236, 1238, 298, -154, -154, -154, 152, 71, 909, 321, 322, 326, 909, 921, 1031, 708, 834, 154, -154, 1338, -154, 155, -154, 283, -154, -543, -543, 82, 1233, 1087, 1323, 735, 156, 326, 374, 158, 1034, 1322, -194, -79, -543, -88, -193, 743, 742, 957, 958, 654, 26, -32766, 523, -51, -543, 33, -549, 895, 953, -111, -111, -111, 32, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -59, 75, 28, 673, 674, 326, -58, 36, 250, 921, 124, 708, 125, 921, 834, 708, -154, 130, 1267, 131, -32766, -547, 144, -542, 150, 406, 1235, 377, 378, 1147, 1149, 382, 383, -32766, -32766, -32766, -85, -32766, 1057, -32766, -542, -32766, 645, 646, -32766, 159, 160, 161, 1233, -32766, -32766, -32766, 162, -79, 1228, -32766, -32766, 743, 742, 163, -302, -32766, 420, -75, -4, 919, -73, 287, 527, 528, -32766, 1256, 1257, 1258, 1259, 1253, 1254, -72, -71, -70, -69, -68, -67, 1260, 1255, -547, -547, -542, -542, 743, 742, -66, -47, -18, -32766, 73, 148, 919, 322, 326, 1235, 273, -542, 284, -542, -542, 724, -32766, -32766, -32766, 727, -32766, -547, -32766, -542, -32766, 918, 147, -32766, -542, 288, 289, -298, -32766, -32766, -32766, -32766, 714, 279, -32766, -32766, -542, 1235, 280, 285, -32766, 420, 48, 286, -32766, -32766, -32766, 332, -32766, -32766, -32766, 292, -32766, 909, 293, -32766, 935, 274, 1031, 919, -32766, -32766, -32766, 110, 683, 132, -32766, -32766, 834, 146, -32766, 560, -32766, 420, 660, 374, 825, 436, 1350, 74, 1034, -32766, 296, 655, 1117, 909, 957, 958, 306, 715, 699, 523, 556, 303, 13, 310, 853, 953, -111, -111, -111, 701, 464, 493, 954, 283, 299, 300, -32766, 49, 676, 919, 304, 661, 1235, 677, 937, 1274, -32766, 10, 1264, -32766, -32766, -32766, 643, -32766, 919, -32766, 921, -32766, 708, -4, -32766, 126, 34, 919, 566, -32766, -32766, -32766, -32766, 0, 909, -32766, -32766, 0, 1235, 919, 0, -32766, 420, 0, 0, -32766, -32766, -32766, 718, -32766, -32766, -32766, 921, -32766, 708, 1034, -32766, 725, 1276, 0, 488, -32766, -32766, -32766, -32766, 301, 302, -32766, -32766, -507, 1235, 572, -497, -32766, 420, 608, 8, -32766, -32766, -32766, 372, -32766, -32766, -32766, 17, -32766, 909, 371, -32766, 833, 298, 320, 128, -32766, -32766, -32766, 40, 370, 41, -32766, -32766, 909, -250, -250, -250, -32766, 420, 732, 374, 974, 909, 708, 733, 900, -32766, 998, 975, 405, 982, 957, 958, 972, 909, 983, 523, 898, 970, 1091, 1094, 895, 953, -111, -111, -111, 28, 1095, 1092, 1093, -249, -249, -249, 1242, 1099, 709, 374, 845, 834, 1289, 1307, 1341, 1267, 648, 1268, 712, 716, 957, 958, 717, 1242, 719, 523, 921, 720, 708, -250, 895, 953, -111, -111, -111, 721, -16, 722, 726, 711, -511, 921, 409, 708, -578, 1233, 729, 896, 1345, 1347, 921, 1228, 708, -577, 856, 855, 947, 990, 1346, 946, 944, 945, 921, 948, 708, -249, 528, 1219, 1256, 1257, 1258, 1259, 1253, 1254, 928, 938, 926, 980, 981, 632, 1260, 1255, 1344, 1301, -32766, 1290, 1308, 834, 1317, -275, 1235, -576, 73, -550, -549, 322, 326, -32766, -32766, -32766, -548, -32766, -491, -32766, 834, -32766, 1, 29, -32766, 30, 39, 43, 47, -32766, -32766, -32766, 72, 76, 77, -32766, -32766, 1233, -111, -111, 78, -32766, 420, -111, 79, 80, 81, 143, 153, -111, -32766, 157, 246, 328, 1233, -111, -111, 356, -32766, 357, -111, 358, 359, 360, 361, 362, -111, 363, 364, 365, 366, 368, 437, 0, -273, -32766, -272, 19, 20, 298, 21, 22, 24, 404, 75, 1204, 484, 485, 326, 492, 0, 495, 496, 497, 498, 502, 298, 503, 504, 511, 694, 75, 0, 1246, 1187, 326, 1265, 1060, 1059, 1040, 1223, 1036, -277, -103, 18, 23, 27, 295, 403, 601, 605, 634, 700, 1191, 1241, 1188, 1320, 0, 0, 0, 326);
protected $actionCheck = array(2, 3, 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, 70, 9, 10, 11, 9, 10, 11, 44, 45, 46, 47, 48, 49, 50, 51, 52, 116, 117, 118, 119, 120, 121, 122, 37, 38, 30, 116, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 8, 53, 54, 55, 57, 57, 106, 107, 137, 9, 10, 11, 50, 51, 52, 1, 116, 69, 71, 72, 73, 74, 75, 76, 77, 134, 135, 80, 1, 30, 30, 30, 32, 33, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 80, 70, 136, 137, 138, 139, 140, 141, 142, 143, 144, 8, 1, 106, 80, 108, 150, 151, 152, 8, 154, 9, 10, 11, 2, 3, 4, 5, 6, 7, 164, 9, 10, 11, 12, 13, 116, 119, 120, 121, 122, 106, 30, 108, 32, 33, 34, 35, 36, 37, 38, 9, 10, 11, 106, 107, 138, 137, 138, 37, 38, 9, 10, 11, 116, 134, 135, 1, 9, 10, 11, 137, 30, 14, 8, 155, 156, 157, 1, 57, 149, 163, 30, 163, 32, 33, 34, 35, 36, 155, 156, 157, 161, 71, 72, 73, 74, 75, 76, 77, 8, 31, 80, 129, 130, 131, 158, 161, 8, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 8, 80, 136, 137, 138, 139, 140, 141, 142, 143, 144, 164, 9, 10, 11, 160, 150, 151, 152, 164, 154, 2, 3, 4, 5, 6, 7, 80, 9, 10, 11, 12, 13, 30, 8, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 30, 57, 1, 8, 116, 117, 118, 119, 120, 121, 122, 160, 106, 69, 108, 164, 161, 57, 9, 10, 11, 9, 10, 161, 1, 1, 37, 38, 1, 167, 31, 71, 72, 73, 74, 75, 76, 77, 8, 30, 80, 32, 33, 34, 35, 14, 85, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 8, 122, 136, 137, 138, 139, 140, 141, 142, 143, 144, 8, 51, 146, 138, 82, 150, 151, 152, 2, 3, 4, 5, 6, 7, 106, 97, 108, 1, 12, 13, 101, 15, 9, 10, 11, 106, 80, 108, 163, 1, 80, 163, 113, 83, 8, 116, 117, 118, 119, 120, 121, 122, 123, 30, 8, 32, 33, 34, 8, 117, 118, 80, 31, 159, 122, 159, 50, 51, 8, 80, 128, 70, 56, 155, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, 72, 73, 74, 162, 9, 161, 78, 79, 80, 1, 82, 167, 164, 1, 86, 87, 88, 89, 122, 91, 101, 93, 84, 95, 156, 8, 98, 99, 8, 161, 138, 103, 104, 105, 106, 107, 8, 109, 110, 31, 97, 8, 123, 115, 116, 70, 8, 134, 135, 156, 122, 8, 124, 125, 126, 163, 155, 156, 157, 163, 116, 8, 149, 162, 136, 137, 8, 139, 140, 141, 142, 143, 144, 145, 161, 14, 163, 160, 82, 151, 152, 164, 138, 155, 156, 157, 158, 75, 76, 77, 14, 163, 84, 165, 166, 167, 84, 159, 116, 161, 82, 14, 90, 85, 92, 14, 94, 163, 96, 134, 135, 161, 116, 159, 1, 161, 14, 167, 106, 14, 138, 8, 164, 16, 149, 31, 164, 37, 38, 117, 118, 75, 76, 137, 122, 31, 161, 14, 163, 127, 128, 129, 130, 131, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 16, 163, 70, 75, 76, 167, 16, 147, 148, 159, 16, 161, 16, 159, 82, 161, 162, 16, 86, 16, 74, 70, 16, 70, 101, 102, 80, 106, 107, 59, 60, 106, 107, 87, 88, 89, 31, 91, 1, 93, 70, 95, 111, 112, 98, 16, 16, 16, 116, 103, 104, 105, 16, 31, 122, 109, 110, 37, 38, 16, 35, 115, 116, 31, 0, 1, 31, 30, 136, 137, 124, 139, 140, 141, 142, 143, 144, 31, 31, 31, 31, 31, 31, 151, 152, 134, 135, 134, 135, 37, 38, 31, 31, 31, 74, 163, 31, 1, 166, 167, 80, 31, 149, 31, 134, 135, 31, 87, 88, 89, 31, 91, 161, 93, 161, 95, 31, 31, 98, 149, 37, 37, 35, 103, 104, 105, 74, 31, 35, 109, 110, 161, 80, 35, 35, 115, 116, 70, 35, 87, 88, 89, 35, 91, 124, 93, 37, 95, 84, 37, 98, 38, 57, 116, 1, 103, 104, 105, 69, 77, 31, 109, 110, 82, 70, 85, 89, 115, 116, 96, 106, 80, 108, 83, 154, 138, 124, 113, 90, 82, 84, 117, 118, 114, 31, 80, 122, 85, 132, 97, 132, 127, 128, 129, 130, 131, 92, 97, 97, 128, 163, 134, 135, 74, 70, 94, 1, 133, 100, 80, 100, 154, 146, 137, 150, 160, 87, 88, 89, 113, 91, 1, 93, 159, 95, 161, 162, 98, 161, 161, 1, 153, 103, 104, 105, 74, -1, 84, 109, 110, -1, 80, 1, -1, 115, 116, -1, -1, 87, 88, 89, 31, 91, 124, 93, 159, 95, 161, 138, 98, 31, 146, -1, 102, 103, 104, 105, 74, 134, 135, 109, 110, 149, 80, 81, 149, 115, 116, 153, 149, 87, 88, 89, 149, 91, 124, 93, 149, 95, 84, 149, 98, 155, 158, 161, 161, 103, 104, 105, 159, 161, 159, 109, 110, 84, 100, 101, 102, 115, 116, 159, 106, 159, 84, 161, 159, 159, 124, 159, 159, 162, 159, 117, 118, 159, 84, 159, 122, 159, 159, 159, 159, 127, 128, 129, 130, 131, 70, 159, 159, 159, 100, 101, 102, 1, 159, 161, 106, 160, 82, 160, 160, 160, 86, 160, 166, 161, 161, 117, 118, 161, 1, 161, 122, 159, 161, 161, 162, 127, 128, 129, 130, 131, 161, 31, 161, 161, 161, 165, 159, 162, 161, 163, 116, 162, 162, 162, 162, 159, 122, 161, 163, 162, 162, 162, 162, 162, 162, 162, 162, 159, 162, 161, 162, 137, 162, 139, 140, 141, 142, 143, 144, 162, 162, 162, 162, 162, 162, 151, 152, 162, 162, 74, 162, 162, 82, 162, 164, 80, 163, 163, 163, 163, 166, 167, 87, 88, 89, 163, 91, 163, 93, 82, 95, 163, 163, 98, 163, 163, 163, 163, 103, 104, 105, 163, 163, 163, 109, 110, 116, 117, 118, 163, 115, 116, 122, 163, 163, 163, 163, 163, 128, 124, 163, 163, 163, 116, 117, 118, 163, 137, 163, 122, 163, 163, 163, 163, 163, 128, 163, 163, 163, 163, 163, 163, -1, 164, 137, 164, 164, 164, 158, 164, 164, 164, 164, 163, 165, 164, 164, 167, 164, -1, 164, 164, 164, 164, 164, 158, 164, 164, 164, 164, 163, -1, 164, 164, 167, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, -1, -1, -1, 167);
- protected $actionBase = array(0, -2, 154, 542, 752, 893, 929, 52, 374, 431, 398, 869, 793, 235, 307, 307, 793, 307, 784, 908, 908, 917, 908, 538, 841, 468, 468, 468, 708, 708, 708, 708, 740, 740, 849, 849, 881, 817, 634, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 348, 346, 370, 653, 1063, 1069, 1065, 1070, 1061, 1060, 1064, 1066, 1071, 946, 947, 774, 949, 950, 943, 952, 1067, 882, 1062, 1068, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 525, 191, 359, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 174, 174, 174, 620, 620, 51, 465, 356, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 658, 184, 144, 144, 7, 7, 7, 7, 7, 1031, 371, 1048, -25, -25, -25, -25, 50, 725, 526, 449, 39, 317, 80, 474, 474, 13, 13, 512, 512, 422, 422, 512, 512, 512, 808, 808, 808, 808, 443, 505, 360, 308, -78, 209, 209, 209, 209, -78, -78, -78, -78, 803, 877, -78, -78, -78, 63, 641, 641, 822, -1, -1, -1, 641, 253, 790, 548, 253, 384, 548, 480, 402, 764, 759, -49, 447, 764, 639, 755, 198, 143, 825, 609, 825, 1059, 320, 768, 426, 749, 720, 874, 904, 1072, 796, 941, 798, 942, 106, -58, 710, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1073, 336, 1059, 423, 1073, 1073, 1073, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 619, 423, 586, 616, 423, 795, 336, 348, 814, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 750, 202, 348, 346, 78, 78, 484, 65, 78, 78, 78, 78, 348, 348, 348, 348, 609, 783, 766, 613, 813, 492, 783, 783, 783, 473, 135, 378, 488, 713, 775, 67, 779, 779, 785, 969, 969, 779, 769, 779, 785, 975, 779, 779, 969, 969, 823, 280, 563, 478, 550, 568, 969, 377, 779, 779, 779, 779, 746, 573, 779, 342, 314, 779, 779, 746, 744, 760, 43, 762, 969, 969, 969, 746, 547, 762, 762, 762, 839, 844, 794, 758, 444, 433, 588, 232, 801, 758, 758, 779, 558, 794, 758, 794, 758, 745, 758, 758, 758, 794, 758, 769, 502, 758, 717, 583, 224, 758, 6, 979, 980, 624, 981, 973, 987, 1019, 991, 992, 873, 965, 999, 974, 993, 972, 970, 773, 682, 684, 818, 811, 963, 777, 777, 777, 956, 777, 777, 777, 777, 777, 777, 777, 777, 682, 743, 829, 765, 1006, 689, 691, 754, 906, 901, 1030, 1004, 1049, 994, 828, 694, 1028, 1008, 846, 821, 1009, 1010, 1029, 1050, 1052, 910, 782, 911, 912, 876, 1012, 883, 777, 979, 992, 693, 974, 993, 972, 970, 748, 739, 737, 738, 736, 735, 723, 734, 753, 1053, 954, 907, 878, 1011, 957, 682, 879, 1023, 756, 1032, 1033, 827, 788, 778, 880, 913, 1014, 1015, 1016, 884, 1054, 887, 830, 1024, 951, 1035, 789, 918, 1037, 1038, 1039, 1040, 889, 919, 892, 916, 900, 845, 776, 1020, 761, 920, 591, 787, 791, 800, 1018, 606, 1000, 902, 921, 922, 1041, 1043, 1044, 923, 924, 995, 847, 1026, 799, 1027, 1022, 848, 850, 617, 797, 1055, 781, 786, 772, 621, 632, 925, 927, 931, 998, 763, 770, 853, 855, 1056, 771, 1057, 938, 635, 857, 718, 939, 1046, 719, 724, 637, 678, 672, 731, 792, 903, 826, 757, 780, 1017, 724, 767, 858, 940, 859, 860, 867, 1045, 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, 458, 458, 458, 458, 458, 307, 307, 307, 307, 307, 307, 307, 0, 0, 307, 0, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 66, 66, 291, 291, 291, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 0, 291, 291, 291, 291, 291, 291, 291, 291, 66, 823, 66, -1, -1, -1, -1, 66, 66, 66, -88, -88, 66, 384, 66, 66, -1, -1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 0, 0, 423, 548, 66, 769, 769, 769, 769, 66, 66, 66, 66, 548, 548, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 423, 548, 0, 423, 0, 0, 769, 769, 66, 384, 823, 643, 66, 0, 0, 0, 0, 423, 769, 423, 336, 779, 548, 779, 336, 336, 78, 348, 643, 611, 611, 611, 611, 0, 0, 609, 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, 769, 0, 823, 0, 769, 769, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, 0, 0, 969, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 788, 0, 788, 0, 777, 777, 777, 0, 0, 0, 0, 797, 771);
- protected $actionDefault = array(3, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 596, 596, 596, 596, 32767, 32767, 254, 103, 32767, 32767, 469, 387, 387, 387, 32767, 32767, 540, 540, 540, 540, 540, 540, 32767, 32767, 32767, 32767, 32767, 32767, 469, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 37, 7, 8, 10, 11, 50, 17, 324, 32767, 32767, 32767, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 589, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 473, 452, 453, 455, 456, 386, 541, 595, 327, 592, 385, 146, 339, 329, 242, 330, 258, 474, 259, 475, 478, 479, 215, 287, 382, 150, 151, 416, 470, 418, 468, 472, 417, 392, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 390, 391, 471, 449, 448, 447, 32767, 32767, 414, 415, 419, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 389, 422, 420, 421, 438, 439, 436, 437, 440, 32767, 32767, 32767, 441, 442, 443, 444, 316, 32767, 32767, 366, 364, 316, 112, 32767, 32767, 429, 430, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 534, 446, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 101, 536, 411, 413, 503, 424, 425, 423, 393, 32767, 510, 32767, 103, 32767, 512, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 535, 32767, 542, 542, 32767, 496, 101, 195, 32767, 32767, 32767, 195, 195, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 603, 496, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 32767, 195, 111, 32767, 32767, 32767, 101, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 190, 32767, 268, 270, 103, 557, 195, 32767, 515, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 508, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 496, 434, 139, 32767, 139, 542, 426, 427, 428, 498, 542, 542, 542, 312, 289, 32767, 32767, 32767, 32767, 513, 513, 101, 101, 101, 101, 508, 32767, 32767, 32767, 32767, 112, 100, 100, 100, 100, 100, 104, 102, 32767, 32767, 32767, 32767, 223, 100, 32767, 102, 102, 32767, 32767, 223, 225, 212, 102, 227, 32767, 561, 562, 223, 102, 227, 227, 227, 247, 247, 485, 318, 102, 100, 102, 102, 197, 318, 318, 32767, 102, 485, 318, 485, 318, 199, 318, 318, 318, 485, 318, 32767, 102, 318, 214, 100, 100, 318, 32767, 32767, 32767, 498, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 222, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 529, 32767, 546, 559, 432, 433, 435, 544, 457, 458, 459, 460, 461, 462, 463, 465, 591, 32767, 502, 32767, 32767, 32767, 338, 601, 32767, 601, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 602, 32767, 542, 32767, 32767, 32767, 32767, 431, 9, 76, 491, 43, 44, 52, 58, 519, 520, 521, 522, 516, 517, 523, 518, 32767, 32767, 524, 567, 32767, 32767, 543, 594, 32767, 32767, 32767, 32767, 32767, 32767, 139, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 529, 32767, 137, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 525, 32767, 32767, 32767, 542, 32767, 32767, 32767, 32767, 314, 311, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 542, 32767, 32767, 32767, 32767, 32767, 291, 32767, 308, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 286, 32767, 32767, 381, 498, 294, 296, 297, 32767, 32767, 32767, 32767, 360, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 153, 153, 3, 3, 341, 153, 153, 153, 341, 341, 153, 341, 341, 341, 153, 153, 153, 153, 153, 153, 280, 185, 262, 265, 247, 247, 153, 352, 153);
- protected $goto = array(196, 196, 1031, 703, 694, 430, 658, 1062, 1334, 1334, 424, 313, 314, 335, 573, 319, 429, 336, 431, 635, 651, 652, 850, 669, 670, 671, 1334, 167, 167, 167, 167, 221, 197, 193, 193, 177, 179, 216, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 188, 189, 190, 191, 192, 218, 216, 219, 534, 535, 420, 536, 538, 539, 540, 541, 542, 543, 544, 545, 1132, 168, 169, 170, 195, 171, 172, 173, 166, 174, 175, 176, 178, 215, 217, 220, 238, 243, 244, 245, 257, 258, 259, 260, 261, 262, 263, 264, 268, 269, 270, 271, 281, 282, 316, 317, 318, 425, 426, 427, 578, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 180, 237, 181, 198, 199, 200, 239, 188, 189, 190, 191, 192, 218, 1132, 201, 182, 183, 184, 202, 198, 185, 240, 203, 201, 165, 204, 205, 186, 206, 207, 208, 187, 209, 210, 211, 212, 213, 214, 853, 851, 278, 278, 278, 278, 418, 620, 620, 350, 570, 597, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1283, 1283, 831, 618, 655, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 353, 353, 353, 353, 866, 557, 550, 858, 825, 907, 902, 903, 916, 859, 904, 856, 905, 906, 857, 878, 457, 910, 865, 884, 546, 546, 546, 546, 831, 601, 831, 1084, 1079, 1080, 1081, 341, 550, 557, 566, 567, 343, 576, 599, 613, 614, 407, 408, 972, 465, 465, 667, 15, 668, 1323, 411, 412, 413, 465, 681, 348, 1233, 414, 1233, 478, 569, 346, 439, 1031, 1031, 1233, 993, 480, 1031, 393, 1031, 1031, 1104, 1105, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1315, 1315, 1315, 1315, 1233, 657, 1333, 1333, 1055, 1233, 1233, 1233, 1233, 1037, 1036, 1233, 1233, 1233, 1034, 1034, 1181, 354, 678, 949, 1333, 437, 1026, 1042, 1043, 337, 691, 354, 354, 827, 923, 691, 1040, 1041, 924, 691, 663, 1336, 939, 871, 939, 354, 354, 1281, 1281, 354, 679, 1350, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 552, 537, 537, 911, 354, 912, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 548, 564, 548, 574, 611, 730, 634, 636, 849, 548, 656, 475, 1308, 1309, 680, 684, 1007, 692, 701, 1003, 252, 252, 996, 970, 970, 968, 970, 729, 843, 549, 1005, 1000, 423, 455, 608, 1294, 846, 955, 966, 966, 966, 966, 325, 308, 455, 960, 967, 249, 249, 249, 249, 251, 253, 402, 351, 352, 683, 868, 551, 561, 449, 449, 449, 551, 1305, 561, 1305, 612, 396, 461, 1010, 1010, 1224, 1305, 395, 398, 558, 598, 602, 1015, 468, 577, 469, 470, 1310, 1311, 876, 552, 846, 1341, 1342, 964, 409, 702, 733, 324, 275, 324, 1317, 1317, 1317, 1317, 606, 621, 624, 625, 626, 627, 648, 649, 650, 705, 1068, 596, 1097, 874, 706, 476, 1228, 507, 697, 880, 1095, 1115, 432, 1301, 628, 630, 632, 432, 879, 867, 1067, 1071, 5, 1072, 6, 1038, 1038, 977, 0, 975, 662, 1049, 1045, 1046, 0, 0, 0, 0, 1226, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 928, 1120, 449, 965, 1070, 0, 0, 616, 1303, 1303, 1070, 1229, 1230, 1012, 499, 0, 500, 0, 0, 841, 0, 870, 506, 661, 991, 1113, 883, 1212, 941, 864, 0, 1213, 1216, 942, 1217, 0, 0, 1231, 1291, 1292, 0, 1223, 0, 0, 0, 846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255);
- protected $gotoCheck = array(42, 42, 72, 9, 72, 65, 65, 126, 181, 181, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 85, 85, 26, 85, 85, 85, 181, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 15, 27, 23, 23, 23, 23, 43, 107, 107, 96, 170, 129, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 168, 168, 12, 55, 55, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 24, 24, 24, 24, 35, 75, 75, 15, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 35, 82, 15, 35, 45, 106, 106, 106, 106, 12, 106, 12, 15, 15, 15, 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 81, 81, 49, 148, 148, 81, 75, 81, 179, 81, 81, 81, 148, 81, 177, 72, 81, 72, 83, 103, 81, 82, 72, 72, 72, 102, 83, 72, 61, 72, 72, 143, 143, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 9, 9, 9, 9, 72, 63, 180, 180, 113, 72, 72, 72, 72, 117, 117, 72, 72, 72, 88, 88, 150, 14, 88, 88, 180, 112, 88, 88, 88, 29, 7, 14, 14, 7, 72, 7, 118, 118, 72, 7, 119, 180, 9, 39, 9, 14, 14, 169, 169, 14, 115, 14, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 14, 171, 171, 64, 14, 64, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 19, 48, 19, 2, 2, 48, 48, 48, 25, 19, 48, 174, 174, 174, 48, 48, 48, 48, 48, 48, 5, 5, 25, 25, 25, 25, 25, 25, 18, 25, 25, 25, 13, 19, 13, 14, 22, 91, 19, 19, 19, 19, 167, 167, 19, 19, 19, 5, 5, 5, 5, 5, 5, 28, 96, 96, 14, 37, 9, 9, 23, 23, 23, 9, 129, 9, 129, 79, 9, 9, 106, 106, 159, 129, 58, 58, 58, 58, 58, 109, 9, 9, 9, 9, 176, 176, 9, 14, 22, 9, 9, 92, 92, 92, 98, 24, 24, 24, 129, 129, 129, 129, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 128, 8, 8, 9, 8, 156, 20, 8, 8, 41, 8, 146, 116, 129, 84, 84, 84, 116, 16, 16, 16, 16, 46, 131, 46, 116, 116, 95, -1, 16, 116, 116, 116, 116, -1, -1, -1, -1, 14, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 17, 17, 23, 16, 129, -1, -1, 17, 129, 129, 129, 20, 20, 17, 154, -1, 154, -1, -1, 20, -1, 17, 154, 17, 17, 16, 16, 78, 78, 17, -1, 78, 78, 78, 78, -1, -1, 20, 20, 20, -1, 17, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5);
- protected $gotoBase = array(0, 0, -339, 0, 0, 386, 195, 312, 472, -10, 0, 0, -109, 62, 13, -184, 46, 65, 86, 102, 93, 0, 125, 162, 197, 371, 18, 160, 83, 22, 0, 0, 0, 0, 0, -166, 0, 85, 0, 9, 0, 48, -1, 157, 0, 207, -232, 0, -340, 223, 0, 0, 0, 0, 0, 148, 0, 0, 396, 0, 0, 231, 0, 52, 334, -236, 0, 0, 0, 0, 0, 0, -5, 0, 0, -139, 0, 0, 149, 91, 112, -245, -58, -205, 15, -695, 0, 0, 28, 0, 0, 75, 154, 0, 0, 64, -310, 0, 55, 0, 0, 0, 235, 221, 0, 0, 196, -71, 0, 77, 0, 0, 37, 24, 0, 56, 219, 23, 40, 39, 0, 0, 0, 0, 0, 0, 5, 0, 106, 166, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 47, 0, 214, 0, 35, 0, 0, 0, 49, 0, 45, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 88, -56, 95, 144, 111, 0, 0, 78, 0, 80, 229, 0, 222, -12, -299, 0, 0);
- protected $gotoDefault = array(-32768, 511, 737, 4, 738, 932, 814, 823, 594, 528, 704, 347, 622, 421, 1299, 909, 1119, 575, 842, 1242, 1250, 456, 845, 330, 727, 891, 892, 893, 399, 385, 391, 397, 646, 623, 493, 877, 452, 869, 485, 872, 451, 881, 164, 417, 509, 885, 3, 888, 554, 919, 386, 896, 387, 674, 898, 560, 900, 901, 394, 400, 401, 1124, 568, 619, 913, 256, 562, 914, 384, 915, 922, 389, 392, 685, 464, 504, 498, 410, 1099, 563, 605, 643, 446, 472, 617, 629, 615, 479, 433, 415, 329, 954, 962, 486, 462, 976, 349, 984, 735, 1131, 637, 488, 992, 638, 999, 1002, 529, 530, 477, 1014, 272, 1017, 489, 12, 664, 1028, 1029, 665, 639, 1051, 640, 666, 641, 1053, 471, 595, 1061, 453, 1069, 1287, 454, 1073, 266, 1076, 277, 416, 434, 1082, 1083, 9, 1089, 695, 696, 11, 276, 508, 1114, 686, 450, 1130, 438, 1200, 1202, 556, 490, 1220, 1219, 677, 505, 1225, 447, 1290, 448, 531, 473, 315, 532, 307, 333, 312, 547, 294, 334, 533, 474, 1296, 1304, 331, 31, 1324, 1335, 342, 572, 610);
+ protected $actionBase = array(0, -2, 154, 542, 752, 893, 929, 52, 374, 431, 398, 869, 793, 235, 307, 307, 793, 307, 784, 908, 908, 917, 908, 538, 841, 468, 468, 468, 708, 708, 708, 708, 740, 740, 849, 849, 881, 817, 634, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 348, 346, 370, 653, 1063, 1069, 1065, 1070, 1061, 1060, 1064, 1066, 1071, 946, 947, 774, 949, 950, 943, 952, 1067, 882, 1062, 1068, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 525, 191, 359, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 174, 174, 174, 620, 620, 51, 465, 356, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 658, 184, 144, 144, 7, 7, 7, 7, 7, 1031, 371, 1048, -25, -25, -25, -25, 50, 725, 526, 449, 39, 317, 80, 474, 474, 13, 13, 512, 512, 422, 422, 512, 512, 512, 808, 808, 808, 808, 443, 505, 360, 308, -78, 209, 209, 209, 209, -78, -78, -78, -78, 803, 877, -78, -78, -78, 63, 641, 641, 822, -1, -1, -1, 641, 253, 790, 548, 253, 384, 548, 480, 402, 764, 759, -49, 447, 764, 639, 755, 198, 143, 825, 609, 825, 1059, 320, 768, 426, 749, 720, 874, 904, 1072, 796, 941, 798, 942, 106, -58, 710, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1073, 336, 1059, 423, 1073, 1073, 1073, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 619, 423, 586, 616, 423, 795, 336, 814, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 750, 202, 348, 348, 346, 78, 78, 348, 484, 65, 78, 78, 78, 78, 348, 348, 348, 348, 609, 783, 766, 613, 813, 492, 783, 783, 783, 473, 135, 378, 488, 713, 775, 67, 779, 779, 785, 969, 969, 779, 769, 779, 785, 975, 779, 779, 969, 969, 823, 280, 563, 478, 550, 568, 969, 377, 779, 779, 779, 779, 746, 573, 779, 342, 314, 779, 779, 746, 744, 760, 43, 762, 969, 969, 969, 746, 547, 762, 762, 762, 839, 844, 794, 758, 444, 433, 588, 232, 801, 758, 758, 779, 558, 794, 758, 794, 758, 745, 758, 758, 758, 794, 758, 769, 502, 758, 717, 583, 224, 758, 6, 979, 980, 624, 981, 973, 987, 1019, 991, 992, 873, 965, 999, 974, 993, 972, 970, 773, 682, 684, 818, 811, 963, 777, 777, 777, 956, 777, 777, 777, 777, 777, 777, 777, 777, 682, 743, 829, 765, 1006, 689, 691, 754, 911, 901, 1030, 1004, 1049, 994, 828, 694, 1028, 1008, 910, 821, 1009, 1010, 1029, 1050, 1052, 912, 782, 913, 918, 876, 1012, 883, 777, 979, 992, 693, 974, 993, 972, 970, 748, 739, 737, 738, 736, 735, 723, 734, 753, 1053, 954, 907, 878, 1011, 957, 682, 879, 1023, 756, 1032, 1033, 827, 788, 778, 880, 919, 1014, 1015, 1016, 884, 1054, 887, 830, 1024, 951, 1035, 789, 846, 1037, 1038, 1039, 1040, 889, 920, 892, 916, 900, 845, 776, 1020, 761, 921, 591, 787, 791, 800, 1018, 606, 1000, 902, 906, 922, 1041, 1043, 1044, 923, 924, 995, 847, 1026, 799, 1027, 1022, 848, 850, 617, 797, 1055, 781, 786, 772, 621, 632, 925, 927, 931, 998, 763, 770, 853, 855, 1056, 771, 1057, 938, 635, 857, 718, 939, 1046, 719, 724, 637, 678, 672, 731, 792, 903, 826, 757, 780, 1017, 724, 767, 858, 940, 859, 860, 867, 1045, 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, 458, 458, 458, 458, 458, 307, 307, 307, 307, 307, 307, 307, 0, 0, 307, 0, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 66, 66, 291, 291, 291, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 0, 291, 291, 291, 291, 291, 291, 291, 291, 66, 823, 66, -1, -1, -1, -1, 66, 66, 66, -88, -88, 66, 384, 66, 66, -1, -1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 0, 0, 423, 548, 66, 769, 769, 769, 769, 66, 66, 66, 66, 548, 548, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 423, 548, 0, 423, 0, 0, 769, 769, 66, 384, 823, 643, 66, 0, 0, 0, 0, 423, 769, 423, 336, 779, 548, 779, 336, 336, 78, 348, 643, 611, 611, 611, 611, 0, 0, 609, 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, 769, 0, 823, 0, 769, 769, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, 0, 969, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, 0, 0, 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 788, 0, 788, 0, 777, 777, 777, 0, 0, 0, 0, 797, 771);
+ protected $actionDefault = array(3, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 596, 596, 596, 596, 32767, 32767, 254, 103, 32767, 32767, 469, 387, 387, 387, 32767, 32767, 540, 540, 540, 540, 540, 540, 32767, 32767, 32767, 32767, 32767, 32767, 469, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 37, 7, 8, 10, 11, 50, 17, 324, 32767, 32767, 32767, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 589, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 473, 452, 453, 455, 456, 386, 541, 595, 327, 592, 385, 146, 339, 329, 242, 330, 258, 474, 259, 475, 478, 479, 215, 287, 382, 150, 151, 416, 470, 418, 468, 472, 417, 392, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 390, 391, 471, 449, 448, 447, 32767, 32767, 414, 415, 419, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 389, 422, 420, 421, 438, 439, 436, 437, 440, 32767, 32767, 32767, 441, 442, 443, 444, 316, 32767, 32767, 366, 364, 316, 112, 32767, 32767, 429, 430, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 534, 446, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 101, 536, 411, 413, 503, 424, 425, 423, 393, 32767, 510, 32767, 103, 32767, 512, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 535, 32767, 542, 542, 32767, 496, 101, 195, 32767, 32767, 32767, 195, 195, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 603, 496, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 32767, 195, 111, 32767, 32767, 32767, 101, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 190, 32767, 268, 270, 103, 557, 195, 515, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 508, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 496, 434, 139, 32767, 139, 542, 426, 427, 428, 498, 542, 542, 542, 312, 289, 32767, 32767, 32767, 32767, 513, 513, 101, 101, 101, 101, 508, 32767, 32767, 32767, 32767, 112, 100, 100, 100, 100, 100, 104, 102, 32767, 32767, 32767, 32767, 223, 100, 32767, 102, 102, 32767, 32767, 223, 225, 212, 102, 227, 32767, 561, 562, 223, 102, 227, 227, 227, 247, 247, 485, 318, 102, 100, 102, 102, 197, 318, 318, 32767, 102, 485, 318, 485, 318, 199, 318, 318, 318, 485, 318, 32767, 102, 318, 214, 100, 100, 318, 32767, 32767, 32767, 498, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 222, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 529, 32767, 546, 559, 432, 433, 435, 544, 457, 458, 459, 460, 461, 462, 463, 465, 591, 32767, 502, 32767, 32767, 32767, 338, 601, 32767, 601, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 602, 32767, 542, 32767, 32767, 32767, 32767, 431, 9, 76, 491, 43, 44, 52, 58, 519, 520, 521, 522, 516, 517, 523, 518, 32767, 32767, 524, 567, 32767, 32767, 543, 594, 32767, 32767, 32767, 32767, 32767, 32767, 139, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 529, 32767, 137, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 525, 32767, 32767, 32767, 542, 32767, 32767, 32767, 32767, 314, 311, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 542, 32767, 32767, 32767, 32767, 32767, 291, 32767, 308, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 286, 32767, 32767, 381, 498, 294, 296, 297, 32767, 32767, 32767, 32767, 360, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 153, 153, 3, 3, 341, 153, 153, 153, 341, 341, 153, 341, 341, 341, 153, 153, 153, 153, 153, 153, 280, 185, 262, 265, 247, 247, 153, 352, 153);
+ protected $goto = array(196, 196, 1032, 704, 695, 431, 659, 1063, 1335, 1335, 425, 313, 314, 335, 574, 319, 430, 336, 432, 636, 652, 653, 851, 670, 671, 672, 1335, 167, 167, 167, 167, 221, 197, 193, 193, 177, 179, 216, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 188, 189, 190, 191, 192, 218, 216, 219, 535, 536, 421, 537, 539, 540, 541, 542, 543, 544, 545, 546, 1133, 168, 169, 170, 195, 171, 172, 173, 166, 174, 175, 176, 178, 215, 217, 220, 238, 243, 244, 245, 257, 258, 259, 260, 261, 262, 263, 264, 268, 269, 270, 271, 281, 282, 316, 317, 318, 426, 427, 428, 579, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 180, 237, 181, 198, 199, 200, 239, 188, 189, 190, 191, 192, 218, 1133, 201, 182, 183, 184, 202, 198, 185, 240, 203, 201, 165, 204, 205, 186, 206, 207, 208, 187, 209, 210, 211, 212, 213, 214, 854, 619, 656, 278, 278, 278, 278, 852, 621, 621, 350, 419, 598, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1284, 1284, 832, 1105, 1106, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 353, 353, 353, 353, 826, 558, 551, 908, 903, 904, 917, 860, 905, 857, 906, 907, 858, 1035, 1035, 911, 864, 679, 950, 458, 863, 1027, 1043, 1044, 832, 885, 832, 1085, 1080, 1081, 1082, 341, 551, 558, 567, 568, 343, 577, 600, 614, 615, 547, 547, 547, 547, 973, 602, 15, 394, 397, 559, 599, 603, 1213, 942, 1234, 571, 1234, 1214, 1217, 943, 1218, 1032, 1032, 1234, 440, 912, 1032, 913, 1032, 1032, 1038, 1037, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1316, 1316, 1316, 1316, 1234, 476, 1309, 1310, 348, 1234, 1234, 1234, 1234, 407, 408, 1234, 1234, 1234, 668, 1324, 669, 354, 412, 413, 414, 867, 682, 466, 466, 415, 994, 354, 354, 346, 924, 424, 466, 609, 925, 5, 879, 6, 940, 866, 940, 354, 354, 1282, 1282, 354, 392, 1351, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 553, 538, 538, 570, 354, 658, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 549, 565, 549, 1041, 1042, 731, 635, 637, 850, 549, 657, 965, 410, 703, 681, 685, 1008, 693, 702, 1004, 252, 252, 997, 971, 971, 969, 971, 730, 1056, 550, 1006, 1001, 1182, 456, 847, 1295, 1334, 1334, 967, 967, 967, 967, 325, 308, 456, 961, 968, 249, 249, 249, 249, 251, 253, 438, 1334, 351, 352, 684, 680, 552, 562, 450, 450, 450, 552, 1306, 562, 1306, 479, 395, 462, 1337, 1311, 1312, 1306, 664, 481, 500, 337, 501, 844, 469, 578, 470, 471, 507, 847, 877, 553, 872, 1342, 1343, 1011, 1011, 575, 612, 324, 275, 324, 1318, 1318, 1318, 1318, 607, 622, 625, 626, 627, 628, 649, 650, 651, 706, 956, 401, 692, 875, 1229, 828, 869, 692, 629, 631, 633, 692, 433, 1302, 1225, 734, 613, 433, 880, 868, 1068, 1072, 1069, 1016, 477, 1039, 1039, 881, 0, 976, 663, 1050, 1046, 1047, 1073, 1116, 978, 0, 1227, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 929, 1121, 450, 966, 1071, 0, 0, 617, 1304, 1304, 1071, 1230, 1231, 1013, 0, 0, 0, 0, 0, 842, 0, 871, 0, 662, 992, 1114, 884, 597, 1098, 865, 707, 0, 0, 508, 698, 0, 1096, 1232, 1292, 1293, 0, 1224, 0, 847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255);
+ protected $gotoCheck = array(42, 42, 72, 9, 72, 65, 65, 126, 181, 181, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 85, 85, 26, 85, 85, 85, 181, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 15, 55, 55, 23, 23, 23, 23, 27, 107, 107, 96, 43, 129, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 168, 168, 12, 143, 143, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 24, 24, 24, 24, 6, 75, 75, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 88, 88, 15, 15, 88, 88, 82, 15, 88, 88, 88, 12, 45, 12, 15, 15, 15, 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 106, 106, 106, 106, 49, 106, 75, 58, 58, 58, 58, 58, 78, 78, 72, 170, 72, 78, 78, 78, 78, 72, 72, 72, 82, 64, 72, 64, 72, 72, 117, 117, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 9, 9, 9, 9, 72, 174, 174, 174, 177, 72, 72, 72, 72, 81, 81, 72, 72, 72, 81, 179, 81, 14, 81, 81, 81, 35, 81, 148, 148, 81, 102, 14, 14, 81, 72, 13, 148, 13, 72, 46, 35, 46, 9, 35, 9, 14, 14, 169, 169, 14, 61, 14, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 14, 171, 171, 103, 14, 63, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 19, 48, 19, 118, 118, 48, 48, 48, 25, 19, 48, 92, 92, 92, 48, 48, 48, 48, 48, 48, 5, 5, 25, 25, 25, 25, 25, 25, 113, 25, 25, 25, 150, 19, 22, 14, 180, 180, 19, 19, 19, 19, 167, 167, 19, 19, 19, 5, 5, 5, 5, 5, 5, 112, 180, 96, 96, 14, 115, 9, 9, 23, 23, 23, 9, 129, 9, 129, 83, 9, 9, 180, 176, 176, 129, 119, 83, 154, 29, 154, 18, 9, 9, 9, 9, 154, 22, 9, 14, 39, 9, 9, 106, 106, 2, 2, 24, 24, 24, 129, 129, 129, 129, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 91, 28, 7, 9, 20, 7, 37, 7, 84, 84, 84, 7, 116, 129, 159, 98, 79, 116, 16, 16, 16, 16, 128, 109, 156, 116, 116, 41, -1, 16, 116, 116, 116, 116, 131, 146, 95, -1, 14, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 17, 17, 23, 16, 129, -1, -1, 17, 129, 129, 129, 20, 20, 17, -1, -1, -1, -1, -1, 20, -1, 17, -1, 17, 17, 16, 16, 8, 8, 17, 8, -1, -1, 8, 8, -1, 8, 20, 20, 20, -1, 17, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5);
+ protected $gotoBase = array(0, 0, -249, 0, 0, 386, 192, 475, 549, -10, 0, 0, -108, -13, 13, -184, 46, 65, 138, 102, 93, 0, 123, 163, 198, 371, 18, 166, 144, 149, 0, 0, 0, 0, 0, -56, 0, 147, 0, 133, 0, 66, -1, 162, 0, 214, -406, 0, -341, 226, 0, 0, 0, 0, 0, 124, 0, 0, 208, 0, 0, 297, 0, 114, 251, -236, 0, 0, 0, 0, 0, 0, -5, 0, 0, -138, 0, 0, -149, 153, 113, -189, -54, -34, 9, -696, 0, 0, -61, 0, 0, 151, 74, 0, 0, 73, -310, 0, 89, 0, 0, 0, 284, 311, 0, 0, 218, -70, 0, 134, 0, 0, 143, 122, 0, 142, 220, -3, 85, 152, 0, 0, 0, 0, 0, 0, 5, 0, 129, 167, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, 0, 71, 0, 282, 0, 125, 0, 0, 0, -51, 0, 64, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 88, -55, 95, 232, 111, 0, 0, -6, 0, 68, 267, 0, 277, 96, -299, 0, 0);
+ protected $gotoDefault = array(-32768, 512, 738, 4, 739, 933, 815, 824, 595, 529, 705, 347, 623, 422, 1300, 910, 1120, 576, 843, 1243, 1251, 457, 846, 330, 728, 892, 893, 894, 398, 385, 859, 396, 647, 624, 494, 878, 453, 870, 486, 873, 452, 882, 164, 418, 510, 886, 3, 889, 555, 920, 386, 897, 387, 675, 899, 561, 901, 902, 393, 399, 400, 1125, 569, 620, 914, 256, 563, 915, 384, 916, 923, 389, 391, 686, 465, 505, 499, 411, 1100, 564, 606, 644, 447, 473, 618, 630, 616, 480, 434, 416, 329, 955, 963, 487, 463, 977, 349, 985, 736, 1132, 638, 489, 993, 639, 1000, 1003, 530, 531, 478, 1015, 272, 1018, 490, 12, 665, 1029, 1030, 666, 640, 1052, 641, 667, 642, 1054, 472, 596, 1062, 454, 1070, 1288, 455, 1074, 266, 1077, 277, 417, 435, 1083, 1084, 9, 1090, 696, 697, 11, 276, 509, 1115, 687, 451, 1131, 439, 1201, 1203, 557, 491, 1221, 1220, 678, 506, 1226, 448, 1291, 449, 532, 474, 315, 533, 307, 333, 312, 548, 294, 334, 534, 475, 1297, 1305, 331, 31, 1325, 1336, 342, 573, 611);
protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 11, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18, 21, 21, 22, 23, 23, 24, 24, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 30, 30, 32, 34, 34, 28, 36, 36, 33, 38, 38, 35, 35, 37, 37, 39, 39, 31, 40, 40, 41, 43, 44, 44, 45, 45, 46, 46, 48, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 25, 25, 68, 68, 71, 71, 70, 69, 69, 62, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 26, 26, 27, 27, 27, 27, 27, 87, 87, 89, 89, 82, 82, 90, 90, 91, 91, 91, 83, 83, 86, 86, 84, 84, 92, 93, 93, 56, 56, 64, 64, 67, 67, 67, 66, 94, 94, 95, 57, 57, 57, 57, 96, 96, 97, 97, 98, 98, 99, 100, 100, 101, 101, 102, 102, 54, 54, 50, 50, 104, 52, 52, 105, 51, 51, 53, 53, 63, 63, 63, 63, 80, 80, 108, 108, 110, 110, 111, 111, 111, 111, 109, 109, 109, 113, 113, 113, 113, 88, 88, 116, 116, 116, 117, 117, 114, 114, 118, 118, 120, 120, 121, 121, 115, 122, 122, 119, 123, 123, 123, 123, 112, 112, 81, 81, 81, 20, 20, 20, 125, 124, 124, 126, 126, 126, 126, 59, 127, 127, 128, 60, 130, 130, 131, 131, 132, 132, 85, 133, 133, 133, 133, 133, 133, 133, 138, 138, 139, 139, 140, 140, 140, 140, 140, 141, 142, 142, 137, 137, 134, 134, 136, 136, 144, 144, 143, 143, 143, 143, 143, 143, 143, 135, 145, 145, 147, 146, 146, 61, 103, 148, 148, 55, 55, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 155, 149, 149, 154, 154, 157, 158, 158, 159, 160, 161, 161, 161, 161, 19, 19, 72, 72, 72, 72, 150, 150, 150, 150, 163, 163, 151, 151, 153, 153, 153, 156, 156, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, 169, 107, 171, 171, 171, 171, 152, 152, 152, 152, 152, 152, 152, 152, 58, 58, 166, 166, 166, 166, 172, 172, 162, 162, 162, 173, 173, 173, 173, 173, 173, 73, 73, 65, 65, 65, 65, 129, 129, 129, 129, 176, 175, 165, 165, 165, 165, 165, 165, 165, 164, 164, 164, 174, 174, 174, 174, 106, 170, 178, 178, 177, 177, 179, 179, 179, 179, 179, 179, 179, 179, 167, 167, 167, 167, 181, 182, 180, 180, 180, 180, 180, 180, 180, 180, 183, 183, 183, 183);
- protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 2, 1, 3, 4, 1, 2, 0, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 2, 3, 1, 2, 3, 1, 2, 3, 1, 1, 3, 1, 3, 1, 2, 2, 3, 1, 3, 2, 3, 1, 3, 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, 10, 5, 7, 9, 5, 3, 3, 3, 3, 3, 3, 1, 2, 5, 7, 9, 6, 5, 6, 3, 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, 4, 2, 1, 3, 0, 1, 0, 1, 0, 1, 3, 1, 1, 1, 8, 9, 7, 8, 7, 6, 8, 0, 2, 0, 2, 1, 2, 1, 2, 1, 1, 1, 0, 2, 0, 2, 0, 2, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 2, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 7, 0, 2, 1, 3, 3, 4, 1, 4, 0, 2, 5, 0, 2, 6, 0, 2, 0, 3, 1, 2, 1, 1, 2, 0, 1, 3, 0, 2, 1, 1, 1, 1, 6, 8, 6, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 2, 1, 1, 0, 1, 0, 2, 2, 2, 4, 3, 1, 1, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 1, 1, 3, 2, 0, 1, 5, 5, 6, 10, 3, 5, 1, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, 2, 2, 3, 1, 0, 1, 1, 3, 3, 3, 4, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, 2, 2, 8, 9, 8, 9, 9, 10, 9, 10, 8, 3, 2, 0, 4, 2, 1, 3, 2, 1, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 0, 3, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 3, 3, 4, 1, 1, 3, 1, 1, 1, 1, 1, 3, 2, 3, 0, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 1, 4, 4, 0, 1, 1, 1, 3, 3, 1, 4, 2, 2, 1, 3, 1, 4, 4, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1, 2, 1, 3, 4, 3, 2, 0, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 3, 6, 3, 1, 1, 2, 1);
+ protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 2, 1, 3, 4, 1, 2, 0, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 1, 3, 1, 1, 8, 7, 2, 3, 1, 2, 3, 1, 2, 3, 1, 1, 3, 1, 3, 1, 2, 2, 3, 1, 3, 2, 3, 1, 3, 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, 10, 5, 7, 9, 5, 3, 3, 3, 3, 3, 3, 1, 2, 5, 7, 9, 6, 5, 6, 3, 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, 4, 2, 1, 3, 0, 1, 0, 1, 0, 1, 3, 1, 1, 1, 8, 9, 7, 8, 7, 6, 8, 0, 2, 0, 2, 1, 2, 1, 2, 1, 1, 1, 0, 2, 0, 2, 0, 2, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 2, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 7, 0, 2, 1, 3, 3, 4, 1, 4, 0, 2, 5, 0, 2, 6, 0, 2, 0, 3, 1, 2, 1, 1, 2, 0, 1, 3, 0, 2, 1, 1, 1, 1, 6, 8, 6, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 2, 1, 1, 0, 1, 0, 2, 2, 2, 4, 3, 1, 1, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 1, 1, 3, 2, 0, 1, 5, 5, 6, 10, 3, 5, 1, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, 2, 2, 3, 1, 0, 1, 1, 3, 3, 3, 4, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, 2, 2, 8, 9, 8, 9, 9, 10, 9, 10, 8, 3, 2, 0, 4, 2, 1, 3, 2, 1, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 0, 3, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 3, 3, 4, 1, 1, 3, 1, 1, 1, 1, 1, 3, 2, 3, 0, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 1, 4, 4, 0, 1, 1, 1, 3, 3, 1, 4, 2, 2, 1, 3, 1, 4, 4, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1, 2, 1, 3, 4, 3, 2, 0, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 3, 6, 3, 1, 1, 2, 1);
protected function initReduceCallbacks()
{
$this->reduceCallbacks = [0 => function ($stackPos) {
@@ -306,7 +306,7 @@ protected function initReduceCallbacks()
}, 121 => function ($stackPos) {
$this->semValue = new Stmt\Use_($this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 2)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes);
}, 122 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos - (2 - 1)];
+ $this->semValue = $this->semStack[$stackPos - (1 - 1)];
}, 123 => function ($stackPos) {
$this->semValue = new Stmt\Const_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes);
}, 124 => function ($stackPos) {
@@ -314,9 +314,9 @@ protected function initReduceCallbacks()
}, 125 => function ($stackPos) {
$this->semValue = Stmt\Use_::TYPE_CONSTANT;
}, 126 => function ($stackPos) {
- $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos - (7 - 3)], $this->semStack[$stackPos - (7 - 6)], $this->semStack[$stackPos - (7 - 2)], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes);
+ $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos - (8 - 3)], $this->semStack[$stackPos - (8 - 6)], $this->semStack[$stackPos - (8 - 2)], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes);
}, 127 => function ($stackPos) {
- $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes);
+ $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos - (7 - 2)], $this->semStack[$stackPos - (7 - 5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes);
}, 128 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos - (2 - 1)];
}, 129 => function ($stackPos) {
diff --git a/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php b/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
index 14da496f8..918ff2165 100644
--- a/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
+++ b/vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
@@ -609,7 +609,7 @@ protected function p(\PhpParser\Node $node, $parentFormatPreserved = \false) : s
if (null !== $subNode) {
$result .= $extraLeft;
$origIndentLevel = $this->indentLevel;
- $this->setIndentLevel($this->origTokens->getIndentationBefore($subStartPos) + $indentAdjustment);
+ $this->setIndentLevel(\max($this->origTokens->getIndentationBefore($subStartPos) + $indentAdjustment, 0));
// If it's the same node that was previously in this position, it certainly doesn't
// need fixup. It's important to check this here, because our fixup checks are more
// conservative than strictly necessary.
@@ -692,7 +692,7 @@ protected function pArray(array $nodes, array $origNodes, int &$pos, int $indent
$itemEndPos = $origArrItem->getEndTokenPos();
\assert($itemStartPos >= 0 && $itemEndPos >= 0 && $itemStartPos >= $pos);
$origIndentLevel = $this->indentLevel;
- $lastElemIndentLevel = $this->origTokens->getIndentationBefore($itemStartPos) + $indentAdjustment;
+ $lastElemIndentLevel = \max($this->origTokens->getIndentationBefore($itemStartPos) + $indentAdjustment, 0);
$this->setIndentLevel($lastElemIndentLevel);
$comments = $arrItem->getComments();
$origComments = $origArrItem->getComments();
diff --git a/vendor/rector/rector/vendor/ondram/ci-detector/composer.json b/vendor/rector/rector/vendor/ondram/ci-detector/composer.json
index 62aa3fa4d..5efbf68aa 100644
--- a/vendor/rector/rector/vendor/ondram/ci-detector/composer.json
+++ b/vendor/rector/rector/vendor/ondram/ci-detector/composer.json
@@ -52,12 +52,12 @@
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\OndraM\\CiDetector\\": "src\/"
+ "RectorPrefix202410\\OndraM\\CiDetector\\": "src\/"
}
},
"autoload-dev": {
"psr-4": {
- "RectorPrefix202405\\OndraM\\CiDetector\\Ci\\": "tests\/"
+ "RectorPrefix202410\\OndraM\\CiDetector\\Ci\\": "tests\/"
}
},
"config": {
diff --git a/vendor/rector/rector/vendor/ondram/ci-detector/ecs.php b/vendor/rector/rector/vendor/ondram/ci-detector/ecs.php
index 907eeb390..9f45dc2f8 100644
--- a/vendor/rector/rector/vendor/ondram/ci-detector/ecs.php
+++ b/vendor/rector/rector/vendor/ondram/ci-detector/ecs.php
@@ -1,14 +1,14 @@
parameters();
$parameters->set(Option::SKIP, [__DIR__ . '/tests/PropertiesPrinterHelper.php']);
diff --git a/vendor/rector/rector/vendor/ondram/ci-detector/src/Ci/AbstractCi.php b/vendor/rector/rector/vendor/ondram/ci-detector/src/Ci/AbstractCi.php
index 64e7eed0c..a8c3d2297 100644
--- a/vendor/rector/rector/vendor/ondram/ci-detector/src/Ci/AbstractCi.php
+++ b/vendor/rector/rector/vendor/ondram/ci-detector/src/Ci/AbstractCi.php
@@ -1,9 +1,9 @@
getTagsByName($tagName), 'value'), static function (\PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode $value) : bool {
+ return $value instanceof \PHPStan\PhpDocParser\Ast\PhpDoc\PureUnlessCallableIsImpureTagValueNode;
+ });
+ }
/**
* @return TemplateTagValueNode[]
*/
diff --git a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PureUnlessCallableIsImpureTagValueNode.php b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PureUnlessCallableIsImpureTagValueNode.php
new file mode 100644
index 000000000..19c20cc68
--- /dev/null
+++ b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/PureUnlessCallableIsImpureTagValueNode.php
@@ -0,0 +1,24 @@
+parameterName = $parameterName;
+ $this->description = $description;
+ }
+ public function __toString() : string
+ {
+ return trim("{$this->parameterName} {$this->description}");
+ }
+}
diff --git a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/TemplateTagValueNode.php b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/TemplateTagValueNode.php
index 0c4860aaf..23f393285 100644
--- a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/TemplateTagValueNode.php
+++ b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/PhpDoc/TemplateTagValueNode.php
@@ -9,25 +9,32 @@
class TemplateTagValueNode implements \PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode
{
use NodeAttributes;
- /** @var string */
+ /** @var non-empty-string */
public $name;
/** @var TypeNode|null */
public $bound;
/** @var TypeNode|null */
+ public $lowerBound;
+ /** @var TypeNode|null */
public $default;
/** @var string (may be empty) */
public $description;
- public function __construct(string $name, ?TypeNode $bound, string $description, ?TypeNode $default = null)
+ /**
+ * @param non-empty-string $name
+ */
+ public function __construct(string $name, ?TypeNode $bound, string $description, ?TypeNode $default = null, ?TypeNode $lowerBound = null)
{
$this->name = $name;
$this->bound = $bound;
+ $this->lowerBound = $lowerBound;
$this->default = $default;
$this->description = $description;
}
public function __toString() : string
{
- $bound = $this->bound !== null ? " of {$this->bound}" : '';
+ $upperBound = $this->bound !== null ? " of {$this->bound}" : '';
+ $lowerBound = $this->lowerBound !== null ? " super {$this->lowerBound}" : '';
$default = $this->default !== null ? " = {$this->default}" : '';
- return trim("{$this->name}{$bound}{$default} {$this->description}");
+ return trim("{$this->name}{$upperBound}{$lowerBound}{$default} {$this->description}");
}
}
diff --git a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeNode.php b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeNode.php
index cc9f8571f..951d74b90 100644
--- a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeNode.php
+++ b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeNode.php
@@ -16,21 +16,24 @@ class ArrayShapeNode implements \PHPStan\PhpDocParser\Ast\Type\TypeNode
public $sealed;
/** @var self::KIND_* */
public $kind;
+ /** @var ArrayShapeUnsealedTypeNode|null */
+ public $unsealedType;
/**
* @param ArrayShapeItemNode[] $items
* @param self::KIND_* $kind
*/
- public function __construct(array $items, bool $sealed = \true, string $kind = self::KIND_ARRAY)
+ public function __construct(array $items, bool $sealed = \true, string $kind = self::KIND_ARRAY, ?\PHPStan\PhpDocParser\Ast\Type\ArrayShapeUnsealedTypeNode $unsealedType = null)
{
$this->items = $items;
$this->sealed = $sealed;
$this->kind = $kind;
+ $this->unsealedType = $unsealedType;
}
public function __toString() : string
{
$items = $this->items;
if (!$this->sealed) {
- $items[] = '...';
+ $items[] = '...' . $this->unsealedType;
}
return $this->kind . '{' . implode(', ', $items) . '}';
}
diff --git a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeUnsealedTypeNode.php b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeUnsealedTypeNode.php
new file mode 100644
index 000000000..5d3c314b2
--- /dev/null
+++ b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Ast/Type/ArrayShapeUnsealedTypeNode.php
@@ -0,0 +1,28 @@
+valueType = $valueType;
+ $this->keyType = $keyType;
+ }
+ public function __toString() : string
+ {
+ if ($this->keyType !== null) {
+ return sprintf('<%s, %s>', $this->keyType, $this->valueType);
+ }
+ return sprintf('<%s>', $this->valueType);
+ }
+}
diff --git a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php
index 02f109f56..dd3a45026 100644
--- a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php
+++ b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php
@@ -166,7 +166,7 @@ private function parseText(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) :
$tmpText = $tokens->getSkippedHorizontalWhiteSpaceIfAny() . $tokens->joinUntil(Lexer::TOKEN_PHPDOC_EOL, ...$endTokens);
$text .= $tmpText;
// stop if we're not at EOL - meaning it's the end of PHPDoc
- if (!$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL)) {
+ if (!$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL, Lexer::TOKEN_CLOSE_PHPDOC)) {
break;
}
if ($this->textBetweenTagsBelongsToDescription) {
@@ -209,7 +209,7 @@ private function parseOptionalDescriptionAfterDoctrineTag(\PHPStan\PhpDocParser\
$tmpText = $tokens->getSkippedHorizontalWhiteSpaceIfAny() . $tokens->joinUntil(Lexer::TOKEN_PHPDOC_TAG, Lexer::TOKEN_DOCTRINE_TAG, Lexer::TOKEN_PHPDOC_EOL, ...$endTokens);
$text .= $tmpText;
// stop if we're not at EOL - meaning it's the end of PHPDoc
- if (!$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL)) {
+ if (!$tokens->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL, Lexer::TOKEN_CLOSE_PHPDOC)) {
if (!$tokens->isPrecededByHorizontalWhitespace()) {
return trim($text . $this->parseText($tokens)->text, " \t");
}
@@ -297,6 +297,10 @@ public function parseTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens
case '@phpstan-param-closure-this':
$tagValue = $this->parseParamClosureThisTagValue($tokens);
break;
+ case '@pure-unless-callable-is-impure':
+ case '@phpstan-pure-unless-callable-is-impure':
+ $tagValue = $this->parsePureUnlessCallableIsImpureTagValue($tokens);
+ break;
case '@var':
case '@phpstan-var':
case '@psalm-var':
@@ -636,6 +640,12 @@ private function parseParamClosureThisTagValue(\PHPStan\PhpDocParser\Parser\Toke
$description = $this->parseOptionalDescription($tokens);
return new Ast\PhpDoc\ParamClosureThisTagValueNode($type, $parameterName, $description);
}
+ private function parsePureUnlessCallableIsImpureTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\PureUnlessCallableIsImpureTagValueNode
+ {
+ $parameterName = $this->parseRequiredVariableName($tokens);
+ $description = $this->parseOptionalDescription($tokens);
+ return new Ast\PhpDoc\PureUnlessCallableIsImpureTagValueNode($parameterName, $description);
+ }
private function parseVarTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\PhpDoc\VarTagValueNode
{
$type = $this->typeParser->parse($tokens);
diff --git a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/StringUnescaper.php b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/StringUnescaper.php
index f55d5c6d1..076b6595f 100644
--- a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/StringUnescaper.php
+++ b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/StringUnescaper.php
@@ -3,6 +3,7 @@
declare (strict_types=1);
namespace PHPStan\PhpDocParser\Parser;
+use PHPStan\ShouldNotHappenException;
use function chr;
use function hexdec;
use function octdec;
@@ -35,6 +36,9 @@ private static function parseEscapeSequences(string $str, string $quote) : strin
return chr((int) hexdec(substr($str, 1)));
}
if ($str[0] === 'u') {
+ if (!isset($matches[2])) {
+ throw new ShouldNotHappenException();
+ }
return self::codePointToUtf8((int) hexdec($matches[2]));
}
return chr((int) octdec($str));
diff --git a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/TypeParser.php b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/TypeParser.php
index 787ec4f96..08e7d7866 100644
--- a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/TypeParser.php
+++ b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Parser/TypeParser.php
@@ -346,10 +346,12 @@ public function parseTemplateTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator
{
$name = $tokens->currentTokenValue();
$tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER);
+ $upperBound = $lowerBound = null;
if ($tokens->tryConsumeTokenValue('of') || $tokens->tryConsumeTokenValue('as')) {
- $bound = $this->parse($tokens);
- } else {
- $bound = null;
+ $upperBound = $this->parse($tokens);
+ }
+ if ($tokens->tryConsumeTokenValue('super')) {
+ $lowerBound = $this->parse($tokens);
}
if ($tokens->tryConsumeTokenValue('=')) {
$default = $this->parse($tokens);
@@ -361,7 +363,10 @@ public function parseTemplateTagValue(\PHPStan\PhpDocParser\Parser\TokenIterator
} else {
$description = '';
}
- return new Ast\PhpDoc\TemplateTagValueNode($name, $bound, $description, $default);
+ if ($name === '') {
+ throw new LogicException('Template tag name cannot be empty.');
+ }
+ return new Ast\PhpDoc\TemplateTagValueNode($name, $upperBound, $description, $default, $lowerBound);
}
/** @phpstan-impure */
private function parseCallable(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens, Ast\Type\IdentifierTypeNode $identifier, bool $hasTemplate) : Ast\Type\TypeNode
@@ -564,6 +569,7 @@ private function parseArrayShape(\PHPStan\PhpDocParser\Parser\TokenIterator $tok
$tokens->consumeTokenType(Lexer::TOKEN_OPEN_CURLY_BRACKET);
$items = [];
$sealed = \true;
+ $unsealedType = null;
do {
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
if ($tokens->tryConsumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET)) {
@@ -571,6 +577,15 @@ private function parseArrayShape(\PHPStan\PhpDocParser\Parser\TokenIterator $tok
}
if ($tokens->tryConsumeTokenType(Lexer::TOKEN_VARIADIC)) {
$sealed = \false;
+ $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
+ if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET)) {
+ if ($kind === Ast\Type\ArrayShapeNode::KIND_ARRAY) {
+ $unsealedType = $this->parseArrayShapeUnsealedType($tokens);
+ } else {
+ $unsealedType = $this->parseListShapeUnsealedType($tokens);
+ }
+ $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
+ }
$tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA);
break;
}
@@ -579,7 +594,7 @@ private function parseArrayShape(\PHPStan\PhpDocParser\Parser\TokenIterator $tok
} while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA));
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
$tokens->consumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET);
- return new Ast\Type\ArrayShapeNode($items, $sealed, $kind);
+ return new Ast\Type\ArrayShapeNode($items, $sealed, $kind, $unsealedType);
}
/** @phpstan-impure */
private function parseArrayShapeItem(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\ArrayShapeItemNode
@@ -631,6 +646,41 @@ private function parseArrayShapeKey(\PHPStan\PhpDocParser\Parser\TokenIterator $
}
return $this->enrichWithAttributes($tokens, $key, $startLine, $startIndex);
}
+ /**
+ * @phpstan-impure
+ */
+ private function parseArrayShapeUnsealedType(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\ArrayShapeUnsealedTypeNode
+ {
+ $startLine = $tokens->currentTokenLine();
+ $startIndex = $tokens->currentTokenIndex();
+ $tokens->consumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET);
+ $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
+ $valueType = $this->parse($tokens);
+ $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
+ $keyType = null;
+ if ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)) {
+ $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
+ $keyType = $valueType;
+ $valueType = $this->parse($tokens);
+ $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
+ }
+ $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET);
+ return $this->enrichWithAttributes($tokens, new Ast\Type\ArrayShapeUnsealedTypeNode($valueType, $keyType), $startLine, $startIndex);
+ }
+ /**
+ * @phpstan-impure
+ */
+ private function parseListShapeUnsealedType(\PHPStan\PhpDocParser\Parser\TokenIterator $tokens) : Ast\Type\ArrayShapeUnsealedTypeNode
+ {
+ $startLine = $tokens->currentTokenLine();
+ $startIndex = $tokens->currentTokenIndex();
+ $tokens->consumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET);
+ $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
+ $valueType = $this->parse($tokens);
+ $tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
+ $tokens->consumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET);
+ return $this->enrichWithAttributes($tokens, new Ast\Type\ArrayShapeUnsealedTypeNode($valueType, null), $startLine, $startIndex);
+ }
/**
* @phpstan-impure
*/
diff --git a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Printer/Printer.php b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Printer/Printer.php
index 361e2ecb8..a47383342 100644
--- a/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Printer/Printer.php
+++ b/vendor/rector/rector/vendor/phpstan/phpdoc-parser/src/Printer/Printer.php
@@ -32,6 +32,7 @@
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTextNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PropertyTagValueNode;
+use PHPStan\PhpDocParser\Ast\PhpDoc\PureUnlessCallableIsImpureTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\RequireExtendsTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\RequireImplementsTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode;
@@ -44,6 +45,7 @@
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
use PHPStan\PhpDocParser\Ast\Type\ArrayShapeItemNode;
use PHPStan\PhpDocParser\Ast\Type\ArrayShapeNode;
+use PHPStan\PhpDocParser\Ast\Type\ArrayShapeUnsealedTypeNode;
use PHPStan\PhpDocParser\Ast\Type\ArrayTypeNode;
use PHPStan\PhpDocParser\Ast\Type\CallableTypeNode;
use PHPStan\PhpDocParser\Ast\Type\CallableTypeParameterNode;
@@ -159,6 +161,12 @@ public function print(Node $node) : string
$isOptional = $node->isOptional ? '=' : '';
return trim("{$type}{$isReference}{$isVariadic}{$node->parameterName}") . $isOptional;
}
+ if ($node instanceof ArrayShapeUnsealedTypeNode) {
+ if ($node->keyType !== null) {
+ return sprintf('<%s, %s>', $this->printType($node->keyType), $this->printType($node->valueType));
+ }
+ return sprintf('<%s>', $this->printType($node->valueType));
+ }
if ($node instanceof DoctrineAnnotation) {
return (string) $node;
}
@@ -242,6 +250,9 @@ private function printTagValue(PhpDocTagValueNode $node) : string
if ($node instanceof ParamClosureThisTagValueNode) {
return trim("{$node->type} {$node->parameterName} {$node->description}");
}
+ if ($node instanceof PureUnlessCallableIsImpureTagValueNode) {
+ return trim("{$node->parameterName} {$node->description}");
+ }
if ($node instanceof PropertyTagValueNode) {
$type = $this->printType($node->type);
return trim("{$type} {$node->propertyName} {$node->description}");
@@ -255,9 +266,10 @@ private function printTagValue(PhpDocTagValueNode $node) : string
return trim($type . ' ' . $node->description);
}
if ($node instanceof TemplateTagValueNode) {
- $bound = $node->bound !== null ? ' of ' . $this->printType($node->bound) : '';
+ $upperBound = $node->bound !== null ? ' of ' . $this->printType($node->bound) : '';
+ $lowerBound = $node->lowerBound !== null ? ' super ' . $this->printType($node->lowerBound) : '';
$default = $node->default !== null ? ' = ' . $this->printType($node->default) : '';
- return trim("{$node->name}{$bound}{$default} {$node->description}");
+ return trim("{$node->name}{$upperBound}{$lowerBound}{$default} {$node->description}");
}
if ($node instanceof ThrowsTagValueNode) {
$type = $this->printType($node->type);
@@ -287,7 +299,7 @@ private function printType(TypeNode $node) : string
return $this->printType($item);
}, $node->items);
if (!$node->sealed) {
- $items[] = '...';
+ $items[] = '...' . ($node->unsealedType === null ? '' : $this->print($node->unsealedType));
}
return $node->kind . '{' . implode(', ', $items) . '}';
}
diff --git a/vendor/rector/rector/vendor/psr/container/composer.json b/vendor/rector/rector/vendor/psr/container/composer.json
index a9682b6f4..b838a4376 100644
--- a/vendor/rector/rector/vendor/psr/container/composer.json
+++ b/vendor/rector/rector/vendor/psr/container/composer.json
@@ -22,7 +22,7 @@
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\Psr\\Container\\": "src\/"
+ "RectorPrefix202410\\Psr\\Container\\": "src\/"
}
},
"extra": {
diff --git a/vendor/rector/rector/vendor/psr/container/src/ContainerExceptionInterface.php b/vendor/rector/rector/vendor/psr/container/src/ContainerExceptionInterface.php
index 435c877cd..cb7b3eb11 100644
--- a/vendor/rector/rector/vendor/psr/container/src/ContainerExceptionInterface.php
+++ b/vendor/rector/rector/vendor/psr/container/src/ContainerExceptionInterface.php
@@ -1,6 +1,6 @@
=5.3.0",
"react\/cache": "^1.0 || ^0.6 || ^0.5",
"react\/event-loop": "^1.2",
- "react\/promise": "^3.0 || ^2.7 || ^1.2.1"
+ "react\/promise": "^3.2 || ^2.7 || ^1.2.1"
},
"require-dev": {
"phpunit\/phpunit": "^9.6 || ^5.7 || ^4.8.36",
- "react\/async": "^4 || ^3 || ^2",
- "react\/promise-timer": "^1.9"
+ "react\/async": "^4.3 || ^3 || ^2",
+ "react\/promise-timer": "^1.11"
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\React\\Dns\\": "src\/"
+ "RectorPrefix202410\\React\\Dns\\": "src\/"
}
},
"autoload-dev": {
"psr-4": {
- "RectorPrefix202405\\React\\Tests\\Dns\\": "tests\/"
+ "RectorPrefix202410\\React\\Tests\\Dns\\": "tests\/"
}
}
}
\ No newline at end of file
diff --git a/vendor/rector/rector/vendor/react/dns/src/BadServerException.php b/vendor/rector/rector/vendor/react/dns/src/BadServerException.php
index f2c1898c7..c717ffbc5 100644
--- a/vendor/rector/rector/vendor/react/dns/src/BadServerException.php
+++ b/vendor/rector/rector/vendor/react/dns/src/BadServerException.php
@@ -1,6 +1,6 @@
class !== Message::CLASS_IN ? 'CLASS' . $this->class . ' ' : '';
$type = 'TYPE' . $this->type;
- $ref = new \ReflectionClass('RectorPrefix202405\\React\\Dns\\Model\\Message');
+ $ref = new \ReflectionClass('RectorPrefix202410\\React\\Dns\\Model\\Message');
foreach ($ref->getConstants() as $name => $value) {
if ($value === $this->type && \strpos($name, 'TYPE_') === 0) {
$type = \substr($name, 5);
diff --git a/vendor/rector/rector/vendor/react/dns/src/Query/RetryExecutor.php b/vendor/rector/rector/vendor/react/dns/src/Query/RetryExecutor.php
index 7f34f8fbf..b89bf148e 100644
--- a/vendor/rector/rector/vendor/react/dns/src/Query/RetryExecutor.php
+++ b/vendor/rector/rector/vendor/react/dns/src/Query/RetryExecutor.php
@@ -1,9 +1,9 @@
= 2 && \strpos($nameserver, '://') === \false) {
// several colons, but not enclosed in square brackets => enclose IPv6 address in square brackets
@@ -134,6 +134,10 @@ public function __construct($nameserver, LoopInterface $loop = null)
if (!isset($parts['scheme'], $parts['host']) || $parts['scheme'] !== 'tcp' || @\inet_pton(\trim($parts['host'], '[]')) === \false) {
throw new \InvalidArgumentException('Invalid nameserver address given');
}
+ if ($loop !== null && !$loop instanceof LoopInterface) {
+ // manual type check to support legacy PHP < 7.1
+ throw new \InvalidArgumentException('Argument #2 ($loop) expected null|React\\EventLoop\\LoopInterface');
+ }
$this->nameserver = 'tcp://' . $parts['host'] . ':' . (isset($parts['port']) ? $parts['port'] : 53);
$this->loop = $loop ?: Loop::get();
$this->parser = new Parser();
@@ -150,14 +154,14 @@ public function query(Query $query)
$queryData = $this->dumper->toBinary($request);
$length = \strlen($queryData);
if ($length > 0xffff) {
- return \RectorPrefix202405\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Query too large for TCP transport'));
+ return \RectorPrefix202410\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Query too large for TCP transport'));
}
$queryData = \pack('n', $length) . $queryData;
if ($this->socket === null) {
// create async TCP/IP connection (may take a while)
$socket = @\stream_socket_client($this->nameserver, $errno, $errstr, 0, \STREAM_CLIENT_CONNECT | \STREAM_CLIENT_ASYNC_CONNECT);
if ($socket === \false) {
- return \RectorPrefix202405\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno));
+ return \RectorPrefix202410\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno));
}
// set socket to non-blocking and wait for it to become writable (connection success/rejected)
\stream_set_blocking($socket, \false);
diff --git a/vendor/rector/rector/vendor/react/dns/src/Query/TimeoutException.php b/vendor/rector/rector/vendor/react/dns/src/Query/TimeoutException.php
index 9b77140df..08de51c2d 100644
--- a/vendor/rector/rector/vendor/react/dns/src/Query/TimeoutException.php
+++ b/vendor/rector/rector/vendor/react/dns/src/Query/TimeoutException.php
@@ -1,6 +1,6 @@
executor = $executor;
$this->loop = $loop ?: Loop::get();
$this->timeout = $timeout;
diff --git a/vendor/rector/rector/vendor/react/dns/src/Query/UdpTransportExecutor.php b/vendor/rector/rector/vendor/react/dns/src/Query/UdpTransportExecutor.php
index 99c205f72..dc29c053b 100644
--- a/vendor/rector/rector/vendor/react/dns/src/Query/UdpTransportExecutor.php
+++ b/vendor/rector/rector/vendor/react/dns/src/Query/UdpTransportExecutor.php
@@ -1,13 +1,13 @@
= 2 && \strpos($nameserver, '://') === \false) {
// several colons, but not enclosed in square brackets => enclose IPv6 address in square brackets
@@ -105,6 +105,10 @@ public function __construct($nameserver, LoopInterface $loop = null)
if (!isset($parts['scheme'], $parts['host']) || $parts['scheme'] !== 'udp' || @\inet_pton(\trim($parts['host'], '[]')) === \false) {
throw new \InvalidArgumentException('Invalid nameserver address given');
}
+ if ($loop !== null && !$loop instanceof LoopInterface) {
+ // manual type check to support legacy PHP < 7.1
+ throw new \InvalidArgumentException('Argument #2 ($loop) expected null|React\\EventLoop\\LoopInterface');
+ }
$this->nameserver = 'udp://' . $parts['host'] . ':' . (isset($parts['port']) ? $parts['port'] : 53);
$this->loop = $loop ?: Loop::get();
$this->parser = new Parser();
@@ -115,14 +119,14 @@ public function query(Query $query)
$request = Message::createRequestForQuery($query);
$queryData = $this->dumper->toBinary($request);
if (isset($queryData[$this->maxPacketSize])) {
- return \RectorPrefix202405\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Query too large for UDP transport', \defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90));
+ return \RectorPrefix202410\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Query too large for UDP transport', \defined('SOCKET_EMSGSIZE') ? \SOCKET_EMSGSIZE : 90));
}
// UDP connections are instant, so try connection without a loop or timeout
$errno = 0;
$errstr = '';
$socket = @\stream_socket_client($this->nameserver, $errno, $errstr, 0);
if ($socket === \false) {
- return \RectorPrefix202405\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno));
+ return \RectorPrefix202410\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Unable to connect to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno));
}
// set socket to non-blocking and immediately try to send (fill write buffer)
\stream_set_blocking($socket, \false);
@@ -138,7 +142,7 @@ public function query(Query $query)
$written = \fwrite($socket, $queryData);
\restore_error_handler();
if ($written !== \strlen($queryData)) {
- return \RectorPrefix202405\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Unable to send query to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno));
+ return \RectorPrefix202410\React\Promise\reject(new \RuntimeException('DNS query for ' . $query->describe() . ' failed: Unable to send query to DNS server ' . $this->nameserver . ' (' . $errstr . ')', $errno));
}
$loop = $this->loop;
$deferred = new Deferred(function () use($loop, $socket, $query) {
diff --git a/vendor/rector/rector/vendor/react/dns/src/RecordNotFoundException.php b/vendor/rector/rector/vendor/react/dns/src/RecordNotFoundException.php
index ec0cab6b5..74c838e4a 100644
--- a/vendor/rector/rector/vendor/react/dns/src/RecordNotFoundException.php
+++ b/vendor/rector/rector/vendor/react/dns/src/RecordNotFoundException.php
@@ -1,6 +1,6 @@
decorateHostsFileExecutor($this->createExecutor($config, $loop ?: Loop::get()));
return new Resolver($executor);
}
@@ -56,8 +60,16 @@ public function create($config, LoopInterface $loop = null)
* @throws \InvalidArgumentException for invalid DNS server address
* @throws \UnderflowException when given DNS Config object has an empty list of nameservers
*/
- public function createCached($config, LoopInterface $loop = null, CacheInterface $cache = null)
+ public function createCached($config, $loop = null, $cache = null)
{
+ if ($loop !== null && !$loop instanceof LoopInterface) {
+ // manual type check to support legacy PHP < 7.1
+ throw new \InvalidArgumentException('Argument #2 ($loop) expected null|React\\EventLoop\\LoopInterface');
+ }
+ if ($cache !== null && !$cache instanceof CacheInterface) {
+ // manual type check to support legacy PHP < 7.1
+ throw new \InvalidArgumentException('Argument #3 ($cache) expected null|React\\Cache\\CacheInterface');
+ }
// default to keeping maximum of 256 responses in cache unless explicitly given
if (!$cache instanceof CacheInterface) {
$cache = new ArrayCache(256);
diff --git a/vendor/rector/rector/vendor/react/dns/src/Resolver/Resolver.php b/vendor/rector/rector/vendor/react/dns/src/Resolver/Resolver.php
index 2bcc1410e..eb3ed6a82 100644
--- a/vendor/rector/rector/vendor/react/dns/src/Resolver/Resolver.php
+++ b/vendor/rector/rector/vendor/react/dns/src/Resolver/Resolver.php
@@ -1,11 +1,11 @@
loop = new EventLoop();
diff --git a/vendor/rector/rector/vendor/react/event-loop/src/ExtLibeventLoop.php b/vendor/rector/rector/vendor/react/event-loop/src/ExtLibeventLoop.php
index 691b37404..cd0567c93 100644
--- a/vendor/rector/rector/vendor/react/event-loop/src/ExtLibeventLoop.php
+++ b/vendor/rector/rector/vendor/react/event-loop/src/ExtLibeventLoop.php
@@ -1,12 +1,12 @@
streamEvents[(int) $stream])) {
- $this->streamEvents[(int) $stream] = \RectorPrefix202405\uv_poll_init_socket($this->uv, $stream);
+ $this->streamEvents[(int) $stream] = \RectorPrefix202410\uv_poll_init_socket($this->uv, $stream);
}
if ($this->streamEvents[(int) $stream] !== \false) {
$this->pollStream($stream);
diff --git a/vendor/rector/rector/vendor/react/event-loop/src/Factory.php b/vendor/rector/rector/vendor/react/event-loop/src/Factory.php
index 95551733d..4999c89eb 100644
--- a/vendor/rector/rector/vendor/react/event-loop/src/Factory.php
+++ b/vendor/rector/rector/vendor/react/event-loop/src/Factory.php
@@ -1,6 +1,6 @@
promise();
-$deferred->resolve(mixed $value = null);
-$deferred->reject(mixed $reason = null);
-$deferred->notify(mixed $update = null);
+$deferred->resolve(mixed $value);
+$deferred->reject(\Throwable $reason);
```
The `promise` method returns the promise of the deferred.
The `resolve` and `reject` methods control the state of the deferred.
-The deprecated `notify` method is for progress notification.
-
The constructor of the `Deferred` accepts an optional `$canceller` argument.
See [Promise](#promise-2) for more information.
@@ -121,7 +108,7 @@ keeping the authority to modify its state to yourself.
#### Deferred::resolve()
```php
-$deferred->resolve(mixed $value = null);
+$deferred->resolve(mixed $value);
```
Resolves the promise returned by `promise()`. All consumers are notified by
@@ -131,10 +118,12 @@ having `$onFulfilled` (which they registered via `$promise->then()`) called with
If `$value` itself is a promise, the promise will transition to the state of
this promise once it is resolved.
+See also the [`resolve()` function](#resolve).
+
#### Deferred::reject()
```php
-$deferred->reject(mixed $reason = null);
+$deferred->reject(\Throwable $reason);
```
Rejects the promise returned by `promise()`, signalling that the deferred's
@@ -142,27 +131,14 @@ computation failed.
All consumers are notified by having `$onRejected` (which they registered via
`$promise->then()`) called with `$reason`.
-If `$reason` itself is a promise, the promise will be rejected with the outcome
-of this promise regardless whether it fulfills or rejects.
-
-#### Deferred::notify()
-
-> Deprecated in v2.6.0: Progress support is deprecated and should not be used anymore.
-
-```php
-$deferred->notify(mixed $update = null);
-```
-
-Triggers progress notifications, to indicate to consumers that the computation
-is making progress toward its result.
-
-All consumers are notified by having `$onProgress` (which they registered via
-`$promise->then()`) called with `$update`.
+See also the [`reject()` function](#reject).
### PromiseInterface
The promise interface provides the common interface for all promise
implementations.
+See [Promise](#promise-2) for the only public implementation exposed by this
+package.
A promise represents an eventual outcome, which is either fulfillment (success)
and an associated value, or rejection (failure) and an associated reason.
@@ -170,32 +146,22 @@ and an associated value, or rejection (failure) and an associated reason.
Once in the fulfilled or rejected state, a promise becomes immutable.
Neither its state nor its result (or error) can be modified.
-#### Implementations
-
-* [Promise](#promise-2)
-* [FulfilledPromise](#fulfilledpromise) (deprecated)
-* [RejectedPromise](#rejectedpromise) (deprecated)
-* [LazyPromise](#lazypromise) (deprecated)
-
#### PromiseInterface::then()
```php
-$transformedPromise = $promise->then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null);
+$transformedPromise = $promise->then(callable $onFulfilled = null, callable $onRejected = null);
```
Transforms a promise's value by applying a function to the promise's fulfillment
or rejection value. Returns a new promise for the transformed result.
-The `then()` method registers new fulfilled, rejection and progress handlers
-with a promise (all parameters are optional):
+The `then()` method registers new fulfilled and rejection handlers with a promise
+(all parameters are optional):
* `$onFulfilled` will be invoked once the promise is fulfilled and passed
the result as the first argument.
* `$onRejected` will be invoked once the promise is rejected and passed the
reason as the first argument.
- * `$onProgress` (deprecated) will be invoked whenever the producer of the promise
- triggers progress notifications and passed a single argument (whatever it
- wants) to indicate progress.
It returns a new promise that will fulfill with the return value of either
`$onFulfilled` or `$onRejected`, whichever is called, or will reject with
@@ -208,51 +174,16 @@ the same call to `then()`:
never both.
2. `$onFulfilled` and `$onRejected` will never be called more
than once.
- 3. `$onProgress` (deprecated) may be called multiple times.
#### See also
* [resolve()](#resolve) - Creating a resolved promise
* [reject()](#reject) - Creating a rejected promise
-* [ExtendedPromiseInterface::done()](#extendedpromiseinterfacedone)
-* [done() vs. then()](#done-vs-then)
-
-### ExtendedPromiseInterface
-
-The ExtendedPromiseInterface extends the PromiseInterface with useful shortcut
-and utility methods which are not part of the Promises/A specification.
-
-#### Implementations
-
-* [Promise](#promise-1)
-* [FulfilledPromise](#fulfilledpromise) (deprecated)
-* [RejectedPromise](#rejectedpromise) (deprecated)
-* [LazyPromise](#lazypromise) (deprecated)
-
-#### ExtendedPromiseInterface::done()
-
-```php
-$promise->done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null);
-```
-Consumes the promise's ultimate value if the promise fulfills, or handles the
-ultimate error.
-
-It will cause a fatal error if either `$onFulfilled` or `$onRejected` throw or
-return a rejected promise.
-
-Since the purpose of `done()` is consumption rather than transformation,
-`done()` always returns `null`.
-
-#### See also
-
-* [PromiseInterface::then()](#promiseinterfacethen)
-* [done() vs. then()](#done-vs-then)
-
-#### ExtendedPromiseInterface::otherwise()
+#### PromiseInterface::catch()
```php
-$promise->otherwise(callable $onRejected);
+$promise->catch(callable $onRejected);
```
Registers a rejection handler for promise. It is a shortcut for:
@@ -266,19 +197,19 @@ only specific errors.
```php
$promise
- ->otherwise(function (\RuntimeException $reason) {
+ ->catch(function (\RuntimeException $reason) {
// Only catch \RuntimeException instances
// All other types of errors will propagate automatically
})
- ->otherwise(function ($reason) {
+ ->catch(function (\Throwable $reason) {
// Catch other errors
- )};
+ });
```
-#### ExtendedPromiseInterface::always()
+#### PromiseInterface::finally()
```php
-$newPromise = $promise->always(callable $onFulfilledOrRejected);
+$newPromise = $promise->finally(callable $onFulfilledOrRejected);
```
Allows you to execute "cleanup" type tasks in a promise chain.
@@ -297,16 +228,16 @@ when the promise is either fulfilled or rejected.
rejected promise, `$newPromise` will reject with the thrown exception or
rejected promise's reason.
-`always()` behaves similarly to the synchronous finally statement. When combined
-with `otherwise()`, `always()` allows you to write code that is similar to the familiar
+`finally()` behaves similarly to the synchronous finally statement. When combined
+with `catch()`, `finally()` allows you to write code that is similar to the familiar
synchronous catch/finally pair.
Consider the following synchronous code:
```php
try {
- return doSomething();
-} catch(\Exception $e) {
+ return doSomething();
+} catch (\Throwable $e) {
return handleError($e);
} finally {
cleanup();
@@ -318,48 +249,47 @@ written:
```php
return doSomething()
- ->otherwise('handleError')
- ->always('cleanup');
+ ->catch('handleError')
+ ->finally('cleanup');
```
-#### ExtendedPromiseInterface::progress()
-
-> Deprecated in v2.6.0: Progress support is deprecated and should not be used anymore.
+#### PromiseInterface::cancel()
-```php
-$promise->progress(callable $onProgress);
+``` php
+$promise->cancel();
```
-Registers a handler for progress updates from promise. It is a shortcut for:
+The `cancel()` method notifies the creator of the promise that there is no
+further interest in the results of the operation.
-```php
-$promise->then(null, null, $onProgress);
-```
+Once a promise is settled (either fulfilled or rejected), calling `cancel()` on
+a promise has no effect.
-### CancellablePromiseInterface
+#### ~~PromiseInterface::otherwise()~~
-A cancellable promise provides a mechanism for consumers to notify the creator
-of the promise that they are not longer interested in the result of an
-operation.
+> Deprecated since v3.0.0, see [`catch()`](#promiseinterfacecatch) instead.
-#### CancellablePromiseInterface::cancel()
+The `otherwise()` method registers a rejection handler for a promise.
-``` php
-$promise->cancel();
+This method continues to exist only for BC reasons and to ease upgrading
+between versions. It is an alias for:
+
+```php
+$promise->catch($onRejected);
```
-The `cancel()` method notifies the creator of the promise that there is no
-further interest in the results of the operation.
+#### ~~PromiseInterface::always()~~
-Once a promise is settled (either fulfilled or rejected), calling `cancel()` on
-a promise has no effect.
+> Deprecated since v3.0.0, see [`finally()`](#promiseinterfacefinally) instead.
-#### Implementations
+The `always()` method allows you to execute "cleanup" type tasks in a promise chain.
-* [Promise](#promise-1)
-* [FulfilledPromise](#fulfilledpromise) (deprecated)
-* [RejectedPromise](#rejectedpromise) (deprecated)
-* [LazyPromise](#lazypromise) (deprecated)
+This method continues to exist only for BC reasons and to ease upgrading
+between versions. It is an alias for:
+
+```php
+$promise->finally($onFulfilledOrRejected);
+```
### Promise
@@ -367,16 +297,14 @@ Creates a promise whose state is controlled by the functions passed to
`$resolver`.
```php
-$resolver = function (callable $resolve, callable $reject, callable $notify) {
+$resolver = function (callable $resolve, callable $reject) {
// Do some work, possibly asynchronously, and then
- // resolve or reject. You can notify of progress events (deprecated)
- // along the way if you want/need.
+ // resolve or reject.
$resolve($awesomeResult);
// or throw new Exception('Promise rejected');
// or $resolve($anotherPromise);
// or $reject($nastyError);
- // or $notify($progressNotification);
};
$canceller = function () {
@@ -390,7 +318,7 @@ $promise = new React\Promise\Promise($resolver, $canceller);
```
The promise constructor receives a resolver function and an optional canceller
-function which both will be called with 3 arguments:
+function which both will be called with two arguments:
* `$resolve($value)` - Primary function that seals the fate of the
returned promise. Accepts either a non-promise value, or another promise.
@@ -399,7 +327,6 @@ function which both will be called with 3 arguments:
fate will be equivalent to that of `$otherPromise`.
* `$reject($reason)` - Function that rejects the promise. It is recommended to
just throw an exception instead of using `$reject()`.
- * `$notify($update)` - Deprecated function that issues progress events for the promise.
If the resolver or canceller throw an exception, the promise will be rejected
with that thrown exception as the rejection reason.
@@ -407,108 +334,108 @@ with that thrown exception as the rejection reason.
The resolver function will be called immediately, the canceller function only
once all consumers called the `cancel()` method of the promise.
-### FulfilledPromise
-
-> Deprecated in v2.8.0: External usage of `FulfilledPromise` is deprecated, use `resolve()` instead.
-
-Creates a already fulfilled promise.
-
-```php
-$promise = React\Promise\FulfilledPromise($value);
-```
-
-Note, that `$value` **cannot** be a promise. It's recommended to use
-[resolve()](#resolve) for creating resolved promises.
+### Functions
-### RejectedPromise
+Useful functions for creating and joining collections of promises.
-> Deprecated in v2.8.0: External usage of `RejectedPromise` is deprecated, use `reject()` instead.
+All functions working on promise collections (like `all()`, `race()`,
+etc.) support cancellation. This means, if you call `cancel()` on the returned
+promise, all promises in the collection are cancelled.
-Creates a already rejected promise.
+#### resolve()
```php
-$promise = React\Promise\RejectedPromise($reason);
+$promise = React\Promise\resolve(mixed $promiseOrValue);
```
-Note, that `$reason` **cannot** be a promise. It's recommended to use
-[reject()](#reject) for creating rejected promises.
-
-### LazyPromise
+Creates a promise for the supplied `$promiseOrValue`.
-> Deprecated in v2.8.0: LazyPromise is deprecated and should not be used anymore.
+If `$promiseOrValue` is a value, it will be the resolution value of the
+returned promise.
-Creates a promise which will be lazily initialized by `$factory` once a consumer
-calls the `then()` method.
+If `$promiseOrValue` is a thenable (any object that provides a `then()` method),
+a trusted promise that follows the state of the thenable is returned.
-```php
-$factory = function () {
- $deferred = new React\Promise\Deferred();
+If `$promiseOrValue` is a promise, it will be returned as is.
- // Do some heavy stuff here and resolve the deferred once completed
+The resulting `$promise` implements the [`PromiseInterface`](#promiseinterface)
+and can be consumed like any other promise:
- return $deferred->promise();
-};
-
-$promise = new React\Promise\LazyPromise($factory);
+```php
+$promise = React\Promise\resolve(42);
-// $factory will only be executed once we call then()
-$promise->then(function ($value) {
+$promise->then(function (int $result): void {
+ var_dump($result);
+}, function (\Throwable $e): void {
+ echo 'Error: ' . $e->getMessage() . PHP_EOL;
});
```
-### Functions
-
-Useful functions for creating, joining, mapping and reducing collections of
-promises.
-
-All functions working on promise collections (like `all()`, `race()`, `some()`
-etc.) support cancellation. This means, if you call `cancel()` on the returned
-promise, all promises in the collection are cancelled. If the collection itself
-is a promise which resolves to an array, this promise is also cancelled.
-
-#### resolve()
+#### reject()
```php
-$promise = React\Promise\resolve(mixed $promiseOrValue);
+$promise = React\Promise\reject(\Throwable $reason);
```
-Creates a promise for the supplied `$promiseOrValue`.
+Creates a rejected promise for the supplied `$reason`.
-If `$promiseOrValue` is a value, it will be the resolution value of the
-returned promise.
+Note that the [`\Throwable`](https://www.php.net/manual/en/class.throwable.php) interface introduced in PHP 7 covers
+both user land [`\Exception`](https://www.php.net/manual/en/class.exception.php)'s and
+[`\Error`](https://www.php.net/manual/en/class.error.php) internal PHP errors. By enforcing `\Throwable` as reason to
+reject a promise, any language error or user land exception can be used to reject a promise.
-If `$promiseOrValue` is a thenable (any object that provides a `then()` method),
-a trusted promise that follows the state of the thenable is returned.
+The resulting `$promise` implements the [`PromiseInterface`](#promiseinterface)
+and can be consumed like any other promise:
-If `$promiseOrValue` is a promise, it will be returned as is.
+```php
+$promise = React\Promise\reject(new RuntimeException('Request failed'));
-Note: The promise returned is always a promise implementing
-[ExtendedPromiseInterface](#extendedpromiseinterface). If you pass in a custom
-promise which only implements [PromiseInterface](#promiseinterface), this
-promise will be assimilated to a extended promise following `$promiseOrValue`.
+$promise->then(function (int $result): void {
+ var_dump($result);
+}, function (\Throwable $e): void {
+ echo 'Error: ' . $e->getMessage() . PHP_EOL;
+});
+```
-#### reject()
+Note that rejected promises should always be handled similar to how any
+exceptions should always be caught in a `try` + `catch` block. If you remove the
+last reference to a rejected promise that has not been handled, it will
+report an unhandled promise rejection:
```php
-$promise = React\Promise\reject(mixed $promiseOrValue);
-```
+function incorrect(): int
+{
+ $promise = React\Promise\reject(new RuntimeException('Request failed'));
-Creates a rejected promise for the supplied `$promiseOrValue`.
+ // Commented out: No rejection handler registered here.
+ // $promise->then(null, function (\Throwable $e): void { /* ignore */ });
-If `$promiseOrValue` is a value, it will be the rejection value of the
-returned promise.
+ // Returning from a function will remove all local variable references, hence why
+ // this will report an unhandled promise rejection here.
+ return 42;
+}
+
+// Calling this function will log an error message plus its stack trace:
+// Unhandled promise rejection with RuntimeException: Request failed in example.php:10
+incorrect();
+```
+
+A rejected promise will be considered "handled" if you catch the rejection
+reason with either the [`then()` method](#promiseinterfacethen), the
+[`catch()` method](#promiseinterfacecatch), or the
+[`finally()` method](#promiseinterfacefinally). Note that each of these methods
+return a new promise that may again be rejected if you re-throw an exception.
-If `$promiseOrValue` is a promise, its completion value will be the rejected
-value of the returned promise.
+A rejected promise will also be considered "handled" if you abort the operation
+with the [`cancel()` method](#promiseinterfacecancel) (which in turn would
+usually reject the promise if it is still pending).
-This can be useful in situations where you need to reject a promise without
-throwing an exception. For example, it allows you to propagate a rejection with
-the value of another promise.
+See also the [`set_rejection_handler()` function](#set_rejection_handler).
#### all()
```php
-$promise = React\Promise\all(array|React\Promise\PromiseInterface $promisesOrValues);
+$promise = React\Promise\all(iterable $promisesOrValues);
```
Returns a promise that will resolve only once all the items in
@@ -519,16 +446,19 @@ will be an array containing the resolution values of each of the items in
#### race()
```php
-$promise = React\Promise\race(array|React\Promise\PromiseInterface $promisesOrValues);
+$promise = React\Promise\race(iterable $promisesOrValues);
```
Initiates a competitive race that allows one winner. Returns a promise which is
resolved in the same way the first settled promise resolves.
+The returned promise will become **infinitely pending** if `$promisesOrValues`
+contains 0 items.
+
#### any()
```php
-$promise = React\Promise\any(array|React\Promise\PromiseInterface $promisesOrValues);
+$promise = React\Promise\any(iterable $promisesOrValues);
```
Returns a promise that will resolve when any one of the items in
@@ -536,58 +466,52 @@ Returns a promise that will resolve when any one of the items in
will be the resolution value of the triggering item.
The returned promise will only reject if *all* items in `$promisesOrValues` are
-rejected. The rejection value will be an array of all rejection reasons.
+rejected. The rejection value will be a `React\Promise\Exception\CompositeException`
+which holds all rejection reasons. The rejection reasons can be obtained with
+`CompositeException::getThrowables()`.
The returned promise will also reject with a `React\Promise\Exception\LengthException`
if `$promisesOrValues` contains 0 items.
-#### some()
+#### set_rejection_handler()
```php
-$promise = React\Promise\some(array|React\Promise\PromiseInterface $promisesOrValues, integer $howMany);
+React\Promise\set_rejection_handler(?callable $callback): ?callable;
```
-Returns a promise that will resolve when `$howMany` of the supplied items in
-`$promisesOrValues` resolve. The resolution value of the returned promise
-will be an array of length `$howMany` containing the resolution values of the
-triggering items.
-
-The returned promise will reject if it becomes impossible for `$howMany` items
-to resolve (that is, when `(count($promisesOrValues) - $howMany) + 1` items
-reject). The rejection value will be an array of
-`(count($promisesOrValues) - $howMany) + 1` rejection reasons.
-
-The returned promise will also reject with a `React\Promise\Exception\LengthException`
-if `$promisesOrValues` contains less items than `$howMany`.
-
-#### map()
+Sets the global rejection handler for unhandled promise rejections.
-```php
-$promise = React\Promise\map(array|React\Promise\PromiseInterface $promisesOrValues, callable $mapFunc);
-```
+Note that rejected promises should always be handled similar to how any
+exceptions should always be caught in a `try` + `catch` block. If you remove
+the last reference to a rejected promise that has not been handled, it will
+report an unhandled promise rejection. See also the [`reject()` function](#reject)
+for more details.
-Traditional map function, similar to `array_map()`, but allows input to contain
-promises and/or values, and `$mapFunc` may return either a value or a promise.
+The `?callable $callback` argument MUST be a valid callback function that
+accepts a single `Throwable` argument or a `null` value to restore the
+default promise rejection handler. The return value of the callback function
+will be ignored and has no effect, so you SHOULD return a `void` value. The
+callback function MUST NOT throw or the program will be terminated with a
+fatal error.
-The map function receives each item as argument, where item is a fully resolved
-value of a promise or value in `$promisesOrValues`.
+The function returns the previous rejection handler or `null` if using the
+default promise rejection handler.
-#### reduce()
+The default promise rejection handler will log an error message plus its stack
+trace:
```php
-$promise = React\Promise\reduce(array|React\Promise\PromiseInterface $promisesOrValues, callable $reduceFunc , $initialValue = null);
+// Unhandled promise rejection with RuntimeException: Unhandled in example.php:2
+React\Promise\reject(new RuntimeException('Unhandled'));
```
-Traditional reduce function, similar to `array_reduce()`, but input may contain
-promises and/or values, and `$reduceFunc` may return either a value or a
-promise, *and* `$initialValue` may be a promise or a value for the starting
-value.
-
-### PromisorInterface
-
-The `React\Promise\PromisorInterface` provides a common interface for objects
-that provide a promise. `React\Promise\Deferred` implements it, but since it
-is part of the public API anyone can implement it.
+The promise rejection handler may be used to use customize the log message or
+write to custom log targets. As a rule of thumb, this function should only be
+used as a last resort and promise rejections are best handled with either the
+[`then()` method](#promiseinterfacethen), the
+[`catch()` method](#promiseinterfacecatch), or the
+[`finally()` method](#promiseinterfacefinally).
+See also the [`reject()` function](#reject) for more details.
Examples
--------
@@ -600,7 +524,7 @@ function getAwesomeResultPromise()
$deferred = new React\Promise\Deferred();
// Execute a Node.js-style function using the callback pattern
- computeAwesomeResultAsynchronously(function ($error, $result) use ($deferred) {
+ computeAwesomeResultAsynchronously(function (\Throwable $error, $result) use ($deferred) {
if ($error) {
$deferred->reject($error);
} else {
@@ -617,11 +541,8 @@ getAwesomeResultPromise()
function ($value) {
// Deferred resolved, do something with $value
},
- function ($reason) {
+ function (\Throwable $reason) {
// Deferred rejected, do something with $reason
- },
- function ($update) {
- // Progress notification triggered, do something with $update
}
);
```
@@ -689,17 +610,17 @@ $deferred->promise()
->then(function ($x) {
throw new \Exception($x + 1);
})
- ->otherwise(function (\Exception $x) {
+ ->catch(function (\Exception $x) {
// Propagate the rejection
throw $x;
})
- ->otherwise(function (\Exception $x) {
+ ->catch(function (\Exception $x) {
// Can also propagate by returning another rejection
return React\Promise\reject(
new \Exception($x->getMessage() + 1)
);
})
- ->otherwise(function ($x) {
+ ->catch(function ($x) {
echo 'Reject ' . $x->getMessage(); // 3
});
@@ -721,7 +642,7 @@ $deferred->promise()
->then(function ($x) {
throw new \Exception($x + 1);
})
- ->otherwise(function (\Exception $x) {
+ ->catch(function (\Exception $x) {
// Handle the rejection, and don't propagate.
// This is like catch without a rethrow
return $x->getMessage() + 1;
@@ -733,131 +654,57 @@ $deferred->promise()
$deferred->resolve(1); // Prints "Mixed 4"
```
-#### Progress event forwarding
-
-> Deprecated in v2.6.0: Progress support is deprecated and should not be used anymore.
-
-In the same way as resolution and rejection handlers, your progress handler
-**MUST** return a progress event to be propagated to the next link in the chain.
-If you return nothing, `null` will be propagated.
-
-Also in the same way as resolutions and rejections, if you don't register a
-progress handler, the update will be propagated through.
-
-If your progress handler throws an exception, the exception will be propagated
-to the next link in the chain. The best thing to do is to ensure your progress
-handlers do not throw exceptions.
-
-This gives you the opportunity to transform progress events at each step in the
-chain so that they are meaningful to the next step. It also allows you to choose
-not to transform them, and simply let them propagate untransformed, by not
-registering a progress handler.
+Install
+-------
-```php
-$deferred = new React\Promise\Deferred();
+The recommended way to install this library is [through Composer](https://getcomposer.org/).
+[New to Composer?](https://getcomposer.org/doc/00-intro.md)
-$deferred->promise()
- ->progress(function ($update) {
- return $update + 1;
- })
- ->progress(function ($update) {
- echo 'Progress ' . $update; // 2
- });
+This project follows [SemVer](https://semver.org/).
+This will install the latest supported version from this branch:
-$deferred->notify(1); // Prints "Progress 2"
+```bash
+composer require react/promise:^3.2
```
-### done() vs. then()
-
-The golden rule is:
-
- Either return your promise, or call done() on it.
-
-At a first glance, `then()` and `done()` seem very similar. However, there are
-important distinctions.
-
-The intent of `then()` is to transform a promise's value and to pass or return
-a new promise for the transformed value along to other parts of your code.
-
-The intent of `done()` is to consume a promise's value, transferring
-responsibility for the value to your code.
-
-In addition to transforming a value, `then()` allows you to recover from, or
-propagate intermediate errors. Any errors that are not handled will be caught
-by the promise machinery and used to reject the promise returned by `then()`.
-
-Calling `done()` transfers all responsibility for errors to your code. If an
-error (either a thrown exception or returned rejection) escapes the
-`$onFulfilled` or `$onRejected` callbacks you provide to done, it will be
-rethrown in an uncatchable way causing a fatal error.
+See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades.
-```php
-function getJsonResult()
-{
- return queryApi()
- ->then(
- // Transform API results to an object
- function ($jsonResultString) {
- return json_decode($jsonResultString);
- },
- // Transform API errors to an exception
- function ($jsonErrorString) {
- $object = json_decode($jsonErrorString);
- throw new ApiErrorException($object->errorMessage);
- }
- );
-}
+This project aims to run on any platform and thus does not require any PHP
+extensions and supports running on PHP 7.1 through current PHP 8+.
+It's *highly recommended to use the latest supported PHP version* for this project.
-// Here we provide no rejection handler. If the promise returned has been
-// rejected, the ApiErrorException will be thrown
-getJsonResult()
- ->done(
- // Consume transformed object
- function ($jsonResultObject) {
- // Do something with $jsonResultObject
- }
- );
+We're committed to providing long-term support (LTS) options and to provide a
+smooth upgrade path. If you're using an older PHP version, you may use the
+[`2.x` branch](https://github.com/reactphp/promise/tree/2.x) (PHP 5.4+) or
+[`1.x` branch](https://github.com/reactphp/promise/tree/1.x) (PHP 5.3+) which both
+provide a compatible API but do not take advantage of newer language features.
+You may target multiple versions at the same time to support a wider range of
+PHP versions like this:
-// Here we provide a rejection handler which will either throw while debugging
-// or log the exception
-getJsonResult()
- ->done(
- function ($jsonResultObject) {
- // Do something with $jsonResultObject
- },
- function (ApiErrorException $exception) {
- if (isDebug()) {
- throw $exception;
- } else {
- logException($exception);
- }
- }
- );
+```bash
+composer require "react/promise:^3 || ^2 || ^1"
```
-Note that if a rejection value is not an instance of `\Exception`, it will be
-wrapped in an exception of the type `React\Promise\UnhandledRejectionException`.
-
-You can get the original rejection reason by calling `$exception->getReason()`.
+## Tests
-Install
--------
+To run the test suite, you first need to clone this repo and then install all
+dependencies [through Composer](https://getcomposer.org/):
-The recommended way to install this library is [through Composer](https://getcomposer.org).
-[New to Composer?](https://getcomposer.org/doc/00-intro.md)
+```bash
+composer install
+```
-This project follows [SemVer](https://semver.org/).
-This will install the latest supported version:
+To run the test suite, go to the project root and run:
```bash
-composer require react/promise:^2.11
+vendor/bin/phpunit
```
-See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades.
+On top of this, we use PHPStan on max level to ensure type safety across the project:
-This project aims to run on any platform and thus does not require any PHP
-extensions and supports running on legacy PHP 5.4 through current PHP 8+ and HHVM.
-It's *highly recommended to use the latest supported PHP version* for this project.
+```bash
+vendor/bin/phpstan
+```
Credits
-------
diff --git a/vendor/rector/rector/vendor/react/promise/composer.json b/vendor/rector/rector/vendor/react/promise/composer.json
index 468d857d7..f0f18f269 100644
--- a/vendor/rector/rector/vendor/react/promise/composer.json
+++ b/vendor/rector/rector/vendor/react/promise/composer.json
@@ -25,14 +25,15 @@
}
],
"require": {
- "php": ">=5.4.0"
+ "php": ">=7.1.0"
},
"require-dev": {
- "phpunit\/phpunit": "^9.6 || ^5.7 || ^4.8.36"
+ "phpstan\/phpstan": "1.10.39 || 1.4.10",
+ "phpunit\/phpunit": "^9.6 || ^7.5"
},
"autoload": {
"psr-4": {
- "RectorPrefix202405\\React\\Promise\\": "src\/"
+ "RectorPrefix202410\\React\\Promise\\": "src\/"
},
"files": [
"src\/functions_include.php"
@@ -40,11 +41,14 @@
},
"autoload-dev": {
"psr-4": {
- "RectorPrefix202405\\React\\Promise\\": [
- "tests\/",
- "tests\/fixtures\/"
+ "RectorPrefix202410\\React\\Promise\\": [
+ "tests\/fixtures\/",
+ "tests\/"
]
- }
+ },
+ "files": [
+ "tests\/Fiber.php"
+ ]
},
"keywords": [
"promise",
diff --git a/vendor/rector/rector/vendor/react/promise/src/CancellablePromiseInterface.php b/vendor/rector/rector/vendor/react/promise/src/CancellablePromiseInterface.php
deleted file mode 100644
index be96ec9d5..000000000
--- a/vendor/rector/rector/vendor/react/promise/src/CancellablePromiseInterface.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
+ */
private $promise;
+ /** @var callable(T):void */
private $resolveCallback;
+ /** @var callable(\Throwable):void */
private $rejectCallback;
- private $notifyCallback;
- private $canceller;
- public function __construct(callable $canceller = null)
+ /**
+ * @param (callable(callable(T):void,callable(\Throwable):void):void)|null $canceller
+ */
+ public function __construct(?callable $canceller = null)
{
- $this->canceller = $canceller;
+ $this->promise = new Promise(function ($resolve, $reject) : void {
+ $this->resolveCallback = $resolve;
+ $this->rejectCallback = $reject;
+ }, $canceller);
}
- public function promise()
+ /**
+ * @return PromiseInterface
+ */
+ public function promise() : PromiseInterface
{
- if (null === $this->promise) {
- $this->promise = new Promise(function ($resolve, $reject, $notify) {
- $this->resolveCallback = $resolve;
- $this->rejectCallback = $reject;
- $this->notifyCallback = $notify;
- }, $this->canceller);
- $this->canceller = null;
- }
return $this->promise;
}
- public function resolve($value = null)
- {
- $this->promise();
- \call_user_func($this->resolveCallback, $value);
- }
- public function reject($reason = null)
- {
- $this->promise();
- \call_user_func($this->rejectCallback, $reason);
- }
/**
- * @deprecated 2.6.0 Progress support is deprecated and should not be used anymore.
- * @param mixed $update
+ * @param T $value
*/
- public function notify($update = null)
+ public function resolve($value) : void
{
- $this->promise();
- \call_user_func($this->notifyCallback, $update);
+ ($this->resolveCallback)($value);
}
- /**
- * @deprecated 2.2.0
- * @see Deferred::notify()
- */
- public function progress($update = null)
+ public function reject(\Throwable $reason) : void
{
- $this->notify($update);
+ ($this->rejectCallback)($reason);
}
}
diff --git a/vendor/rector/rector/vendor/react/promise/src/Exception/CompositeException.php b/vendor/rector/rector/vendor/react/promise/src/Exception/CompositeException.php
new file mode 100644
index 000000000..af5e40bcd
--- /dev/null
+++ b/vendor/rector/rector/vendor/react/promise/src/Exception/CompositeException.php
@@ -0,0 +1,29 @@
+throwables = $throwables;
+ }
+ /**
+ * @return \Throwable[]
+ */
+ public function getThrowables() : array
+ {
+ return $this->throwables;
+ }
+}
diff --git a/vendor/rector/rector/vendor/react/promise/src/Exception/LengthException.php b/vendor/rector/rector/vendor/react/promise/src/Exception/LengthException.php
index 6bb548fb1..2b10e9c9e 100644
--- a/vendor/rector/rector/vendor/react/promise/src/Exception/LengthException.php
+++ b/vendor/rector/rector/vendor/react/promise/src/Exception/LengthException.php
@@ -1,6 +1,6 @@
then(null, $onRejected);
- * ```
- *
- * Additionally, you can type hint the `$reason` argument of `$onRejected` to catch
- * only specific errors.
- *
- * @param callable $onRejected
- * @return ExtendedPromiseInterface
- */
- public function otherwise(callable $onRejected);
- /**
- * Allows you to execute "cleanup" type tasks in a promise chain.
- *
- * It arranges for `$onFulfilledOrRejected` to be called, with no arguments,
- * when the promise is either fulfilled or rejected.
- *
- * * If `$promise` fulfills, and `$onFulfilledOrRejected` returns successfully,
- * `$newPromise` will fulfill with the same value as `$promise`.
- * * If `$promise` fulfills, and `$onFulfilledOrRejected` throws or returns a
- * rejected promise, `$newPromise` will reject with the thrown exception or
- * rejected promise's reason.
- * * If `$promise` rejects, and `$onFulfilledOrRejected` returns successfully,
- * `$newPromise` will reject with the same reason as `$promise`.
- * * If `$promise` rejects, and `$onFulfilledOrRejected` throws or returns a
- * rejected promise, `$newPromise` will reject with the thrown exception or
- * rejected promise's reason.
- *
- * `always()` behaves similarly to the synchronous finally statement. When combined
- * with `otherwise()`, `always()` allows you to write code that is similar to the familiar
- * synchronous catch/finally pair.
- *
- * Consider the following synchronous code:
- *
- * ```php
- * try {
- * return doSomething();
- * } catch(\Exception $e) {
- * return handleError($e);
- * } finally {
- * cleanup();
- * }
- * ```
- *
- * Similar asynchronous code (with `doSomething()` that returns a promise) can be
- * written:
- *
- * ```php
- * return doSomething()
- * ->otherwise('handleError')
- * ->always('cleanup');
- * ```
- *
- * @param callable $onFulfilledOrRejected
- * @return ExtendedPromiseInterface
- */
- public function always(callable $onFulfilledOrRejected);
- /**
- * Registers a handler for progress updates from promise. It is a shortcut for:
- *
- * ```php
- * $promise->then(null, null, $onProgress);
- * ```
- *
- * @param callable $onProgress
- * @return ExtendedPromiseInterface
- * @deprecated 2.6.0 Progress support is deprecated and should not be used anymore.
- */
- public function progress(callable $onProgress);
-}
diff --git a/vendor/rector/rector/vendor/react/promise/src/FulfilledPromise.php b/vendor/rector/rector/vendor/react/promise/src/FulfilledPromise.php
deleted file mode 100644
index 3e757d8ec..000000000
--- a/vendor/rector/rector/vendor/react/promise/src/FulfilledPromise.php
+++ /dev/null
@@ -1,60 +0,0 @@
-value = $value;
- }
- public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
- {
- if (null === $onFulfilled) {
- return $this;
- }
- try {
- return resolve($onFulfilled($this->value));
- } catch (\Throwable $exception) {
- return new RejectedPromise($exception);
- } catch (\Exception $exception) {
- return new RejectedPromise($exception);
- }
- }
- public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
- {
- if (null === $onFulfilled) {
- return;
- }
- $result = $onFulfilled($this->value);
- if ($result instanceof ExtendedPromiseInterface) {
- $result->done();
- }
- }
- public function otherwise(callable $onRejected)
- {
- return $this;
- }
- public function always(callable $onFulfilledOrRejected)
- {
- return $this->then(function ($value) use($onFulfilledOrRejected) {
- return resolve($onFulfilledOrRejected())->then(function () use($value) {
- return $value;
- });
- });
- }
- public function progress(callable $onProgress)
- {
- return $this;
- }
- public function cancel()
- {
- }
-}
diff --git a/vendor/rector/rector/vendor/react/promise/src/CancellationQueue.php b/vendor/rector/rector/vendor/react/promise/src/Internal/CancellationQueue.php
similarity index 70%
rename from vendor/rector/rector/vendor/react/promise/src/CancellationQueue.php
rename to vendor/rector/rector/vendor/react/promise/src/Internal/CancellationQueue.php
index 412c29176..8793a7b64 100644
--- a/vendor/rector/rector/vendor/react/promise/src/CancellationQueue.php
+++ b/vendor/rector/rector/vendor/react/promise/src/Internal/CancellationQueue.php
@@ -1,12 +1,17 @@
started) {
return;
@@ -14,7 +19,10 @@ public function __invoke()
$this->started = \true;
$this->drain();
}
- public function enqueue($cancellable)
+ /**
+ * @param mixed $cancellable
+ */
+ public function enqueue($cancellable) : void
{
if (!\is_object($cancellable) || !\method_exists($cancellable, 'then') || !\method_exists($cancellable, 'cancel')) {
return;
@@ -24,15 +32,15 @@ public function enqueue($cancellable)
$this->drain();
}
}
- private function drain()
+ private function drain() : void
{
for ($i = \key($this->queue); isset($this->queue[$i]); $i++) {
$cancellable = $this->queue[$i];
+ \assert(\method_exists($cancellable, 'cancel'));
$exception = null;
try {
$cancellable->cancel();
} catch (\Throwable $exception) {
- } catch (\Exception $exception) {
}
unset($this->queue[$i]);
if ($exception) {
diff --git a/vendor/rector/rector/vendor/react/promise/src/Internal/FulfilledPromise.php b/vendor/rector/rector/vendor/react/promise/src/Internal/FulfilledPromise.php
new file mode 100644
index 000000000..5910e5f30
--- /dev/null
+++ b/vendor/rector/rector/vendor/react/promise/src/Internal/FulfilledPromise.php
@@ -0,0 +1,79 @@
+
+ */
+final class FulfilledPromise implements PromiseInterface
+{
+ /** @var T */
+ private $value;
+ /**
+ * @param T $value
+ * @throws \InvalidArgumentException
+ */
+ public function __construct($value = null)
+ {
+ if ($value instanceof PromiseInterface) {
+ throw new \InvalidArgumentException('You cannot create React\\Promise\\FulfilledPromise with a promise. Use React\\Promise\\resolve($promiseOrValue) instead.');
+ }
+ $this->value = $value;
+ }
+ /**
+ * @template TFulfilled
+ * @param ?(callable((T is void ? null : T)): (PromiseInterface|TFulfilled)) $onFulfilled
+ * @return PromiseInterface<($onFulfilled is null ? T : TFulfilled)>
+ */
+ public function then(?callable $onFulfilled = null, ?callable $onRejected = null) : PromiseInterface
+ {
+ if (null === $onFulfilled) {
+ return $this;
+ }
+ try {
+ /**
+ * @var PromiseInterface|T $result
+ */
+ $result = $onFulfilled($this->value);
+ return resolve($result);
+ } catch (\Throwable $exception) {
+ return new RejectedPromise($exception);
+ }
+ }
+ public function catch(callable $onRejected) : PromiseInterface
+ {
+ return $this;
+ }
+ public function finally(callable $onFulfilledOrRejected) : PromiseInterface
+ {
+ return $this->then(function ($value) use($onFulfilledOrRejected) : PromiseInterface {
+ return resolve($onFulfilledOrRejected())->then(function () use($value) {
+ return $value;
+ });
+ });
+ }
+ public function cancel() : void
+ {
+ }
+ /**
+ * @deprecated 3.0.0 Use `catch()` instead
+ * @see self::catch()
+ */
+ public function otherwise(callable $onRejected) : PromiseInterface
+ {
+ return $this->catch($onRejected);
+ }
+ /**
+ * @deprecated 3.0.0 Use `finally()` instead
+ * @see self::finally()
+ */
+ public function always(callable $onFulfilledOrRejected) : PromiseInterface
+ {
+ return $this->finally($onFulfilledOrRejected);
+ }
+}
diff --git a/vendor/rector/rector/vendor/react/promise/src/Internal/RejectedPromise.php b/vendor/rector/rector/vendor/react/promise/src/Internal/RejectedPromise.php
new file mode 100644
index 000000000..215ff7821
--- /dev/null
+++ b/vendor/rector/rector/vendor/react/promise/src/Internal/RejectedPromise.php
@@ -0,0 +1,111 @@
+
+ */
+final class RejectedPromise implements PromiseInterface
+{
+ /** @var \Throwable */
+ private $reason;
+ /** @var bool */
+ private $handled = \false;
+ /**
+ * @param \Throwable $reason
+ */
+ public function __construct(\Throwable $reason)
+ {
+ $this->reason = $reason;
+ }
+ /** @throws void */
+ public function __destruct()
+ {
+ if ($this->handled) {
+ return;
+ }
+ $handler = set_rejection_handler(null);
+ if ($handler === null) {
+ $message = 'Unhandled promise rejection with ' . $this->reason;
+ \error_log($message);
+ return;
+ }
+ try {
+ $handler($this->reason);
+ } catch (\Throwable $e) {
+ \preg_match('/^([^:\\s]++)(.*+)$/sm', (string) $e, $match);
+ \assert(isset($match[1], $match[2]));
+ $message = 'Fatal error: Uncaught ' . $match[1] . ' from unhandled promise rejection handler' . $match[2];
+ \error_log($message);
+ exit(255);
+ }
+ }
+ /**
+ * @template TRejected
+ * @param ?callable $onFulfilled
+ * @param ?(callable(\Throwable): (PromiseInterface|TRejected)) $onRejected
+ * @return PromiseInterface<($onRejected is null ? never : TRejected)>
+ */
+ public function then(?callable $onFulfilled = null, ?callable $onRejected = null) : PromiseInterface
+ {
+ if (null === $onRejected) {
+ return $this;
+ }
+ $this->handled = \true;
+ try {
+ return resolve($onRejected($this->reason));
+ } catch (\Throwable $exception) {
+ return new RejectedPromise($exception);
+ }
+ }
+ /**
+ * @template TThrowable of \Throwable
+ * @template TRejected
+ * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected
+ * @return PromiseInterface
+ */
+ public function catch(callable $onRejected) : PromiseInterface
+ {
+ if (!_checkTypehint($onRejected, $this->reason)) {
+ return $this;
+ }
+ /**
+ * @var callable(\Throwable):(PromiseInterface|TRejected) $onRejected
+ */
+ return $this->then(null, $onRejected);
+ }
+ public function finally(callable $onFulfilledOrRejected) : PromiseInterface
+ {
+ return $this->then(null, function (\Throwable $reason) use($onFulfilledOrRejected) : PromiseInterface {
+ return resolve($onFulfilledOrRejected())->then(function () use($reason) : PromiseInterface {
+ return new RejectedPromise($reason);
+ });
+ });
+ }
+ public function cancel() : void
+ {
+ $this->handled = \true;
+ }
+ /**
+ * @deprecated 3.0.0 Use `catch()` instead
+ * @see self::catch()
+ */
+ public function otherwise(callable $onRejected) : PromiseInterface
+ {
+ return $this->catch($onRejected);
+ }
+ /**
+ * @deprecated 3.0.0 Use `always()` instead
+ * @see self::always()
+ */
+ public function always(callable $onFulfilledOrRejected) : PromiseInterface
+ {
+ return $this->finally($onFulfilledOrRejected);
+ }
+}
diff --git a/vendor/rector/rector/vendor/react/promise/src/LazyPromise.php b/vendor/rector/rector/vendor/react/promise/src/LazyPromise.php
deleted file mode 100644
index 367a881f8..000000000
--- a/vendor/rector/rector/vendor/react/promise/src/LazyPromise.php
+++ /dev/null
@@ -1,57 +0,0 @@
-factory = $factory;
- }
- public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
- {
- return $this->promise()->then($onFulfilled, $onRejected, $onProgress);
- }
- public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
- {
- return $this->promise()->done($onFulfilled, $onRejected, $onProgress);
- }
- public function otherwise(callable $onRejected)
- {
- return $this->promise()->otherwise($onRejected);
- }
- public function always(callable $onFulfilledOrRejected)
- {
- return $this->promise()->always($onFulfilledOrRejected);
- }
- public function progress(callable $onProgress)
- {
- return $this->promise()->progress($onProgress);
- }
- public function cancel()
- {
- return $this->promise()->cancel();
- }
- /**
- * @internal
- * @see Promise::settle()
- */
- public function promise()
- {
- if (null === $this->promise) {
- try {
- $this->promise = resolve(\call_user_func($this->factory));
- } catch (\Throwable $exception) {
- $this->promise = new RejectedPromise($exception);
- } catch (\Exception $exception) {
- $this->promise = new RejectedPromise($exception);
- }
- }
- return $this->promise;
- }
-}
diff --git a/vendor/rector/rector/vendor/react/promise/src/Promise.php b/vendor/rector/rector/vendor/react/promise/src/Promise.php
index 35e4e3dc0..8fdd2a66f 100644
--- a/vendor/rector/rector/vendor/react/promise/src/Promise.php
+++ b/vendor/rector/rector/vendor/react/promise/src/Promise.php
@@ -1,16 +1,29 @@
+ */
+final class Promise implements PromiseInterface
{
+ /** @var (callable(callable(T):void,callable(\Throwable):void):void)|null */
private $canceller;
+ /** @var ?PromiseInterface */
private $result;
+ /** @var list):void> */
private $handlers = [];
- private $progressHandlers = [];
+ /** @var int */
private $requiredCancelRequests = 0;
- private $cancelRequests = 0;
- public function __construct(callable $resolver, callable $canceller = null)
+ /** @var bool */
+ private $cancelled = \false;
+ /**
+ * @param callable(callable(T):void,callable(\Throwable):void):void $resolver
+ * @param (callable(callable(T):void,callable(\Throwable):void):void)|null $canceller
+ */
+ public function __construct(callable $resolver, ?callable $canceller = null)
{
$this->canceller = $canceller;
// Explicitly overwrite arguments with null values before invoking
@@ -20,13 +33,13 @@ public function __construct(callable $resolver, callable $canceller = null)
$resolver = $canceller = null;
$this->call($cb);
}
- public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
+ public function then(?callable $onFulfilled = null, ?callable $onRejected = null) : PromiseInterface
{
if (null !== $this->result) {
- return $this->result->then($onFulfilled, $onRejected, $onProgress);
+ return $this->result->then($onFulfilled, $onRejected);
}
if (null === $this->canceller) {
- return new static($this->resolver($onFulfilled, $onRejected, $onProgress));
+ return new static($this->resolver($onFulfilled, $onRejected));
}
// This promise has a canceller, so we create a new child promise which
// has a canceller that invokes the parent canceller if all other
@@ -35,118 +48,157 @@ public function then(callable $onFulfilled = null, callable $onRejected = null,
// keeping a cyclic reference between parent and follower.
$parent = $this;
++$parent->requiredCancelRequests;
- return new static($this->resolver($onFulfilled, $onRejected, $onProgress), static function () use(&$parent) {
- if (++$parent->cancelRequests >= $parent->requiredCancelRequests) {
+ return new static($this->resolver($onFulfilled, $onRejected), static function () use(&$parent) : void {
+ \assert($parent instanceof self);
+ --$parent->requiredCancelRequests;
+ if ($parent->requiredCancelRequests <= 0) {
$parent->cancel();
}
$parent = null;
});
}
- public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
+ /**
+ * @template TThrowable of \Throwable
+ * @template TRejected
+ * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected
+ * @return PromiseInterface
+ */
+ public function catch(callable $onRejected) : PromiseInterface
{
- if (null !== $this->result) {
- return $this->result->done($onFulfilled, $onRejected, $onProgress);
- }
- $this->handlers[] = static function (ExtendedPromiseInterface $promise) use($onFulfilled, $onRejected) {
- $promise->done($onFulfilled, $onRejected);
- };
- if ($onProgress) {
- $this->progressHandlers[] = $onProgress;
- }
- }
- public function otherwise(callable $onRejected)
- {
- return $this->then(null, static function ($reason) use($onRejected) {
+ return $this->then(null, static function (\Throwable $reason) use($onRejected) {
if (!_checkTypehint($onRejected, $reason)) {
return new RejectedPromise($reason);
}
+ /**
+ * @var callable(\Throwable):(PromiseInterface|TRejected) $onRejected
+ */
return $onRejected($reason);
});
}
- public function always(callable $onFulfilledOrRejected)
+ public function finally(callable $onFulfilledOrRejected) : PromiseInterface
{
- return $this->then(static function ($value) use($onFulfilledOrRejected) {
+ return $this->then(static function ($value) use($onFulfilledOrRejected) : PromiseInterface {
return resolve($onFulfilledOrRejected())->then(function () use($value) {
return $value;
});
- }, static function ($reason) use($onFulfilledOrRejected) {
- return resolve($onFulfilledOrRejected())->then(function () use($reason) {
+ }, static function (\Throwable $reason) use($onFulfilledOrRejected) : PromiseInterface {
+ return resolve($onFulfilledOrRejected())->then(function () use($reason) : RejectedPromise {
return new RejectedPromise($reason);
});
});
}
- public function progress(callable $onProgress)
- {
- return $this->then(null, null, $onProgress);
- }
- public function cancel()
+ public function cancel() : void
{
- if (null === $this->canceller || null !== $this->result) {
- return;
- }
+ $this->cancelled = \true;
$canceller = $this->canceller;
$this->canceller = null;
- $this->call($canceller);
+ $parentCanceller = null;
+ if (null !== $this->result) {
+ // Forward cancellation to rejected promise to avoid reporting unhandled rejection
+ if ($this->result instanceof RejectedPromise) {
+ $this->result->cancel();
+ }
+ // Go up the promise chain and reach the top most promise which is
+ // itself not following another promise
+ $root = $this->unwrap($this->result);
+ // Return if the root promise is already resolved or a
+ // FulfilledPromise or RejectedPromise
+ if (!$root instanceof self || null !== $root->result) {
+ return;
+ }
+ $root->requiredCancelRequests--;
+ if ($root->requiredCancelRequests <= 0) {
+ $parentCanceller = [$root, 'cancel'];
+ }
+ }
+ if (null !== $canceller) {
+ $this->call($canceller);
+ }
+ // For BC, we call the parent canceller after our own canceller
+ if ($parentCanceller) {
+ $parentCanceller();
+ }
}
- private function resolver(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
+ /**
+ * @deprecated 3.0.0 Use `catch()` instead
+ * @see self::catch()
+ */
+ public function otherwise(callable $onRejected) : PromiseInterface
{
- return function ($resolve, $reject, $notify) use($onFulfilled, $onRejected, $onProgress) {
- if ($onProgress) {
- $progressHandler = static function ($update) use($notify, $onProgress) {
- try {
- $notify($onProgress($update));
- } catch (\Throwable $e) {
- $notify($e);
- } catch (\Exception $e) {
- $notify($e);
- }
- };
- } else {
- $progressHandler = $notify;
- }
- $this->handlers[] = static function (ExtendedPromiseInterface $promise) use($onFulfilled, $onRejected, $resolve, $reject, $progressHandler) {
- $promise->then($onFulfilled, $onRejected)->done($resolve, $reject, $progressHandler);
+ return $this->catch($onRejected);
+ }
+ /**
+ * @deprecated 3.0.0 Use `finally()` instead
+ * @see self::finally()
+ */
+ public function always(callable $onFulfilledOrRejected) : PromiseInterface
+ {
+ return $this->finally($onFulfilledOrRejected);
+ }
+ private function resolver(?callable $onFulfilled = null, ?callable $onRejected = null) : callable
+ {
+ return function (callable $resolve, callable $reject) use($onFulfilled, $onRejected) : void {
+ $this->handlers[] = static function (PromiseInterface $promise) use($onFulfilled, $onRejected, $resolve, $reject) : void {
+ $promise = $promise->then($onFulfilled, $onRejected);
+ if ($promise instanceof self && $promise->result === null) {
+ $promise->handlers[] = static function (PromiseInterface $promise) use($resolve, $reject) : void {
+ $promise->then($resolve, $reject);
+ };
+ } else {
+ $promise->then($resolve, $reject);
+ }
};
- $this->progressHandlers[] = $progressHandler;
};
}
- private function reject($reason = null)
+ private function reject(\Throwable $reason) : void
{
if (null !== $this->result) {
return;
}
$this->settle(reject($reason));
}
- private function settle(ExtendedPromiseInterface $promise)
+ /**
+ * @param PromiseInterface $result
+ */
+ private function settle(PromiseInterface $result) : void
{
- $promise = $this->unwrap($promise);
- if ($promise === $this) {
- $promise = new RejectedPromise(new \LogicException('Cannot resolve a promise with itself.'));
+ $result = $this->unwrap($result);
+ if ($result === $this) {
+ $result = new RejectedPromise(new \LogicException('Cannot resolve a promise with itself.'));
+ }
+ if ($result instanceof self) {
+ $result->requiredCancelRequests++;
+ } else {
+ // Unset canceller only when not following a pending promise
+ $this->canceller = null;
}
$handlers = $this->handlers;
- $this->progressHandlers = $this->handlers = [];
- $this->result = $promise;
- $this->canceller = null;
+ $this->handlers = [];
+ $this->result = $result;
foreach ($handlers as $handler) {
- $handler($promise);
+ $handler($result);
}
- }
- private function unwrap($promise)
- {
- $promise = $this->extract($promise);
- while ($promise instanceof self && null !== $promise->result) {
- $promise = $this->extract($promise->result);
+ // Forward cancellation to rejected promise to avoid reporting unhandled rejection
+ if ($this->cancelled && $result instanceof RejectedPromise) {
+ $result->cancel();
}
- return $promise;
}
- private function extract($promise)
+ /**
+ * @param PromiseInterface $promise
+ * @return PromiseInterface
+ */
+ private function unwrap(PromiseInterface $promise) : PromiseInterface
{
- if ($promise instanceof LazyPromise) {
- $promise = $promise->promise();
+ while ($promise instanceof self && null !== $promise->result) {
+ /** @var PromiseInterface $promise */
+ $promise = $promise->result;
}
return $promise;
}
- private function call(callable $cb)
+ /**
+ * @param callable(callable(mixed):void,callable(\Throwable):void):void $cb
+ */
+ private function call(callable $cb) : void
{
// Explicitly overwrite argument with null value. This ensure that this
// argument does not show up in the stack trace in PHP 7+ only.
@@ -162,6 +214,7 @@ private function call(callable $cb)
} elseif (\is_object($callback) && !$callback instanceof \Closure) {
$ref = new \ReflectionMethod($callback, '__invoke');
} else {
+ \assert($callback instanceof \Closure || \is_string($callback));
$ref = new \ReflectionFunction($callback);
}
$args = $ref->getNumberOfParameters();
@@ -178,29 +231,21 @@ private function call(callable $cb)
// These assumptions are covered by the test suite, so if you ever feel like
// refactoring this, go ahead, any alternative suggestions are welcome!
$target =& $this;
- $progressHandlers =& $this->progressHandlers;
- $callback(static function ($value = null) use(&$target) {
+ $callback(static function ($value) use(&$target) : void {
if ($target !== null) {
$target->settle(resolve($value));
$target = null;
}
- }, static function ($reason = null) use(&$target) {
+ }, static function (\Throwable $reason) use(&$target) : void {
if ($target !== null) {
$target->reject($reason);
$target = null;
}
- }, static function ($update = null) use(&$progressHandlers) {
- foreach ($progressHandlers as $handler) {
- $handler($update);
- }
});
}
} catch (\Throwable $e) {
$target = null;
$this->reject($e);
- } catch (\Exception $e) {
- $target = null;
- $this->reject($e);
}
}
}
diff --git a/vendor/rector/rector/vendor/react/promise/src/PromiseInterface.php b/vendor/rector/rector/vendor/react/promise/src/PromiseInterface.php
index b843393ec..da5bd721f 100644
--- a/vendor/rector/rector/vendor/react/promise/src/PromiseInterface.php
+++ b/vendor/rector/rector/vendor/react/promise/src/PromiseInterface.php
@@ -1,7 +1,10 @@
|TFulfilled)) $onFulfilled
+ * @param ?(callable(\Throwable): (PromiseInterface|TRejected)) $onRejected
+ * @return PromiseInterface<($onRejected is null ? ($onFulfilled is null ? T : TFulfilled) : ($onFulfilled is null ? T|TRejected : TFulfilled|TRejected))>
*/
- public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null);
+ public function then(?callable $onFulfilled = null, ?callable $onRejected = null) : PromiseInterface;
+ /**
+ * Registers a rejection handler for promise. It is a shortcut for:
+ *
+ * ```php
+ * $promise->then(null, $onRejected);
+ * ```
+ *
+ * Additionally, you can type hint the `$reason` argument of `$onRejected` to catch
+ * only specific errors.
+ *
+ * @template TThrowable of \Throwable
+ * @template TRejected
+ * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected
+ * @return PromiseInterface
+ */
+ public function catch(callable $onRejected) : PromiseInterface;
+ /**
+ * Allows you to execute "cleanup" type tasks in a promise chain.
+ *
+ * It arranges for `$onFulfilledOrRejected` to be called, with no arguments,
+ * when the promise is either fulfilled or rejected.
+ *
+ * * If `$promise` fulfills, and `$onFulfilledOrRejected` returns successfully,
+ * `$newPromise` will fulfill with the same value as `$promise`.
+ * * If `$promise` fulfills, and `$onFulfilledOrRejected` throws or returns a
+ * rejected promise, `$newPromise` will reject with the thrown exception or
+ * rejected promise's reason.
+ * * If `$promise` rejects, and `$onFulfilledOrRejected` returns successfully,
+ * `$newPromise` will reject with the same reason as `$promise`.
+ * * If `$promise` rejects, and `$onFulfilledOrRejected` throws or returns a
+ * rejected promise, `$newPromise` will reject with the thrown exception or
+ * rejected promise's reason.
+ *
+ * `finally()` behaves similarly to the synchronous finally statement. When combined
+ * with `catch()`, `finally()` allows you to write code that is similar to the familiar
+ * synchronous catch/finally pair.
+ *
+ * Consider the following synchronous code:
+ *
+ * ```php
+ * try {
+ * return doSomething();
+ * } catch(\Exception $e) {
+ * return handleError($e);
+ * } finally {
+ * cleanup();
+ * }
+ * ```
+ *
+ * Similar asynchronous code (with `doSomething()` that returns a promise) can be
+ * written:
+ *
+ * ```php
+ * return doSomething()
+ * ->catch('handleError')
+ * ->finally('cleanup');
+ * ```
+ *
+ * @param callable(): (void|PromiseInterface) $onFulfilledOrRejected
+ * @return PromiseInterface
+ */
+ public function finally(callable $onFulfilledOrRejected) : PromiseInterface;
+ /**
+ * The `cancel()` method notifies the creator of the promise that there is no
+ * further interest in the results of the operation.
+ *
+ * Once a promise is settled (either fulfilled or rejected), calling `cancel()` on
+ * a promise has no effect.
+ *
+ * @return void
+ */
+ public function cancel() : void;
+ /**
+ * [Deprecated] Registers a rejection handler for a promise.
+ *
+ * This method continues to exist only for BC reasons and to ease upgrading
+ * between versions. It is an alias for:
+ *
+ * ```php
+ * $promise->catch($onRejected);
+ * ```
+ *
+ * @template TThrowable of \Throwable
+ * @template TRejected
+ * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected
+ * @return PromiseInterface
+ * @deprecated 3.0.0 Use catch() instead
+ * @see self::catch()
+ */
+ public function otherwise(callable $onRejected) : PromiseInterface;
+ /**
+ * [Deprecated] Allows you to execute "cleanup" type tasks in a promise chain.
+ *
+ * This method continues to exist only for BC reasons and to ease upgrading
+ * between versions. It is an alias for:
+ *
+ * ```php
+ * $promise->finally($onFulfilledOrRejected);
+ * ```
+ *
+ * @param callable(): (void|PromiseInterface) $onFulfilledOrRejected
+ * @return PromiseInterface
+ * @deprecated 3.0.0 Use finally() instead
+ * @see self::finally()
+ */
+ public function always(callable $onFulfilledOrRejected) : PromiseInterface;
}
diff --git a/vendor/rector/rector/vendor/react/promise/src/PromisorInterface.php b/vendor/rector/rector/vendor/react/promise/src/PromisorInterface.php
deleted file mode 100644
index e5fa11b6b..000000000
--- a/vendor/rector/rector/vendor/react/promise/src/PromisorInterface.php
+++ /dev/null
@@ -1,13 +0,0 @@
-reason = $reason;
- }
- public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
- {
- if (null === $onRejected) {
- return $this;
- }
- try {
- return resolve($onRejected($this->reason));
- } catch (\Throwable $exception) {
- return new RejectedPromise($exception);
- } catch (\Exception $exception) {
- return new RejectedPromise($exception);
- }
- }
- public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
- {
- if (null === $onRejected) {
- throw UnhandledRejectionException::resolve($this->reason);
- }
- $result = $onRejected($this->reason);
- if ($result instanceof self) {
- throw UnhandledRejectionException::resolve($result->reason);
- }
- if ($result instanceof ExtendedPromiseInterface) {
- $result->done();
- }
- }
- public function otherwise(callable $onRejected)
- {
- if (!_checkTypehint($onRejected, $this->reason)) {
- return $this;
- }
- return $this->then(null, $onRejected);
- }
- public function always(callable $onFulfilledOrRejected)
- {
- return $this->then(null, function ($reason) use($onFulfilledOrRejected) {
- return resolve($onFulfilledOrRejected())->then(function () use($reason) {
- return new RejectedPromise($reason);
- });
- });
- }
- public function progress(callable $onProgress)
- {
- return $this;
- }
- public function cancel()
- {
- }
-}
diff --git a/vendor/rector/rector/vendor/react/promise/src/UnhandledRejectionException.php b/vendor/rector/rector/vendor/react/promise/src/UnhandledRejectionException.php
deleted file mode 100644
index a10913966..000000000
--- a/vendor/rector/rector/vendor/react/promise/src/UnhandledRejectionException.php
+++ /dev/null
@@ -1,25 +0,0 @@
-reason = $reason;
- $message = \sprintf('Unhandled Rejection: %s', \json_encode($reason));
- parent::__construct($message, 0);
- }
- public function getReason()
- {
- return $this->reason;
- }
-}
diff --git a/vendor/rector/rector/vendor/react/promise/src/functions.php b/vendor/rector/rector/vendor/react/promise/src/functions.php
index 047056acf..f7905b82d 100644
--- a/vendor/rector/rector/vendor/react/promise/src/functions.php
+++ b/vendor/rector/rector/vendor/react/promise/src/functions.php
@@ -1,7 +1,10 @@
|T $promiseOrValue
+ * @return PromiseInterface
*/
-function resolve($promiseOrValue = null)
+function resolve($promiseOrValue) : PromiseInterface
{
- if ($promiseOrValue instanceof ExtendedPromiseInterface) {
+ if ($promiseOrValue instanceof PromiseInterface) {
return $promiseOrValue;
}
- // Check is_object() first to avoid method_exists() triggering
- // class autoloaders if $promiseOrValue is a string.
if (\is_object($promiseOrValue) && \method_exists($promiseOrValue, 'then')) {
$canceller = null;
if (\method_exists($promiseOrValue, 'cancel')) {
$canceller = [$promiseOrValue, 'cancel'];
+ \assert(\is_callable($canceller));
}
- return new Promise(function ($resolve, $reject, $notify) use($promiseOrValue) {
- $promiseOrValue->then($resolve, $reject, $notify);
+ /** @var Promise */
+ return new Promise(function (callable $resolve, callable $reject) use($promiseOrValue) : void {
+ $promiseOrValue->then($resolve, $reject);
}, $canceller);
}
return new FulfilledPromise($promiseOrValue);
}
/**
- * Creates a rejected promise for the supplied `$promiseOrValue`.
+ * Creates a rejected promise for the supplied `$reason`.
*
- * If `$promiseOrValue` is a value, it will be the rejection value of the
+ * If `$reason` is a value, it will be the rejection value of the
* returned promise.
*
- * If `$promiseOrValue` is a promise, its completion value will be the rejected
+ * If `$reason` is a promise, its completion value will be the rejected
* value of the returned promise.
*
* This can be useful in situations where you need to reject a promise without
* throwing an exception. For example, it allows you to propagate a rejection with
* the value of another promise.
*
- * @param mixed $promiseOrValue
- * @return PromiseInterface
+ * @return PromiseInterface
*/
-function reject($promiseOrValue = null)
+function reject(\Throwable $reason) : PromiseInterface
{
- if ($promiseOrValue instanceof PromiseInterface) {
- return resolve($promiseOrValue)->then(function ($value) {
- return new RejectedPromise($value);
- });
- }
- return new RejectedPromise($promiseOrValue);
+ return new RejectedPromise($reason);
}
/**
* Returns a promise that will resolve only once all the items in
@@ -65,14 +63,41 @@ function reject($promiseOrValue = null)
* will be an array containing the resolution values of each of the items in
* `$promisesOrValues`.
*
- * @param array $promisesOrValues
- * @return PromiseInterface
+ * @template T
+ * @param iterable|T> $promisesOrValues
+ * @return PromiseInterface>
*/
-function all($promisesOrValues)
+function all(iterable $promisesOrValues) : PromiseInterface
{
- return map($promisesOrValues, function ($val) {
- return $val;
- });
+ $cancellationQueue = new Internal\CancellationQueue();
+ /** @var Promise