New Features 🥳
- [TypeDeclaration] Add WhileNullableToInstanceofRector (#3680)
Bugfixes 🐛
- Fix SingleInArrayToCompareRector if array item is variadic (#3640), Thanks @raoz!
- [Php80] Handle crash leaveNode() returned invalid value of type integer on TokenGetAllToObjectRector (#3644)
- [TypeDeclaration] Handle mix InlineHTML on FileWithoutNamespace (#3648)
- Simplify PhpFilesFinder (#3649), Thanks @staabm!
- [Test] Rename fixture and refactor to solve random error (#3677)
- [TypeDeclaration] Refactor UnionTypeMapper::narrowBoolType() to allow bool|int|false converted to bool|int (#3685)
- Update phpdoc-parser to ^1.20.3 (#3691)
- [Privatization] Skip variable assign append on ChangeReadOnlyVariableWithDefaultValueToConstantRector (#3687), Thanks @mickeytodd!
- [NodeManipulator] clean up multiple instanceof check on AssignManipulator (#3695)
- [CodeQuality] Using local variable $hasChanged on NarrowUnionTypeDocRector (#3697)
- Cache on successful file processing (#3614), Thanks @yguedidi!
- [CodingStyle] Skip concat on first arg on ConsistentImplodeRector (#3702), Thanks @nerones!
- Fix ExplicitMethodCallOverMagicGetSetRector with a protected method (#3732), Thanks @pierredup!
- [TypeDeclaration] Handle infinite loop on array_reverse with index on AddMethodCallBasedStrictParamTypeRector on php8+ feature (#3678)
- [TypeDeclaration] Handle regression multiple params no longer working on AddMethodCallBasedStrictParamTypeRector (#3681)
- [TypeDeclaration] Add do { } while support on WhileNullableToInstanceofRector (#3682)
- [Php56][Php70][Php74] Handle infinite loop on AddDefaultValueForUndefinedVariableRector+IfToSpaceshipRector+ClosureToArrowFunctionRector (#3701)
Performance Improvements 🚀
- [Performance] Using findFirst() for cast to (bool) so no need search all found nodes (#3642)
- [Performance] Using cheap chekc first on UndefinedVariableResolver::shouldSkipVariable() (#3643)
- [CodeQuality] Improve SimplifyIfElseToTernaryRector performance (#3721)
- [Renaming] Prevent overly greed type resolving in RenamePropertyRector (#3700), Thanks @staabm!
- Don't calculate diffs when
--no-diffs
is given (#3710), Thanks @staabm! - Calculate diff only once per file after refactoring (#3711), Thanks @staabm!
- Improve PropertyFetchAnalyzer performance (#3654), Thanks @staabm!
- Improve LocalMethodCallFinder performance (#3651), Thanks @staabm!
- Improve LocalConstantFinder performance (#3652), Thanks @staabm!
- Improve NodeComparator performance (#3659), Thanks @staabm!
- Improve ReflectionResolver performance (#3658), Thanks @staabm!
- Improve ParentClassMethodTypeOverrideGuard performance (#3660), Thanks @staabm!
- [PHPStanStaticTypeMapper] Improve UnionTypeMapper performance (#3686)
- [PHPStanStaticTypeMapper] Improve UnionTypeMapper performance take 2 (rectorphp/rector-src@931e6e2)
- [PHPStanStaticTypeMapper] Improve performance of UnionTypeMapper take 3 (#3690)
- [Renaming] Improve performance of RenameFunctionRector (#3699)
- Add e2e tests for consecutive changing runs (#3666), Thanks @yguedidi!
- [Renaming] Improve performance of RenamePropertyRector (#3698)
- [Naming] Improve performance by using findFirst() for casted to (bool) on BreakingVariableRenameGuard (#3703)
- [PostRector] Improve performance NameImportingPostRector (#3708)
- [Ast] Improve AstResolver and ClassLikeAstResolver performance (#3714)
- [NodeManipulator] Improve IfManipulator::collectNestedIfsWithNonBreaking() performance (#3720)
- Prevent unnecessary IO in ChangedFilesDetector (#3650), Thanks @staabm!
- [BetterPhpDocParser] Simplify BetterTokenIterator (#3656), Thanks @staabm!
- [Skipper] Prevent unnecessary IO (#3664), Thanks @staabm!
- NodeTypeResolver: prevent unncessary reflection calls (#3647), Thanks @staabm!