Skip to content

Releases: rectorphp/rector

Released Rector 2.0

12 Dec 10:52
Compare
Choose a tag to compare

Rector 2.0 is here 🥳

The main purpose of this release is performance improvements, thanks to modern dependencies:

  • php-parser 4.x to 5.0
  • PHPStan 1.x to 2.0
  • and min PHP version 7.2 to 7.4 because of dependencies above

But we've few pretty cool features like composer-based sets and --only option as well. See release notes bellow.


For custom rules writers, see upgrading guide. The rest of upgrade is straighforward 🎉


To celebrate the upgrade, we're also modernized our logo! 🤩


New Features and Improvements 🎉

  • Add "--only" option to process only a single rule (#6441), Thanks @cweiske!
  • [DX] Add version-based set loading based on installed package version (#6428)
  • [dx] enable polyfills by default when PHP is on, to make config simpler (#6433)
  • [dx] enable all attributes, if none are selected to streamline config (#6451)
  • feat: add the option to use the annotation value as an argument to the attribute (#6468), Thanks @carlos-granados!
  • feat: add Behat annotations to attributes set (#6510), Thanks @carlos-granados!

Deprecated and Removed 💀

  • [deprecation] Deprecate AbstractScopeAwareRector in favor of single AbstractRector (#6425)
  • [deprecation] Deprecate MixedTypeRector, to avoid mixed type filled blindly, use type declaration set instead (#6434)
  • [docs] getRuleDefinition() no longer required for custom rules (#6440)
  • [deprecation] Remove deprecated PublicConstantVisibilityRector, cleanup deprecated SetListInterface (#6424)
  • [deprecated] Remove deprecated AbstractTestCase (#6426)

Bugfixes 🐛

  • [Php80] Returns null on no change on ClassPropertyAssignToConstructorPromotionRector (#6418)
  • [attributes] Make sure the target attribute class exists (#6454)
  • [TypeDeclaration] Skip test methods with exception in ReturnNeverTypeRector, [php74] Skip conditinal assign in RestoreDefaultNullToNullableTypePropertyRector as most likely desired to assign or fail (#6430)
  • Support php-64bit as required in composer.json (#6432), Thanks @hans-thomas!
  • [dx] Allow external rules without getRuleDefinition() to make them easier to write (#6438)
  • [fix] class phpdoc generic method (#6439), Thanks @lammafish!
  • Fix RemoveDoubleAssignRector in case of method call (#6442)
  • Upgrade to PHPParser 5 and PHPStan 2 (#6431)
  • [CodeQuality] Handle crash on return array constant on ExplicitReturnNullRector (#6458)
  • [Php80] Handle crash single quoted doctrine on AnnotationToAttributeRector (#6459)
  • [Php71] Skip already array destruct on ListToArrayDestructRector (#6460)
  • [TypeDeclaration] Skip mixed as on right of and on ParamTypeByMethodCallTypeRector (#6401)
  • [Renaming] Fix space on union docblock during rename on RenameClassRector (#6463)
  • [CodeQuality] Skip used by array callable on LocallyCalledStaticMethodToNonStaticRector (#6473)
  • [CodeQuality] Skip compare nullable object on UseIdenticalOverEqualWithSameTypeRector (#6474)
  • Use Type->getIterableValueType() over ArrayType-> getItemType() (#6479), Thanks @staabm!
  • [DeadCode] Allow remove assign variable with next method call on RemoveDoubleAssignRector (#6443)
  • [DeadCode] Handle InterpolatedStringPart crash on RemoveUnusedForeachKeyRector (#6457)
  • [DeadCode] Skip used by get_object_vars() when implements JsonSerializable on RemoveUnusedPromotedPropertyRector (#6472)
  • [DeadCode] Handle crash on valid conditional type on RemoveUselessReturnTagRector (#6475)
  • Use Type->getIterableKeyType() over ArrayType->getKeyType() (#6480), Thanks @staabm!
  • Update developing with docker: Fix php version to 8.2. (#6490), Thanks @uncaught!
  • [Renaming] Handle docblock aliased rename on RenameClassR* [Php81] Allow not readonly property on API Platform api resource (#6531), Thanks @alexndlm!
    ector (#6498)
  • [CodeQuality][Renaming] Handle DynamicDocBlockPropertyToNativePropertyRector+RenameClassRector with aliased name (#6506)
  • [TypeDeclaration] Skip with default value and assigned mixed on TypedPropertyFromAssignsRector (#6514)
  • [Php80] Mirror comments on assign on ChangeSwitchToMatchRector (#6516)
  • [Php70] Handle parent method call on Php4ConstructorRector (#6519)
  • [Php70] Do not replace if method call if method exists in current class on call same method with parent on Php4ConstructorRector (#6520)
  • [PostRector] Keep first comment before first Use_ on UnusedImportRemovingPostRector (#6522)
  • [Php81] Allow not readonly property on API Platform api resource (#6531), Thanks @alexndlm!
  • [Php81] Skip by ref param on ReadOnlyPropertyRector (#6532)
  • [Php70] Handle ArrayDimFetch on WrapVariableVariableNameInCurlyBracesRector (#6533)
  • Fix fixture end ] fixture on NestedAnnotationToAttributeRector (#6537)
  • [Php80] Handle mix quote single and double on AnnotationToAttributeRector (#6538)
  • [CodeQuality] Handle crash on yield from on OptionalParametersAfterRequiredRector (#6545)
  • Fix str_contains() never returns 0 (#6546)
  • [CodeQuality] Handle crash on unary minums on OptionalParametersAfterRequiredRector (#6547)
  • [CodeQuality] Handle crash on assign ref on OptionalParametersAfterRequiredRector (#6551)
  • [Attributes] Cover slash newline in AnnotationToAttributeRector with values (#6557)
  • [TypedPropertyFromAssignsRector] Handle parse_url() native function with second arg on TypedPropertyFromAssignsRector (#6562)
  • [TypeDeclaration] Handle default value with contant type on TypedPropertyFromAssignsRector (#6563)
  • [NodeTypeResolver] Handle namespaced function call name on NodeTypeResolver (#6564)

rectorphp/rector-symfony 🎵

  • Fill listener method name, based on kernel.x event name in EventListenerToEventSubscriberRectory (#694)
  • [scoped] Fix scoped prefixed UrlGeneratorInterface on RedirectToRouteRector (#692)
  • [DependencyInjection] Add GetBySymfonyStringToConstructorInjectionRector (#688)
  • [DependencyInjection] Add TraitGetByTypeToInjectRector (#687)
  • [DependencyInjection] Extract CommandGetByTypeToConstructorInjectionRector to make migration smoother (#686)
  • [DependencyInjection] Extract GetByTypeMethodCallToConstructorInjectionRector to make migration smoother (#685)
  • [Symfony 7.2] Add SetList (#684), Thanks @alamirault
  • Upgrade deprecated ScopeAware to AbstractRector (#680)
  • Fix twig 2.40 set to 2.4 (#678)
  • [deprecation] Remove deprecat...
Read more

Released Rector 1.2.10

08 Nov 14:03
Compare
Choose a tag to compare

New Features 🥳

  • [PHP8.3] add new rectors for get_class()/get_parent_class() without arguments (#6405), Thanks @cabbey!

Bugfixes 🐛

  • Fix ClassDependencyManipulator to add dependency on right position (#6413)
  • [Php81] Skip Doctrine Embeddable on ReadOnlyPropertyRector (#6411)
  • [Privatization] Skip with parameter on PrivatizeLocalGetterToPropertyRector (#6412)

Removed 💀

  • [DeadCode] Skip nullable @ template on RemoveUselessReturnTagRector (#6409)



rectorphp/rector-phpunit 🟢

  • [PHPUnit 10] Skip with Magic __get() on AssertIssetToAssertObjectHasPropertyRector (#403)
  • [CodeQuality] Add CreateMockToDirectNewRector (#402)
  • [CodeQuality] Add SingleMockPropertyTypeRector (#401)
  • [CodeQuality] Skip used by trait and multiple props on NarrowUnusedSetUpDefinedPropertyRector (#400)
  • Skip property with default value in NarrowUnusedSetUpDefinedPropertyRector (#398)
  • [CodeQuality] Add FlipAssertRector (#397)
  • Add count() support to AssertCompareOnCountableWithMethodToAssertCountRector (#395)
  • Add enum/const fetch support to AssertEqualsToSameRector (#394)
  • skip static property in NarrowUnusedSetUpDefinedPropertyRector (#393)

Released Rector 1.2.9

04 Nov 18:30
Compare
Choose a tag to compare

Bugfixes 🐛

  • [Strict] Using in_array() on CallLike instead of double call on Strict Rules (#6388)
  • [CodeQuality] Handle If cond as assign on ExplicitBoolCompareRector (#6389)
  • [CodeQuality] Skip append non empty array on ForeachItemsAssignToEmptyArrayToAssignRector (#6390)
  • [Php80] Mirror return comment on ChangeSwitchToMatchRector (#6394)
  • [TypeDeclaration] Skip union intersection types on php 8.1, allow on php 8.2+ (#6395)
  • [Php80] Skip @template T as mixed on MixedTypeRector (#6399)
  • [DeadCode] Check TemplateType instance check on Dead*TagValueNodeAnalyzer (#6400)
  • [CodeQuality] Skip multiple lines on JoinStringConcatRector (#6404)
  • [CodingStyle] Skip equal modifier on direct parent method compatible on MakeInheritedMethodVisibilitySameAsParentRector (#6406)

Removed 💀

  • [DeadCode] Handle consecutive equal case stmts on RemoveDuplicatedCaseInSwitchRector (#6392)
  • [DeadCode] Handle handle consecutive equal with jump different case on RemoveDuplicatedCaseInSwitchRector (#6393)
  • [DeadCode] Skip @template tag on RemoveUselessVarTagRector (#6396)
  • [DeadCode] Support multiple templates in RemoveUselessVarTagRector (#6402), Thanks @dragosprotung!



rectorphp/rector-symfony 🎵

  • [CodeQuality] Skip Request param used by caller method on RemoveUnusedRequestParamRector (#675)
  • Better note highlighting (#674), Thanks @OskarStark
  • remove extra character (#673), Thanks @IndraGunawan

rectorphp/rector-phpunit 🟢

  • [code-quality] Add NarrowUnusedSetUpDefinedPropertyRector (#388)
  • Add enum/const fetch support to AssertEqualsToSameRector (#394)
  • Add count() support to AssertCompareOnCountableWithMethodToAssertCountRector (#395)
  • [AnnotationsToAttribute] Skip not in test on AnnotationWithValueToAttributeRector (#387)
  • Add ReplaceTestFunctionPrefixWithAttributeRector (#386), Thanks @blackwolf12333

Released Rector 1.2.8

18 Oct 11:57
Compare
Choose a tag to compare

Bugfixes 🐛

  • [UnusedImport] Fix removing multiple uses (#6376), Thanks @jorgsowa!
  • [PostRector] Clean up variables and conditional usage on UnusedImportRemovingPostRector (#6378)
  • [PostRector] Reduce repetitive toString() on loop on UnusedImportRemovingPostRector (#6379)
  • [CodeQuality] Skip no @ property doc on DynamicDocBlockPropertyToNativePropertyRector (#6380)
  • [CodeQuality] Handle with other attributes on DynamicDocBlockPropertyToNativePropertyRector (#6381)
  • [CodeQuality] Use existing PhpAttributeAnalyzer service instead of AttributeFinder from Doctrine package on DynamicDocBlockPropertyToNativePropertyRector (#6382)
  • Fix duplicated register ContinueToBreakInSwitchRector in php52.php and php73.php (#6385)
  • [AutoImport] Fix missing @ in deep annotation auto import (#6386)
  • [DeadCode] Skip non FullyQualified property type on RemoveTypedPropertyNonMockDocblockRector (#6383)

New Features 🥳

  • [CodeQuality] Add DynamicDocBlockPropertyToNativePropertyRector (#5691)
  • [DX] [Experimental] Add withPhpLevel() to raise PHP level one rule at a time (#6261)

Released Rector 1.2.7

12 Oct 11:27
Compare
Choose a tag to compare

New Features 🥳

  • Apply AddOverrideAttributeToOverriddenMethodsRector to traits (#6367), Thanks @jrjohnson!
  • [Transform] MethodCall to New (#6352), Thanks @peterfox!
  • Add RemoveTypedPropertyNonMockDocblockRector (#6306)
  • [DX] Add links to open the editor to the names of processed files and the names of rules applied (#6272), Thanks @carlos-granados!

Bugfixes 🐛

  • Fixed --memory-limit=-1 option handling when used in parallel (#6349), Thanks @ddegasperi!
  • [Php70] Fix delimiter in the middle on EregToPregMatchRector (#6356)
  • [Php70] More delimiter case in the middle fix on EregToPregMatchRector (#6357)
  • [Php80] Cast string/int for int vs string condition and case condition on ChangeSwitchToMatchRector (#6359)
  • [DeadCode] Skip from call with return docblock on ReduceAlwaysFalseIfOrRector (#6361)
  • [TypeDeclaration] Closure Param Types from Iterator Source (#6345), Thanks @peterfox!
  • [Privatization] Allow privatize protected promoted property on PrivatizeFinalClassPropertyRector (#6360)
  • [DeadCode] Skip with Else and ElseIf on SimplifyIfNotNullReturnRector (#6365)
  • [Php70] Handle empty branch crash on unprintable char \x0C on EregToPregMatchRector (#6368)
  • [UnusedImport] Different letter case for classes + optimization (#6362), Thanks @jorgsowa!
  • [CodeQuality] Skip else indirect return on SimplifyIfReturnBoolRector (#6371)
  • [CodeQuality] Clean up else check on SimplifyIfReturnBoolRector (#6372)
  • [TypeDeclaration] Fix deep nested array docblock with \ prefix on ReturnTypeFromStrictNewArrayRector (#6373)
  • [EarlyReturn] Skip nested with OR in root if statement condition on ChangeNestedForeachIfsToEarlyContinueRector (#6375)
  • [DeadCode] Skip RemoveUnusedPrivatePropertyRector in middle assign (#6363)

Removed 💀

  • [NodeAnalyzer] Remove ClassAnalyzer::isAnonymousClassName() (#6351)
  • [NodeAnalyzer] Remove unused AstResolver on VariadicAnalyzer (#6353)
  • [DeadCode] Clean up double private method filtering on RemoveUnusedPrivateMethodRector (#6364)
  • [DeadCode] Skip union docblock param with is_object() native type check on RemoveAlwaysTrueIfConditionRector (#6370)



rectorphp/rector-symfony 🎵

  • [CodeQuality] Add AddTraitGetterReturnTypeBasedOnSetterRequiredRector (#671)

rectorphp/rector-phpunit 🟢

  • [PHPUnit 10] Add ifs as default way for withConsecutive, as more readable and opens upgrade during PHPUnit 9 (#382)
  • Use simple direct assert on consecutive in case of arrow function in callable (#381)
  • Use more readable ifs on will return in WithConsecutiveRector (#380)
  • add NarrowSingleWillReturnCallbackRector to code quality set (#379)

Released Rector 1.2.6

03 Oct 09:09
Compare
Choose a tag to compare

New Features 🥳

  • [TypeDeclaration] Add isset(), empty(), and negation support on BoolReturnTypeFromBooleanStrictReturnsRector (#6339)
  • [TypeDeclaration] Add NativeMethodReflection support on ReturnStrictTypeAnalyzer (#6344)
  • [DX] Show paths not match any file/directory on ProcessCommand when given path not exists (#6307)

Bugfixes 🐛

  • [TypeDeclaration] Convert inline @var tag to assert() (#6300), Thanks @carlos-granados!
  • Fix incorrect result after using RemoveByType in PhpDocInfo (#6301), Thanks @carlos-granados!
  • [TypeDeclaration] Skip nullable callable on TypedPropertyFromAssignsRector (#6308)
  • Fix LocallyCalledStaticMethodToNonStaticRector when static function is called using the class name (#6310), Thanks @carlos-granados!
  • [Php81] Handle crash on ArrowFunction attribute on FirstClassCallableRector (#6313)
  • [Performance] Reduce double traverse on StrictNativeFunctionReturnTypeAnalyzer (#6320)
  • [PhpParser] Alternative PR for findInstancesOfScoped() to keep existing performance (#6324)
  • [CodingStyle] Use double quote to escape quotes in EncapsedStringsToSprintfRector (#6326)
  • [TypeDeclaration] Handle crash on func call not found on BoolReturnTypeFromBooleanStrictReturnsRector (#6327)
  • Fix first class callable to use combineAcceptors() to avoid assert Arg instance error (#6330)
  • [Php81] Allow used as assign expr on ReadOnlyPropertyRector (#6331)
  • Skip arrow function in scoped search (#6333)
  • [TypeDeclaration] Better approach for native type check on ReturnStrictTypeAnalyzer (#6343)
  • [DeadCode] Skip extension load append variable on RemoveAlwaysTrueIfConditionRector (#6332)
  • [TypeDeclaration] Remove only void type on ReturnedNodesReturnTypeInfererTypeInferer (#6340)
  • [DeadCode] Skip indirect next line definition of @var on RemoveNonExistingVarAnnotationRector (#6348)

rectorphp/rector-symfony 🎵

  • Added return type declaration rules for FormTypeInterface (#670), Thanks @stollr

rectorphp/rector-phpunit 🟢

  • [CodeQuality] Add NarrowSingleWillReturnCallbackRector (#374)
  • [CodeQuality] Add SingleWithConsecutiveToWithRector (#370)
  • [CodeQuality] Add NarrowIdenticalWithConsecutiveRector (#369)
  • [CodeQuality] Add AddParentSetupCallOnSetupRector (#364)
  • Include match() to invoke counting in WithConsecutiveRector (#362)
  • Move WithConsecutiveRector to its PHPUnit100 namespace, CreateMockToAnonymousClassRector + PreferPHPUnitSelfCallRector to CodeQuality (#360)
  • Add existing willReturnCallback() support to WithConsecutiveRector (#358)

Released Rector 1.2.5

08 Sep 19:39
Compare
Choose a tag to compare

New Features and Improvements 🥳

  • 20-30 % Rector speedup - Optimise checking the node types allowed for each rule (#6232), Thanks @carlos-granados!
  • [docs] Add help on the default process command (#6226), Thanks @94noni!
  • [TypeDeclaration] Adds AddClosureParamTypeFromArgRector (#6258)
  • Adds AddClosureParamTypeFromObjectRector (#6265), Thanks @peterfox!
  • [Config] Improve ComposerJsonPhpVersionResolver API, make use of explicit php set files (#6273)
  • [FileSystem] Add data and writable to not include on InitFilePathsResolver (#6285)
  • always make paths absolute before processing files (#6293), Thanks @Kanti!

Bugfixes 🐛

  • [CodeQuality] Handle crash on first class callable inside match on OptionalParametersAfterRequiredRector (#6263)
  • [ReturnTypeInferer] Drop this/static docblock type check on ReturnTypeInferer (#6270)

Removed 💀

  • [deprecated] Remove deprecated ChangeAndIfToEarlyReturnRector, CallableThisArrayToAnonymousFunctionRector + casting rules (#6276)
  • [deprecations] Remove deprecated GetClassToInstanceOfRector, UseIncrementAssignRector, DetectNodeCommand (#6278)
  • [deprecated] Remove deprecated closure return rules, return type from strict bool/scalar returns (#6287)


rectorphp/rector-symfony 🎵

  • Add Class_ annotation support to TemplateAnnotationToThisRenderRector (#666)

rectorphp/rector-doctrine 🟠

  • Refactor the OrderByKeyToClassConstRector to use the new enum only in Criteria::orderBy method calls (#336), Thanks @julienfastre

Released Rector 1.2.4

23 Aug 09:09
Compare
Choose a tag to compare

Bugfixes 🐛

  • Fix PropertyTypeFromStrictSetterGetterRector for default null (#6231)
  • [Php70] Fix with \r\n on EregToPregMatchRector (#6246)
  • Optimise post rectors (#6240), Thanks @carlos-granados!
  • [Php84] Do not reprint node type on ExplicitNullableParamTypeRector (#6250)
  • Skip Doctrine collections in TypedPropertyFromAssignsRector (#6253)
  • Skip Columns from TypedPropertyFromAssignsRector, as handled better in doctrine rules (#6254)
  • [AutoImport] Do not add cast on valid Integer type on Name Node on auto import enabled (#6236)
  • [AutoImport] Do not add cast on valid Integer type on aliased Name Node on auto import enabled (#6237)
  • [Performance] Cache should traverse for AddUseStatementGuard (#6234)

New Features 🥳

  • Adds the ScalarValueToConstFetchRector rule (#6195), Thanks @peterfox!
  • [TypeDeclaration] Add AddParamArrayDocblockBasedOnCallableNativeFuncCallRector (#6233)
  • [TypeDeclaration] Add AddReturnArrayDocblockBasedOnArrayMapRector (#6235)

Deprecated 💀

  • Deprecate PublicConstantVisibilityRector, as adds public blindly everywhere; use scope-based approach instead (#6238)

rectorphp/rector-symfony 🎵

  • [Symfony 6.1] Skip abstract class on CommandConfigureToAttributeRector (#662)
  • [CodeQuality] skip array + non native response return on ResponseReturnTypeControllerActionRector (#661)
  • [CodeQuality] Skip posible return array + response on ResponseReturnTypeControllerActionRector (#660)
  • Do not convert to array Process->setInput() (#647), Thanks @refsz

rectorphp/rector-doctrine 🟠

  • [CodeQuality] Skip blob type on TypedPropertyFromColumnTypeRector (#340)
  • Fix attribute support in ImproveDoctrineCollectionDocTypeInEntityRector (#339)

rectorphp/rector-phpunit 🔵

  • [PHPUnit100] Fix typo in AssertIssetToAssertObjectHasPropertyRector (#356), Thanks @haydulski
  • [Prefix] Fix Prefixed PHPUnit Ticket class (#355)
  • [CodeQuality] Assert compare on countable (#353), Thanks @peterfox

Released Rector 1.2.3

12 Aug 16:51
Compare
Choose a tag to compare

New Features 🥳

  • Add withRealPathReporting() to allow real paths in output formatters (#6187), Thanks @llaville!
  • Add known type casting to AnnotationToAttributeRector (#6217)
  • Improve Carbon use parse method (#6183), Thanks @florisbosch!

Bugfixes 🐛

  • Only import docblock if import name enabled on PostFileProcessor (#6185)
  • fix issue #8755 about wrong systemError location (#6184), Thanks @llaville!
  • Support more assign cases in PropertyFetchAssignManipulator (#6192), Thanks @andersonamuller!
  • Skip Symfony Response in ReturnTypeFromReturnNewRector (#6202)
  • Skip only response inside controller class (#6204)
  • [Php54] No need reprint when array is just created on LongArrayToShortArrayRector (#6206)
  • [TypeDeclaration] Handle crash on nullable intersection on ClosureReturnTypeRector (#6213)
  • [Php71] Allow multiple same catches on MultiExceptionCatchRector (#6218)
  • [CodeQuality] Skip Generator on SimplifyForeachToCoalescingRector (#6221)
  • [CodeQuality] Ensure check native array type on Foreach* rules (#6222)
  • [TypeDeclaration] Skip isset and empty with index on param variable on StrictArrayParamDimFetchRector (#6227)
  • [TypeDeclaration] Skip mixed in union on ClosureReturnTypeRector (#6228)

Removed 💀

  • Remove SimplifyUselessVariableRector from code quality level (#6201), Thanks @Harfusha!



rectorphp/rector-symfony 🎵

  • Add the Symfony 7.0 set to SymfonySetList.php (#659), Thanks @pbowyer
  • [Config] Add ParameterBagToAutowireAttributeRector (#654)
  • add void fixture (#653)
  • [CodeQuality] Remove no returns check on ResponseReturnTypeControllerActionRector (#652)
  • Add new Response() support to ResponseReturnTypeControllerActionRector (#651)
  • [Configs] Add MergeServiceNameTypeRector (#650)
  • Deprecate ServicesSetNameToSetTypeRector as it creates invalid code (#649)

rectorphp/rector-doctrine 🟠

  • Add ODM support to TypedPropertyFromToManyRelationTypeRector (#335)
  • Add next fixture (#334)
  • Include ODM in description (#333)
  • Add TYPED_COLLECTIONS set, to have rules deadling with collections together (#332)
  • Merge AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector to single rule (#331)
  • Add odm support to AddReturnDocBlockToCollectionPropertyGetterByToManyAnnotationRector (#330)
  • Add ODM support to ExplicitRelationCollectionRector (#329)

rectorphp/rector-phpunit 🔵

  • [PHPUnit100] Skip First class callable on RemoveSetMethodsMethodCallRector (#352)
  • Add magic methods mocking to RemoveSetMethodsMethodCallRector (#351)
  • [CodeQuality] SetUpBeforeClassToSetUpRector (#350)

Released Rector 1.2.2

25 Jul 07:53
Compare
Choose a tag to compare

New Features 🥳

  • [TypeDeclaration] Add ReturnTypeFromMockObjectRector (#6166)
  • [TypeDeclaration] Add TypedPropertyFromCreateMockAssignRector (#6177)

Bugfixes 🐛

  • Skip phpdoc types in NumericReturnTypeFromStrictReturnsRector (#6153), Thanks @staabm!
  • [TypeDeclaration] Fix union type by multiple method calls on ParamTypeByMethodCallTypeRector (#6155)
  • [TypeDeclaration] Handle throw without new on on ParamTypeByMethodCallTypeRector (#6156)
  • [TypeDeclaration] Refactor CallerParamMatcher to avoid ambigous returns usage (#6157)
  • [TypeDeclaration] Prevent uncaught exception in ReturnTypeFromReturnNewRector (#6159), Thanks @staabm!
  • Prevent uncaught class-not-found exceptions (#6160), Thanks @staabm!
  • [TypeDeclaration] Skip variadic on StrictArrayParamDimFetchRector (#6163)
  • [CodeQuality] Skip used in next stmt on UnusedForeachValueToArrayKeysRector (#6164)
  • [Scoper] Fix prefixed MockObject on ReturnTypeFromMockObjectRector (#6167)
  • [TypeDeclaration] Flip position between bool return and return tyep from strict constant on TypeDeclarationLevel (#6168)
  • [TypeDeclaration] Skip possible void and return by docblock on ReturnTypeFromMockObjectRector (#6170)
  • [TypeDeclaration] Update fixture and example method name (#6171)
  • [NodeTypeResolver] Handle crash on variable variable with assign on FirstClassCallableRector (#6173)
  • [NodeTypeResolver] Clean up re-fill scope on PHPStanNodeScopeResolver on variable variable (#6174)
  • [NodeTypeResolver] Fill scope of dynamic variable variable (#6175)
  • fix: Convert DateTime to Carbon properly when hours/minutes/seconds are used (#6176), Thanks @florisbosch!