Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.18.3 release note should include a way to re-print docblock after update #8201

Closed
samsonasik opened this issue Sep 13, 2023 · 2 comments
Closed
Labels

Comments

@samsonasik
Copy link
Member

The release note should include a way to update docblock:

    public function __construct(
        // here need to be injected ...
        private readonly \Rector\Comments\NodeDocBlock\DocBlockUpdater $docBlockUpdater,
    ) {
    }

      public function refactor(Node $node)
     {
        $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
        $routeDoctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Symfony\Component\Routing\Annotation\Route');

        if (! $routeDoctrineAnnotationTagValueNode instanceof DoctrineAnnotationTagValueNode) {
            return null;
        }

        $defaultsArrayItem = $routeDoctrineAnnotationTagValueNode->getValue('defaults');
        if (! $defaultsArrayItem instanceof ArrayItemNode) {
            $routeDoctrineAnnotationTagValueNode->values[] = new ArrayItemNode(
                new CurlyListNode(),
                'defaults',
            );

            // here need to be added.
            $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);

            return $node;
        }

        return null;

/cc @shyim

@TomasVotruba
Copy link
Member

Sure, I'll add it 👍

@samsonasik
Copy link
Member Author

I am closing it as mentioned in released note via link.

github-merge-queue bot referenced this issue in Lendable/clock Jan 12, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[lendable/composer-license-checker](https://togithub.com/Lendable/composer-license-checker)
| `^1.0.4` -> `^1.1.0` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/lendable%2fcomposer-license-checker/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/lendable%2fcomposer-license-checker/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/lendable%2fcomposer-license-checker/1.0.4/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/lendable%2fcomposer-license-checker/1.0.4/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [php-cs-fixer/shim](https://togithub.com/PHP-CS-Fixer/shim) |
`^3.41.1` -> `^3.46.0` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/php-cs-fixer%2fshim/3.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/php-cs-fixer%2fshim/3.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/php-cs-fixer%2fshim/3.41.1/3.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/php-cs-fixer%2fshim/3.41.1/3.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [phpstan/phpstan](https://togithub.com/phpstan/phpstan) | `^1.10.50`
-> `^1.10.55` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/phpstan%2fphpstan/1.10.55?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/phpstan%2fphpstan/1.10.55?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/phpstan%2fphpstan/1.10.50/1.10.55?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/phpstan%2fphpstan/1.10.50/1.10.55?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [phpunit/phpunit](https://phpunit.de/)
([source](https://togithub.com/sebastianbergmann/phpunit)) | `^10.5.3`
-> `^10.5.5` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/phpunit%2fphpunit/10.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/phpunit%2fphpunit/10.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/phpunit%2fphpunit/10.5.3/10.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/phpunit%2fphpunit/10.5.3/10.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [rector/rector](https://getrector.org)
([source](https://togithub.com/rectorphp/rector)) | `^0.18` -> `^0.19` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/rector%2frector/0.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/rector%2frector/0.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/rector%2frector/0.18.0/0.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/rector%2frector/0.18.0/0.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>Lendable/composer-license-checker
(lendable/composer-license-checker)</summary>

###
[`v1.1.0`](https://togithub.com/Lendable/composer-license-checker/compare/1.0.4...1.1.0)

[Compare
Source](https://togithub.com/Lendable/composer-license-checker/compare/1.0.4...1.1.0)

</details>

<details>
<summary>PHP-CS-Fixer/shim (php-cs-fixer/shim)</summary>

###
[`v3.46.0`](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.45.0...v3.46.0)

[Compare
Source](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.45.0...v3.46.0)

###
[`v3.45.0`](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.44.0...v3.45.0)

[Compare
Source](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.44.0...v3.45.0)

###
[`v3.44.0`](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.43.1...v3.44.0)

[Compare
Source](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.43.1...v3.44.0)

###
[`v3.43.1`](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.43.0...v3.43.1)

[Compare
Source](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.43.0...v3.43.1)

###
[`v3.43.0`](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.42.0...v3.43.0)

[Compare
Source](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.42.0...v3.43.0)

###
[`v3.42.0`](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.41.1...v3.42.0)

[Compare
Source](https://togithub.com/PHP-CS-Fixer/shim/compare/v3.41.1...v3.42.0)

</details>

<details>
<summary>phpstan/phpstan (phpstan/phpstan)</summary>

###
[`v1.10.55`](https://togithub.com/phpstan/phpstan/releases/tag/1.10.55)

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.54...1.10.55)

# Improvements 🔧

- PHPDoc tag `@phpstan-ignore-next-line` works for first line below the
PHPDoc even in bleeding edge
(https://github.com/phpstan/phpstan-src/commit/8b6260c21bacbfd653d26b9a8abef7996fd3fe46),
[#&#8203;10383](https://togithub.com/phpstan/phpstan/issues/10383),
[https://github.com/phpstan/phpstan/discussions/10374](https://togithub.com/phpstan/phpstan/discussions/10374)
- Add `open-resource` type
(https://github.com/phpstan/phpstan-src/commit/bbd9a68478abbc500b6398968cc85d0d1ae8d3eb),
[#&#8203;10399](https://togithub.com/phpstan/phpstan/issues/10399)
- Optimize repeated container creation in tests
([#&#8203;2860](https://togithub.com/phpstan/phpstan-src/pull/2860)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!
- Try to prevent error with PHP-Parser 5 when running PHPUnit tests
(https://github.com/phpstan/phpstan-src/commit/9dac90dfd5fc809dd84fdac0532ecd51c6ae66bf),
[#&#8203;10401](https://togithub.com/phpstan/phpstan/issues/10401),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!

# Bugfixes 🐛

- Fix mixing property and param attributes on promoted property
([#&#8203;2825](https://togithub.com/phpstan/phpstan-src/pull/2825)),
[#&#8203;10385](https://togithub.com/phpstan/phpstan/issues/10385)
- Fix detection of shadowed trait methods
(https://github.com/phpstan/phpstan-src/commit/22700511d91b748240da0ac8b697f2ab409aad21),
[#&#8203;10377](https://togithub.com/phpstan/phpstan/issues/10377)
- Fix int-range return type for range()
([#&#8203;2792](https://togithub.com/phpstan/phpstan-src/pull/2792)),
[#&#8203;10213](https://togithub.com/phpstan/phpstan/issues/10213),
[#&#8203;9573](https://togithub.com/phpstan/phpstan/issues/9573), thanks
[@&#8203;dantleech](https://togithub.com/dantleech)!

# Internals 🔍

- Remove unused DirectClassReflectionExtensionRegistryProvider
([#&#8203;2857](https://togithub.com/phpstan/phpstan-src/pull/2857)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Plumbing for `@phpstan-require-extends` and
`@phpstan-require-implements`
([#&#8203;2856](https://togithub.com/phpstan/phpstan-src/pull/2856)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- `Scope::getFunctionCallStack()`
(https://github.com/phpstan/phpstan-src/commit/9be137675ebc41be5c9c7c230f96cab4dbf1f08e),
[https://github.com/phpstan/phpstan-deprecation-rules/issues/106](https://togithub.com/phpstan/phpstan-deprecation-rules/issues/106)

###
[`v1.10.54`](https://togithub.com/phpstan/phpstan/releases/tag/1.10.54)

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.53...1.10.54)

# Bleeding edge 🔪

- Revert "ParamAttributesRule - promoted property attribute needs to
target both parameters and properties"
(https://github.com/phpstan/phpstan-src/commit/02f66df2a2997ad39ee25c92b6a7f7102f09514f),
[#&#8203;10385](https://togithub.com/phpstan/phpstan/issues/10385)
- See PHP internals discussion:
https://externals.io/message/111942#112021

*If you want to see the shape of things to come and adopt bleeding edge
features early, you can include this config file in your project's
`phpstan.neon`:*

    includes:
    	- vendor/phpstan/phpstan/conf/bleedingEdge.neon

*Of course, there are no backwards compatibility guarantees when you
include this file. The behaviour and reported errors can change in minor
versions with this file included. [Learn
more](https://phpstan.org/blog/what-is-bleeding-edge)*

# Improvements 🔧

- UsedNamesRule - level 0
([#&#8203;2849](https://togithub.com/phpstan/phpstan-src/pull/2849)),
thanks [@&#8203;lulco](https://togithub.com/lulco)!

# Bugfixes 🐛

- Simplify TooWideClosureReturnTypehintRule
(https://github.com/phpstan/phpstan-src/commit/a81df66485ea7c94655d70f322775e84bef871f9)
- Fix falsy isset for all expressions
(https://github.com/phpstan/phpstan-src/commit/af14d50e2b5d1b2cf91813059cdc827be63fdb20),
[#&#8203;10373](https://togithub.com/phpstan/phpstan/issues/10373)

###
[`v1.10.53`](https://togithub.com/phpstan/phpstan/releases/tag/1.10.53)

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.52...1.10.53)

# Improvements 🔧

- Impl `str_increment` / `str_decrement` return type extension
([#&#8203;2776](https://togithub.com/phpstan/phpstan-src/pull/2776)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!

# Bugfixes 🐛

- Fix loading polyfills twice
(https://github.com/phpstan/phpstan/commit/3e7c7c7c6306157e6967ef436e952aeba1097edb?w=1),
[#&#8203;10387](https://togithub.com/phpstan/phpstan/issues/10387)
- `array_udiff()` comparator return type is too strict
([#&#8203;2822](https://togithub.com/phpstan/phpstan-src/pull/2822)),
[#&#8203;9697](https://togithub.com/phpstan/phpstan/issues/9697), thanks
[@&#8203;staabm](https://togithub.com/staabm)!

# Internals 🔍

- Simplify default return path in extensions
([#&#8203;2816](https://togithub.com/phpstan/phpstan-src/pull/2816)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

###
[`v1.10.52`](https://togithub.com/phpstan/phpstan/releases/tag/1.10.52)

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.51...1.10.52)

# Improvements 🔧

- Do not allow to generate baseline when reflection error occurs
(https://github.com/phpstan/phpstan-src/commit/78ea9a621093cde38dd382cc67557c8b211589d8)
- Show internal errors that occured when generating a baseline
(https://github.com/phpstan/phpstan-src/commit/c997ea9eefb8a57f5e273cff3b3338f423e755b6)

# Bugfixes 🐛

- Load PHP polyfills in bootstrap.php
(https://github.com/phpstan/phpstan/commit/21df2d347a49a51b3377e4b6553aa110e7072eb6),
[#&#8203;10375](https://togithub.com/phpstan/phpstan/issues/10375)

###
[`v1.10.51`](https://togithub.com/phpstan/phpstan/releases/tag/1.10.51)

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.50...1.10.51)

# Bleeding edge 🔪

- ParamAttributesRule - promoted property attribute needs to target both
parameters and properties
(https://github.com/phpstan/phpstan-src/commit/25d15526dbe59216f2b42aaa88a2be23bf9cbf44),
[#&#8203;10298](https://togithub.com/phpstan/phpstan/issues/10298)
- More precise `RecursiveIteratorIterator::__construct()` parameter
types
([#&#8203;2835](https://togithub.com/phpstan/phpstan-src/pull/2835)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- PhpDocParser: add config for lines in its AST & enable ignoring errors
within PHPDocs
([#&#8203;2807](https://togithub.com/phpstan/phpstan-src/pull/2807)),
thanks [@&#8203;janedbal](https://togithub.com/janedbal)!

*If you want to see the shape of things to come and adopt bleeding edge
features early, you can include this config file in your project's
`phpstan.neon`:*

    includes:
    	- vendor/phpstan/phpstan/conf/bleedingEdge.neon

*Of course, there are no backwards compatibility guarantees when you
include this file. The behaviour and reported errors can change in minor
versions with this file included. [Learn
more](https://phpstan.org/blog/what-is-bleeding-edge)*

# Improvements 🔧

- Missing ThrowExprTypeRule - level 3
(https://github.com/phpstan/phpstan-src/commit/0359ebc78fa7bc5ed1b3b4032c68363ce70ab673)
- Analyse stubs only when not only files are analysed
(https://github.com/phpstan/phpstan-src/commit/402024091b215dca7d91b74c415293323d2dbadc)
- Nicer error message in case of memory limit exhaustion in child
process
(https://github.com/phpstan/phpstan-src/commit/816be99361d263df24bf1e7fa078df62fb63d1d7)

# Bugfixes 🐛

- Narrow `ReflectionEnum::getBackingType()` after
`ReflectionEnum::isBacked()`
([#&#8203;2830](https://togithub.com/phpstan/phpstan-src/pull/2830)),
[#&#8203;10167](https://togithub.com/phpstan/phpstan/issues/10167),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Fix coalescing on an optional array offset
([#&#8203;2834](https://togithub.com/phpstan/phpstan-src/pull/2834)),
[#&#8203;10317](https://togithub.com/phpstan/phpstan/issues/10317),
thanks [@&#8203;rvanvelzen](https://togithub.com/rvanvelzen)!
- More precise `??` type inference
(https://github.com/phpstan/phpstan-src/commit/d801919e356a8cecc33b06046311aa036d2492ff),
[#&#8203;10327](https://togithub.com/phpstan/phpstan/issues/10327)

# Internals 🔍

- phpstan-src is now downgraded for PHP 7.2+ with
[`ondrejmirtes/simple-downgrader`](https://togithub.com/ondrejmirtes/simple-downgrader)
- Forward-compatible changes with PHP-Parser 5
(https://github.com/phpstan/phpstan-src/commit/436bd791bf256ca59334f2746e70a58d581d8574,
https://github.com/phpstan/phpstan-src/commit/7eb66f6bd643fc95f8353b3b273c29514ddd8619,
https://github.com/phpstan/phpstan-src/commit/bf0b138fbed6fb0960ca696869cc9f5f787d4261),
[#&#8203;5086](https://togithub.com/phpstan/phpstan/issues/5086)
- Use `str_starts_with()` and `str_contains()` instead of `strpos()`
([#&#8203;2841](https://togithub.com/phpstan/phpstan-src/pull/2841)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!
- Building preload script - sort by name for reproducible builds
(https://github.com/phpstan/phpstan-src/commit/995de26a4b8009c4e89159683c4e602290dbc508)
- Lazier creation of ParameterAcceptor
([#&#8203;2843](https://togithub.com/phpstan/phpstan-src/pull/2843)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Use const instead of properties
([#&#8203;2815](https://togithub.com/phpstan/phpstan-src/pull/2815)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!
- PhpDocValueRule: cheapest check first
([#&#8203;2824](https://togithub.com/phpstan/phpstan-src/pull/2824)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Faster `ParametersAcceptorSelector::combine()`
([#&#8203;2851](https://togithub.com/phpstan/phpstan-src/pull/2851)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

</details>

<details>
<summary>sebastianbergmann/phpunit (phpunit/phpunit)</summary>

###
[`v10.5.5`](https://togithub.com/sebastianbergmann/phpunit/compare/10.5.4...10.5.5)

[Compare
Source](https://togithub.com/sebastianbergmann/phpunit/compare/10.5.4...10.5.5)

###
[`v10.5.4`](https://togithub.com/sebastianbergmann/phpunit/compare/10.5.3...10.5.4)

[Compare
Source](https://togithub.com/sebastianbergmann/phpunit/compare/10.5.3...10.5.4)

</details>

<details>
<summary>rectorphp/rector (rector/rector)</summary>

###
[`v0.19.0`](https://togithub.com/rectorphp/rector/compare/0.18.13...0.19.0)

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.13...0.19.0)

###
[`v0.18.13`](https://togithub.com/rectorphp/rector/releases/tag/0.18.13):
Released Rector 0.18.13

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.12...0.18.13)

#### New Features :partying_face:

- \[DeadCode] Add Function\_ support on RemoveUselessReturnTagRector
([#&#8203;5325](https://togithub.com/rectorphp/rector-src/pull/5325))
- \[TypeDeclaration] Add MergeDateTimePropertyTypeDeclarationRector
([#&#8203;5327](https://togithub.com/rectorphp/rector-src/pull/5327))
- \[DeadCode] Add Function\_ support on RemoveUselessParamTagRector
([#&#8203;5331](https://togithub.com/rectorphp/rector-src/pull/5331))
- \[DeadCode] Add RemoveNullTagValueNodeRector
([#&#8203;5352](https://togithub.com/rectorphp/rector-src/pull/5352))

<br>

#### Bugfixes :bug:

- \[Php83] Fix const from applying incorrect types
([#&#8203;5326](https://togithub.com/rectorphp/rector-src/pull/5326)),
Thanks [@&#8203;peterfox](https://togithub.com/peterfox)!
- \[TypeDeclaration] Fix missing change type to DateTimeInterface on
MergeDateTimePropertyTypeDeclarationRector
([#&#8203;5329](https://togithub.com/rectorphp/rector-src/pull/5329))
- \[TypeDeclaration] Handle DateTimeInterface from use statement on
MergeDateTimePropertyTypeDeclarationRector
([#&#8203;5330](https://togithub.com/rectorphp/rector-src/pull/5330))
- \[TypeDeclaration] Handle assign $this on
TypedPropertyFromAssignsRector
([#&#8203;5333](https://togithub.com/rectorphp/rector-src/pull/5333))
- Fix array type if property is used in
TypedPropertyFromStrictConstructorRector
([#&#8203;5339](https://togithub.com/rectorphp/rector-src/pull/5339))
- \[Naming] Skip DateTimeImmutable on RenamePropertyToMatchTypeRector
([#&#8203;5340](https://togithub.com/rectorphp/rector-src/pull/5340))
- \[PHP 7.4] Skip typed properties in the set, as standalone set now
available
([#&#8203;5342](https://togithub.com/rectorphp/rector-src/pull/5342))
- \[TypeDeclaration] Skip has child return different type on
ReturnNeverTypeRector
([#&#8203;5343](https://togithub.com/rectorphp/rector-src/pull/5343))
- \[Experiment]\[TypeDeclaration] Allow change abstract class methods
with body on ReturnType\*Rector
([#&#8203;5344](https://togithub.com/rectorphp/rector-src/pull/5344))
- \[Php55] Make StringClassNameToClassConstantRector configurable to
keep first pre-backslash string configurable
([#&#8203;5354](https://togithub.com/rectorphp/rector-src/pull/5354))
- \[TypeDeclaration] Skip casted to (array) on
StrictArrayParamDimFetchRector
([#&#8203;5356](https://togithub.com/rectorphp/rector-src/pull/5356))
- \[TypeDeclaration] Return new static from different object on
ReturnTypeFromStrictTypedCallRector
([#&#8203;5357](https://togithub.com/rectorphp/rector-src/pull/5357))
- \[TypeDeclaration] Allow return static from under function on
ReturnTypeFromStrictTypedCallRector
([#&#8203;5358](https://togithub.com/rectorphp/rector-src/pull/5358))
- \[Naming] Skip `$this` in
RenameForeachValueVariableToMatchExprVariableRector
([#&#8203;5360](https://togithub.com/rectorphp/rector-src/pull/5360)),
Thanks [@&#8203;sreichel](https://togithub.com/sreichel)!
- \[Transform] Do not create a new node if the existing node is already
the correct one on AttributeKeyToClassConstFetchRector
([#&#8203;5328](https://togithub.com/rectorphp/rector-src/pull/5328)),
Thanks [@&#8203;SerethiX](https://togithub.com/SerethiX)!
- Bump to php parser 4.18
([#&#8203;5362](https://togithub.com/rectorphp/rector-src/pull/5362))
- \[CodeQuality] Skip Superglobals variable on
SimplifyEmptyCheckOnEmptyArrayRector
([#&#8203;5369](https://togithub.com/rectorphp/rector-src/pull/5369))
- \[Php55] Handle crash after exit() on GetCalledClassToSelfClassRector
([#&#8203;5372](https://togithub.com/rectorphp/rector-src/pull/5372))
- \[CodeQuality] Skip method call on else on
TernaryFalseExpressionToIfRector
([#&#8203;5373](https://togithub.com/rectorphp/rector-src/pull/5373))
- Remove return type in case of never in RemoveUselessReturnTagRector
([#&#8203;5323](https://togithub.com/rectorphp/rector-src/pull/5323)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[DeadCode] Remove unused
[@&#8203;return](https://togithub.com/return) mixed on
RemoveUselessReturnTagRector
([#&#8203;5332](https://togithub.com/rectorphp/rector-src/pull/5332))
- \[DeadCode] Skip has parent class with \__call() magic method on
RemoveParentCallWithoutParentRector
([#&#8203;5336](https://togithub.com/rectorphp/rector-src/pull/5336))
- \[PHP 5.5] Remove extra preslash in class reference, as in practice
removal manually
([#&#8203;5338](https://togithub.com/rectorphp/rector-src/pull/5338))
- \[DeadCode] Remove null as never used param type in
RemoveUselessParamTagRector
([#&#8203;5348](https://togithub.com/rectorphp/rector-src/pull/5348))
- **Remove json throw on error rule from PHP 7.3 set, as changed
behavior and must be applied on purpose**
([#&#8203;5349](https://togithub.com/rectorphp/rector-src/pull/5349))
- \[Testing] Remove unnecessary set Parameter Source on TestingParser
([#&#8203;5371](https://togithub.com/rectorphp/rector-src/pull/5371))

###
[`v0.18.12`](https://togithub.com/rectorphp/rector/releases/tag/0.18.12):
Released Rector 0.18.12

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.11...0.18.12)

#### New Features :partying_face:

- \[CodeQuality] Add RemoveUselessIsObjectCheckRector
([#&#8203;5316](https://togithub.com/rectorphp/rector-src/pull/5316))
- \[PHP83] Implements a rule to add types to class constants
([#&#8203;5290](https://togithub.com/rectorphp/rector-src/pull/5290)),
Thanks [@&#8203;peterfox](https://togithub.com/peterfox)!

<br>

#### Bugfixes :bug:

- \[TypeDeclaration] Skip iterable already there in
AddReturnTypeDeclarationFromYieldsRector
([#&#8203;5291](https://togithub.com/rectorphp/rector-src/pull/5291))
- \[TypeDeclaration] Remove ParamTypeFromStrictTypedPropertyRector as
seems similar feature with AddParamTypeFromPropertyTypeRector
([#&#8203;5293](https://togithub.com/rectorphp/rector-src/pull/5293))
- \[CodingStyle] Remove AddArrayDefaultToArrayPropertyRector as based on
docblock types and public contract, better use type declaration set
instad
([#&#8203;5298](https://togithub.com/rectorphp/rector-src/pull/5298))
- \[TypeDeclaration] Skip return void in abstract empty class in
AddVoidReturnTypeWhereNoReturnRector
([#&#8203;5311](https://togithub.com/rectorphp/rector-src/pull/5311))
- \[Php80] Skip PDO::query() on AddParamBasedOnParentClassMethodRector
([#&#8203;5313](https://togithub.com/rectorphp/rector-src/pull/5313))
- \[TypeDeclaration] Add If else assign support on
TypedPropertyFromAssignsRector
([#&#8203;5314](https://togithub.com/rectorphp/rector-src/pull/5314))
- \[CodeQuality] Make CommonNotEqualRector skip if not <>
([#&#8203;5292](https://togithub.com/rectorphp/rector-src/pull/5292))
- \[Naming] Skip singularize "cms" on
RenameForeachValueVariableToMatchExprVariableRector
([#&#8203;5294](https://togithub.com/rectorphp/rector-src/pull/5294))
- \[TypeDeclaration]\[Performance] Check typed param already early on
ParamTypeByMethodCallTypeRector
([#&#8203;5295](https://togithub.com/rectorphp/rector-src/pull/5295))
- \[Strict] Fix DisallowedEmptyRuleFixerRector empty() allow string '0'
check
([#&#8203;5296](https://togithub.com/rectorphp/rector-src/pull/5296))
- \[EarlyReturn] Skip duplicating complex expression in
ChangeAndIfToEarlyReturnRector
([#&#8203;5301](https://togithub.com/rectorphp/rector-src/pull/5301))
- \[Scoped] Exclude symfony/console/Debug/CliRequest.php from
parallel-lint PHP 7.2 syntax check
([#&#8203;5304](https://togithub.com/rectorphp/rector-src/pull/5304))
- Skip RenameMethodRector in never
([#&#8203;5305](https://togithub.com/rectorphp/rector-src/pull/5305)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[CodeQuality] Skip with else on SimplifyForeachToCoalescingRector
([#&#8203;5307](https://togithub.com/rectorphp/rector-src/pull/5307))
- \[Doc] Typo fix on sample code documentation on
SimplifyForeachToCoalescingRector
([#&#8203;5308](https://togithub.com/rectorphp/rector-src/pull/5308))
- \[Privatization] Skip call non-private method on non-final class on
PrivatizeLocalGetterToPropertyRector
([#&#8203;5309](https://togithub.com/rectorphp/rector-src/pull/5309))
- \[Privatization] Fix first class callable in
PrivatizeLocalGetterToPropertyRector
([#&#8203;5310](https://togithub.com/rectorphp/rector-src/pull/5310))
- \[TypeDeclaration] Keep constant false return type from strict native
call
([#&#8203;5223](https://togithub.com/rectorphp/rector-src/pull/5223)),
Thanks [@&#8203;tomi85](https://togithub.com/tomi85)!
- \[PHP 7.0] Skip mt_rand() replacement as not valuable
([#&#8203;5315](https://togithub.com/rectorphp/rector-src/pull/5315))
- \[Strict] Allow check '0' empty zero on
BooleanInTernaryOperatorRuleFixerRector on string type
([#&#8203;5297](https://togithub.com/rectorphp/rector-src/pull/5297))
- Fix annotation to attribute parsing string
([#&#8203;5317](https://togithub.com/rectorphp/rector-src/pull/5317))
- \[Instanceof] Fix combination of dead instance and compare
([#&#8203;5319](https://togithub.com/rectorphp/rector-src/pull/5319))
- Remove isPositiveInteger() check for third argument to strpos()
([#&#8203;5257](https://togithub.com/rectorphp/rector-src/pull/5257)),
Thanks [@&#8203;ikari7789](https://togithub.com/ikari7789)!
- Remove return type in case of void in RemoveUselessReturnTagRector
([#&#8203;5318](https://togithub.com/rectorphp/rector-src/pull/5318))
- \[DeadCode] Skip [@&#8203;return](https://togithub.com/return) never
with void on RemoveUselessReturnTagRector
([#&#8203;5320](https://togithub.com/rectorphp/rector-src/pull/5320))
- \[DeadCode] Remove useless nullable
[@&#8203;return](https://togithub.com/return) doc on
RemoveUselessReturnTagRector
([#&#8203;5321](https://togithub.com/rectorphp/rector-src/pull/5321))

###
[`v0.18.11`](https://togithub.com/rectorphp/rector/releases/tag/0.18.11):
Released Rector 0.18.11

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.10...0.18.11)

#### Bugfixes :bug:

- \[DeadCode] Skip multi no stmts on RemoveDuplicatedCaseInSwitchRector
([#&#8203;5258](https://togithub.com/rectorphp/rector-src/pull/5258))
- \[Performance]\[Renaming] Remove unnecessary array_reverse() on
RenameClassRector
([#&#8203;5266](https://togithub.com/rectorphp/rector-src/pull/5266))
- \[TypeDeclaration] Skip default not array type on
StrictArrayParamDimFetchRector
([#&#8203;5259](https://togithub.com/rectorphp/rector-src/pull/5259))
- \[TypeDeclaration] Skip echo-ed on StrictArrayParamDimFetchRector
([#&#8203;5260](https://togithub.com/rectorphp/rector-src/pull/5260))
- \[Php71] Skip re-assigned as array on AssignArrayToStringRector
([#&#8203;5261](https://togithub.com/rectorphp/rector-src/pull/5261))
- \[Php71] Ensure re-assign after definition on
AssignArrayToStringRector
([#&#8203;5262](https://togithub.com/rectorphp/rector-src/pull/5262))
- \[Renaming] Handle Rename no namespace to namespaced class with
existing use statements
([#&#8203;5264](https://togithub.com/rectorphp/rector-src/pull/5264))
- \[Renaming]\[Performance] Re-structure check namespace only on renamed
node got Namespace\_
([#&#8203;5265](https://togithub.com/rectorphp/rector-src/pull/5265))
- \[Php81] Skip increment/decrement on ReadOnlyPropertyRector
([#&#8203;5267](https://togithub.com/rectorphp/rector-src/pull/5267))
- \[TypeDeclaration] Deprecate
TypedPropertyFromStrictGetterMethodReturnTypeRector as depends on
missing context and creates invalid code
([#&#8203;5269](https://togithub.com/rectorphp/rector-src/pull/5269))
- \[AutoImport] Fixing auto import on multiple @&#8203;\ usage
([#&#8203;5271](https://togithub.com/rectorphp/rector-src/pull/5271))
- \[Performance]\[Renaming] Use FullyQualified on RenameClassRector
([#&#8203;5272](https://togithub.com/rectorphp/rector-src/pull/5272))
- \[AutoImport] Handle complex usage of multiple @&#8203;\ combined with
other doc
([#&#8203;5273](https://togithub.com/rectorphp/rector-src/pull/5273))
- \[AutoImport] Handle multi @&#8203;\ usage on multiline description
([#&#8203;5274](https://togithub.com/rectorphp/rector-src/pull/5274))
- \[Php80] Handle FQCN @&#8203;\ usage on AnnotationToAttributeRector
([#&#8203;5240](https://togithub.com/rectorphp/rector-src/pull/5240))
- \[BetterPhpDocParser] Handle nested doctrine annotation with single
quote content
([#&#8203;5281](https://togithub.com/rectorphp/rector-src/pull/5281))
- \[Privatization] Skip method with parent call
([#&#8203;5283](https://togithub.com/rectorphp/rector-src/pull/5283))
- \[BetterPhpDocParser] Use ORIG_NODE attribute on
DoctrineAnnotationDecorator on handle @&#8203;\ after generic
([#&#8203;5285](https://togithub.com/rectorphp/rector-src/pull/5285))
- \[Php80] Allow subnamespace from use statements support on
AnnotationToAttributeRector
([#&#8203;5287](https://togithub.com/rectorphp/rector-src/pull/5287))

<br>

#### Removed :skull:

- Remove deprecated Rector rules
([#&#8203;5270](https://togithub.com/rectorphp/rector-src/pull/5270))

###
[`v0.18.10`](https://togithub.com/rectorphp/rector/releases/tag/0.18.10):
Released Rector 0.18.10

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.9...0.18.10)

#### Bugfixes :bug:

- \[Renaming] FQN-ize namespaced import no namespace -> namespaced name
on RenameClassRector
([#&#8203;5256](https://togithub.com/rectorphp/rector-src/pull/5256))

###
[`v0.18.9`](https://togithub.com/rectorphp/rector/releases/tag/0.18.9):
Released Rector 0.18.9

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.8...0.18.9)

#### New Features 🥳

- \[DeadCode]: Support functions in RemoveUnusedVariableAssignRector
([#&#8203;5249](https://togithub.com/rectorphp/rector-src/pull/5249)
- \[Performance]\[PostRector] Only process FullyQualified on import Node
name on NameImportingPostRector
([#&#8203;5255](https://togithub.com/rectorphp/rector-src/pull/5255))

#### Bugfixes :bug:

- \[AutoImport]\[Php70] Keep FQCN on conflict last name on
TernaryToNullCoalescingRector
([#&#8203;5251](https://togithub.com/rectorphp/rector-src/pull/5251))
- \[Naming] Fix dotted name on generics bug in
RenameVariableToMatchMethodCallReturnTypeRector
([#&#8203;5250](https://togithub.com/rectorphp/rector-src/pull/5250))
- \[Php73] Handle crash on JsonThrowOnErrorRector +
SensitiveConstantNameRector
([#&#8203;5253](https://togithub.com/rectorphp/rector-src/pull/5253))
- \[CodingStyle] Refactor UseImportsAdder to return
\[FileWithoutNamespace] code on no namespaced code
([#&#8203;5254](https://togithub.com/rectorphp/rector-src/pull/5254))

###
[`v0.18.8`](https://togithub.com/rectorphp/rector/releases/tag/0.18.8):
Released Rector 0.18.8

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.7...0.18.8)

#### Bugfixes :bug:

- Bump to reactphp/event-loop ^1.5
([#&#8203;5246](https://togithub.com/rectorphp/rector-src/pull/5246))
- \[AutoImport] Skip auto import on no namespace used class on auto
import enabled
([#&#8203;5247](https://togithub.com/rectorphp/rector-src/pull/5247))
- \[AutoImport]\[Renaming] Handle same last name no namespace just
renamed auto import
([#&#8203;5248](https://togithub.com/rectorphp/rector-src/pull/5248))

###
[`v0.18.7`](https://togithub.com/rectorphp/rector/releases/tag/0.18.7):
Released Rector 0.18.7

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.6...0.18.7)

#### New Features :partying_face:

- \[CodeQuality] Add negated support on SingleInArrayToCompareRector
([#&#8203;5205](https://togithub.com/rectorphp/rector-src/pull/5205))
- \[Php83] Adds rule for adding Override attribute
([#&#8203;5170](https://togithub.com/rectorphp/rector-src/pull/5170)),
Thanks [@&#8203;peterfox](https://togithub.com/peterfox)!

<br>

#### Bugfixes :bug:

- BinaryOpBetweenNumberAndStringRector don't trust phpdoc
([#&#8203;5199](https://togithub.com/rectorphp/rector-src/pull/5199)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[CodeQuality]\[Php70] Handle
LocallyCalledStaticMethodToNonStaticRector +
ThisCallOnStaticMethodToStaticCallRector must change both method and
caller
([#&#8203;5196](https://togithub.com/rectorphp/rector-src/pull/5196))
- CountArrayToEmptyArrayComparisonRector: don't trust phpdoc
([#&#8203;5203](https://togithub.com/rectorphp/rector-src/pull/5203)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[TypeDeclaration] Skip union false on
NumericReturnTypeFromStrictScalarReturnsRector
([#&#8203;5204](https://togithub.com/rectorphp/rector-src/pull/5204))
- \[CodeQuality] Handle negated isset on
IssetOnPropertyObjectToPropertyExistsRector on property not exists
([#&#8203;5206](https://togithub.com/rectorphp/rector-src/pull/5206))
- \[CodeQuality] Handle crash no scope on
ThrowWithPreviousExceptionRector+OptionalParametersAfterRequiredRector
([#&#8203;5207](https://togithub.com/rectorphp/rector-src/pull/5207))
- \[NodeTypeResolver] Clean up TryCatch\_ Scope filling
([#&#8203;5208](https://togithub.com/rectorphp/rector-src/pull/5208))
- \[PHPStanStaticTypeMapper] Clean up tweak false and bool check on
UnionTypeMapper
([#&#8203;5209](https://togithub.com/rectorphp/rector-src/pull/5209))
- \[TypeDeclaration] Skip default numeric string on param int on
ParamTypeByMethodCallTypeRector
([#&#8203;5210](https://togithub.com/rectorphp/rector-src/pull/5210))
- \[AutoImport] Handle AnnotationToAttributeRector + RenameClassRector
then enable auto import
([#&#8203;5213](https://togithub.com/rectorphp/rector-src/pull/5213))
- \[Php80] Keep single quoted Argument Attribute on
AnnotationToAttributeRector
([#&#8203;5214](https://togithub.com/rectorphp/rector-src/pull/5214))
- \[Php80] Keep single quoted key: 'value' on
AnnotationToAttributeRector
([#&#8203;5215](https://togithub.com/rectorphp/rector-src/pull/5215))
- \[AutoImport] Ensure change to FullyQualified for Attribute on just
changed from annotation
([#&#8203;5216](https://togithub.com/rectorphp/rector-src/pull/5216))
- \[Php52]\[Php70] Handle ContinueToBreakInSwitchRector +
BreakNotInLoopOrSwitchToReturnRector
([#&#8203;5217](https://togithub.com/rectorphp/rector-src/pull/5217))
- \[Php80] Handle RenameClassRector+AnnotationToAttributeRector with
auto import and existing attribute defined
([#&#8203;5219](https://togithub.com/rectorphp/rector-src/pull/5219))
- \[Testing] In case of failed test using multiple rules, show applied
Rector rules to make easy to find them
([#&#8203;5222](https://togithub.com/rectorphp/rector-src/pull/5222))
- \[NodeTypeResolver] Handle nullable extended class on ->isObjectType()
on DowngradeReflectionGetAttributesRector
([#&#8203;5224](https://togithub.com/rectorphp/rector-src/pull/5224))
- NullableCompareToNullRector: Don't trust phpdocs
([#&#8203;5225](https://togithub.com/rectorphp/rector-src/pull/5225)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[CodingStyle] Move ArraySpreadInsteadOfArrayMergeRector from php74 to
codingstyle sets list
([#&#8203;5230](https://togithub.com/rectorphp/rector-src/pull/5230))
- \[PostRector] Ensure old classes in use statements cleaned up after
rename attribuet on ClassRenamingPostRector
([#&#8203;5231](https://togithub.com/rectorphp/rector-src/pull/5231))
- RestoreDefaultNullToNullableTypePropertyRector: skip `@readonly`
phpdoc
([#&#8203;5233](https://togithub.com/rectorphp/rector-src/pull/5233)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[AutoImport] Handle DeclareStrictTypesRector on importNames() enabled
on no namespace
([#&#8203;5241](https://togithub.com/rectorphp/rector-src/pull/5241))
- \[AutoImport] Allow auto import just renamed
[@&#8203;var](https://togithub.com/var) only docblock on
RenameClassRector without removeUnusedImports() enabled
([#&#8203;5220](https://togithub.com/rectorphp/rector-src/pull/5220))
- Remove rule DataProviderArrayItemsNewlinedRector.php
([#&#8203;5227](https://togithub.com/rectorphp/rector-src/pull/5227)),
Thanks [@&#8203;eerison](https://togithub.com/eerison)!
- Remove `ArraySpreadInsteadOfArrayMergeRector` from
`LevelSetList::UP_TO_PHP_74`
([#&#8203;5228](https://togithub.com/rectorphp/rector-src/pull/5228)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[DeadCode] Allow indirect duplicated grouping on
RemoveDuplicatedCaseInSwitchRector
([#&#8203;5234](https://togithub.com/rectorphp/rector-src/pull/5234))
- \[DeadCode] Reduce double loop on RemoveDuplicatedCaseInSwitchRector
([#&#8203;5235](https://togithub.com/rectorphp/rector-src/pull/5235))
- \[DeadCode] Handle different indirect duplicated on
RemoveDuplicatedCaseInSwitchRector
([#&#8203;5236](https://togithub.com/rectorphp/rector-src/pull/5236))
- \[DeadCode] Ensure change hasChanged flag on
RemoveDuplicatedCaseInSwitchRector
([#&#8203;5237](https://togithub.com/rectorphp/rector-src/pull/5237))
- \[DeadCode] Handle repetitive jump equal case stmts on
RemoveDuplicatedCaseInSwitchRector
([#&#8203;5239](https://togithub.com/rectorphp/rector-src/pull/5239))
- Rename parameter variable to nextCase on
RemoveDuplicatedCaseInSwitchRector
([#&#8203;5244](https://togithub.com/rectorphp/rector-src/pull/5244))

###
[`v0.18.6`](https://togithub.com/rectorphp/rector/releases/tag/0.18.6):
Released Rector 0.18.6

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.5...0.18.6)

##### New Features and Changes :partying_face:

- \[CodeQuality] Add CompleteMissingIfElseBracketRector
([#&#8203;5121](https://togithub.com/rectorphp/rector-src/pull/5121))
- \[CodeQuality] Add Else and ElseIf on
CompleteMissingIfElseBracketRector
([#&#8203;5124](https://togithub.com/rectorphp/rector-src/pull/5124))
- \[TypeDeclaration] Utilize ClassMethodReturnTypeOverrideGuard on
AddReturnTypeDeclarationFromYieldsRector
([#&#8203;5156](https://togithub.com/rectorphp/rector-src/pull/5156))
- \[DeadCode] Add RemoveUselessReturnExprInConstructRector
([#&#8203;5158](https://togithub.com/rectorphp/rector-src/pull/5158))
- Improve UnaryPlus and UnaryMinus support in isDynamicExpr
([#&#8203;5177](https://togithub.com/rectorphp/rector-src/pull/5177)),
Thanks [@&#8203;JulianCBC](https://togithub.com/JulianCBC)!

<br>

##### Bugfixes :bug:

- \[CodeQuality] Skip VB style if endif on
CompleteMissingIfElseBracketRector
([#&#8203;5122](https://togithub.com/rectorphp/rector-src/pull/5122))
- \[CodeQuality] Skip direct InlineHTML on
CompleteMissingIfElseBracketRector
([#&#8203;5125](https://togithub.com/rectorphp/rector-src/pull/5125))
- \[CodeQuality] Skip spaced elseif cond on
CompleteMissingIfElseBracketRector
([#&#8203;5126](https://togithub.com/rectorphp/rector-src/pull/5126))
- \[CodeQuality] Only check start from current Stmt token pos up until
open parentheses on CompleteMissingIfElseBracketRector
([#&#8203;5127](https://togithub.com/rectorphp/rector-src/pull/5127))
- \[CodeQuality] Handle all if,elseif,else no bracket on
CompleteMissingIfElseBracketRector
([#&#8203;5129](https://togithub.com/rectorphp/rector-src/pull/5129))
- \[CodeQuality] Skip VB style in complex HTML on
CompleteMissingIfElseBracketRector
([#&#8203;5132](https://togithub.com/rectorphp/rector-src/pull/5132))
- Skip `__construct()` in BoolReturnTypeFromStrictScalarReturnsRector
([#&#8203;5133](https://togithub.com/rectorphp/rector-src/pull/5133)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[CodeQuality] Handle missing bracket on If only on
CompleteMissingIfElseBracketRector
([#&#8203;5134](https://togithub.com/rectorphp/rector-src/pull/5134))
- \[CodeQuality] Handle on closure, anonymous function, method call on
CompleteMissingIfElseBracketRector
([#&#8203;5135](https://togithub.com/rectorphp/rector-src/pull/5135))
- \[CodeQuality] Use its start token pos on Else\_ on
CompleteMissingIfElseBracketRector as no cond
([#&#8203;5136](https://togithub.com/rectorphp/rector-src/pull/5136))
- \[PhpParser] Reduce AstResolver complexity by move check fileName is
null to parseFileNameToDecoratedNodes()
([#&#8203;5138](https://togithub.com/rectorphp/rector-src/pull/5138))
- \[TypeDeclaration] Handle Union with array type on
ReturnUnionTypeRector
([#&#8203;5144](https://togithub.com/rectorphp/rector-src/pull/5144))
- \[TypeDeclaration] Handle union A extends B on ReturnUnionTypeRector
([#&#8203;5149](https://togithub.com/rectorphp/rector-src/pull/5149))
- \[CodeQuality] Fix missing parentheses on CombineIfRector
([#&#8203;5151](https://togithub.com/rectorphp/rector-src/pull/5151))
- \[TypeDeclaration] Utilize ClassMethodReturnTypeOverrideGuard on
NumericReturnTypeFromStrictScalarReturnsRector
([#&#8203;5155](https://togithub.com/rectorphp/rector-src/pull/5155))
- \[CodeQuality] Handle negative and positive int/float on
InlineConstructorDefaultToPropertyRector
([#&#8203;5159](https://togithub.com/rectorphp/rector-src/pull/5159))
- \[CodeQuality] Skip docblock usage on SimplifyBoolIdenticalTrueRector
([#&#8203;5161](https://togithub.com/rectorphp/rector-src/pull/5161))
- \[CodeQuality] Skip magic property fetch on
IssetOnPropertyObjectToPropertyExistsRector
([#&#8203;5163](https://togithub.com/rectorphp/rector-src/pull/5163))
- \[PostRector] Reduce loop on ClassRenamingPostRector
([#&#8203;5174](https://togithub.com/rectorphp/rector-src/pull/5174))
- \[PostRector] Fix ClassRenamingPostRector return when no auto import
replacement
([#&#8203;5175](https://togithub.com/rectorphp/rector-src/pull/5175))
- \[Renaming] Skip nullable object object|null on RenameMethodRector
([#&#8203;5181](https://togithub.com/rectorphp/rector-src/pull/5181))
- \[Downgradephp81]\[DowngradePhp80] Handle No scope crash on
DowngradeSetAccessibleReflectionPropertyRector +
DowngradeMatchToSwitchRector
([#&#8203;5183](https://togithub.com/rectorphp/rector-src/pull/5183))
- \[Naming] Skip DateTime from renaming, to keep convention of named
dates
([#&#8203;5184](https://togithub.com/rectorphp/rector-src/pull/5184))
- Skip new self in RenameVariableToMatchNewTypeRector
([#&#8203;5185](https://togithub.com/rectorphp/rector-src/pull/5185))
- Skip DateTime in ExpectedNameResolver
([#&#8203;5186](https://togithub.com/rectorphp/rector-src/pull/5186))
- \[Naming] Skip all kinds of generators
([#&#8203;5187](https://togithub.com/rectorphp/rector-src/pull/5187))
- \[Renaming] Skip pointless names in
RenameForeachValueVariableToMatchMethodCallReturnTypeRector
([#&#8203;5188](https://togithub.com/rectorphp/rector-src/pull/5188))
- \[Php70] Fix Php4 contructor not replaced with \__construct() on php
7.4 environment
([#&#8203;5189](https://togithub.com/rectorphp/rector-src/pull/5189))
- \[Php74]\[Php81] Allow mixed key on
ArraySpreadInsteadOfArrayMergeRector on php 8.1 version feature enabled
([#&#8203;5190](https://togithub.com/rectorphp/rector-src/pull/5190))
- \[TypeDeclaration] Handle skipped by file path on
DeclareStrictTypesRector due to use beforeTraverse()
([#&#8203;5191](https://togithub.com/rectorphp/rector-src/pull/5191))
- Fix phpstan notice $phpVersion on
Rector\Config\RectorConfig::phpVersion()
([#&#8203;5193](https://togithub.com/rectorphp/rector-src/pull/5193))
- \[PHPStanStaticTypeMapper] Remove BoolUnionTypeAnalyzer on
UnionTypeMapper
([#&#8203;5141](https://togithub.com/rectorphp/rector-src/pull/5141))
- \[DeadCode] Remove UnionType check on RecastingRemovalRector
([#&#8203;5142](https://togithub.com/rectorphp/rector-src/pull/5142))
- Remove src/constants.php for T_ENUM and T_NAME_RELATIVE
([#&#8203;5143](https://togithub.com/rectorphp/rector-src/pull/5143))
- \[PHPStanStaticTypeMapper] Remove narrow string and int on
UnionTypeMapper
([#&#8203;5145](https://togithub.com/rectorphp/rector-src/pull/5145))
- \[PHPStanStaticTypeMapper] Remove matchArrayTypes() on UnionTypeMapper
([#&#8203;5146](https://togithub.com/rectorphp/rector-src/pull/5146))
- \[DeadCode] Skip indirect variable definition on
RemoveNonExistingVarAnnotationRector
([#&#8203;5152](https://togithub.com/rectorphp/rector-src/pull/5152))
- \[DeadCode] Skip key used in next stmt on RemoveUnusedForeachKeyRector
([#&#8203;5153](https://togithub.com/rectorphp/rector-src/pull/5153))
- \[DeadCode] Skip used in next For\_/Foreach\_ on
RemoveDeadIfForeachForRector
([#&#8203;5154](https://togithub.com/rectorphp/rector-src/pull/5154))
- \[DeadCode] Handle file_get_contents() only remove variable on
RemoveUnusedVariableAssignRector
([#&#8203;5162](https://togithub.com/rectorphp/rector-src/pull/5162))
- \[DeadCode] Skip count() on mixed on
RemoveUnusedNonEmptyArrayBeforeForeachRector
([#&#8203;5160](https://togithub.com/rectorphp/rector-src/pull/5160))
- RemoveUnusedNonEmptyArrayBeforeForeachRector: ignore phpdoc types
([#&#8203;5169](https://togithub.com/rectorphp/rector-src/pull/5169)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- RemoveUnusedNonEmptyArrayBeforeForeachRector: skip array dim fetch
([#&#8203;5166](https://togithub.com/rectorphp/rector-src/pull/5166)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[DeadCode] Skip return false pseudo type in union on
RemoveUselessReturnTagRector
([#&#8203;5172](https://togithub.com/rectorphp/rector-src/pull/5172))
- \[AutoImport] \[Renaming] Skip remove used use statement on annotation
during rename + auto import when no replacement on auto import
([#&#8203;5168](https://togithub.com/rectorphp/rector-src/pull/5168))
- \[DeadCode] Mirror comment on assign method call on
RemoveUnusedVariableAssignRector
([#&#8203;5195](https://togithub.com/rectorphp/rector-src/pull/5195))

###
[`v0.18.5`](https://togithub.com/rectorphp/rector/releases/tag/0.18.5):
Released Rector 0.18.5

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.4...0.18.5)

#### New Features and Improvements :partying_face:

- \[build] Remove duplicated phpstan/phpstan from the build, as require
by build package in composer.json already
(https://github.com/rectorphp/rector-src/commit/51ed7b693fbfab70cf6a246bec4cc35f0ceacf7a)
- AddParamTypeBasedOnPHPUnitDataProviderRector: Check all data providers
([#&#8203;5068](https://togithub.com/rectorphp/rector-src/pull/5068)),
Thanks [@&#8203;jlherren](https://togithub.com/jlherren)!
- AddParamTypeBasedOnPHPUnitDataProviderRector: Enhance existing rule to
handle PHPUnit 10+ DataProvider Attribute
([#&#8203;4925](https://togithub.com/rectorphp/rector-src/pull/4925)),
Thanks [@&#8203;mcampbell508](https://togithub.com/mcampbell508)!
- make PhpDocInfo::findByAnnotationClass() public to use in Symfony
rules
([#&#8203;5103](https://togithub.com/rectorphp/rector-src/pull/5103))

<br>

#### Bugfixes :bug:

- Feature/fix class annotation bad print
([#&#8203;5081](https://togithub.com/rectorphp/rector-src/pull/5081)),
Thanks [@&#8203;etshy](https://togithub.com/etshy)!
- \[Performance] Avoid ReflectionProvider check function exists on
NameImportingPostRector
([#&#8203;5083](https://togithub.com/rectorphp/rector-src/pull/5083))
- InlineConstructorDefaultToPropertyRector Readonly Class
([#&#8203;5085](https://togithub.com/rectorphp/rector-src/pull/5085)),
Thanks [@&#8203;beschoenen](https://togithub.com/beschoenen)!
- \[CodeQuality] Handle crash on variable variable on assign closure on
OptionalParametersAfterRequiredRector
([#&#8203;5089](https://togithub.com/rectorphp/rector-src/pull/5089))
- \[NodeTypeResolver] Use isScalar()->yes() usage on StaticTypeAnalyzer
and ScalarTypeComparator services
([#&#8203;5099](https://togithub.com/rectorphp/rector-src/pull/5099))
- \[ProcessAnalyzer] Ensure instanceof Stmt on check infinite loop on
not yet has "created_by_rule" attribute
([#&#8203;5100](https://togithub.com/rectorphp/rector-src/pull/5100))
- \[DX] Rename shouldImportName() to shouldSkipName() on
ClassNameImportSkipper
([#&#8203;5107](https://togithub.com/rectorphp/rector-src/pull/5107))
- The ReturnTypeFromReturnNewRector must only handle new instances, to
avoid leaking to everything
([#&#8203;5115](https://togithub.com/rectorphp/rector-src/pull/5115))
- \[Php80] Skip when already implements Stringable and has string return
type on StringableForToStringRector
([#&#8203;5120](https://togithub.com/rectorphp/rector-src/pull/5120))

<br>

#### Removed and Deprecated :skull:

- \[DX] Remove CurrentFileProvider dependency on
ChangedNodeScopeRefresher
([#&#8203;5087](https://togithub.com/rectorphp/rector-src/pull/5087))
- \[DX] Remove DependencyClassMethodDecorator as not used anymore due to
paralel nature
([#&#8203;5094](https://togithub.com/rectorphp/rector-src/pull/5094))
- \[PostRector] Remove CurrentFileProvider on PostFileProcessor
([#&#8203;5097](https://togithub.com/rectorphp/rector-src/pull/5097))
- \[Comments] Remove unused copy Node object on CommentRemover
([#&#8203;5103](https://togithub.com/rectorphp/rector-src/pull/5103))
- \[Performance]\[AutoImport] Remove just renamed check on
ClassNameImportSkipper
([#&#8203;5106](https://togithub.com/rectorphp/rector-src/pull/5106))
- Deprecate CountOnNullRector as depends on previous context and require
manual adjustment of previous result
([#&#8203;5101](https://togithub.com/rectorphp/rector-src/pull/5101))

###
[`v0.18.4`](https://togithub.com/rectorphp/rector/releases/tag/0.18.4):
Released Rector 0.18.4

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.3...0.18.4)

#### New Features and Improvements :partying_face:

- **Introducing Collectors** :partying_face: - processing collected data
+ test case
([#&#8203;4970](https://togithub.com/rectorphp/rector-src/pull/4970))
- Run tests on macos
([#&#8203;5019](https://togithub.com/rectorphp/rector-src/pull/5019)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Move betterNodeFinder, valueResolver, phpDocInfoFactory dependencies
from AbstractRector into rules
([#&#8203;5071](https://togithub.com/rectorphp/rector-src/pull/5071))
- DX: Validate paths in RectorConfig->paths()
([#&#8203;5065](https://togithub.com/rectorphp/rector-src/pull/5065)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[DX] Make PhpDocInfoFactory explicitly required in Rector rule
constructor, if needed
([#&#8203;5051](https://togithub.com/rectorphp/rector-src/pull/5051))
- \[DX] Make ValueResolver explicitly required in Rector rules
constructor if needed
([#&#8203;5052](https://togithub.com/rectorphp/rector-src/pull/5052))

<br>

#### Bugfixes :bug:

- \[DeadCode] RemoveDeadZeroAndOneOperationRector should not remove
Constants
([#&#8203;4910](https://togithub.com/rectorphp/rector-src/pull/4910)),
Thanks [@&#8203;TwanVermeulen](https://togithub.com/TwanVermeulen)!
- \[PostRector] Fix unused import not removed on empty generic class
name exists
([#&#8203;5012](https://togithub.com/rectorphp/rector-src/pull/5012))
- \[Parallel] Handle Spaced root project main script on parallel process
([#&#8203;4813](https://togithub.com/rectorphp/rector-src/pull/4813))
- Fix TypedPropertyFromStrictConstructor\* order
([#&#8203;5021](https://togithub.com/rectorphp/rector-src/pull/5021)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[DX] Lower current node dependency - pass it directly to doc node
parsing
([#&#8203;5023](https://togithub.com/rectorphp/rector-src/pull/5023))
- \[AutoImport] Fix conflict current namespace auto import
([#&#8203;5024](https://togithub.com/rectorphp/rector-src/pull/5024))
- Simplify UseIdenticalOverEqualWithSameTypeRector
([#&#8203;5029](https://togithub.com/rectorphp/rector-src/pull/5029)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[Performance]\[Testing] Use str_contains instead of regex in
FixtureSplitter
([#&#8203;5030](https://togithub.com/rectorphp/rector-src/pull/5030))
- Fix ArrayKeyFirstLastRector: Skip exection when pointer is changed
([#&#8203;5038](https://togithub.com/rectorphp/rector-src/pull/5038)),
Thanks [@&#8203;scyzoryck](https://togithub.com/scyzoryck)!
- \[TypeDeclaration] Handle fallback from param same type object on
ReturnTypeFromReturnNewRector
([#&#8203;5039](https://togithub.com/rectorphp/rector-src/pull/5039))
- \[NodeTypeResolver] Use Scope->getType() on ArrayDimFetch on
NodeTypeResolver::getNativeType()
([#&#8203;5037](https://togithub.com/rectorphp/rector-src/pull/5037))
- \[NodeTypeResolver] pull getType() on ArrayDimFetch when not mixed
type from its variable native definition
([#&#8203;5056](https://togithub.com/rectorphp/rector-src/pull/5056))
- \[CodingStyle]\[EarlyReturn] Fix infinite if else on
BinarySwitchToIfElseRector+RemoveAlwaysElseRector
([#&#8203;5057](https://togithub.com/rectorphp/rector-src/pull/5057))
- \[TypeDeclaration] Skip ArrayDimFetch for return and param types
([#&#8203;5059](https://togithub.com/rectorphp/rector-src/pull/5059)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[NodeTypeResolver] Handle optional array shape on native function
like with ArrayDimFetch
([#&#8203;5062](https://togithub.com/rectorphp/rector-src/pull/5062))
- \[Php80] Mirror switch comment to match to ChangeSwitchToMatchRector
([#&#8203;5072](https://togithub.com/rectorphp/rector-src/pull/5072))
- \[AutoImport] Skip case insensitive conflict defined class name on
$rectorConfig->importNames()
([#&#8203;5076](https://togithub.com/rectorphp/rector-src/pull/5076))
- Docblock fix on ShortNameResolver
([#&#8203;5077](https://togithub.com/rectorphp/rector-src/pull/5077))
- \[TypeDeclaration] Add return static property support on
ReturnTypeFromStrictTypedPropertyRector
([#&#8203;5050](https://togithub.com/rectorphp/rector-src/pull/5050))

<br>

#### Removed and Deprecated :skull:

- \[Config] Remove asterisk support in import() for file, use explicit
paths instead
([#&#8203;5010](https://togithub.com/rectorphp/rector-src/pull/5010))
- \[Performance] Remove regex check on open tag spaced check on
FileProcessor
([#&#8203;5073](https://togithub.com/rectorphp/rector-src/pull/5073))
- Deprecate TypedPropertyFromStrictConstructorReadonlyClassRector as
based on docblock and public elements; use private elements and property
promotion instead
([#&#8203;5049](https://togithub.com/rectorphp/rector-src/pull/5049))
- Deprecate BinarySwitchToIfElseRector as opinionated to allow more
suitable match() refactoring
([#&#8203;5064](https://togithub.com/rectorphp/rector-src/pull/5064))

###
[`v0.18.3`](https://togithub.com/rectorphp/rector/releases/tag/0.18.3):
Released Rector 0.18.3

[Compare
Source](https://togithub.com/rectorphp/rector/compare/0.18.2...0.18.3)

#### New Features and Changes :partying_face:

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

<br>

#### Bugfixes :bug:

- AddVoidReturnTypeWhereNoReturnRector: fix never type handling
([#&#8203;4918](https://togithub.com/rectorphp/rector-src/pull/4918)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[TypeDeclaration] Skip return after return closure on
AddVoidReturnTypeWhereNoReturnRector
([#&#8203;4930](https://togithub.com/rectorphp/rector-src/pull/4930))
- \[TypeDeclaration] Use $type->isScalar()->yes() on
AlwaysStrictScalarExprAnalyzer
([#&#8203;4920](https://togithub.com/rectorphp/rector-src/pull/4920))
- Refactor BetterNodeFinder::findFirstInFunctionLikeScoped() to work
with SilentVoidResolver
([#&#8203;4931](https://togithub.com/rectorphp/rector-src/pull/4931))
- \[NodeTypeResolver] Handle isObjectType() on new $class dynamic
variable should return false compare to Object FQCN
([#&#8203;4936](https://togithub.com/rectorphp/rector-src/pull/4936))
- \[Testing] Fix running unit test on macOS
([#&#8203;4941](https://togithub.com/rectorphp/rector-src/pull/4941))
- Faster name resolving
([#&#8203;4955](https://togithub.com/rectorphp/rector-src/pull/4955)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- UseImportsTraverser: don't deep traverse
([#&#8203;4994](https://togithub.com/rectorphp/rector-src/pull/4994)),
Thanks [@&#8203;staabm](https://togithub.com/staabm)!
- \[tests] Replace wildcard e2e test with unit one
([#&#8203;5000](https://togithub.com/rectorphp/rector-src/pull/5000))
- \[DocBlock] Update docblock contents right in the rule
([#&#8203;4999](https://togithub.com/rectorphp/rector-src/pull/4999))
- \[PhpParser] Fix crash read jetbrains/phpstorm-stubs included in
phpstan.phar on PHP 8.0 and PHP 7.4
([#&#8203;5001](https://togithub.com/rectorphp/rec

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/Lendable/clock).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMDMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjEyNy4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants