New Features 🥳
- [PHP 8.5] Add
NestedToPipeOperatorRector(#7577) - [code-quality] Add
DirnameDirConcatStringToDirectStringPathRector(#7552) - [dead-code] Add
RemoveNullArgOnNullDefaultParamRector(#7562) - register AddClosureParamTypeFromIterableMethodCallRector to type declaration set (rectorphp/rector-src@4d78f41)
- register AddParamArrayDocblockBasedOnCallableNativeFuncCallRector in type declaration docblocks (rectorphp/rector-src@80f7db8)
Bugfixes 🐛
- Fix next catch missed variable rename in CatchExceptionNameMatchingTypeRector (#7547)
- [Php81] Fix first class callable should not have trailing comma on FunctionLikeToFirstClassCallableRector (#7551)
- [CodingStyle] Skip Method target not found or defined only via @method on FunctionLikeToFirstClassCallableRector (#7553)
- [Php81][CodingStyle] Allow both exists in both @method and native method on FunctionLikeToFirstClassCallableRector (#7559)
- [Php81][CodingStyle] Skip param used as invokable function multi args on FunctionLikeToFirstClassCallableRector (#7563)
- [Php81][CodingStyle] Skip Closure/ArrowFunction as assign expr on FunctionLikeToFirstClassCallableRector (#7564)
- finalize rules as well (#7575), Thanks @Orest-Divintari!
- [Php85] Clean up dynamic expr check on NestedToPipeOperatorRector (#7578)
- [Php81] Skip Closure bindTo on FunctionLikeToFirstClassCallableRector (#7581)
- Remove trait support rom AddParamBasedOnParentClassMethodRector as depends on context; move to Class_ node hooking for efficiency (#7587)
- [Php85] Handle indent inside class method on NestedToPipeOperatorRector (#7584)
- make DeclareStrictTypesRector skip files without namespace, as very risky in files without PSR-4 autodiscovery (#7585)
- speedup - skip refleciton if all params are typed (rectorphp/rector-src@08f6dc3)
- skip all-typed properties in TypedPropertyFromStrictConstructorRector (rectorphp/rector-src@c5d9fdf)
- skip no-type params in RenameParamToMatchTypeRector (rectorphp/rector-src@cd7eb93)
- optimize ParamTypeByParentCallTypeRector to handle only classes with parents and method without param type (rectorphp/rector-src@0ca4e91)
- [DeadCode] Allow FuncCall on RemoveNullArgOnNullDefaultParamRector (#7567)
- [DeadCode] Handle with middle default not null on RemoveNullArgOnNullDefaultParamRector (#7565)
- [DeadCode] Allow remove named argument if position is match with param on RemoveNullArgOnNullDefaultParamRector (#7566)
- [comments] Remove attribute comments support as comments require standalone line before any doctrine annotation (#7582)
Removed and Deprecated 💀
- [depre] Deprecate ParentClassToTraitsRector as very narrow use case to be generic, create custom rule instead (#7550)
- [depre] Deprecate ReplaceParentCallByPropertyCallRector as not used since doctrine set service removed, not standalone rule (#7554)
- [depre] Deprecate MethodCallToNewRector as not used and based on assumptions (#7555)
- [depre] Deprecate MethodCallToPropertyFetchRector, as not practical/used and part of removed set (#7556)
- [depre] Deprecate MethodCallToPropertyFetchRector as not used and part of removed set (#7557)
- [depre] Deprecate PropertyFetchToMethodCallRector not used and as too generic, use custom rule instead (#7558)
- [depre] Deprecate PropertyAssignToMethodCallRector as too narrow use-case and never used (#7561)
- [depre] Deprecate ReturnTypeWillChangeRector as discourages from filling correct types, use type declaration set instead (#7570)
- [depre] Deprecate MultiDimensionalArrayToArrayDestructRector as not part of any set, can create less readable and harder to analyse code (#7573)
- [depre] Deprecate InlineVarDocTagToAssertRector as not par of any set, and create prod crashing code (#7574)
- [depre] Deprecate AddAllowDynamicPropertiesAttributeRector, as not in PHP sets and does not help by adding attribute everywhere (#7568)
- [depre] Deprecate AddLiteralSeparatorToNumberRector as cannot be automated and depends on context (#7569)
rectorphp/rector-symfony 🎵
- [Configs] Skip first class callable on RemoveConstructorAutowireServiceRector (#858)
- [config] Add FromServicePublicToDefaultsPublicRector (#857)
- cover 2nd arg class in RemoveConstructorAutowireServiceRector (#856)
- [config] Add RemoveConstructorAutowireServiceRector (#855)
- [Symfony73] Skip empty result of named arguments on ConstraintOptionsToNamedArgumentsRector (#853)
- [depre] Deprecate StringExtensionToConfigBuilderRector as deprecated in Symfony 7.4 (#854)
rectorphp/rector-phpunit 🟢
- [code-quality] Add DeclareStrictTypesTestsRector to code-quality test (#566)
- [depre] Deprecate AddParentSetupCallOnSetupRector as not generic to be automated, fill manually where needed (#565)
- [CodeQuality] Skip used inside static closure on AssertFuncCallToPHPUnitAssertRector (#564)
- register ReplaceAtMethodWithDesiredMatcherRector to code-quality (#563)
- [depre] Deprecate CreateMockToAnonymousClassRector as requires manual work, often value object setter can be better alternative (#562)