New Features 🥳
- [CodingStyle] Skip filled by construct on AddArrayDefaultToArrayPropertyRector (#4549)
- Add constuctor support to ReplaceArgumentDefaultValueRector (#4554)
- StaticMapper: added fast path for IdentifierTypeNode (#4565), Thanks @staabm!
- Add ReturnTypeFromStrictParamRector (#4501), Thanks @staabm!
- Add TypedPropertyFromStrictConstructorReadonlyClassRector (#4552), Thanks @staabm!
- ReturnTypeFromStrictTernaryRector: Support complex ternaries (#4515), Thanks @staabm!
Bugfixes 🐛
- Support final methods in ClassMethodReturnTypeOverrideGuard (#4509), Thanks @staabm!
- Support literals in ReturnTypeFromStrictTypedCallRector (#4511), Thanks @staabm!
- [TypeDeclaration] Null stmts check early on ReturnTypeFromStrictParamRector (#4512)
- [Performance] Use filtered filePaths from ApplicationFileProcessor::configurePHPStanNodeScopeResolver on WorkerRunner::run() (#4513)
- [DX] Show progress bar 100% on RectorConsoleOutputFormatter::report() (#4516)
- [ChangesReporting] Reuse defined errors vairable on ConsoleOutputFormatter (#4517)
- [ApplicationFileProcessor] Refactor ApplicationFileProcessor to filter file paths early before run both parallel and non-parallel (#4519)
- [DX] Fix hang on twice run after all files processed cached (#4521)
- [Application] Move filter files by config extensions to FileFactory (#4522)
- [Php81][Php82][Privatization] Handle extends non-readonly class on ReadOnlyPropertyRector+ReadOnlyClassRector+FinalizeClassesWithoutChildrenRector (#4524)
- Fix wrong results in RemoveAlwaysElseRector (#4527), Thanks @jlherren!
- Support class-const-fetch in ReturnTypeFromStrictTypedCallRector (#4520), Thanks @staabm!
- [EarlyReturn] Skip append variable on PreparedValueToEarlyReturnRector (#4530)
- Refactor MyCLabs\Enum\Enum::equals calls to comparisons (#4532), Thanks @rojtjo!
- [Performance][NodeManipulator] Avoid loop on search first variable named on next sliced next stmts on StmtsManipulator (#4537)
- [Performance] [TypeDeclaration] Reduce resolve ClassReflection on each property on TypedPropertyFromStrictConstructorRector (#4536)
- [Performance][TypeDeclaration] Reduce resolve ClassReflection from Property on AllAssignNodePropertyTypeInferer (#4539)
- [Application] Merge process files on both parallel and non-parallel process (#4523)
- [PHPStan] Merge assert phpstan errors to one (#4544)
- [Performance] [Php74] Reduce ClassReflection lookup from property on PropertyTypeChangeGuard (#4545)
- Use instanceof check on ClassReflection resolve (#4547)
- [Reflection] Reduce Scope pulling on ReflectionResolver (#4548)
- [Strict] Skip empty() from param doc on DisallowedEmptyRuleFixerRector (#4550)
- Fix space in paths (#4553)
- Skip traits in CountOnNullRector (#4556)
- Make use of toPhpDocNode() - take #2 (#4555)
- [Performance] [PostRector] Only check phpdocinfo on Stmt and Param on NameImportingPostRector (#4558)
- [CodeQuality] Skip pull property from inner class on CompleteDynamicPropertiesRector (#4561)
- Prevent unnecessary scope creation (#4562), Thanks @staabm!
- NameImportingPhpDocNodeVisitor: Cheap checks first (#4563), Thanks @staabm!
- [Performance][Renaming] No need PhpDocInfo refactor on Name node on ClassRenamer (#4566)
- [TypeDeclaration] Deprecate ArrayShapeFromConstantArrayReturnRector as uses docblocks that we move away from since 0.15 (#4571)
- Make ReturnTypeFromStrictNewArrayRector handle only single level arrays (#4575)
- Fix array mapping (#4576)
- [Performance] [PostRector] Reduce repetitive resolve uses statements on NameImportingPostRector (#4579)
- [EarlyReturn] Handle multiple statements in else in ChangeIfElseValueAssignToEarlyReturnRector (#4580), Thanks @dorrogeray!
- [BUGFIX] Ensure proper reprint with attributes for finalized classes (#4585), Thanks @cngJo!
Removed 💀
- [DX] Remove AllowEmptyConfigurableRectorInterface to ease interface tree, better handle on particular configure() method inside the rule (#4540)
- Skip description on same line, remove on next line as based on phpdoc-parser in RemoveUselessParamTagRector (#4551)
- [Performance][PostRector] Remove alias exists check on NameImporter called from NameImportingPostRector (#4564)
- [Performance][BetterPhpDocParser] Remove unused ConstExprNode check on ConstExprClassNameDecorator (#4578)
- [PHPStanStaticTypeMapper] Remove manual type check on PHPStanStaticTypeMapper (#4583)
- [StaticTypeMapper] Remove standalone false handling on StaticTypeMapper (#4582)