Releases: rectorphp/rector
Released Rector 0.14.3
New Features 🥳
- Add rector/rector-php-parser - https://github.com/rectorphp/rector-php-parser
Bugfixes 🐛
- [Down_To_PHP71] Handle both parent and child typed for trailing comma downgrade on DowngradeLevelSetList::DOWN_TO_PHP_71 (#2910)
- [PHP 8.1] Do not process static methods from Enum class (#2911)
- [PHP 7.4] Fix literator separator string/int missmatch in PHPStan type (#2913)
- [Doctrine] Handle Partial removal annotation has annotation below on RemoveRedundantDefaultPropertyAnnotationValuesRector (#2914)
- [DeadCode] Handle assign empty array on if cond on RemoveUnusedNonEmptyArrayBeforeForeachRector (#2917)
- [DeadCode] Skip assign if cond on RemoveUnusedNonEmptyArrayBeforeForeachRector (#2918)
- Skip first class callables in NullToStrictStringFuncCallArgRector (#2919), Thanks @thomasschiet!
- [Skipper] Handle provide direct relative path in Skipper (#2921)
- Fix VarAnnotationIncorrectNullableRector, add support for closure params when generating php doc (#2922), Thanks @dorrogeray!
- [CodingStyle] Skip has non-printable chars on SymplifyQuoteEscapeRector (#2926)
- [Php80] Handle crash on Nested Annotation to Attribute setting PhpVersion::PHP_80 (initializer - 1) (#2929)
- [Visibility] Does not turn abstraction into static from implicit public abstractions in ExplicitPublicClassMethodRector (#7483) (#2930), Thanks @Goral64!
- [Php55] Allow alias name on StringClassNameToClassConstantRector (#2931)
- [TypeDeclaration] Add AddArrowFunctionReturnTypeRector (#2933)
- [DeadCode] Skip nullable array on not empty on RemoveUnusedNonEmptyArrayBeforeForeachRector (#2935)
- [AutoImport] Allow auto import to use existing alias in use statement (#2937)
- Skip properties with default values for MakeTypedPropertyNullableIfCheckedRector (#2936), Thanks @Wohlie!
- [AutoImport] Add GroupUse support on auto import (#2939)
- [AutoImport] Skip multiple namespaces on single file on auto imports (#2940)
- Skip method of abstract class for StaticCallOnNonStaticToInstanceCallRector. (#2938), Thanks @Wohlie!
- Skip magic methods for StaticCallOnNonStaticToInstanceCallRector. (#2941), Thanks @Wohlie!
- Add refactorings for ...val() (#2942), Thanks @Wohlie!
- [DeadCode] Handle crash on RemoveUnusedPrivatePropertyRector+RemoveJustPropertyFetchForAssignRector (#2943)
- Fix type error on downgraded version. (#2946), Thanks @Wohlie!
- [TypeDeclaration] Skip intersection array on ReturnTypeDeclarationRector on PHP 8.1 feature enabled (#2948)
- [Php56] Skip after exit() on AddDefaultValueForUndefinedVariableRector (#2949)
- ParamAnalyzer: Accept all FunctionLike (#2945), Thanks @jtojnar!
Released Rector 0.14.2
Bugfixes 🐛
- [Php74] Skip Nested ternary parenthesized multiline on ParenthesizeNestedTernaryRector (#2902)
- Update nikic/php-parser to 4.15.1 (#2903)
- This fixes attribute to annotation rule space removal 🎉
- [Php55] Handle pre-slash string on StringClassNameToClassConstantRector (#2905)
- Explain how to persist Rector caches between CI runs (#2906), Thanks @CodeCasterNL!
- Fix missing FileSystem class in Symfony project (#7449)
Released Rector 0.14.1
New Features 🥳
Read on the blog: Support for Nested Doctrine Annotation to Flat Attributes in Rector 0.14
- [PHP 8.0] Add NestedAnnotationToAttributeRector (#2781)
- [PHP 8.0] Add way to adjust specifics attribute arguments (#2834)
- [BetterPhpDocParser] Add ArrayItemNode to improve value transfer in annotation curly lists (#2786) (#2795)
- + 20 % performance improvement by lazy loading resources (#2774), Thanks @ossinkine!
- [PHP 8.0] Refactor ChangeSwitchToMatchRector to StmstAwareInterface (#2801)
- [Naming] Add ArrowFunction support on RenameParamToMatchTypeRector (#2818)
- Support for ConstFetch (true, false, null) in NodeFactory::createArrayItem (#2778), Thanks @xorik!
- [PHP 7.4] Add MoneyFormatToNumberFormatRector (#2727)
- [DX] Make tracy debug functions part of dev-only, so developers can use own debug style (#2848)
- Add rector-debugging to require-dev (#2857)
- Support for ConstFetch (true, false, null) in NodeFactory::createArrayItem (#2778), Thanks @xorik!
- [PHP 8.0] Add custom JMS AccesorOrder explicit key (#2895)
Bugfixes 🐛
- Handle crash on RenameFunctionRector+ForRepeatedCountToOwnVariableRector+CountOnNullRector+NullToStrictStringFuncCallArgRector (#2777)
- [CodeQuality] Fix out-of-order items removal in UnusedForeachValueToArrayKeysRector (#2779)
- [PHP 8.0] Keep quoted string with doublecolon in AnnotationToAttributeRector (#2784)
- [PHP 8.0] Fix ChangeSwitchToMatchRector for next new variable re-use (#2798)
- Fix generics and intersection in TypedPropertyRector (#7392) (#2800), Thanks @Khartir!
- [CodeQuality] Add StaticCall support on OptionalParametersAfterRequiredRector (#2817)
- [PHP 5.5] Make StringClassNameToClassConstantRector skip lcfirst (#2888)
- [AutoImport] Handle auto import crash on docblock @SuppressWarnings(PHPMD.ElseExpression) inside anonymous class (#2808)
- [CodingStyle] Skip translation functions on EncapsedStringsToSprintfRector (#2809)
- [PHP 8.1] Handle crash backed Enum not implemented on FirstClassCallableRector (#2815)
- [EarlyReturn] Do not remove previous If_ stmts on ChangeNestedIfsToEarlyReturnRector (#2820)
- [EarlyReturn] Handle crash on assign in if else before on RemoveAlwaysElseRector (#2822)
- [EarlyReturn] Skip ChangeAndIfToEarlyReturnRector in case of simple scalar return (#2826)
- [EarlyReturn] Skip indirect return with define variable after parent else on ChangeAndIfToEarlyReturnRector (#2836)
- [DeadCode] Skip object shape pseudo-type in RemoveNonExistingVarAnnotationRector (#2837)
- [PHP 8.0] Handle single quoted is_granted on AnnotationToAttributeRector (#2842)
- [DowngradePhp80/72] Handle DowngradeTrailingCommasInParamUseRector+DowngradeParameterTypeWideningRector (#2843)
- [CodingStyle] Handle multiple assigns on SplitDoubleAssignRector (#2873)
- [Testing] Use own FixtureFileFinder to keep dependency low (#2858)
- [PHP 7.4] Add ParenthesizeNestedTernaryRector (#2859)
- Fix class not found from Easy-Testing package (#2864)
- [phpstan] Resolve duplicated methods (#2869)
- [EarlyReturn] Skip else has inline html on RemoveAlwaysElseRector (#2870)
- [Php55] Skip StringClassNameToClassConstantRector on case insensitive (#2896)
- [Transform] Skip transitional interface in AddInterfaceByTraitRector (#2898)
- [CodeQuality] Skip static::class on InlineConstructorDefaultToPropertyRector (#2899)
Inline Symplify Packages to Allow Changes in Single Place 👍
Based on community feedback, we've narrowed down few dependencies that Rector uses actively, but were maintained in external repository.
Inlining only the classes we need makes Rector easier to contribute as the code is available in the repository.
- symplify/astral
- symplify/package-builder
- symplify/smart-file-system
- symplify/symplify-kernel
- symplify/skipper
Read on the blog: Tests Made Simpler
Apart making contributions simpler, the vendor is 10 % smaller, narrow from 1949 files to 1765 👍
- [DX] Inline Skipper (#2877)
- [DX] Remove internally SmartFileInfo, to save memory for every single file + service (#2876)
- [DX] Reduce inner use of SmartFileInfo, and injected SmartFileSystem (#2847)
- [DX] Inline symplify/astral to use only active classes (#2851)
- [DX] Make use of FilePathHelper over inner magic of FileSystem in SmartFileInfo (#2862)
- [tests] Use file paths over value objects in tests to improve performance (#2878)
- [DX] Use own path normalizer (#2881)
- [DX] Localize few PackageBuilder classes (#2884)
- [DX] Remove PackageBuilder classes (#2885)
Removed 💀
- [DeadCode] Merge RemoveDeadConstructorRector, to RemoveEmptyClassMethodRector with same behavior (#2829)
- [DeadCode] Remove RemoveUnusedParamInRequiredAutowireRector, as one time job for private project; not useful for generic (#2830)
- [CodeQuality] Remove SimplifyIfIssetToNullCoalescingRector, as overly complex and should be handled by manual context (#2828)
- [Restoration] Remove CompleteImportForPartialAnnotationRector, one time custom job, not useful for generic rules (#2831)
- [Transform] Remove ServiceGetterToConstructorInjectionRector, only for risky doctrine case, that should be handled manually (#2832)
- [DX] Remove upgrade RectorConfig set, as last 2 version use only PHP (#2852)
- [DX] Cleanup of text file processor, unused MultipleFilesChangedTrait and misc (#2861)
- [DX] Remove composer-json-manipulator (#2871)
- [DX] Remove the composer upgrade as unused to narrow focus back to PHP (#2871)
Symfony Rector 🎼
- [Symfony 2.8] Make ServiceSetStringNameToClassNameRector skip classes used twice to avoid autowiring error (#232)
Doctrine Rector 🟠
- Improve MakeEntitySetterNullabilityInSyncWithPropertyRector (#121), Thanks @alexander-schranz
Released Rector 0.14
First, we're just passed great achievement. Rector has pased over 10 000 000 downloads 🎉 🥳
Thank you for joining us on this adventurous journey. Slowly but surely we're removing legacy code from codebases all over the world 🙏 👍
2 Community Packages
In Rector 0.14, 2 Rector extensions have matured enough to become standalone packages. We've decided to move them from the core closer to their own communities. Where they can grow faster and with inline of their community standards 👍 👪
Typo3 and Nette are now moved from Rector core to their own repositories:
Read more about it in a post from our blog.
New Features 🥳
- [tests] Add Ability to yield files with names (#2732), Thanks @Wirone!
- [TypedDeclaration] Add MockObject property type support to TypedPropertyFromAssignsRector (#2737)
- [TypeDeclaration] Make anonymous class return specific type, if implements (#2738)
- Improve ReturnTypeWillChangeRector to handle any method of defined type; move PhpDocFromTypeDeclarationDecorator to Downgrade rules (#2754)
- [Php73] Add Method Call support on on IsCountableRector (#2762)
Bugfixes 🐛
- [Php80] Skip default no stmt next is case on ChangeSwitchToMatchRector (#2728)
- [DeadCode] Skip RemoveAlwaysTrueIfConditionRector on property use by @var docblock on Trait (#2729)
- [Php80][TypeDeclaration] Handle UnionTypesRector+AddArrayReturnDocTypeRector on auto import FullyQualified doc (#2730)
- [DeadCode] Handle assign in If_ cond on RemoveUnusedNonEmptyArrayBeforeForeachRector (#2734)
- [Php80] Preserve int key defined not start from 0 on AnnotationToAttributeRector (#2735)
- [TypeDeclaration] Skip data providers in AddArrayReturnDocTypeRector, they're overly complex and not helpful to type (#2736)
- [CodingStyle] Fix re-print of self in PreferThisOrSelfMethodCallRector (#2759)
- [Php54][Php80] Handle no scope on LongArrayToShortArrayRector+AnnotationToAttributeRector (#2749)
- [Php81] Skip Encapsed on NullToStrictStringFuncCallArgRector (#2744)
- [CodeQuality] Skip not ArrayType on ForeachItemsAssignToEmptyArrayToAssignRector (#2752)
- AddReturnTypeDeclarationBasedOnParentClassMethodRector fix mixed return type by parent interface (#2755), Thanks @MartinMystikJonas!
- [Php73] Skip escaped Dash on RegexDashEscapeRector (#2753), Thanks @ebrigham1!
- [CodeQuality][Up_TO_PHP_81] Handle crash indentation on combination LevelSetList::UP_TO_PHP_81 with SetList::CODE_QUALITY (#2760)
- [Php81] Handle crash on Crypt() single arg on NullToStrictStringFuncCallArgRector (#2767)
- [Php80] Handle trailing comma on AnnotationToAttributeRector on Doctrine JoinColumn (#2766)
- [CodeQuality][Up_TO_PHP_81] Handle crash indentation on combination LevelSetList::UP_TO_PHP_81 with SetList::CODE_QUALITY - take 2 (#2763)
- [DeadCode] Fix RemoveUnusedPrivateMethodParameterRector args keys re-order (#2770)
- [Php55] Handle no quote in backslash on PregReplaceEModifierRector (#2771)
- Make ServiceGetterToConstructorInjectionRector report only if node has changed, retarget to Class_ node with higher priority (#2772)
Doctrine Rector 🟠
- Add set to convert gedmo annotations to attributes (#117) - Thanks @acrobat
- Add
DoctrineTargetEntityStringToClassConstantRector
(#98) - Thanks @dritter
Symfony Rector 🎼
- Skip non-direct inheritors for AbstractType in RemoveDefaultGetBlockPrefixRector (#219)
- Handle single action with
__construct
on InvokableControllerRector (#218) - [Symfony 2.5] Add AddViolationToBuildViolationRector (#211)
- [Symfony 2.8] Add ServiceSetStringNameToClassNameRector for fluents configs (#213)
- [Symfony60] Fix added return type for Router::getRouteCollection (#207) - Thanks @kick-the-bucket
Released Rector 0.13.10
New Features 🎉
- [Php80] Add MixedTypeRector (#2701)
- [CodingStyle] Skip has static call call non static method on StaticArrowFunctionRector and StaticClosureRector (#2713)
- [Doc] Add documentation for parallel troubleshooting (#2722), Thanks @rafaelbernard!
- Add class-string typehint to MethodCallRename (#2726), Thanks @alexander-schranz!
Bugfixes 🐛
- [Php81] Skip Doctrine ORM MappedSuperClass attribute on ReadOnlyPropertyRector (#2712)
- [CodeQuality][CodingStyle] Handle crash assert($subStartPos >= 0 && $subEndPos >= 0) on combination CodeQuality and CodingStyle rules (#2707)
- [DeadCode] Handle crash on negation class const fetch with static:: and parent:: on RemoveDeadZeroAndOneOperationRector (#2714)
- [DowngradePhp81] Handle no scope on DowngradeFirstClassCallableSyntaxRector inside ArrayItem (#2709)
- Fix/do not inline constructor default when readonly (#2720), Thanks @kpn13!
- Fix/early return inline constructor default 7319 (#2716), Thanks @kpn13!
- [TypeDeclaration] Handle crash on intersection in Union type on AddMethodCallBasedStrictParamTypeRector (#2704)
- [DeadCode] Skip RemoveAlwaysTrueIfConditionRector on property use by @var docblock (#2717)
- Apply ParametersAcceptorSelectorVariantsWrapper::select() take 2 (#2718)
- ExplicitMethodCallOverMagicGetSetRector fix (#2719), Thanks @MartinMystikJonas!
- [Php56] Skip already initialized on next Stmt on AddDefaultValueForUndefinedVariableRector (#2721)
- [Php56] Ensure return null on empty variable initialization after check with existing stmts on AddDefaultValueForUndefinedVariableRector (#2723)
- [Php56] Handle jump not Expression stmt next initialized on AddDefaultValueForUndefinedVariableRector (#2725)
Released Rector 0.13.9
New Features 🎉
- [CodingStyle] Add StaticArrowFunctionRector (#2657)
- [CodingStyle] Add StaticClosureRector (#2658)
- [Php80] Add implements interface support on single file on AddParamBasedOnParentClassMethodRector (#2660
- [PHP 8.1] Extend MyCLabsMethodCallToEnumConstRector with getValue() and static call (#2695)
- [PHP 8.1] Keep use stmts in MyCLabsClassToEnumRector enum (#2696)
- Add AddReturnTypeDeclarationBasedOnParentClassMethodRector (#2666), Thanks @MartinMystikJonas!
- [DX] Add input validation for method, property and function name to avoid invalid output ast (#2668)
- Improve namespace names validation (#2670)
Bugfixes 🐛
- [DeadCode] Skip global and static variable on RemoveJustVariableAssignRector (#2641)
- [DeadCode] Skip global and static variable on ReturnEarlyIfVariableRector (#2642)
- [StrictTypes] Add MethodCall/StaticCall to ExclusiveNativeCallLikeReturnMatcher (#2646)
- [TypeDeclaration] Add assigned new to variable in ReturnTypeFromReturnNewRector (#2647)
- DependencyClassMethodDecorator: Prevent duplication of arguments (#2643), Thanks @jtojnar!
- [TypeDeclaration] Skip Type modified between Assign and Return_ on ReturnTypeFromReturnNewRector (#2650)
- [TypeDeclaration] Skip modififed type between assign and return on ReturnTypeFromStrictNewArrayRector (#2651)
- [Php74] Skip TypedPropertyRector on final class by @Final docblock (#2654)
- [DeadCode] Handle crash on indirect parent BinaryOp on RemoveDuplicatedInstanceOfRector (#2656), #7293
- [TypeDeclaration] Skip property exists in parent on TypedPropertyFromStrictConstructorRector (#2659)
- Fix test to only resolve to known classes (#2663), Thanks @dritter!
- Fix getter method property substitution when the readable types don't match. (#2667), Thanks @mad-briller!
- [CodeQuality] Handle crash attribute used on trait on CallableThisArrayToAnonymousFunctionRector (#2675)
- Attempt to fix incorrect doctrine table attribute values on php 8.1 (#2699), Thanks @acrobat!
- [Transform] Handle crash string in EnumCase on StringToClassConstantRector (#2680)
- Fix InlineArrayReturnAssignRector and ChangeReadOnlyPropertyWithDefaultValueToConstantRector collision (#2701)
Removed 🗑️
- move ReturnTypeFromStrictTypedCallRector to enterprise (#2685)
- [DX] Cleanup, Remove RepeatedLiteralToClassConstantRector, as very narrow use case; use rather phpstan + Remove ChangeLocalPropertyToVariableRector, as buggy and unreliable; better use PHPStan (#2686)
- Remove UnwrapFutureCompatibleIfFunctionExistsRector as very niche and specific (#2688)
- [CodingStyle] Deprecate PHPStormVarAnnotationRector, rather tokens responsibility (#2677)
Released Rector 0.13.8
New Features 🎉
- [CodeQuality] Add TernaryFalseExpressionToIfRector (#2590)
- [TypeDeclaration] Add ReturnTypeFromStrictScalarReturnExprRector (#2601)
- [EarlyReturn] Add ReturnEarlyIfVariableRector (#2609)
- [Php54] Add ArrayToShortArrayRector (#2615), Thanks @edsrzf!
- [DeadCode] Add RemoveJustVariableAssignRector (#2618)
- [TypeDeclaration] Add TypedPropertyFromStrictSetUpRector (#2636)
Bugfixes 🐛
- [DeadCode] Handle always terminated Switch_ on RemoveUnreachableStatementRector (#2591)
- [DeadCode] Handle collection of Case_ on RemoveUnreachableStatementRector (#2593)
- [DeadCode] Handle anonymous and arrow function uses in RemoveJustPropertyFetchRector (#2592), Thanks @kick-the-bucket!
- [Naming] Skip used in arrow function args on RenameVariableToMatchMethodCallReturnTypeRector (#2599)
- [TypeDeclaration] Skip AddArrayReturnDocTypeRector on custom phpstan type (#2608)
- [DeadCode] Handle edge cases on RemoveJustVariableAssignRector (#2621)
- [Php71] Skip First Class Callable on RemoveExtraParametersRector (#2622)
- [CodeQuality] Fix CompactToVariablesRector to resolve values when the compact() is called (#2627)
- [DX] Improve direct return of Stmt arrays in Rector rules, remove NodesToAddCollector from AbstractRector (#2623)
- [CodingStyle] Handle VarConstantCommentRector+NewlineAfterStatementRector (#2629)
- [Php80] Skip no default on case collection assign on ChangeSwitchToMatchRector (#2631)
- [DeadCode] Do not remove first class callable VariadicPlaceholder arg on RemoveUnusedPrivateMethodParameterRector (#2634)
- [TypeDeclaration] Do not change more detailed return doc on ReturnTypeFromStrictNewArrayRector (#2638)
Removed 🗑️
- Remove RemoveOverriddenValuesRector as flow of control is not reliable and could cause invalid removal (#2614)
- [CodeQuality] Remove DateTimeToDateTimeInterfaceRector as mostly opinionated and way too much generics (#2598)
- [EarlyReturn] Remove ReturnAfterToEarlyOnBreakRector as risky and turning around next/previous nodes (#2624)
- [Transform] Remove CallableInMethodCallToVariableRector as very narrow use case and sensitive to wrong change (#2625)
Released Rector 0.13.7
New Features 🎉
- Decouple new Downgrade PHP package: https://github.com/rectorphp/rector-downgrade-php
- [TypeDeclaration] Add ReturnTypeFromStrictReturnExprRector (#2563)
- [TypeDeclaration] Add ReturnTypeFromStrictNativeFuncCallRector (#2570)
- [TypeDeclaration] Add ReturnTypeFromStrictNewArrayRector (#2572)
- [DowngradePhp80] Add DowngradeMixedTypeTypedPropertyRector (#2579)
- [Parallel] Display stack trace on --debug on parallel (#2561)
- Bump PHPStan to 1.8 (#2588)
Bugixes 🐛
- [PSR4] Do not remove declare(strict_types=1) on NormalizeNamespaceByPSR4ComposerAutoloadRector (#2551)
- [Php54] Add MethodCall and StaticCall support on RemoveReferenceFromCallRector (#2553)
- Clean MethodToMethodCallRector (#2554) , Thanks @SelrahcD!
- [DowngradePhp80] Do not change correct Union array docblock to mixed[] on DowngradeUnionTypeDeclarationRector (#2555)
- [CodeQuality] Drop ArrayThisCallToThisMethodCallRector as changes behavior and better handled by FirstClassCallableRector (#2571)
Released Rector 0.13.6
New Features 🎉
- [Core] AbstractScopeAwareRector is ready to be used in custom rules (#2537)
- [PHP 8.1] Add FirstClassCallableRector (#2544)
- [Php81] NullToStrictStringFuncCallArgRector - Register more functions (#2543), Thanks @hungtrinh!
- Improve RectorConfig import methods (#2526), Thanks @alexndlm!
Bugfixes 🐛
- [Renaming] Do not rename docblock same name not found in use inside namespace (#2471)
- [TypeDeclaration] Skip generic on ReturnTypeDeclarationRector (#2469)
- [DeadCode] Skip using coealesce assign operator on return on RemoveUnusedPrivatePropertyRector (#2476)
- [DeadCode] Skip has return reassign Coalesce Op on RemoveUnusedPrivatePropertyRector (#2477)
- [Php55] Handle crash on concat variable single quote on PregReplaceEModifierRector (#2483)
- [PSR4] Handle invalid missing ; on NormalizeNamespaceByPSR4ComposerAutoloadRector with GroupUse (#2488)
- [Php70] Refactor MultiDirnameRector by moving nestingLevel check to separate method (#2492)
- [Php81] Fix crash on redis->set() on ReadOnlyPropertyRector (#2494)
- [TypeDeclaration] Skip implements mixed, and already has typed return on AddReturnTypeDeclarationRector (#2509)
- [Php81] Skip param reassign on ReadOnlyPropertyRector (#2498)
- [CodeQuality] Fix default array param in CallableThisArrayToAnonymousFunctionRector (#2527)
- [Transform] Handle with this->method() from current class on MethodCallToMethodCallRector (#2531)
- [PHP 7.0] skip non-existing method in StaticCallOnNonStaticToInstanceCallRector (#2532)
- [PHP 7.4] Skip default expr type on property, if there is mixed assign (#2534)
- [Php56] Skip multiple catch with same variable on AddDefaultValueForUndefinedVariableRector (#2533)
- [Php80] Skip Assign on its var not directly used in next return on ChangeSwitchToMatchRector (#2535), #7247
- [Php81] Skip str_replace() pass array subject on NullToStrictStringFuncCallArgRector (#2541)
Released Rector 0.13.5
New Features 🎉
- [DeadCode] Add RemoveJustPropertyFetchRector (#2433)
- [DX] Make ClassAnnotationMatcher differentiate between known and unknown classes (#2319), Thanks @dritter!
- [CS] Fix dynamic and broken indent detection, allow to configure spacing via RectorConfig::indent() method (#2442)
- [DX] Add deprecation exception about old ContainerConfigurator, to prepare for removal even in CI (#2463)
- use PHPStan 1.7.12, with phpdoc-parser 1.6.0 to fix endline issue (rectorphp/rector-src@56651d0)
- [DX] Detach typo3 from core to allow stable growth of both packages (#2446)
- [scoped] Build with Scoper 0.17.2 (#2445)
Bugfixes 🐛
- [DX] Remove too detailed --type in init command, use fw documentation instead (#2430)
- [Renaming] Keep comment on RenameClassRector (#2439)
- [Renaming] Do not Rename Docblock inner Namespace on RenameClassRector (#2441)
- [Renaming] Handle crash on FuncCall with Arg class name conflict with use statement or namespace on RenameClassRector with auto import enabled (#2431)
- [DX] Remove symlinks option to require safe way of providing explicit paths (#2443)
- [Php74] Remove ReservedFnFunctionRector (#2447)
- [Renaming] Skip rename docblock on conflict with alias on RenameClassRector (#2450)
- [DeadCode][PHPUnit] handle crash on RemoveJustPropertyFetchForAssignRector+SimplifyForeachInstanceOfRector (#2453)
- [CodingStyle] Skip non-empty-string on VarConstantCommentRector (#2451)
- [Renaming] Do not rename class with same name inside different namespace on RenameClassRector (#2455)
- [Php72] Handle crash on PreInc usage on CreateFunctionToAnonymousFunctionRector (#2456)
- [Php70] Handle crash on EregToPregMatchRector (#2460)