Skip to content

Released Rector 2.8.5

Latest

Choose a tag to compare

@TomasVotruba TomasVotruba released this 14 Nov 23:39
· 1 commit to main since this release

Bugfixes and safer reprints 🐛

This release is mostly about bugfixes - an infinite loop fix in docblock return types, kept ternary parentheses on null coalescing, more precise changed_files in JSON output, and several new skips for dead code and PHP 8.4 rules. On the extension side, PHPUnit AddDoesNotPerformAssertionToNonAssertingTestRector is now faster and more precise.


Bugfixes 🐛

  • [TypeDeclarationDocblocks] Skip invalid @return tag to fix infinite loop in DocblockReturnArrayFromDirectArrayInstanceRector (#8918)
  • [ChangesReporting] List only changed files in JSON changed_files (#8917) Thanks @gvieira18
  • [Core] Drop file positions on reprinted nodes copied from another file (#8928)
  • Preserve ternary fallback parentheses in new coalesces (#8927) Thanks @smotim
  • [Php70] Keep inner ternary parentheses on TernaryToNullCoalescingRector (#8921)
  • [Php55] Handle variable interpolated in pattern on PregReplaceEModifierRector (#8922)
  • [Php84] Skip variable modified in condition on ForeachToArrayAllRector, ForeachToArrayAnyRector, ForeachToArrayFindRector and ForeachToArrayFindKeyRector (#8925)
  • [DeadCode] Skip conditional return type on RemoveUselessReturnTagRector (#8924) Thanks @APX403
  • [DeadCode] Skip private methods used as callables on RemoveUnusedPrivateMethodParameterRector (#8923) Thanks @phinor
  • [CodingStyle] Skip closure with rebound $this on ArrowFunctionDelegatingCallToFirstClassCallableRector and ClosureDelegatingCallToFirstClassCallableRector (#8931)

Performance Improvements 🚀

  • Remove usage of CloningVisitor on AstResolver (#8861)

Internals ⚙️

  • [Printer] Remove unneeded BetterStandardPrinter::pStmt_FileNode() (#8904)
  • [CodingStyle] Cover Doctrine/Symfony aliased names on import names with real stubs (#8932, #8933)

rector-symfony 🎵

  • [Symfony61] Do not add #[AsCommand] without a name in CommandConfigureToAttributeRector (#1102) Thanks @kix
  • Skip first-class callable in CommandConfigureToAttributeRector (#1104)

rector-phpunit 🟢

  • [PHPUnit90] Handle named and unpacked preg_match() args and skip non-literal expected value in AssertRegExpRector (#820, #819) Thanks @alies-dev
  • [PHPUnit100] Add willReturnOnConsecutiveCalls() variables to closure use() in WithConsecutiveRector (#821)
  • [PHPUnit120] Skip mocks configured through an alias in ExpressionCreateMockToCreateStubRector (#823) Thanks @bbrala
  • [PHPUnit60] Follow parent::test() calls in AddDoesNotPerformAssertionToNonAssertingTestRector (#826) Thanks @bbrala
  • [PHPUnit60] Count expectUserDeprecationMessage() as assert, skip test methods in abstract classes and skip tests in classes with own asserting lifecycle methods in AddDoesNotPerformAssertionToNonAssertingTestRector (#825, #828, #831)
  • [PHPUnit60] Speed up AddDoesNotPerformAssertionToNonAssertingTestRector - change node to Class_, cache containsAssertCall() per node and never parse PHPUnit and Symfony base test case methods (#830, #829, #833, #824)

rector-downgrade-php ⬇️

  • Fix class constant spread from other class crash on DowngradeArraySpreadRector (#423)