New Features and Changes 🥳
- [Php84] Add ExplicitNullableParamTypeRector (#5724)
- [Transform] Adds ArrayDimFetchToMethodCallRector rule (#5723), Thanks @peterfox!
- Add support for getOneOrNullResult() method in ChildDoctrineRepositoryClassTypeRector (#5747)
- Add boolean and support to RemoveDeadInstanceOfRector (#5748)
- [DeadCode] Add new rule - ReduceAlwaysFalseIfOrRector (rectorphp/rector-src@0dd1a43)
- [CodeQuality] Add new rule - ExplicitReturnNullRector (#5753)
- [CodeQuality] Transform type|void docblock to type|null as well on ExplicitReturnNullRector after add return null (rectorphp/rector-src@576198c)
- [CodeQuality] Add Function_ support on ExplicitReturnNullRector (#5762)
- [CodeQuality] Add Goto_ possible return null on SilentVoidResolver under Do_ (#5773)
- Add
rector
test suite tophpunit.xml
orphpunit.xml.dist
(#5717), Thanks @ghostwriter! - [Php82] Add VariableInStringInterpolationFixerRector (#5781)
- [DeadCode] Add RemoveUselessReadOnlyTagRector (rectorphp/rector-src@ef333de)
Bugfixes 🐛
- [php84] Clean up contains null check type on ExplicitNullableParamTypeRector (#5726)
- Fixes for ArrayDimFetchToMethodCallRector (#5727), Thanks @peterfox!
- Update ArrayDimFetchToMethodCall to use ObjectType (#5728), Thanks @peterfox!
- [Configuration] Do not sets, skip, rules on empty array on RectorConfigBuilder (#5731)
- [Php81] Skip $this::class on trait on NullToStrictStringFuncCallArgRector (#5732)
- [Dep] Temporary pin to use nikic/php-parser 4.18.0 (#5733)
- Handle readonly class with attrs (#5736), Thanks @tugmaks!
- [Scoper] Handle use nette/utils on php < 7.4 on 6th param on preg_replace_callback() (rectorphp/rector-src@fd9e172)
- [Renaming][AutoImport] Handle after change annotation to attribute with rename on AnnotationToAttributeRector + RenameClassRector with auto import (#5741)
- [Php80] Skip var property usage on ClassPropertyAssignToConstructorPromotionRector (#5744)
- [Php80] Use identical compare on PromotedPropertyCandidateResolver (#5745)
- Fix ChildDoctrineRepositoryClassTypeRector for generic type (#5746)
- [DeadCode] Skip From docblock on ReduceAlwaysFalseIfOrRector (rectorphp/rector-src@f32dff3)
- [CodeQuality] Skip if else return on ExplicitReturnNullRector (#5755)
- [CodeQuality] No need to re-update doc when already union null doc on ExplicitReturnNullRector (#5757)
- [CodeQuality] Skip __construct() method on ExplicitReturnNullRector (#5758)
- [CodeQuality] Move Yield_ and YieldFrom check to SilentVoidResolver (#5759)
- [CodeQuality] Skip do { } while always returned on ExplicitReturnNullRector (rectorphp/rector-src@cae0691)
- [CodeQuality] Allow transform return; to return null; when there is other return with Expr on ExplicitReturnNullRector (#5761)
- [AutoImport] Allow auto import same namespace with sub use with docblock short name (rectorphp/rector-src@e3e741e)
- [CodeQuality] Handle do { } while maybe returned on ExplicitReturnNullRector (#5766)
- More fixture on Do_ maybe returned (#5767)
- [DeadCode] Fix array callable with constructor args (#5770), Thanks @hogejiro!
- [TypeDeclaration] Ensure always return with Expr on maybe continued in next stmt on SilentVoidResolver (#5771)
- [Scope] Fix resolve Scope from fluent call (#5743)
- Clean up scope skip scope check on ExprScopeFromStmtNodeVisitor (#5776)
- [NodeCollector] Fix non-string value on ArrayCallableMethodMatcher::resolveClassContextType() (#5780)
- [Printer] Apply configurable multiline on Fluent Method Call on print after method call created/re-printed (#5779)
- [TypeDeclaration] Handle initialized on getter on ReturnTypeFromStrictTypedPropertyRector (#5784)
- [TypeDeclaration] Handle in inner function on ReturnTypeFromStrictTernaryRector (#5785)
- [TypeDeclaration] Do not use Required::class reference on AutowiredClassMethodOrPropertyAnalyzer (#5788)
- [Performance][Php81] Early property promotion and readonly param check before changeable check on ReadOnlyPropertyRector (#5791)
- Fix removal of useless @param tag when string|null insteadof ?string is used. (#5684), Thanks @arjenschol
- [DeadCode] Clean up TypeHasher on Union Type (#5792)
- [NodeTypeResolver] Move UnionType doc vs FullyQualified native type as not equal to TypeComparator (#5793)
- Support @immutable phpdoc in RestoreDefaultNullToNullableTypePropertyRector(#5795), Thanks @staabm
- [CodeQuality] Skip Switch_ always returned on ExplicitReturnNullRector (#5800)
- [CodeQuality] Handle Switch maybe return on ExplicitReturnNullRector (#5801)
- [DeadCode] Skip use docblock on BooleanAnd check on RemoveDeadInstanceOfRector (#5751)
- [DeadCode] Skip isset() from property fetch from docblock on RemoveAlwaysTrueIfConditionRector (#5754)
Removed 💀
- [code-quality] Remove intval/strval from sets, as no clear difference and personal preference (#5721)
- [CodeQuality] Remove BoolvalToTypeCastRector and FloatvalToTypeCastRector as well from code-quality set (#5722)
- [CodingStyle] Remove usage of Reflection::expandClassName() from nette/utils 4.0 as cause bug on downgrade (#5740)
- [DeadCode] Skip implements interface on RemoveUnusedConstructorParamRector (#5778)
- [DeadCode] Skip Array Callable dynamic method using CLASS with constructor (no default args) on RemoveUnusedPrivateMethodRector (#5774), Thanks @hogejiro
- [Php81] Remove @readonly doc on transformation to native readonly on ReadOnlyPropertyRector (#5789)
- [DeadCode] Remove union with interface on RemoveUselessParamTagRector to make it consistent (#5794)
- [DeadCode] Skip property fetch on cond as may be overridden on RemoveAlwaysTrueIfConditionRector (#5796)
- [DeadCode] Skip @param true on native bool type on RemoveUselessParamTagRector (#5798)
- ArgumentRemoverRectorTest: replace symfony\yaml reference with dummy (#5799), Thanks @janedbal!