Skip to content

Releases: rectorphp/rector

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!

Released Rector 1.2.1

16 Jul 00:42
Compare
Choose a tag to compare

New Features 🥳

  • [type-declarations] Add ReturnNullableTypeRector (#6110)
  • [type-declarations] Add StringsReturnTypeFromStrictScalarReturnsRector to complete the string returns (#6111)
  • [PhpDoc] Add warning about missing PhpDocInfo name form tag value node (#6134)
  • [TypeDeclaration] Introducing ClosureReturnTypeRector to handle closure types separately (#6106)
  • [TypeDeclaration] Skip has named arg on AddMethodCallBasedStrictParamTypeRector (#6137)
  • [e2e][Printer] Handle crash indentation on AddParamBasedOnParentClassMethodRector (#6112)

Bugfixes 🐛

  • [TypeDeclaration] Skip variadic on AddParamTypeBasedOnPHPUnitDataProviderRector (#6150)
  • [TypeDeclaration] Add ConstFetch support on ReturnTypeFromStrictConstantReturnRector (#6151)
  • Refactor BooleanTypeMapper to handle value based on context (#6095)
  • Check root return in ReturnTypeFromReturnNewRector (#6102)
  • Make ReturnUnionTypeRector run on PHP 8.0+ (#6103)
  • ReturnUnionTypeRector now return only non-nullable types, to prepare space for new nullable rule as off PHP 7.1+ (#6105)
  • [TypeDeclaration] handle explicit if else new on ReturnTypeFromReturnNewRector (#6104)
  • [Php70] Swap min is higher than max on RandomFunctionRector (#6109)
  • Split StringReturnTypeFromStrictScalarReturnsRector into string, bool and numeric scalar + strict return type rules (#6113)
  • [Php71] Handle not identical to Float for empty string should compare to 0.0 on BinaryOpBetweenNumberAndStringRector (#6117)
  • [TypeDeclaration] Skip void on BoolReturnTypeFromBooleanStrictReturnsRector (#6118)
  • [TypeDeclaration] Fix inline closure type on ClosureReturnTypeRector (#6119)
  • [TypeDeclaration] Skip start with shebang on DeclareStrictTypesRector (#6121)
  • [Php52] Handle deep if stmts on ContinueToBreakInSwitchRector (#6122)
  • [Php52] Handle in deep else on ContinueToBreakInSwitchRector (#6123)
  • [TypeDeclaration] Clean up ArrowFunction check on ReturnTypeInferer (#6124)
  • [TypeDeclaration] Skip union with yield on NumericReturnTypeFromStrictScalarReturnsRector (#6125)
  • [Php82] Handle has only readonly properties but not all promoted property on ReadOnlyClassRector (#6129)
  • refactor: Move function first-class-callable to a standalone rule (#6131), Thanks @nikolicaleksa!
  • typo (rectorphp/rector-src@d102bd1)
  • Fix ArrayDimFetchToMethodCallRector (#6138), Thanks @peterfox!
  • [CodeQuality] Skip used in static Closure/ArrowFunction on LocallyCalledStaticMethodToNonStaticRector (#6139)
  • [CodeQuality] Skip multiple new lines on JoinStringConcatRector (#6141)
  • [CodeQuality] Allow change empty() to [] compare of other object property usage on SimplifyEmptyCheckOnEmptyArrayRector (#6147)
  • [Php55] Skip parse error on no concat in left in left Concat on PregReplaceEModifierRector (#6148)
  • [CodingStyle] Handle with trait use adaptations on SeparateMultiUseImportsRector (#6149)
  • [DeadCode] Remove unused @var on key after remove key on RemoveUnusedForeachKeyRector (#6135)
  • [DeadCode] Handle same namespace param type on RemoveUselessParamTagRector (#6133)

Removed and deprecated 💀

  • Add - number support, deprecate ReturnTypeFromStrictScalarReturnExprRector functionality, already split (#6114)
  • Deprecate BoolReturnTypeFromStrictScalarReturnsRector, use BoolReturnTypeFromBooleanStrictReturnsRector instead (#6115)
  • [DeadCode] Skip fluent no return type on RemoveUnusedPrivateMethodRector (#6108)
  • [DeadCode] Skip fluent no return type on RemoveUnusedPrivateMethodRector take 2 (#6116)
  • [Php80] Skip used in compact() on RemoveUnusedVariableInCatchRector (#6152)



rectorphp/rector-symfony

  • Correct return type definition for DataTransformerInterface (#645), Thanks @bobvandevijver
  • [Symfony 6.1] Improve CommandPropertyToAttributeRector to work with freshly created AsCommand (#644)
  • Add more complex names support to CommandPropertyToAttributeRector (#643)
  • [Symfony 6.3] Add ParamAndEnvAttributeRector (#641)
  • [Symfony 6.2] Improve SecurityAttributeToIsGrantedAttributeRector (#640)
  • Add args() support to AutowireAttributeRector (#639)
  • [Config] Add configurable AutowireAttributeRector to add #[Autowire(...)] to services (#637)
  • feat: add api-platform/core config key (#635), Thanks @dsdeboer
  • feat: add nelmio/cors-bundle config key (#634), Thanks @dsdeboer
  • feat: two additional config (#633), Thanks @dsdeboer
  • Hybrid CommandConfigureToAttributeRector (#632), Thanks @ruudk

rectorphp/rector-doctrine

  • Fix outdated documentation in README.md (#328), Thanks @alexis-boyer
  • Check is nullable doctrine annotation (#324), Thanks @marcelthole
  • Add return doc block to Collection property's getter method by ToMany annotation (#322), Thanks @jszutkowski
  • Fix for AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector (#321), Thanks @jszutkowski

rectorphp/rector-phpunit

  • Add support for multiple dataProviders for a single test method (#349), Thanks @marcelthole

Released Rector 1.2.0

01 Jul 14:25
Compare
Choose a tag to compare

New Rules 🚀

  • [Renaming] Add RenameAttributeRector (#6009)
  • [TypeDeclaration] Add AddClosureUnionReturnTypeRector (#6033)
  • [TypeDeclaration] Add AddClosureNeverReturnTypeRector (#6039)
  • [Php71] Add MultiDimensionalArrayToArrayDestructRector (#6031), Thanks @nikolicaleksa!
  • [TypeDeclaration] Add AddClosureReturnTypeFromStrictParamRector (#6044)
  • [TypeDeclaration] Add AddClosureReturnTypeFromReturnCastRector (#6061)
  • [TypeDeclaration] Add AddClosureReturnTypeFromStrictNativeCallRector (#6059)

New Features 🥳

  • [DX] Add withAttributes(all) option, add PHPUnit and Doctrine code quality sets to withPreparedSets() (#6004)
  • [DX] Add symfony code quality preset (#6008)
  • [DX] Add withDowngradeSets() to better target downgrades (#6015)
  • Add always config for EncapsedStringsToSprintfRector (#6050), Thanks @ruudk!
  • Add only_direct_assign config for SimplifyUselessVariableRector (#6034), Thanks @ruudk!
  • Skip files with short <?= PHP tag as leads to invalid changes (#6068), (#6075)
  • [Bridge] Add SetRectorsResolver, SetProviderCollector for easier use in 3rd-party tools (#6030)
  • [DX] Inform about deprecated rules in config (#6047)
  • [Config] Exclude listed on .gitignore for withRootFiles() (#6028)

Bugfixes 🐛

  • AddTypeToConstRector: apply if const references another class const (#6017), Thanks @tugmaks!
  • fix: Skip adding string casting to closure return when it returns str… (#6018), Thanks @nikolicaleksa!
  • fix: Add code as a named argument (#6062), Thanks @nikolicaleksa!
  • Fix message handler removal in RemoveUnusedPublicMethodParameterRector (#6001)
  • fix: Skip refactoring when foreach if statement contains calls to met… (#6019), Thanks @nikolicaleksa!
  • fix: Use named arguments if they are already used (#6022), Thanks @nikolicaleksa!
  • [Naming] Handle used in arrow function param, then used again outer ArrowFunction on RenameParamToMatchTypeRector (#6046)
  • Fix docker commands in CONTRIBUTING.md (#6023), Thanks @tugmaks!
  • fix: Skip static calls which are made using the class name (#6024), Thanks @nikolicaleksa!
  • feat: Support functions for first-class-callable (#6027), Thanks @nikolicaleksa!
  • [Cleanup] Deprecate ChangeAndIfToEarlyReturnRector as creates less readable code with inverted conditions (#6041)
  • fix: Convert DateTime to Carbon properly when negative days/months are used (#6051), Thanks @nikolicaleksa!
  • [Php81] Handle usage as arg by ref key on falsy ObjectType on ReadOnlyPropertyRector (#6054)
  • fix: Skip remove always true condition on method calls (#6063), Thanks @nikolicaleksa!

Removed and Deprecated 💀

  • [TypeDeclaration] Remove ArrowFunction from ReturnTypeFromReturnDirectArrayRector and ReturnTypeFromReturnNewRector (#6032)
  • [Cleanup] Remove @changelog as no longer maintained/used, use RuleDefinition instead (#6035)
  • [Cleanup] Remove FormatPerservingPrinter as only delegate method, use BetterStandardPrinter directly (#6036)
  • Remove CurrentFileProvider from ValueResolver, let type resolver handle dir and filename (#6069)
  • [Cleanup] Deprecate UseIncrementAssignRector as depends on context and might be intentional ([#6042]
  • [CodeQuality] Deprecate GetClassToInstanceOfRector as can create invalid comparison (#6005)
  • [Cleanup] Deprecate *ToTypeCastRector rules as no difference in performance, handle by cs instead (#6043)
  • deprecate SetListInterface (rectorphp/rector-src@442bff7)
  • Unregister GetClassToInstanceOfRector from CodeQualityLevel.php (#6006)
  • Split docblock name imports and name imports as different scope, skip for HTML nodes (#6071)
  • [DX] Deprecate dump-node command, use more advanced https://getrector.com/ast instead (#6040)

This is first release that includes news from other Rector core rules, so you know about all the hot stuff 😇

Symfony (rectorphp/rector-symfony)

New Rules and Improvements

  • Improve CommandConfigureToAttributeRector to allow merge with existing attribute (#632), Thanks @ruudk
  • feat: add web_profiler as config builder (#631), Thanks @dsdeboer
  • Add "hidden" support to CommandConfigureToAttributeRector (#628)
  • [Symfony 7.0 and 7.1] Extend sets based on upgrade notes (#627)
  • [Symfony 6.4] Add DataTransformerInterface return types (#624)
  • [Symfony 6.4] Deprecate ChangeRouteAttributeFromAnnotationSubnamespaceRector, make use of RenameAttribute instead (#623)
  • [Symfony 6.2] Add SecurityAttributeToIsGrantedAttributeRector (#622)
  • [Symfony 6.1] Add CommandConfigureToAttributeRector (#619)
  • [EventDispatcher] Skip EventListenerToEventSubscriberRector for classes with #[AsEventListener] attribute (#616)

Deprecated

  • [Symfony 4.3] Deprecate WebTestCaseAssertSelectorTextContainsRector as does not create valid code (#621)
  • [Symfony 4.0] Deprecate ProcessBuilderGetProcessRector, as change is not valid (#620)
  • [CodeQuality] Deprecate MakeCommandLazyRector, as Symfony 6.1 introduces more reliable native attribute (#618)
  • [Symfony 5.3] Deprecated CommandDescriptionToPropertyRector rule, as only middle step before 6.1 native attribute (#617)

Doctrine - rectorphp/rector-doctrine

  • Add return doc block to Collection property's getter method by ToMany attribute (#317), Thanks @jszutkowski

PHPUnit - rectorphp/rector-phpunit

  • Add support for multiple dataProviders for a single test method (#349), Thanks @marcelthole
  • Remove NamedArgumentForDataProviderRector from the PHPUnit 11 set as optional upgrade path (#348)
  • Fix prefixed scoped DataProvider class on NamedArgumentForDataProviderRector (#347)
  • Make AddSeeTestAnnotationRector slightly more performant as very slow, keep existing see annotations (#343)
  • [PHPUnit 10] Fix typo assertObjectHasNotProperty -> assertObjectNotHasProperty (#340)
  • [PHPUnit 10] Rename assertObjectHasAttribute() to assertObjectHasProperty(), add AssertIssetToAssertObjectHasPropertyRector (#338)
  • Fix AssertCompareToSpecificMethodRector to skip gettype checks, as will be deprecated in next PHPUnit version (#337)

Released Rector 1.1.1

21 Jun 08:37
Compare
Choose a tag to compare

[Performance] Fix huge performance hit by reverting children class detection (#5995) - fixes #8679, #8638, #8637


New Rules

  • [TypeDeclaration] Add ReturnTypeFromReturnCastRector (#5905)
  • [TypeDeclaration] Add ReturnTypeFromSymfonySerializerRector (#5908)
  • [TypeDeclaration] Add TypedPropertyFromJMSSerializerAttributeTypeRector (#5909)
  • [TypeDeclaration] Add AddTypeFromResourceDocblockRector (#5915)
  • [Php74] Add HebrevcToNl2brHebrevRector (#5977)
  • [Php74] Add RestoreIncludePathToIniRestoreRector (#5973)
  • [Carbon] Init set to migrate DateTime to Carbon (#5868)
  • [Carbon] Add immutable support to other rules (#5896)
  • Convert DateTimeImmutable to CarbonImmutable (#5895)
  • Convert time() to Carbon::now()->timestamp (#5901), Thanks @kylekatarnls!

New Features and DX improvements 🥳

  • Add code quality levels (#5910), Thanks @carlos-granados!
  • [DX] Introduce set providers, to enable package + version based set registration (#5976)
  • [DX] Report rules that registered in withSkip() but never registered in withRules() (#5919)
  • [Set] Add new rector-preset set to have opiniated rector rules that can be enabled in rector-src and its extension (#5924)
  • [DeadCode] Add RemoveUnusedPublicMethodParameterRector (#5925)
  • [TypeDeclaration] Handle double declare(strict_types=1) addition on DeclareStrictTypesRector + IncreaseDeclareStrictTypesRector (#5928)
  • [CodingStyle][Php80] Add join func call support on ConsistentImplodeRector (#5958)
  • [CodeQuality] Add support for (), {}, [], <> delimiter on RegexPatternDetector (#5957)
  • [TypeDeclaration] Add Static Call support on AddMethodCallBasedStrictParamTypeRector (#5960)
  • [Config] Add withPhpPolyfill() method to load php polyfill set on RectorConfigBuilder (#5983)
  • [DX] Add ->withPhpXSets() for PHP 7.4 and lower, improve ->withPreparedSets() (#5984)
  • [config] Disable parallel on --debug (#5904)
  • [Php80] Skip mixed doc with description and valid doc on MixedTypeRector (#5906)
  • [DX] Add withPhpPolyfills() method to add polyfill rules (#5981) rectorphp/rector-src#5983
  • [DX] Ommit static functions/closure from coding-style, as often ignored and depends on personal preference (#5916)
  • [DX] Ommit post-inc to pre-inc rule from coding-style as too opinionated (#5917)
  • [DX] Remove UseIncrementAssignRector from coding-style set, as often ignored (#5920)

Bugfixes 🐛

  • [AutoImport] No need RenamedClassesDataCollector usage on UsesClassNameImportSkipVoter (#5921)
  • [Php81] Skip private method from instantiated class on FirstClassCallableRector (#5929)
  • [NodeTypeCorrector] Directly use StringType on Intersection of strings on AccessoryNonEmptyStringTypeCorrector (#5933)
  • [CodeQuality] Allow check in current Class_ with multiple props on CompleteDynamicPropertiesRector (#5938)
  • [Naming] Handle rename property with only comment, without @var doc on RenamePropertyToMatchTypeRector (#5945)
  • Remove the renaming of apache_request_headers (#5943), Thanks @rhuijts!
  • [Naming] Handle nullable object @var docblock on RenamePropertyToMatchTypeRector (#5946)
  • [Php81] Skip param variable used in next stmt after coalesce on NewInInitializerRector (#5971)
  • [Php71] Skip call abstract method on RemoveExtraParametersRector (#5930)
  • [TypeDeclaration] Do not remove docblock with description on MergeDateTimePropertyTypeDeclarationRector (#5931)
  • [DeadCode] Remove param docblock on RemoveUnusedPromotedPropertyRector when exists (#5936)
  • [Cleanup] Remove deprecated AttributeKey::PARENT_NODE, remove deprecated NodeNameResolver::isCaseSensitiveName() (#5939)
  • [NodeTypeResolver] Remove Property->type instanceof Node check on NodeTypeResolver->getType() (#5947)
  • [BetterPhpDocParser] Remove unnecessary PrivatesAccessor usage on BetterTokenIterator and TokenIteratorFactory (#5950)
  • [DeadCode] Skip dynamic variable on RemoveUnusedVariableAssignRector (#5964)
  • [DeadCode] Reduce loop for used in next stmt on RemoveUnusedVariableAssignRector (#5969)

Removed and Deprecated 💀

  • Remove deprecated and empty FinalizeClassesWithoutChildrenRector + FinalizePublicClassConstantRector (#5980)
  • [DX] Soft-deprecate CallableThisArrayToAnonymousFunctionRector, as FirstClassCallableRector handles the same case better (#5918)

Released Rector 1.1.0

18 May 11:44
Compare
Choose a tag to compare

New Features 🥳

  • [PHPStan] Bump to PHPStan 1.11 (#5883)

Bugfixes 🐛

  • [CodeQuality] Skip increment variable on else on TernaryFalseExpressionToIfRector (#5867)
  • [CodeQuality] Skip on property and class const on CallableThisArrayToAnonymousFunctionRector (#5869)
  • [NodeTypeResolver] Using built int ->isArray()->yes() on ArrayTypeAnalyzer::isArrayType() (#5870)
  • Fix "method x was not found in reflection of class" (#5871), Thanks @staabm!
  • [NodeTypeResolver] Clean up array check on NameTypeResolver (#5872)
  • [NodeTypeResolver] Clean up "this" from NameTypeResolver, as not from Name node (#5873)
  • [TypeDeclaration] Skip array by doc with different assign on ReturnTypeFromStrictNewArrayRector (#5875)
  • [TypeDeclaration] Skip possible array on StrictStringParamConcatRector (#5876)
  • [Performance] Ensure call $reflector->reflectAllClasses() once on Worker take 3 (#5878)
  • [Performance] Call cached class names collection on FamilyRelationsAnalyzer (#5879)
  • [NodeTypeResolver] Clean up resolve cache class name key (#5880)
  • [NodeTypeResolver] No need json_decode/json_encode for cache class name collection (#5881)
  • [TypeDeclaration] Handle crash on interface Mixin on ReturnTypeFromStrictConstantReturnRector (#5884)
  • [PHPStan] Handle PHPStan internal ShouldNotHappenException on FamilyRelationsAnalyzer and PHPStanNodeScopeResolver (#5885)
  • [NodeTypeResolver] No need to resolve class name on anonymous classes (#5886)
  • [PHPStan] Fix missingType.generics notice on phpstan.neon on PHPStan 1.11 (#5888)
  • [TypeDeclaration] Skip unitialized property on EmptyOnNullableObjectToInstanceOfRector (#5889)
  • [Php80] Skip remove non-mixed type doc on MixedTypeRector (#5874)
  • [TypeDeclaration] Add test for nullable object usage on AddReturnTypeDeclarationRector (#5887)
  • [Configuration] Add missing LevelSetList::UP_TO_PHP_84 on PhpLevelSetResolver::resolveFromPhpVersion() (#5890)

Released Rector 1.0.5

10 May 07:46
Compare
Choose a tag to compare

New Features 🥳

  • [TypeDeclarations] Add IncreaseDeclareStrictTypesRector to raise level of declare() coverage (#5849)

Bugfixes 🐛

  • ExplicitReturnNullRector should skip never return (#5802), Thanks @staabm!
  • Make Compatible with phpstan 1.11.x code (#5804)
  • [CodeQuality] Skip Always return in try catch with finally on ExplicitReturnNullRector (#5807)
  • [CodeQuality] Skip never type on default switch on ExplicitReturnNullRector (#5808)
  • [CodeQuality] Skip while(true) always returned on ExplicitReturnNullRector (#5810)
  • [TypeDeclaration] Skip maybe not returned on while on ReturnUnionTypeRector (#5812)
  • [Php81] Skip on property and class const on FirstClassCallableRector (#5813)
  • [Php81] Skip __invoke() usage from non-class code on FirstClassCallableRector (#5816)
  • [Php81] Skip always string if else DomElement on NullToStrictStringFuncCallArgRector (#5822)
  • [TypeDeclaration] Handle crash on @mixin usage on ReturnTypeFromStrictTypedCallRector (#5823)
  • [Php81] Skip mixed type on ArrayDimFetch on NullToStrictStringFuncCallArgRector (#5826)
  • Fix original quotes in PregReplaceEModifierRector (#5827)
  • [CodeQuality] Skip $counter variable exists on ForRepeatedCountToOwnVariableRector (#5828)
  • [Php81] Use PHPStan ParametersAcceptor to detect allowed argument types on NullToStrictStringFuncCallArgRector (#5829)
  • [Renaming] Skip func call name on RenameClassRector (#5833)
  • Support NullSafeMethod calls in unused-code analysis (#5838), Thanks @staabm!
  • Support NullSafeProperty fetches in unused-code analysis (#5839), Thanks @staabm!
  • Ignore phpdoc type in RecastingRemovalRector (#5841), Thanks @staabm!
  • [Naming] Skip DateTime as individual in name resolver (#5842)
  • [Experiment] Rework child classes detection on DynamicSourceLocatorProvider (#5735)
  • [Printer] Handle Strip left spaces from opening tags on namespaced PHP + HTML content (#5851)
  • [CodeQuality] Fix tautology transformation on identical check on SimplifyTautologyTernaryRector (#5854)
  • [CodeQuality] Skip dynamic second arg or has uppercase second arg on SimplifyStrposLowerRector (#5855)
  • [NodeTypeResolver] Use existing DefaultReflector::reflectAllClasses() method on DynamicSourceLocatorProvider (#5856)
  • [EarlyReturn] Skip with AssignOp on PreparedValueToEarlyReturnRector (#5857)
  • [TypeDeclaration] Handle array with index assigned on TypedPropertyFromAssignsRector (#5861)
  • [TypeDeclaration] Handle return by array shape type on AddArrowFunctionReturnTypeRector (#5815)
  • [CodeQuality] Add Function_ and FuncCall support on OptionalParametersAfterRequiredRector (#5835)
  • [Php83] Handle default native constant on AddTypeToConstRector (#5843)
  • [PHP 7.2] Add error suppres support to each() rule (#5844)
  • [TypeDeclaration] Skip more detailed type on AddMethodCallBasedStrictParamTypeRector (#5866)
  • [DeadCode] Skip $this instanceof in Trait on RemoveAlwaysTrueIfConditionRector (#5817)
  • [DeadCode] Skip $this in trait on RemoveDeadInstanceOfRector (#5818)

Released Rector 1.0.4

05 Apr 22:13
Compare
Choose a tag to compare

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 to phpunit.xml or phpunit.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!