Skip to content

Released Rector 0.18.3

Compare
Choose a tag to compare
@TomasVotruba TomasVotruba released this 12 Sep 22:44
· 1719 commits to main since this release

New Features and Changes 🥳

  • [BC] docblock changes in custom Rector rules now have to be reprinted directly in the rule - #8201 (comment)
  • [TypeDeclaration] Add return empty string defined support on ReturnTypeFromStrictScalarReturnExprRector (#4919)
  • [TypeDeclaration] Add fallback return direct array support on ReturnTypeFromStrictNewArrayRector (#4928)
  • [TypeDeclaration] Add init assign method call support on ReturnTypeFromStrictNewArrayRector (#4929)
  • [TypeDeclaration] Ensure ArrayType on ReturnTypeFromStrictNewArrayRector::shouldAddReturnArrayDocType() (#4932)
  • [TypeDeclaration] Add test fixture return docblock on init method call assign as skipped on ReturnTypeFromStrictNewArrayRector (#4933)
  • [TypeDeclaration] Add non native function return support on ReturnTypeFromStrictScalarReturnExprRector (#4934)
  • BC: Separated regex matching in NodeNameResolver->isName() (#4951), Thanks @staabm!
  • Add support for Custom Skip Voters (#5002), Thanks @kaczenski!
  • Implement a max jobs per worker budget (#4965), Thanks @staabm!
  • Prevent unnecessary calls to spl_object_id() (#4992), Thanks @staabm!
  • Refactor use import resolving (#4998), Thanks @staabm!
  • NodeNameResolver: Throw exception in BC breaking path (#4980), Thanks @staabm!
  • [Internals] Decouple output from AbstractRector, narrow debugging output to file path (#4976)
  • Update docblock only when changed, directly in rector rule (#4986)

Bugfixes 🐛

  • AddVoidReturnTypeWhereNoReturnRector: fix never type handling (#4918), Thanks @staabm!
  • [TypeDeclaration] Skip return after return closure on AddVoidReturnTypeWhereNoReturnRector (#4930)
  • [TypeDeclaration] Use $type->isScalar()->yes() on AlwaysStrictScalarExprAnalyzer (#4920)
  • Refactor BetterNodeFinder::findFirstInFunctionLikeScoped() to work with SilentVoidResolver (#4931)
  • [NodeTypeResolver] Handle isObjectType() on new $class dynamic variable should return false compare to Object FQCN (#4936)
  • [Testing] Fix running unit test on macOS (#4941)
  • Faster name resolving (#4955), Thanks @staabm!
  • UseImportsTraverser: don't deep traverse (#4994), Thanks @staabm!
  • [tests] Replace wildcard e2e test with unit one (#5000)
  • [DocBlock] Update docblock contents right in the rule (#4999)
  • [PhpParser] Fix crash read jetbrains/phpstorm-stubs included in phpstan.phar on PHP 8.0 and PHP 7.4 (#5001)
  • RenameFunctionRector: prevent repeated isName() calls (#5003), Thanks @staabm!
  • Make PhpDocINfo::removeByType() return bool to inform about changed node (#4979)

Removed 💀

  • [cleanup] Remove deprecated NonPhpRectorInterface, PseudoNamespaceToNamespaceRector and mysql to mysqli sets (#4927)
  • Remove UnSpreadOperatorRector as not clear value and spread used on purpose (#4949)
  • [Naming] Remove matchesStringName() check completely from NodeNameResolver, including endsWith() method - use getName() and compare directly instead (#4954)
  • [Performance][Php55] Remove regex replace e on RegexMatcher (#4974)
  • Remove CurrentRectorProvider and used for docblock changes report, return bool value and node directly in the rector rule instead (#4982)
  • Deprecated PhpDocInfo::markAsChanged() to ensure doc block is changed directly in the Rector rule (#4987)