rectorphp/rector (rector/rector)
### [`v0.18.4`](https://togithub.com/rectorphp/rector/releases/tag/0.18.4): Released Rector 0.18.4
[Compare Source](https://togithub.com/rectorphp/rector/compare/0.18.3...0.18.4)
#### New Features and Improvements :partying_face:
- **Introducing Collectors** :partying_face: - processing collected data + test case ([#4970](https://togithub.com/rectorphp/rector-src/pull/4970))
- Run tests on macos ([#5019](https://togithub.com/rectorphp/rector-src/pull/5019)), Thanks [@staabm](https://togithub.com/staabm)!
- Move betterNodeFinder, valueResolver, phpDocInfoFactory dependencies from AbstractRector into rules ([#5071](https://togithub.com/rectorphp/rector-src/pull/5071))
- DX: Validate paths in RectorConfig->paths() ([#5065](https://togithub.com/rectorphp/rector-src/pull/5065)), Thanks [@staabm](https://togithub.com/staabm)!
- \[DX] Make PhpDocInfoFactory explicitly required in Rector rule constructor, if needed ([#5051](https://togithub.com/rectorphp/rector-src/pull/5051))
- \[DX] Make ValueResolver explicitly required in Rector rules constructor if needed ([#5052](https://togithub.com/rectorphp/rector-src/pull/5052))
#### Bugfixes :bug:
- \[DeadCode] RemoveDeadZeroAndOneOperationRector should not remove Constants ([#4910](https://togithub.com/rectorphp/rector-src/pull/4910)), Thanks [@TwanVermeulen](https://togithub.com/TwanVermeulen)!
- \[PostRector] Fix unused import not removed on empty generic class name exists ([#5012](https://togithub.com/rectorphp/rector-src/pull/5012))
- \[Parallel] Handle Spaced root project main script on parallel process ([#4813](https://togithub.com/rectorphp/rector-src/pull/4813))
- Fix TypedPropertyFromStrictConstructor\* order ([#5021](https://togithub.com/rectorphp/rector-src/pull/5021)), Thanks [@staabm](https://togithub.com/staabm)!
- \[DX] Lower current node dependency - pass it directly to doc node parsing ([#5023](https://togithub.com/rectorphp/rector-src/pull/5023))
- \[AutoImport] Fix conflict current namespace auto import ([#5024](https://togithub.com/rectorphp/rector-src/pull/5024))
- Simplify UseIdenticalOverEqualWithSameTypeRector ([#5029](https://togithub.com/rectorphp/rector-src/pull/5029)), Thanks [@staabm](https://togithub.com/staabm)!
- \[Performance]\[Testing] Use str_contains instead of regex in FixtureSplitter ([#5030](https://togithub.com/rectorphp/rector-src/pull/5030))
- Fix ArrayKeyFirstLastRector: Skip exection when pointer is changed ([#5038](https://togithub.com/rectorphp/rector-src/pull/5038)), Thanks [@scyzoryck](https://togithub.com/scyzoryck)!
- \[TypeDeclaration] Handle fallback from param same type object on ReturnTypeFromReturnNewRector ([#5039](https://togithub.com/rectorphp/rector-src/pull/5039))
- \[NodeTypeResolver] Use Scope->getType() on ArrayDimFetch on NodeTypeResolver::getNativeType() ([#5037](https://togithub.com/rectorphp/rector-src/pull/5037))
- \[NodeTypeResolver] pull getType() on ArrayDimFetch when not mixed type from its variable native definition ([#5056](https://togithub.com/rectorphp/rector-src/pull/5056))
- \[CodingStyle]\[EarlyReturn] Fix infinite if else on BinarySwitchToIfElseRector+RemoveAlwaysElseRector ([#5057](https://togithub.com/rectorphp/rector-src/pull/5057))
- \[TypeDeclaration] Skip ArrayDimFetch for return and param types ([#5059](https://togithub.com/rectorphp/rector-src/pull/5059)), Thanks [@staabm](https://togithub.com/staabm)!
- \[NodeTypeResolver] Handle optional array shape on native function like with ArrayDimFetch ([#5062](https://togithub.com/rectorphp/rector-src/pull/5062))
- \[Php80] Mirror switch comment to match to ChangeSwitchToMatchRector ([#5072](https://togithub.com/rectorphp/rector-src/pull/5072))
- \[AutoImport] Skip case insensitive conflict defined class name on $rectorConfig->importNames() ([#5076](https://togithub.com/rectorphp/rector-src/pull/5076))
- Docblock fix on ShortNameResolver ([#5077](https://togithub.com/rectorphp/rector-src/pull/5077))
- \[TypeDeclaration] Add return static property support on ReturnTypeFromStrictTypedPropertyRector ([#5050](https://togithub.com/rectorphp/rector-src/pull/5050))
#### Removed and Deprecated :skull:
- \[Config] Remove asterisk support in import() for file, use explicit paths instead ([#5010](https://togithub.com/rectorphp/rector-src/pull/5010))
- \[Performance] Remove regex check on open tag spaced check on FileProcessor ([#5073](https://togithub.com/rectorphp/rector-src/pull/5073))
- Deprecate TypedPropertyFromStrictConstructorReadonlyClassRector as based on docblock and public elements; use private elements and property promotion instead ([#5049](https://togithub.com/rectorphp/rector-src/pull/5049))
- Deprecate BinarySwitchToIfElseRector as opinionated to allow more suitable match() refactoring ([#5064](https://togithub.com/rectorphp/rector-src/pull/5064))
### [`v0.18.3`](https://togithub.com/rectorphp/rector/releases/tag/0.18.3): Released Rector 0.18.3
[Compare Source](https://togithub.com/rectorphp/rector/compare/0.18.2...0.18.3)
#### New Features and Changes :partying_face:
- **\[BC] docblock changes in custom Rector rules now have to be reprinted directly in the rule -[https://github.com/rectorphp/rector/issues/8201#issue-1894148095](https://togithub.com/rectorphp/rector/issues/8201#issue-1894148095)5**
- \[TypeDeclaration] Add return empty string defined support on ReturnTypeFromStrictScalarReturnExprRector ([#4919](https://togithub.com/rectorphp/rector-src/pull/4919))
- \[TypeDeclaration] Add fallback return direct array support on ReturnTypeFromStrictNewArrayRector ([#4928](https://togithub.com/rectorphp/rector-src/pull/4928))
- \[TypeDeclaration] Add init assign method call support on ReturnTypeFromStrictNewArrayRector ([#4929](https://togithub.com/rectorphp/rector-src/pull/4929))
- \[TypeDeclaration] Ensure ArrayType on ReturnTypeFromStrictNewArrayRector::shouldAddReturnArrayDocType() ([#4932](https://togithub.com/rectorphp/rector-src/pull/4932))
- \[TypeDeclaration] Add test fixture return docblock on init method call assign as skipped on ReturnTypeFromStrictNewArrayRector ([#4933](https://togithub.com/rectorphp/rector-src/pull/4933))
- \[TypeDeclaration] Add non native function return support on ReturnTypeFromStrictScalarReturnExprRector ([#4934](https://togithub.com/rectorphp/rector-src/pull/4934))
- **BC: Separated regex matching in NodeNameResolver->isName() ([#4951](https://togithub.com/rectorphp/rector-src/pull/4951)), Thanks [@staabm](https://togithub.com/staabm)!**
- Add support for Custom Skip Voters ([#5002](https://togithub.com/rectorphp/rector-src/pull/5002)), Thanks [@kaczenski](https://togithub.com/kaczenski)!
- Implement a max jobs per worker budget ([#4965](https://togithub.com/rectorphp/rector-src/pull/4965)), Thanks [@staabm](https://togithub.com/staabm)!
- Prevent unnecessary calls to spl_object_id() ([#4992](https://togithub.com/rectorphp/rector-src/pull/4992)), Thanks [@staabm](https://togithub.com/staabm)!
- Refactor use import resolving ([#4998](https://togithub.com/rectorphp/rector-src/pull/4998)), Thanks [@staabm](https://togithub.com/staabm)!
- NodeNameResolver: Throw exception in BC breaking path ([#4980](https://togithub.com/rectorphp/rector-src/pull/4980)), Thanks [@staabm](https://togithub.com/staabm)!
- \[Internals] Decouple output from AbstractRector, narrow debugging output to file path ([#4976](https://togithub.com/rectorphp/rector-src/pull/4976))
- Update docblock only when changed, directly in rector rule ([#4986](https://togithub.com/rectorphp/rector-src/pull/4986))
#### Bugfixes :bug:
- AddVoidReturnTypeWhereNoReturnRector: fix never type handling ([#4918](https://togithub.com/rectorphp/rector-src/pull/4918)), Thanks [@staabm](https://togithub.com/staabm)!
- \[TypeDeclaration] Skip return after return closure on AddVoidReturnTypeWhereNoReturnRector ([#4930](https://togithub.com/rectorphp/rector-src/pull/4930))
- \[TypeDeclaration] Use $type->isScalar()->yes() on AlwaysStrictScalarExprAnalyzer ([#4920](https://togithub.com/rectorphp/rector-src/pull/4920))
- Refactor BetterNodeFinder::findFirstInFunctionLikeScoped() to work with SilentVoidResolver ([#4931](https://togithub.com/rectorphp/rector-src/pull/4931))
- \[NodeTypeResolver] Handle isObjectType() on new $class dynamic variable should return false compare to Object FQCN ([#4936](https://togithub.com/rectorphp/rector-src/pull/4936))
- \[Testing] Fix running unit test on macOS ([#4941](https://togithub.com/rectorphp/rector-src/pull/4941))
- Faster name resolving ([#4955](https://togithub.com/rectorphp/rector-src/pull/4955)), Thanks [@staabm](https://togithub.com/staabm)!
- UseImportsTraverser: don't deep traverse ([#4994](https://togithub.com/rectorphp/rector-src/pull/4994)), Thanks [@staabm](https://togithub.com/staabm)!
- \[tests] Replace wildcard e2e test with unit one ([#5000](https://togithub.com/rectorphp/rector-src/pull/5000))
- \[DocBlock] Update docblock contents right in the rule ([#4999](https://togithub.com/rectorphp/rector-src/pull/4999))
- \[PhpParser] Fix crash read jetbrains/phpstorm-stubs included in phpstan.phar on PHP 8.0 and PHP 7.4 ([#5001](https://togithub.com/rectorphp/rector-src/pull/5001))
- RenameFunctionRector: prevent repeated isName() calls ([#5003](https://togithub.com/rectorphp/rector-src/pull/5003)), Thanks [@staabm](https://togithub.com/staabm)!
- Make PhpDocINfo::removeByType() return bool to inform about changed node ([#4979](https://togithub.com/rectorphp/rector-src/pull/4979))
#### Removed :skull:
- \[cleanup] Remove deprecated NonPhpRectorInterface, PseudoNamespaceToNamespaceRector and mysql to mysqli sets ([#4927](https://togithub.com/rectorphp/rector-src/pull/4927))
- Remove UnSpreadOperatorRector as not clear value and spread used on purpose ([#4949](https://togithub.com/rectorphp/rector-src/pull/4949))
- \[Naming] Remove matchesStringName() check completely from NodeNameResolver, including endsWith() method - use getName() and compare directly instead ([#4954](https://togithub.com/rectorphp/rector-src/pull/4954))
- \[Performance]\[Php55] Remove regex replace e on RegexMatcher ([#4974](https://togithub.com/rectorphp/rector-src/pull/4974))
- Remove CurrentRectorProvider and used for docblock changes report, return bool value and node directly in the rector rule instead ([#4982](https://togithub.com/rectorphp/rector-src/pull/4982))
- Deprecated PhpDocInfo::markAsChanged() to ensure doc block is changed directly in the Rector rule ([#4987](https://togithub.com/rectorphp/rector-src/pull/4987))
### [`v0.18.2`](https://togithub.com/rectorphp/rector/releases/tag/0.18.2): Released Rector 0.18.2
[Compare Source](https://togithub.com/rectorphp/rector/compare/0.18.1...0.18.2)
#### New Features and Changes :partying_face:
- Add MyCLabs enum equals + keeping methods ([#4645](https://togithub.com/rectorphp/rector-src/pull/4645)), Thanks [@K0nias](https://togithub.com/K0nias)!
- \[TypeDeclaration] skip variadic constructor param of mixed type on AddParamTypeFromPropertyTypeRector ([#4887](https://togithub.com/rectorphp/rector-src/pull/4887)), Thanks [@Celebrate-Reinhard](https://togithub.com/Celebrate-Reinhard)!
- \[TypeDeclaration] Do not add default value when assigned in \__construct() on TypedPropertyFromStrictGetterMethodReturnTypeRector ([#4886](https://togithub.com/rectorphp/rector-src/pull/4886))
- \[TypeDeclaration] Add ReturnTypeFromStrictFluentReturnRector ([#4890](https://togithub.com/rectorphp/rector-src/pull/4890))
- Add single value concat support to EncapsedStringsToSprintfRector ([#4897](https://togithub.com/rectorphp/rector-src/pull/4897))
- Add number support to concat EncapsedStringsToSprintfRector ([#4898](https://togithub.com/rectorphp/rector-src/pull/4898))
- \[DeadCode] Remove [@return](https://togithub.com/return) void on return self on RemoveUselessReturnTagRector ([#4894](https://togithub.com/rectorphp/rector-src/pull/4894))
- Add test case for caching $rectorConfig->rules() changed ([#4903](https://togithub.com/rectorphp/rector-src/pull/4903))
- \[CodeQuality] Add NumberCompareToMaxFuncCallRector ([#4914](https://togithub.com/rectorphp/rector-src/pull/4914))
- \[TypeDeclaration] Add return self object support on ReturnTypeFromStrictFluentReturnRector ([#4915](https://togithub.com/rectorphp/rector-src/pull/4915))
- \[TypeDeclaration] Add return static object support on ReturnTypeFromStrictFluentReturnRector ([#4916](https://togithub.com/rectorphp/rector-src/pull/4916))
#### Bugfixes :bug:
- \[Caching] Add VersionResolver::PACKAGE_VERSION to FileHashComputer::compute() so cache cleared on composer update got new version ([#4904](https://togithub.com/rectorphp/rector-src/pull/4904))
- \[TypeDeclaration] Using ClassMethodReturnTypeOverrideGuard on ReturnTypeFromStrictParamRector ([#4878](https://togithub.com/rectorphp/rector-src/pull/4878))
- \[e2e] $rectorConfig->skip() should not skip inside different path over config ([#4882](https://togithub.com/rectorphp/rector-src/pull/4882))
- Fix missing default string in TypedPropertyFromStrictGetterMethodReturnTypeRector ([#4885](https://togithub.com/rectorphp/rector-src/pull/4885))
- Fix tests fixture updater ([#4892](https://togithub.com/rectorphp/rector-src/pull/4892))
- Fix union type check of object ([#4893](https://togithub.com/rectorphp/rector-src/pull/4893))
- Simplify isMatchingUnionType() ([#4895](https://togithub.com/rectorphp/rector-src/pull/4895)), Thanks [@staabm](https://togithub.com/staabm)!
- Skip identical to false in SimplifyBoolIdenticalTrueRector, as exact comparison is stronger than negated expression ([#4901](https://togithub.com/rectorphp/rector-src/pull/4901))
- Fix Rector invalidation in case of changes sets or rules ([#4902](https://togithub.com/rectorphp/rector-src/pull/4902))
- \[TypeDeclaration] Skip mixing native + docblock union assign on TypedPropertyFromAssignsRector ([#4905](https://togithub.com/rectorphp/rector-src/pull/4905))
- StrictArrayParamDimFetchRector: Skip objects ([#4907](https://togithub.com/rectorphp/rector-src/pull/4907)), Thanks [@staabm](https://togithub.com/staabm)!
- FamilyRelationsAnalyzer: final classes can't have children ([#4913](https://togithub.com/rectorphp/rector-src/pull/4913)), Thanks [@staabm](https://togithub.com/staabm)!
- \[Config] Remove $isBound usage as cause empty configuration on RectorConfig ([#4880](https://togithub.com/rectorphp/rector-src/pull/4880))
### [`v0.18.1`](https://togithub.com/rectorphp/rector/releases/tag/0.18.1): Released Rector 0.18.1
[Compare Source](https://togithub.com/rectorphp/rector/compare/0.18.0...0.18.1)
This release is accompanied by 2 posts that explains behind the scenes context:
- [Rector 0.18 - From Symfony Container to Laravel and How to Upgrade your Extensions](https://getrector.com/blog/rector-018-from-symfony-container-to-laravel-and-how-to-upgrade-your-extensions)
- [Rector 0.18 - How we made tests Seven Times Faster](https://getrector.com/blog/rector-018-how-we-made-tests-seven-times-faster)
#### New Features and Changes :partying_face:
- **\[CI] Narrow tests to single job, as now takes 20 s :rocket:** ([#4827](https://togithub.com/rectorphp/rector-src/pull/4827))
- \[Config] Handle $rectorConfig->import() with wildcards \* config ([#4832](https://togithub.com/rectorphp/rector-src/pull/4832))
- \[DX] Display rule count in list-rules ([#4848](https://togithub.com/rectorphp/rector-src/pull/4848))
- Skip PHPDoc return type in AddReturnTypeDeclarationBasedOnParentClassMethodRector ([#4809](https://togithub.com/rectorphp/rector-src/pull/4809)), Thanks [@staabm](https://togithub.com/staabm)!
- AddReturnTypeDeclarationBasedOnParentClassMethodRector: don't trust phpdoc types ([#4810](https://togithub.com/rectorphp/rector-src/pull/4810)), Thanks [@staabm](https://togithub.com/staabm)!
- \[DX] Add optional testdox/pest like output to get exact test metrics per unit test fixture ([#4821](https://togithub.com/rectorphp/rector-src/pull/4821))
- \[TypeDeclaration] Add new array replaced with array on ReturnTypeFromStrictNewArrayRector ([#4825](https://togithub.com/rectorphp/rector-src/pull/4825))
- \[DX] Merge PhpRectorInterface to RectorInterface as identical contract and separation no longer needed ([#4812](https://togithub.com/rectorphp/rector-src/pull/4812))
- \[PHPStan] Avoid removing bleeding edge from phar include, let user handle own phpstan configuration ([#4840](https://togithub.com/rectorphp/rector-src/pull/4840))
#### Bugfixes :bug:
- \[Php73]\[Php80] Handle empty long array syntax default value on SensitiveConstantNameRector+AddParamBasedOnParentClassMethodRector ([#4837](https://togithub.com/rectorphp/rector-src/pull/4837))
- \[Config] Add merging of rules configuration, call configure() just once ([#4838](https://togithub.com/rectorphp/rector-src/pull/4838))
- Fix RenamePropertyToMatchTypeRector to skip Laravel collections and avoid accident rename ([#4811](https://togithub.com/rectorphp/rector-src/pull/4811))
- \[BetterPhpDocParser] Enable textBetweenTagsBelongsToDescription on BetterPhpDocParser extends PhpDocParser ([#4817](https://togithub.com/rectorphp/rector-src/pull/4817))
- \[PHPUnit] Fix extreemely slow PHPUnit run on data providers with objects ([#4823](https://togithub.com/rectorphp/rector-src/pull/4823))
- \[AutoImport] Handle case insensitive name collide on auto import ([#4829](https://togithub.com/rectorphp/rector-src/pull/4829))
- \[Traverser] Set explicitely nodeConnectingVisitorCompatibility: false config in config/phpstan/static-reflection.neon ([#4841](https://togithub.com/rectorphp/rector-src/pull/4841))
- replaces `get_headers` $associative with bool ([#4850](https://togithub.com/rectorphp/rector-src/pull/4850)), Thanks [@mvhirsch](https://togithub.com/mvhirsch)!
- \[Php55]\[Renaming] Handle rename string on combination StringClassNameToClassConstantRector+RenameStringRector ([#4869](https://togithub.com/rectorphp/rector-src/pull/4869))
- \[Php80] Handle crash parent default empty array/string param on AddParamBasedOnParentClassMethodRector ([#4833](https://togithub.com/rectorphp/rector-src/pull/4833))
#### Removed :skull:
- Remove deprecated `FileProcessorInterface` ([#4835](https://togithub.com/rectorphp/rector-src/pull/4835))
- Remove `SwapFuncCallArgumentsRector` as keeps swaping to infinity, use custom rule instead ([#4874](https://togithub.com/rectorphp/rector-src/pull/4874))
### [`v0.18.0`](https://togithub.com/rectorphp/rector/releases/tag/0.18.0): Released Rector 0.18.0 with Laravel container β‘οΈ
[Compare Source](https://togithub.com/rectorphp/rector/compare/0.17.13...0.18.0)
#### New Features and Changes :partying_face:
- **\[DI] Switch container to Laravel - final step π₯³ ([#4698](https://togithub.com/rectorphp/rector-src/pull/4698))**
- do you use `$rectorConfig->import('src/*');` with mask?
- this is removed now, use explicit real paths instead
- \[DI] Remove symfony/dependency-injection dependency ([#4796](https://togithub.com/rectorphp/rector-src/pull/4796))
- \[DI] Add symfony config BC warnings layer, to inform about an upgrade ([#4800](https://togithub.com/rectorphp/rector-src/pull/4800))
- Add possibility to add multiple phpstan configs ([#4798](https://togithub.com/rectorphp/rector-src/pull/4798)), Thanks [@alexander-schranz](https://togithub.com/alexander-schranz)!
- \[DX] Make use of `addParameter()` ([#4801](https://togithub.com/rectorphp/rector-src/pull/4801))
- Add deprecation warning for `FileProcessorInterface` ([#4808](https://togithub.com/rectorphp/rector-src/pull/4808))
#### Bugfixes :bug:
- \[DeadCode] Handle duplicated annotation on space before close parentheses on RemoveUselessParamTagRector ([#4795](https://togithub.com/rectorphp/rector-src/pull/4795))
- Fix skip() Rector class, make container forget it comleteely ([#4807](https://togithub.com/rectorphp/rector-src/pull/4807))
Configuration
π Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
^0.17.0
->^0.18.0
Release Notes
rectorphp/rector (rector/rector)
### [`v0.18.4`](https://togithub.com/rectorphp/rector/releases/tag/0.18.4): Released Rector 0.18.4 [Compare Source](https://togithub.com/rectorphp/rector/compare/0.18.3...0.18.4) #### New Features and Improvements :partying_face: - **Introducing Collectors** :partying_face: - processing collected data + test case ([#4970](https://togithub.com/rectorphp/rector-src/pull/4970)) - Run tests on macos ([#5019](https://togithub.com/rectorphp/rector-src/pull/5019)), Thanks [@staabm](https://togithub.com/staabm)! - Move betterNodeFinder, valueResolver, phpDocInfoFactory dependencies from AbstractRector into rules ([#5071](https://togithub.com/rectorphp/rector-src/pull/5071)) - DX: Validate paths in RectorConfig->paths() ([#5065](https://togithub.com/rectorphp/rector-src/pull/5065)), Thanks [@staabm](https://togithub.com/staabm)! - \[DX] Make PhpDocInfoFactory explicitly required in Rector rule constructor, if needed ([#5051](https://togithub.com/rectorphp/rector-src/pull/5051)) - \[DX] Make ValueResolver explicitly required in Rector rules constructor if needed ([#5052](https://togithub.com/rectorphp/rector-src/pull/5052))#### Bugfixes :bug: - \[DeadCode] RemoveDeadZeroAndOneOperationRector should not remove Constants ([#4910](https://togithub.com/rectorphp/rector-src/pull/4910)), Thanks [@TwanVermeulen](https://togithub.com/TwanVermeulen)! - \[PostRector] Fix unused import not removed on empty generic class name exists ([#5012](https://togithub.com/rectorphp/rector-src/pull/5012)) - \[Parallel] Handle Spaced root project main script on parallel process ([#4813](https://togithub.com/rectorphp/rector-src/pull/4813)) - Fix TypedPropertyFromStrictConstructor\* order ([#5021](https://togithub.com/rectorphp/rector-src/pull/5021)), Thanks [@staabm](https://togithub.com/staabm)! - \[DX] Lower current node dependency - pass it directly to doc node parsing ([#5023](https://togithub.com/rectorphp/rector-src/pull/5023)) - \[AutoImport] Fix conflict current namespace auto import ([#5024](https://togithub.com/rectorphp/rector-src/pull/5024)) - Simplify UseIdenticalOverEqualWithSameTypeRector ([#5029](https://togithub.com/rectorphp/rector-src/pull/5029)), Thanks [@staabm](https://togithub.com/staabm)! - \[Performance]\[Testing] Use str_contains instead of regex in FixtureSplitter ([#5030](https://togithub.com/rectorphp/rector-src/pull/5030)) - Fix ArrayKeyFirstLastRector: Skip exection when pointer is changed ([#5038](https://togithub.com/rectorphp/rector-src/pull/5038)), Thanks [@scyzoryck](https://togithub.com/scyzoryck)! - \[TypeDeclaration] Handle fallback from param same type object on ReturnTypeFromReturnNewRector ([#5039](https://togithub.com/rectorphp/rector-src/pull/5039)) - \[NodeTypeResolver] Use Scope->getType() on ArrayDimFetch on NodeTypeResolver::getNativeType() ([#5037](https://togithub.com/rectorphp/rector-src/pull/5037)) - \[NodeTypeResolver] pull getType() on ArrayDimFetch when not mixed type from its variable native definition ([#5056](https://togithub.com/rectorphp/rector-src/pull/5056)) - \[CodingStyle]\[EarlyReturn] Fix infinite if else on BinarySwitchToIfElseRector+RemoveAlwaysElseRector ([#5057](https://togithub.com/rectorphp/rector-src/pull/5057)) - \[TypeDeclaration] Skip ArrayDimFetch for return and param types ([#5059](https://togithub.com/rectorphp/rector-src/pull/5059)), Thanks [@staabm](https://togithub.com/staabm)! - \[NodeTypeResolver] Handle optional array shape on native function like with ArrayDimFetch ([#5062](https://togithub.com/rectorphp/rector-src/pull/5062)) - \[Php80] Mirror switch comment to match to ChangeSwitchToMatchRector ([#5072](https://togithub.com/rectorphp/rector-src/pull/5072)) - \[AutoImport] Skip case insensitive conflict defined class name on $rectorConfig->importNames() ([#5076](https://togithub.com/rectorphp/rector-src/pull/5076)) - Docblock fix on ShortNameResolver ([#5077](https://togithub.com/rectorphp/rector-src/pull/5077)) - \[TypeDeclaration] Add return static property support on ReturnTypeFromStrictTypedPropertyRector ([#5050](https://togithub.com/rectorphp/rector-src/pull/5050))
#### Removed and Deprecated :skull: - \[Config] Remove asterisk support in import() for file, use explicit paths instead ([#5010](https://togithub.com/rectorphp/rector-src/pull/5010)) - \[Performance] Remove regex check on open tag spaced check on FileProcessor ([#5073](https://togithub.com/rectorphp/rector-src/pull/5073)) - Deprecate TypedPropertyFromStrictConstructorReadonlyClassRector as based on docblock and public elements; use private elements and property promotion instead ([#5049](https://togithub.com/rectorphp/rector-src/pull/5049)) - Deprecate BinarySwitchToIfElseRector as opinionated to allow more suitable match() refactoring ([#5064](https://togithub.com/rectorphp/rector-src/pull/5064)) ### [`v0.18.3`](https://togithub.com/rectorphp/rector/releases/tag/0.18.3): Released Rector 0.18.3 [Compare Source](https://togithub.com/rectorphp/rector/compare/0.18.2...0.18.3) #### New Features and Changes :partying_face: - **\[BC] docblock changes in custom Rector rules now have to be reprinted directly in the rule -[https://github.com/rectorphp/rector/issues/8201#issue-1894148095](https://togithub.com/rectorphp/rector/issues/8201#issue-1894148095)5** - \[TypeDeclaration] Add return empty string defined support on ReturnTypeFromStrictScalarReturnExprRector ([#4919](https://togithub.com/rectorphp/rector-src/pull/4919)) - \[TypeDeclaration] Add fallback return direct array support on ReturnTypeFromStrictNewArrayRector ([#4928](https://togithub.com/rectorphp/rector-src/pull/4928)) - \[TypeDeclaration] Add init assign method call support on ReturnTypeFromStrictNewArrayRector ([#4929](https://togithub.com/rectorphp/rector-src/pull/4929)) - \[TypeDeclaration] Ensure ArrayType on ReturnTypeFromStrictNewArrayRector::shouldAddReturnArrayDocType() ([#4932](https://togithub.com/rectorphp/rector-src/pull/4932)) - \[TypeDeclaration] Add test fixture return docblock on init method call assign as skipped on ReturnTypeFromStrictNewArrayRector ([#4933](https://togithub.com/rectorphp/rector-src/pull/4933)) - \[TypeDeclaration] Add non native function return support on ReturnTypeFromStrictScalarReturnExprRector ([#4934](https://togithub.com/rectorphp/rector-src/pull/4934)) - **BC: Separated regex matching in NodeNameResolver->isName() ([#4951](https://togithub.com/rectorphp/rector-src/pull/4951)), Thanks [@staabm](https://togithub.com/staabm)!** - Add support for Custom Skip Voters ([#5002](https://togithub.com/rectorphp/rector-src/pull/5002)), Thanks [@kaczenski](https://togithub.com/kaczenski)! - Implement a max jobs per worker budget ([#4965](https://togithub.com/rectorphp/rector-src/pull/4965)), Thanks [@staabm](https://togithub.com/staabm)! - Prevent unnecessary calls to spl_object_id() ([#4992](https://togithub.com/rectorphp/rector-src/pull/4992)), Thanks [@staabm](https://togithub.com/staabm)! - Refactor use import resolving ([#4998](https://togithub.com/rectorphp/rector-src/pull/4998)), Thanks [@staabm](https://togithub.com/staabm)! - NodeNameResolver: Throw exception in BC breaking path ([#4980](https://togithub.com/rectorphp/rector-src/pull/4980)), Thanks [@staabm](https://togithub.com/staabm)! - \[Internals] Decouple output from AbstractRector, narrow debugging output to file path ([#4976](https://togithub.com/rectorphp/rector-src/pull/4976)) - Update docblock only when changed, directly in rector rule ([#4986](https://togithub.com/rectorphp/rector-src/pull/4986))
#### Bugfixes :bug: - AddVoidReturnTypeWhereNoReturnRector: fix never type handling ([#4918](https://togithub.com/rectorphp/rector-src/pull/4918)), Thanks [@staabm](https://togithub.com/staabm)! - \[TypeDeclaration] Skip return after return closure on AddVoidReturnTypeWhereNoReturnRector ([#4930](https://togithub.com/rectorphp/rector-src/pull/4930)) - \[TypeDeclaration] Use $type->isScalar()->yes() on AlwaysStrictScalarExprAnalyzer ([#4920](https://togithub.com/rectorphp/rector-src/pull/4920)) - Refactor BetterNodeFinder::findFirstInFunctionLikeScoped() to work with SilentVoidResolver ([#4931](https://togithub.com/rectorphp/rector-src/pull/4931)) - \[NodeTypeResolver] Handle isObjectType() on new $class dynamic variable should return false compare to Object FQCN ([#4936](https://togithub.com/rectorphp/rector-src/pull/4936)) - \[Testing] Fix running unit test on macOS ([#4941](https://togithub.com/rectorphp/rector-src/pull/4941)) - Faster name resolving ([#4955](https://togithub.com/rectorphp/rector-src/pull/4955)), Thanks [@staabm](https://togithub.com/staabm)! - UseImportsTraverser: don't deep traverse ([#4994](https://togithub.com/rectorphp/rector-src/pull/4994)), Thanks [@staabm](https://togithub.com/staabm)! - \[tests] Replace wildcard e2e test with unit one ([#5000](https://togithub.com/rectorphp/rector-src/pull/5000)) - \[DocBlock] Update docblock contents right in the rule ([#4999](https://togithub.com/rectorphp/rector-src/pull/4999)) - \[PhpParser] Fix crash read jetbrains/phpstorm-stubs included in phpstan.phar on PHP 8.0 and PHP 7.4 ([#5001](https://togithub.com/rectorphp/rector-src/pull/5001)) - RenameFunctionRector: prevent repeated isName() calls ([#5003](https://togithub.com/rectorphp/rector-src/pull/5003)), Thanks [@staabm](https://togithub.com/staabm)! - Make PhpDocINfo::removeByType() return bool to inform about changed node ([#4979](https://togithub.com/rectorphp/rector-src/pull/4979))
#### Removed :skull: - \[cleanup] Remove deprecated NonPhpRectorInterface, PseudoNamespaceToNamespaceRector and mysql to mysqli sets ([#4927](https://togithub.com/rectorphp/rector-src/pull/4927)) - Remove UnSpreadOperatorRector as not clear value and spread used on purpose ([#4949](https://togithub.com/rectorphp/rector-src/pull/4949)) - \[Naming] Remove matchesStringName() check completely from NodeNameResolver, including endsWith() method - use getName() and compare directly instead ([#4954](https://togithub.com/rectorphp/rector-src/pull/4954)) - \[Performance]\[Php55] Remove regex replace e on RegexMatcher ([#4974](https://togithub.com/rectorphp/rector-src/pull/4974)) - Remove CurrentRectorProvider and used for docblock changes report, return bool value and node directly in the rector rule instead ([#4982](https://togithub.com/rectorphp/rector-src/pull/4982)) - Deprecated PhpDocInfo::markAsChanged() to ensure doc block is changed directly in the Rector rule ([#4987](https://togithub.com/rectorphp/rector-src/pull/4987)) ### [`v0.18.2`](https://togithub.com/rectorphp/rector/releases/tag/0.18.2): Released Rector 0.18.2 [Compare Source](https://togithub.com/rectorphp/rector/compare/0.18.1...0.18.2) #### New Features and Changes :partying_face: - Add MyCLabs enum equals + keeping methods ([#4645](https://togithub.com/rectorphp/rector-src/pull/4645)), Thanks [@K0nias](https://togithub.com/K0nias)! - \[TypeDeclaration] skip variadic constructor param of mixed type on AddParamTypeFromPropertyTypeRector ([#4887](https://togithub.com/rectorphp/rector-src/pull/4887)), Thanks [@Celebrate-Reinhard](https://togithub.com/Celebrate-Reinhard)! - \[TypeDeclaration] Do not add default value when assigned in \__construct() on TypedPropertyFromStrictGetterMethodReturnTypeRector ([#4886](https://togithub.com/rectorphp/rector-src/pull/4886)) - \[TypeDeclaration] Add ReturnTypeFromStrictFluentReturnRector ([#4890](https://togithub.com/rectorphp/rector-src/pull/4890)) - Add single value concat support to EncapsedStringsToSprintfRector ([#4897](https://togithub.com/rectorphp/rector-src/pull/4897)) - Add number support to concat EncapsedStringsToSprintfRector ([#4898](https://togithub.com/rectorphp/rector-src/pull/4898)) - \[DeadCode] Remove [@return](https://togithub.com/return) void on return self on RemoveUselessReturnTagRector ([#4894](https://togithub.com/rectorphp/rector-src/pull/4894)) - Add test case for caching $rectorConfig->rules() changed ([#4903](https://togithub.com/rectorphp/rector-src/pull/4903)) - \[CodeQuality] Add NumberCompareToMaxFuncCallRector ([#4914](https://togithub.com/rectorphp/rector-src/pull/4914)) - \[TypeDeclaration] Add return self object support on ReturnTypeFromStrictFluentReturnRector ([#4915](https://togithub.com/rectorphp/rector-src/pull/4915)) - \[TypeDeclaration] Add return static object support on ReturnTypeFromStrictFluentReturnRector ([#4916](https://togithub.com/rectorphp/rector-src/pull/4916))
#### Bugfixes :bug: - \[Caching] Add VersionResolver::PACKAGE_VERSION to FileHashComputer::compute() so cache cleared on composer update got new version ([#4904](https://togithub.com/rectorphp/rector-src/pull/4904)) - \[TypeDeclaration] Using ClassMethodReturnTypeOverrideGuard on ReturnTypeFromStrictParamRector ([#4878](https://togithub.com/rectorphp/rector-src/pull/4878)) - \[e2e] $rectorConfig->skip() should not skip inside different path over config ([#4882](https://togithub.com/rectorphp/rector-src/pull/4882)) - Fix missing default string in TypedPropertyFromStrictGetterMethodReturnTypeRector ([#4885](https://togithub.com/rectorphp/rector-src/pull/4885)) - Fix tests fixture updater ([#4892](https://togithub.com/rectorphp/rector-src/pull/4892)) - Fix union type check of object ([#4893](https://togithub.com/rectorphp/rector-src/pull/4893)) - Simplify isMatchingUnionType() ([#4895](https://togithub.com/rectorphp/rector-src/pull/4895)), Thanks [@staabm](https://togithub.com/staabm)! - Skip identical to false in SimplifyBoolIdenticalTrueRector, as exact comparison is stronger than negated expression ([#4901](https://togithub.com/rectorphp/rector-src/pull/4901)) - Fix Rector invalidation in case of changes sets or rules ([#4902](https://togithub.com/rectorphp/rector-src/pull/4902)) - \[TypeDeclaration] Skip mixing native + docblock union assign on TypedPropertyFromAssignsRector ([#4905](https://togithub.com/rectorphp/rector-src/pull/4905)) - StrictArrayParamDimFetchRector: Skip objects ([#4907](https://togithub.com/rectorphp/rector-src/pull/4907)), Thanks [@staabm](https://togithub.com/staabm)! - FamilyRelationsAnalyzer: final classes can't have children ([#4913](https://togithub.com/rectorphp/rector-src/pull/4913)), Thanks [@staabm](https://togithub.com/staabm)! - \[Config] Remove $isBound usage as cause empty configuration on RectorConfig ([#4880](https://togithub.com/rectorphp/rector-src/pull/4880)) ### [`v0.18.1`](https://togithub.com/rectorphp/rector/releases/tag/0.18.1): Released Rector 0.18.1 [Compare Source](https://togithub.com/rectorphp/rector/compare/0.18.0...0.18.1) This release is accompanied by 2 posts that explains behind the scenes context: - [Rector 0.18 - From Symfony Container to Laravel and How to Upgrade your Extensions](https://getrector.com/blog/rector-018-from-symfony-container-to-laravel-and-how-to-upgrade-your-extensions) - [Rector 0.18 - How we made tests Seven Times Faster](https://getrector.com/blog/rector-018-how-we-made-tests-seven-times-faster)
#### New Features and Changes :partying_face: - **\[CI] Narrow tests to single job, as now takes 20 s :rocket:** ([#4827](https://togithub.com/rectorphp/rector-src/pull/4827)) - \[Config] Handle $rectorConfig->import() with wildcards \* config ([#4832](https://togithub.com/rectorphp/rector-src/pull/4832)) - \[DX] Display rule count in list-rules ([#4848](https://togithub.com/rectorphp/rector-src/pull/4848)) - Skip PHPDoc return type in AddReturnTypeDeclarationBasedOnParentClassMethodRector ([#4809](https://togithub.com/rectorphp/rector-src/pull/4809)), Thanks [@staabm](https://togithub.com/staabm)! - AddReturnTypeDeclarationBasedOnParentClassMethodRector: don't trust phpdoc types ([#4810](https://togithub.com/rectorphp/rector-src/pull/4810)), Thanks [@staabm](https://togithub.com/staabm)! - \[DX] Add optional testdox/pest like output to get exact test metrics per unit test fixture ([#4821](https://togithub.com/rectorphp/rector-src/pull/4821)) - \[TypeDeclaration] Add new array replaced with array on ReturnTypeFromStrictNewArrayRector ([#4825](https://togithub.com/rectorphp/rector-src/pull/4825)) - \[DX] Merge PhpRectorInterface to RectorInterface as identical contract and separation no longer needed ([#4812](https://togithub.com/rectorphp/rector-src/pull/4812)) - \[PHPStan] Avoid removing bleeding edge from phar include, let user handle own phpstan configuration ([#4840](https://togithub.com/rectorphp/rector-src/pull/4840))
#### Bugfixes :bug: - \[Php73]\[Php80] Handle empty long array syntax default value on SensitiveConstantNameRector+AddParamBasedOnParentClassMethodRector ([#4837](https://togithub.com/rectorphp/rector-src/pull/4837)) - \[Config] Add merging of rules configuration, call configure() just once ([#4838](https://togithub.com/rectorphp/rector-src/pull/4838)) - Fix RenamePropertyToMatchTypeRector to skip Laravel collections and avoid accident rename ([#4811](https://togithub.com/rectorphp/rector-src/pull/4811)) - \[BetterPhpDocParser] Enable textBetweenTagsBelongsToDescription on BetterPhpDocParser extends PhpDocParser ([#4817](https://togithub.com/rectorphp/rector-src/pull/4817)) - \[PHPUnit] Fix extreemely slow PHPUnit run on data providers with objects ([#4823](https://togithub.com/rectorphp/rector-src/pull/4823)) - \[AutoImport] Handle case insensitive name collide on auto import ([#4829](https://togithub.com/rectorphp/rector-src/pull/4829)) - \[Traverser] Set explicitely nodeConnectingVisitorCompatibility: false config in config/phpstan/static-reflection.neon ([#4841](https://togithub.com/rectorphp/rector-src/pull/4841)) - replaces `get_headers` $associative with bool ([#4850](https://togithub.com/rectorphp/rector-src/pull/4850)), Thanks [@mvhirsch](https://togithub.com/mvhirsch)! - \[Php55]\[Renaming] Handle rename string on combination StringClassNameToClassConstantRector+RenameStringRector ([#4869](https://togithub.com/rectorphp/rector-src/pull/4869)) - \[Php80] Handle crash parent default empty array/string param on AddParamBasedOnParentClassMethodRector ([#4833](https://togithub.com/rectorphp/rector-src/pull/4833))
#### Removed :skull: - Remove deprecated `FileProcessorInterface` ([#4835](https://togithub.com/rectorphp/rector-src/pull/4835)) - Remove `SwapFuncCallArgumentsRector` as keeps swaping to infinity, use custom rule instead ([#4874](https://togithub.com/rectorphp/rector-src/pull/4874)) ### [`v0.18.0`](https://togithub.com/rectorphp/rector/releases/tag/0.18.0): Released Rector 0.18.0 with Laravel container β‘οΈ [Compare Source](https://togithub.com/rectorphp/rector/compare/0.17.13...0.18.0) #### New Features and Changes :partying_face: - **\[DI] Switch container to Laravel - final step π₯³ ([#4698](https://togithub.com/rectorphp/rector-src/pull/4698))** - do you use `$rectorConfig->import('src/*');` with mask? - this is removed now, use explicit real paths instead - \[DI] Remove symfony/dependency-injection dependency ([#4796](https://togithub.com/rectorphp/rector-src/pull/4796)) - \[DI] Add symfony config BC warnings layer, to inform about an upgrade ([#4800](https://togithub.com/rectorphp/rector-src/pull/4800)) - Add possibility to add multiple phpstan configs ([#4798](https://togithub.com/rectorphp/rector-src/pull/4798)), Thanks [@alexander-schranz](https://togithub.com/alexander-schranz)! - \[DX] Make use of `addParameter()` ([#4801](https://togithub.com/rectorphp/rector-src/pull/4801)) - Add deprecation warning for `FileProcessorInterface` ([#4808](https://togithub.com/rectorphp/rector-src/pull/4808))
#### Bugfixes :bug: - \[DeadCode] Handle duplicated annotation on space before close parentheses on RemoveUselessParamTagRector ([#4795](https://togithub.com/rectorphp/rector-src/pull/4795)) - Fix skip() Rector class, make container forget it comleteely ([#4807](https://togithub.com/rectorphp/rector-src/pull/4807))
Configuration
π Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.