Releases: rectorphp/rector
Releases · rectorphp/rector
Released Rector 2.3.1
New Features and Changes 🥳
- [tdd] Add
AddReturnDocblockForDimFetchArrayFromAssignsRector(#7792) - [tdd] Add
AddReturnDocblockFromMethodCallDocblockRector(#7796) - [tdd] Add
AddVarArrayDocblockFromDimFetchAssignRector(#7801) - [DeadCode] Add
RemoveDeadIfBlocksRector(#7528), Thanks @john-shaffer! - [dead-code] Add
RemoveVoidDocblockFromMagicMethodRector(#7822) - Thanks @parijke! - [experiment] Remove leaveNode() method on AbstractRector and CallableNodeVisitor (#7767)
Bugfixes 🐛
- Skip Doctrine Connection calls in
AddReturnDocblockFromMethodCallDocblockRector(#7797) - add static all support to
AddReturnDocblockFromMethodCallDocblockRector(#7798) - add object support to
DocblockReturnArrayFromDirectArrayInstanceRector(#7795) - [TypeDeclarationDocblocks] Use FQCN return docblock for array of object types on AddReturnDocblockFromMethodCallDocblockRector (#7800), Thanks @guanguans!
- [php 8.3] cover private abstract constants in
AddTypeToConstRector(#7804) - Add check for append in foreach items assignment (#7815), Thanks @solverat!
- Static closure rule ignores arguments with $this binding (#7721), Thanks @peterfox!
- fix: skip non-native methods (#7747), Thanks @calebdw!
- [Php74] Fix indentation space on ClosureToArrowFunctionRector with comment inner closure (#7779)
- [DeadCode] Handle crash when parent does not has default param and child has (#7782)
- fix mixed[] override with empty array in DocblockReturnArrayFromDirectArrayInstanceRector (#7793)
- [ChangesReporting] Fix total changed result on JsonOutputFormatter (#7807)
- Manage named arguments when replacing a value (#7784), Thanks @carlos-granados!
- [DeadCode] Register
RemoveNextSameValueConditionRectorin dead-code set (#7790) - [DeadCode] Skip final and non-public __construct() on RemoveParentDelegatingConstructorRector (#7806)
- [DeadCode][Php80] Handle crash on mix ClassPropertyAssignToConstructorPromotionRector+RemoveParentDelegatingConstructorRector (#7799)
- [DeadCode] Skip with elseif/else on RemoveNextSameValueConditionRector (#7809)
- [DeadCode] Merge comment on RemoveNextSameValueConditionRector (#7810)
- skip marker attribute in RemoveEmptyClassMethodRector (#7813)
- [DeadCode] Skip private promoted property on RemoveParentDelegatingConstructorRector (#7817)
- Remove rector from rule definition title (#7820), Thanks @simonschaufi!
- [experiment-next] Remove leaveNode() calls on AbstractImmutableNodeTraverser (#7778)
- [DeadCode] Handle multi vars on RemoveNonExistingVarAnnotationRector (#7780)
- [Php71] Try to handle no variants on RemoveExtraParametersRector (#7803)
Released Rector 2.3
New Features 🥳
- Introduce
FileNodeto handle file-level changes (#7728) to be used instead ofFileWithoutNamespacenode - see https://github.com/rectorphp/rector-src/blob/main/UPGRADING.md for the upgrade - Add
PrivatizeFinalClassConstantRector(#7753), Thanks @simonschaufi! - [dead-code] Add
RemoveParentDelegatingConstructorRector(#7769)
Bugfixes 🐛
- Manage named arguments in ArgumentAdderRector rule (#7777), Thanks @carlos-granados!
- [compat] Add
SymplifyQuoteEscapeRectordeprecated rule for BC layer (#7744) - [Php81] Skip on Param default on ArrayToFirstClassCallableRector (#7749)
- [CodeQuality] Handle ternary in identical left/right on UseIdenticalOverEqualWithSameTypeRector (#7748)
- fix: chained calls on static calls (#7746), Thanks @calebdw!
- [code-quality] Extract standalone SortAttributeNamedArgsRector from SortNamedParamRector, to slightly different areas (#7750)
- [rename] Rename
SortNamedParamRectortoSortCallLikeNamedArgsRectorto be more clear about the intent (#7751) - [Php85] Skip under unset() on ArrayFirstLastRector (#7752)
- [Php81] ArrayToFirstClassCallableRector should not skip non-public methods from owning scope (#7760), Thanks @acoulton!
- [fix] wrap ternary in parenthese on string casting, if only cond is casted (#7745)
- [internal] Fix inline replace block removal not removed on deep block for InlineIfToExplicitIfRector + ReplaceBlockToItsStmtsRector (#7764)
- [TypeDeclaration] Skip class not found on ObjectTypedPropertyFromJMSSerializerAttributeTypeRector (#7774)
- [Php85] Skip defined int or string on ArrayKeyExistsNullToEmptyStringRector (#7758)
Removed 💀
- [DeadCode] Skip trait on RemoveAlwaysTrueIfConditionRector (#7759)
- [internal] Remove duplicated enterNode() type check already handled in node traverser (#7717)
- [dx] warn about deprecated beforeTraverse() method once FileNode is ready (#7768)
- [DeadCode] Skip next assign expr has side effect inside try {} on RemoveDoubleAssignRector (#7775)
- [DeadCode] Skip with different default param value child vs parent on RemoveParentDelegatingConstructorRector (#7776)
rectorphp/rector-symfony 🎵
- bump (#911)
- [code-quality] Add ReturnDirectJsonResponseRector (#910)
- Fix scoped downgrade SymfonyClass (#909)
- cover is safe (#908)
- [twig] add explicit attribute name arg, to improve context (#907)
- [Symfony73] Fix named arg different position crash on InvokableCommandInputAttributeRector (#905)
- [CodeQuality] Skip UserInterface instance on ControllerMethodInjectionToConstructorRector (#904)
- create ClassMethod directly in InvokableCommandInputAttributeRector, to keep newline per attribute (#903)
- Remove InvokableCommandInputAttributeRector from set (#901)
- [Validator] use constants for Email (#900), Thanks @JohJohan
rectorphp/rector-doctrine 🟠
- Make use of
FileNode(#474)
rectorphp/rector-phpunit 🟢
- [AnnotationsToAttributes] Handle both annotation and attributes exists on DataProviderAnnotationToAttributeRector (#603)
- [fix] skip AddInstanceofAssertForNullableArgumentRector on assert call (#602)
- [code-quality] Add AddInstanceofAssertForNullableArgumentRector (#601)
- use FileNode in DeclareStrictTypesTestsRector (#599)
Released Rector 2.2.14
Bugfixes 🐛
- [fix] warn early about deprecated skipped rules, as not neccessary to skip anymore + restore
FirstClassCallableRectorand mark as deprecated to keep BC (#7742)
Released Rector 2.2.13
Bugfixes 🐛
- [fix] restore missing pInterpolatedStringPart(), cover with test (#7741)
Released Rector 2.2.12
Bugfixes 🐛
- [cleanup] Make FirstClassCallableRector use attributes over node traverser hacks (#7696)
- [CodingStyle] Skip enum case on
NewlineBetweenClassLikeStmtsRector(#7698), Thanks @parth391! - [fix] skip all-but standalone assign on
SetTypeToCastRector(#7699) - [fix] avoid changing generic interface in NarrowObjectReturnTypeRector, focus on objects as in definition (#7700)
- Remove direct
NodeTravser::*where possible, use node visitor attribute key instead (#7697)
Removed and Deprecated 💀
- [dx] add stmts aware deprecation notice in `getNodeTypes()`` (#7692)
rectorphp/rector-symfony 🎵
Released Rector 2.2.11
Bugfixes 🐛
- [cleanup] Make FirstClassCallableRector use attributes over node traverser hacks (#7696)
- [CodingStyle] Skip enum case on NewlineBetweenClassLikeStmtsRector (#7698), Thanks @parth391!
- [fix] skip all-but standalone assign on SetTypeToCastRector (#7699)
- [fix] avoid changing generic interface in NarrowObjectReturnTypeRector, focus on objects as in definition (#7700)
- [transform] tidy up array dim fetch to method call rector (#7694)
- Remove direct NodeTravser::* where possible, use node visitor attribute key instead (#7697)
Removed and Deprecated 💀
- [dx] add stmts aware deprecation notice in getNodeTypes() (#7692)
rectorphp/rector-symfony
Released Rector 2.2.10
New Features and Improvements 🥳
- Support Attribute in
SortNamedParamRector(#7684), Thanks @VincentLanglet!
Bugfixes 🐛
- [PhpParser] Add Stmt\Block to NodeGroup::STMTS_AWARE (#7689)
- skip already dim fetch variable on OrdSingleByteRector (#7681)
- [Php85] Handle crash on no arg on OrdSingleByteRector (#7682)
- [Php70] Handle return ternary on IfIssetToCoalescingRector (#7683)
- [CodingStyle] Skip use trait on NewlineBetweenClassLikeStmtsRector (#7685)
- [CodingStyle] Handle use trait after property on
NewlineBetweenClassLikeStmtsRector(#7687) - [CodeQuality] Skip with HTML on
ShortenElseIfRector(#7686) - [Variables] Fetch list super global variable names from PHPStan Scope::SUPERGLOBAL_VARIABLES constant (#7663)
- Fix typo in rule definition message (#7690), Thanks @simonschaufi!
rectorphp/rector-symfony 🎵
- [code-quality] Skip enum in ControllerMethodInjectionToConstructorRector (#893)
- [symfony 7.3] Add CommandDefaultNameAndDescriptionToAsCommandAttributeRector (#892)
- [symfony 7.x] update sets (#890)
- [CodeQuality] Skip parent method exists on ControllerMethodInjectionToConstructorRector (#889)
- skip params with attributes in ControllerMethodInjectionToConstructorRector (#887)
- [stmts-aware] Use NodeGroup::STMTS_AWARE over StmtsAwareInterface (#886)
rectorphp/rector-phpunit 🟢
- [fix] Improve AssertComparisonToSpecificMethodRector for assert false (#594)
Released Rector 2.2.9
New Features and Changes 🥳
- [exp] Add
RemoveReturnThisFromSetterClassMethodRector(#7624) - [exp] Add
FluentSettersToStandaloneCallMethodRector(#7625) - [dead-code] Add
RemoveNextSameValueConditionRector(#7525) - Update PHP upgrade support to version 8.5 (#7644), Thanks @guilheb!
- [stmts-aware] Deprecate
StmtsAwareInterfaceinterface and replace with meta-type + groups (#7679) - How to upgrade?
Bugfixes 🐛
- Improve parent call fixture in Php4ConstructorRector not to use KEY constant (#7642)
- Improve ClassPropertyAssignToConstructorPromotionRector not to use STMT_KEY attribute value (#7645)
- [TypeDeclaration] Handle crash on combine union types on AddClosureParamTypeForArrayReduceRector (#7636)
- [TypeDeclaration] Skip no key generic object return on NarrowObjectReturnTypeRector (#7623)
- [CodingStyle] Do not use FullyQualified on "self" on
ClosureFromCallableToFirstClassCallableRector(#7632), Thanks @devnix! - [Php80] Handle mix still annotation and already attribute on AnnotationToAttributeRector (#7639), Thanks @acoulton!
- cleanup RemoveUnsuedPrivateMethodRector (#7643)
- re-index changed nodes only (#7651)
- avoid
spl_object_id()if no change in AbstractRector (#7653) - Refine bug report template formatting (#7655), Thanks @u01jmg3!
- [Php85] Skip inside expression assign on ArrayFirstLastRector (#7657)
- Rename SymplifyQuoteEscapeRector to SimplifyQuoteEscapeRector (#7658), Thanks @VincentLanglet!
- docs: fix typos in deprecation notice (#7666), Thanks @sir-kain!
- [Dep] Ignore unknown class error on build/config/config-downgrade.php on shipmonk/composer-dependency-analyser to 1.8.4 (#7668)
- [dx] Make registration of custom NodeVisitor is easier (#7669)
- raise deps (rectorphp/rector-src@440d6d7)
- [Experiment][Printer] Move AlwaysRememberedExpr tweak logic to separate service after a Match_ found (#7654)
- Narrow object return type v2 (#7618), Thanks @Orest-Divintari!
- [Php80] Handle OpenApi\Attributes\Property example to keep numeric string on AnnotationToAttributeRector (#7677)
- keep file without namespace implementing interface to alling with other nodes (#7679)
- [EarlyReturn] Handle If, elseIf, else all returned on RemoveAlwaysElseRector (#7659)
- [DeadCode] skip Ds\Map::get() on RemoveNullArgOnNullDefaultParamRector (#7665)
Removed 💀
- [DeadCode] Skip used from property fetch reference on loop on RemoveUnusedVariableAssignRector (#7635)
- [internal] Extract ImmutableNodeTraverser from vendor, to remove patch and keep using cache for node types (#7634)
- Deprecated STMT_KEY and remove its set attribute value (#7647)
- [attribute] Remove unused AttributeKey::REPRINT_RAW_VALUE (#7664)
rectorphp/rector-symfony 🎵
- [stmts-aware] Use NodeGroup::STMTS_AWARE over StmtsAwareInterface (#886)
- Fix rule when method is __invoke (#884), Thanks @wilfi00
- [CodeQuality] Do not replace variable assign on ControllerMethodInjectionToConstructorRector (#883)
- Handle Doctrine constraints in ConstraintOptionsToNamedArgumentsRector (#882), Thanks @johndodev
- [CodeQuality] Skip FOS\RestBundle ParamFetcher on ControllerMethodInjectionToConstructorRector (#881)
- [CodeQuality] Skip autowire() method via @required and Required attribute (#880)
- Fix scoped \ cleared on single quote string on ControllerMethodInjectionToConstructorRector (#879)
- [CodeQuality] Skip Common Entity contains subnamespaces on ControllerMethodInjectionToConstructorRector (#878)
- [CodeQuality] Skip from route path /edit/{id} on ControllerMethodInjectionToConstructorRector (#877)
- handle use var (#875)
- Remove STMT_KEY from rules (#874)
- Remove stmt key from LogoutHandlerToLogoutEventSubscriberRector (#870)
- Fix build of prefixed SymfonyFunctionName::REF and SymfonyFunctionName::SERVICE usage (#869)
- [config] Fix couple config autowire rules (#868)
- Fix unit test (#867)
- skip constructor in ControllerMethodInjectionToConstructorRector (#866)
- [code-quality] Add ControllerMethodInjectionToConstructorRector (#865)
rectorphp/rector-phpunit 🟢
- [CodeQuality] Skip Generator on AssertCompareOnCountableWithMethodToAssertCountRector (#591)
- remove stmt key from ConstructClassMethodToSetUpTestCaseRector (#590)
- Remove stmt key from TestListenerToHooksRector (#589)
- fix phpunit covers default class with short covers methods (#588), Thanks @irosner
- [CodeQuality] Do not use FullyQualified on "self" on WithCallbackIdenticalToStandaloneAssertsRector (#587)
- [phpunit 10] Improve PropertyExistsWithoutAssertRector coverage (#586)
- [depre] Deprecate AssertPropertyExistsRector as method was removed in PHPUnit 10 (#585)
- [depre] Deprecate RemoveDataProviderParamKeysRector as the keys can be useful to improve test readability (#584), Thanks @MacDada
- [CodeQuality] Handle on without namespace on DeclareStrictTypesTestsRector (#583)
Released Rector 2.2.8
New Features 🥳
- [type-declaration] Add return data provider array type from strict test method param (#7605)
- [coding-style] Add NestedTernaryToMatchRector (#7572)
- [TypeDeclaration] Register NarrowObjectReturnTypeRector to type declaration set (#7615)
Bugfixes 🐛
- [Diffs] Handle --no-diffs usage to show file have been changed if any with --dry-run + --no-diffs (#7619)
- [Php81] Skip callable variadic in array_all() on FunctionLikeToFirstClassCallableRector (#7606)
- fix a syntax error in the ArrayFirstLastRector rule documentation (#7613), Thanks @esnard!
- Narrow object return type (#7575), Thanks @Orest-Divintari!
- [type-declaration] Rename NarrowTooWideReturnType to NarrowWideUnionReturnTypeRector (#7614)
- [TypeDeclaration] Also update generic collection docblock on NarrowObjectReturnTypeRector (#7616)
- [TypeDeclaration] Do not change valid generic docblock on NarrowObjectReturnTypeRector (#7617)
- [Privatization] Do not remove readonly on promoted property on PrivatizeFinalClassPropertyRector (#7611)
Removed 💀
- [dx] help - omit explicit command name as no longer needed; remove verbosity option, use debug instead (#7620)
rectorphp/rector-symfony 🎵
- ensure reset args after loop (#864)
- Bump PHPStan to ^2.1.32 and fix test for InlineClassRoutePrefixRector (#863)
- [Symfony74] replace PropertyMetadata deprecated functions (#862), Thanks @MrYamous
- [Symfony74] update WorkflowDumpCommand namespace (#861), Thanks @MrYamous
- add property support to ErrorNamesPropertyToConstantRector (#860)
- Support converting all options to twig attributes (#859), Thanks @Spea
rectorphp/rector-phpunit 🟢
- [CodeQuality] Skip in static method on AssertFuncCallToPHPUnitAssertRector (#582)
- add implicit method call support (#581)
- add multi callbacks support (#580)
- allow extra stmt (#579)
- add dynamic instanceof support (#578)
- [code-quality] Add SimplerWithIsInstanceOfRector (#577)
- add sole instanceof support (#576)
- add use var (#575)
- add return type or empty if nothing to add (#574)
- [code-quality] Add MergeWithCallableAndWillReturnRector (#573)
- handle solo identical as well, to get better message (#572)
- always return true, as required by contract (#571)
- add external variable use (#570)
- add isset support, revert order to respect original one (#569)
- [code-quality] Add WithCallbackIdenticalToStandaloneAssertsRector (#568)
rectorphp/rector-downgrade-php ⬇️
- Bump to PHPStan ^2.1.32 and ignore false positive instanceof in OR usage (#344)
Released Rector 2.2.7
New Features 🥳
- [type-declaration] Add ReturnIteratorInDataProviderRector (#7593)
- [type-declarations] Add TypedStaticPropertyInBehatContextRector (#7596)
- [DeadCode] Register RemoveNullArgOnNullDefaultParamRector to dead code set (#7597)
- [php 8.5] Split of nested functions calls to pipe operator in a new standalone rule (#7603)
Bugfixes 🐛
- always add nullable on TypedPropertyFromJMSSerializerAttributeTypeRector as serializer does not use constructor (#7599)
- [Php81] Skip callable param union on FunctionLikeToFirstClassCallableRector (#7589)
- [CodeQuality] Skip ArrayDimFetch with BitwiseXor on CombinedAssignRector (#7590)
- [Php84] Skip variable extraction with return early on ForeachToArrayAllRector (#7591)
- [PHP 8.5] rename NestedToPipeOeratorRector to SequentialAssignmentsToPipeOperatorRector, handle only assigns, not nested calls (#7588)
- [Php81] Skip as Arg of non-native function call on FunctionLikeToFirstClassCallableRector (#7592)
- skip different args passed to call-like and required by arrow function in FunctionLikeToFirstClassCallableRector (#7594)
- handle public properties in TypedPropertyFromJMSSerializerAttributeTypeRector as nullable (#7595)
- skip to many in /TypedPropertyFromJMSSerializerAttributeTypeRector (#7598)
- skip refernce one as well in /TypedPropertyFromJMSSerializerAttributeTypeRector (rectorphp/rector-src@842aa94)
- split TypedPropertyFromJMSSerializerAttributeTypeRector to scalar and object types (#7602)
- Don't require parentheses for short-ternaries (#7604), Thanks @martinstuecklschwaiger!
rectorphp/rector-symfony 🎵
- [Configs] Skip first class callable on RemoveConstructorAutowireServiceRector (#858)
rectorphp/rector-phpunit 🟢
- [depre] Deprecate SetUpBeforeClassToSetUpRector as can break code easily (#567)