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

Allow asserting the type of $this #209

Merged
merged 1 commit into from
Sep 7, 2023

Conversation

ekisu
Copy link
Contributor

@ekisu ekisu commented Sep 7, 2023

Closes phpstan/phpstan#8904

I've also added some tests on the PHPStan side, to ensure the type assertions work properly: phpstan/phpstan-src#2609

@ondrejmirtes
Copy link
Member

Perfect, thank you!

@ondrejmirtes ondrejmirtes merged commit 3510b0a into phpstan:1.23.x Sep 7, 2023
43 checks passed
renovate bot added a commit to ben-challis/sql-migrations that referenced this pull request Sep 13, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [phpstan/phpstan](https://togithub.com/phpstan/phpstan) | require-dev
| patch | `^1.10.33` -> `^1.10.34` |

---

### ⚠ Dependency Lookup Warnings ⚠

Warnings were logged while processing this repo. Please check the
Dependency Dashboard for more information.

---

### Release Notes

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

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.33...1.10.34)

# Improvements 🔧

- Add support and tests for `$this` type assertions
([#&#8203;2609](https://togithub.com/phpstan/phpstan-src/pull/2609)),
[#&#8203;8904](https://togithub.com/phpstan/phpstan/issues/8904), thanks
[@&#8203;ekisu](https://togithub.com/ekisu)!
- Update [phpstan/phpdoc-parser to
1.24.0](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.24.0)
- Allow asserting the type of `$this`
([phpstan/phpdoc-parser#209),
thanks [@&#8203;ekisu](https://togithub.com/ekisu)!
- Avoid creating an Exception when it is not necessary
([phpstan/phpdoc-parser#208),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Added `--fail-without-result-cache` CLI option
([#&#8203;2611](https://togithub.com/phpstan/phpstan-src/pull/2611)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Make result cache independent from configs include order
([#&#8203;2606](https://togithub.com/phpstan/phpstan-src/pull/2606)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Reduce unnecessary calls into reflection
([#&#8203;2614](https://togithub.com/phpstan/phpstan-src/pull/2614)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Micro-optimize with `in_array()`
([#&#8203;2618](https://togithub.com/phpstan/phpstan-src/pull/2618)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!
- Cover ArgumentsNormalizer with BC promise
(phpstan/phpstan-src@b87db62)
- LastConditionVisitor: condition followed by throw is marked as last
([#&#8203;2405](https://togithub.com/phpstan/phpstan-src/pull/2405)),
thanks [@&#8203;JanTvrdik](https://togithub.com/JanTvrdik)!

# Function signature fixes 🤖

- fix incorrect doc for `inotify_read`
([#&#8203;2605](https://togithub.com/phpstan/phpstan-src/pull/2605)),
thanks [@&#8203;taka-oyama](https://togithub.com/taka-oyama)!

# Internals 🔍

- name-collision-detector
(phpstan/phpstan-src@95cdbe5)

</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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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/ben-challis/sql-migrations).

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot added a commit to Lendable/composer-license-checker that referenced this pull request Sep 18, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[ergebnis/composer-normalize](https://togithub.com/ergebnis/composer-normalize)
| require-dev | minor | `^2.36.0` -> `^2.37.0` |
| [php-cs-fixer/shim](https://togithub.com/PHP-CS-Fixer/shim) |
require-dev | minor | `^3.26.1` -> `^3.27.0` |
| [phpstan/phpstan](https://togithub.com/phpstan/phpstan) | require-dev
| patch | `^1.10.33` -> `^1.10.34` |

---

### Release Notes

<details>
<summary>ergebnis/composer-normalize
(ergebnis/composer-normalize)</summary>

###
[`v2.37.0`](https://togithub.com/ergebnis/composer-normalize/blob/HEAD/CHANGELOG.md#2370-2370)

[Compare
Source](https://togithub.com/ergebnis/composer-normalize/compare/2.36.0...2.37.0)

For a full diff see \[`2.36.0...2.37.0`]\[2.36.0...2.37.0].

##### Changed

- Updated `schema.json`
(\[[#&#8203;1170](https://togithub.com/ergebnis/composer-normalize/issues/1170)]),
by \[[@&#8203;ergebnis-bot](https://togithub.com/ergebnis-bot)]

##### Fixed

- Updated `composer/composer`
(\[[#&#8203;1171](https://togithub.com/ergebnis/composer-normalize/issues/1171)]),
by \[[@&#8203;localheinz](https://togithub.com/localheinz)]

</details>

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

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

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

</details>

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

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.33...1.10.34)

# Improvements 🔧

- Add support and tests for `$this` type assertions
([#&#8203;2609](https://togithub.com/phpstan/phpstan-src/pull/2609)),
[#&#8203;8904](https://togithub.com/phpstan/phpstan/issues/8904), thanks
[@&#8203;ekisu](https://togithub.com/ekisu)!
- Update [phpstan/phpdoc-parser to
1.24.0](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.24.0)
- Allow asserting the type of `$this`
([phpstan/phpdoc-parser#209),
thanks [@&#8203;ekisu](https://togithub.com/ekisu)!
- Avoid creating an Exception when it is not necessary
([phpstan/phpdoc-parser#208),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Added `--fail-without-result-cache` CLI option
([#&#8203;2611](https://togithub.com/phpstan/phpstan-src/pull/2611)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Make result cache independent from configs include order
([#&#8203;2606](https://togithub.com/phpstan/phpstan-src/pull/2606)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Reduce unnecessary calls into reflection
([#&#8203;2614](https://togithub.com/phpstan/phpstan-src/pull/2614)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Micro-optimize with `in_array()`
([#&#8203;2618](https://togithub.com/phpstan/phpstan-src/pull/2618)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!
- Cover ArgumentsNormalizer with BC promise
(phpstan/phpstan-src@b87db62)
- LastConditionVisitor: condition followed by throw is marked as last
([#&#8203;2405](https://togithub.com/phpstan/phpstan-src/pull/2405)),
thanks [@&#8203;JanTvrdik](https://togithub.com/JanTvrdik)!

# Function signature fixes 🤖

- fix incorrect doc for `inotify_read`
([#&#8203;2605](https://togithub.com/phpstan/phpstan-src/pull/2605)),
thanks [@&#8203;taka-oyama](https://togithub.com/taka-oyama)!

# Internals 🔍

- name-collision-detector
(phpstan/phpstan-src@95cdbe5)

</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/composer-license-checker).

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
oguzhand95 pushed a commit to cerbos/cerbos-sdk-php that referenced this pull request Sep 22, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [phpstan/phpstan](https://togithub.com/phpstan/phpstan) | `1.10.33` ->
`1.10.35` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/phpstan%2fphpstan/1.10.35?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/phpstan%2fphpstan/1.10.35?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/phpstan%2fphpstan/1.10.33/1.10.35?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/phpstan%2fphpstan/1.10.33/1.10.35?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [phpunit/phpunit](https://phpunit.de/)
([source](https://togithub.com/sebastianbergmann/phpunit)) | `10.3.3` ->
`10.3.5` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/phpunit%2fphpunit/10.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/phpunit%2fphpunit/10.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/phpunit%2fphpunit/10.3.3/10.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/phpunit%2fphpunit/10.3.3/10.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.34...1.10.35)

# Major new features 🚀

- Generics: **Type projections aka call-site variance**
([#&#8203;2485](https://togithub.com/phpstan/phpstan-src/pull/2485)),
thanks [@&#8203;jiripudil](https://togithub.com/jiripudil)!
- Learn more:
https://phpstan.org/blog/guide-to-call-site-generic-variance

# Bugfixes 🐛

- Make `value-of<...>` lazier
(phpstan/phpstan-src@234f77d),
[#&#8203;9881](https://togithub.com/phpstan/phpstan/issues/9881)
- Update BetterReflection,
[#&#8203;9877](https://togithub.com/phpstan/phpstan/issues/9877)
- Fix `ReflectionAttribute::newInstance()` with nested class using named
arguments
(ondrejmirtes/BetterReflection@8d751dd),
thanks [@&#8203;enumag](https://togithub.com/enumag)!
- Improve typing of filters that do not accept non-falsy strings
([#&#8203;2620](https://togithub.com/phpstan/phpstan-src/pull/2620)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!

# Internals 🔍

- name-collision-detector 2.0
(phpstan/phpstan-src@c3cb573)
- Remove `phpstan/phpstan-php-parser`
([#&#8203;2632](https://togithub.com/phpstan/phpstan-src/pull/2632)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.33...1.10.34)

# Improvements 🔧

- Add support and tests for `$this` type assertions
([#&#8203;2609](https://togithub.com/phpstan/phpstan-src/pull/2609)),
[#&#8203;8904](https://togithub.com/phpstan/phpstan/issues/8904), thanks
[@&#8203;ekisu](https://togithub.com/ekisu)!
- Update [phpstan/phpdoc-parser to
1.24.0](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.24.0)
- Allow asserting the type of `$this`
([phpstan/phpdoc-parser#209),
thanks [@&#8203;ekisu](https://togithub.com/ekisu)!
- Avoid creating an Exception when it is not necessary
([phpstan/phpdoc-parser#208),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Added `--fail-without-result-cache` CLI option
([#&#8203;2611](https://togithub.com/phpstan/phpstan-src/pull/2611)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Make result cache independent from configs include order
([#&#8203;2606](https://togithub.com/phpstan/phpstan-src/pull/2606)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Reduce unnecessary calls into reflection
([#&#8203;2614](https://togithub.com/phpstan/phpstan-src/pull/2614)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Micro-optimize with `in_array()`
([#&#8203;2618](https://togithub.com/phpstan/phpstan-src/pull/2618)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!
- Cover ArgumentsNormalizer with BC promise
(phpstan/phpstan-src@b87db62)
- LastConditionVisitor: condition followed by throw is marked as last
([#&#8203;2405](https://togithub.com/phpstan/phpstan-src/pull/2405)),
thanks [@&#8203;JanTvrdik](https://togithub.com/JanTvrdik)!

# Function signature fixes 🤖

- fix incorrect doc for `inotify_read`
([#&#8203;2605](https://togithub.com/phpstan/phpstan-src/pull/2605)),
thanks [@&#8203;taka-oyama](https://togithub.com/taka-oyama)!

# Internals 🔍

- name-collision-detector
(phpstan/phpstan-src@95cdbe5)

</details>

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

###
[`v10.3.5`](https://togithub.com/sebastianbergmann/phpunit/compare/10.3.4...10.3.5)

[Compare
Source](https://togithub.com/sebastianbergmann/phpunit/compare/10.3.4...10.3.5)

###
[`v10.3.4`](https://togithub.com/sebastianbergmann/phpunit/compare/10.3.3...10.3.4)

[Compare
Source](https://togithub.com/sebastianbergmann/phpunit/compare/10.3.3...10.3.4)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **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/cerbos/cerbos-sdk-php).

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

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Oğuzhan Durgun <oguzhandurgun95@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
kayman-mk pushed a commit to kayman-mk/blog-tech-at-work that referenced this pull request Oct 26, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [phpstan/phpstan](https://togithub.com/phpstan/phpstan) | `1.9.2` ->
`1.10.39` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/phpstan%2fphpstan/1.10.39?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/phpstan%2fphpstan/1.10.39?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/phpstan%2fphpstan/1.9.2/1.10.39?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/phpstan%2fphpstan/1.9.2/1.10.39?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.38...1.10.39)

# Improvements 🔧

- More information about thrown exception in child process
(https://github.com/phpstan/phpstan-src/commit/d6a576adcdaf3c6d64ccbeb6fcbae7100cc674f4)
- PHPStan Pro - allow overriding `pro.tmpDir` config parameter
(https://github.com/phpstan/phpstan-src/commit/4a952068df57b09e8920de756ab2a6b8a0ffdf10,
https://github.com/phpstan/phpstan-src/commit/7c4ef6b2aa246a31128b035cd07e64ff202ecc2b)
- Optimize memory consumption when doing sha1 file hash
([#&#8203;2680](https://togithub.com/phpstan/phpstan-src/pull/2680)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Optimize memory consumption in ResultCacheManager
([#&#8203;2681](https://togithub.com/phpstan/phpstan-src/pull/2681)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

# Bugfixes 🐛

- Filter right side of `??=` with `=== null`
(https://github.com/phpstan/phpstan-src/commit/f407ac69ba1d967b2258ff2a506f53c8cf0a8e5d)
- Fix possible internal error when analysing code with enums on PHP 7.x
(https://github.com/phpstan/phpstan-src/commit/b9d96266478461696d8db461a15601c7b4654d9a),
[#&#8203;9974](https://togithub.com/phpstan/phpstan/issues/9974)
- NonexistentOffsetInArrayDimFetchRule - do not report errors on
expressions after truthy `isset` check
(https://github.com/phpstan/phpstan-src/commit/6fbd6e48b86b995b7ab118e0575c747fe224165b),
[#&#8203;9991](https://togithub.com/phpstan/phpstan/issues/9991)
- Use real native function name instead of lowercase one
([#&#8203;2673](https://togithub.com/phpstan/phpstan-src/pull/2673)),
[#&#8203;10003](https://togithub.com/phpstan/phpstan/issues/10003),
thanks [@&#8203;fredden](https://togithub.com/fredden)!
- Include property intializations from parent scope for anonymous
functions
([#&#8203;2607](https://togithub.com/phpstan/phpstan-src/pull/2607)),
[#&#8203;9831](https://togithub.com/phpstan/phpstan/issues/9831), thanks
[@&#8203;fabacino](https://togithub.com/fabacino)!
- FileFinder - make list of found files unique
(https://github.com/phpstan/phpstan-src/commit/749126094d4ea84f770251dd41a277a46567b47e)
- Fix internal error with first-class callable in `array_filter`
(https://github.com/phpstan/phpstan-src/commit/0228643a9062c6ceb2eadba4b3f64f8b1a35fea5),
[#&#8203;9994](https://togithub.com/phpstan/phpstan/issues/9994)
- Fix subclass acceptability when class alias is involved on "ours" side
(https://github.com/phpstan/phpstan-src/commit/d5c599c962cadc13acb206b932a8e3a74fc46025),
[#&#8203;10023](https://togithub.com/phpstan/phpstan/issues/10023)

# Function signature fixes 🤖

- Fix incorrect doc for `SQLite3::openBlob`
([#&#8203;2668](https://togithub.com/phpstan/phpstan-src/pull/2668)),
thanks [@&#8203;rodrigoq](https://togithub.com/rodrigoq)!
- Update `number_format` return from `string` to `non-empty-string`
([#&#8203;2678](https://togithub.com/phpstan/phpstan-src/pull/2678)),
thanks [@&#8203;devnix](https://togithub.com/devnix)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.37...1.10.38)

# Improvements 🔧

- Remove function signatures that were removed in PHP 8.0
([#&#8203;2662](https://togithub.com/phpstan/phpstan-src/pull/2662)),
[#&#8203;9954](https://togithub.com/phpstan/phpstan/issues/9954), thanks
[@&#8203;Th3Cod3](https://togithub.com/Th3Cod3)!

# Bugfixes 🐛

-   Update BetterReflection
- Fix for non-backed enums
(https://github.com/ondrejmirtes/BetterReflection/commit/4dd0f2bb17810ab0ee8f2a77c63d6b02f7b6d0d4)
- Do not invalidate types passed by value
(https://github.com/phpstan/phpstan-src/commit/0b8dca74e5345244a955535b54e9874beae76713),
[https://github.com/phpstan/phpstan/discussions/9927](https://togithub.com/phpstan/phpstan/discussions/9927)
- Do not influence types of arguments before the function is called
(https://github.com/phpstan/phpstan-src/commit/c45d42dd1d031016668099957d2b77706f208d67)
- Fixed collapsing of constant arrays
(https://github.com/phpstan/phpstan-src/commit/746de74c5cdd339c9020cfb03784fb39229ed86a),
[#&#8203;9985](https://togithub.com/phpstan/phpstan/issues/9985)

# Internals 🔍

- Lazier type-resolving in `isset` checks
([#&#8203;2664](https://togithub.com/phpstan/phpstan-src/pull/2664)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Refactor to invalidate args inside `processArgs`
(https://github.com/phpstan/phpstan-src/commit/52eb6f8e5f19a41b8a00ca331ba67c7cba8aa952)
- Merge array types a bit later
(https://github.com/phpstan/phpstan-src/commit/adbc35a1c72585df4586131f8e99b882bb64677d)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.36...1.10.37)

# Bugfixes 🐛

- Support array shape covariance when the optional key is missing in the
subtype
([#&#8203;2655](https://togithub.com/phpstan/phpstan-src/pull/2655)),
[#&#8203;9905](https://togithub.com/phpstan/phpstan/issues/9905),
[#&#8203;5655](https://togithub.com/phpstan/phpstan/issues/5655),
[#&#8203;7273](https://togithub.com/phpstan/phpstan/issues/7273), thanks
[@&#8203;staabm](https://togithub.com/staabm)!
- Fix conditional types
([#&#8203;2659](https://togithub.com/phpstan/phpstan-src/pull/2659)),
[#&#8203;9951](https://togithub.com/phpstan/phpstan/issues/9951),
[#&#8203;9963](https://togithub.com/phpstan/phpstan/issues/9963), thanks
[@&#8203;rvanvelzen](https://togithub.com/rvanvelzen)!
- Handle exception thrown from callable object's `__invoke` method
([#&#8203;2502](https://togithub.com/phpstan/phpstan-src/pull/2502)),
[#&#8203;6233](https://togithub.com/phpstan/phpstan/issues/6233), thanks
[@&#8203;VincentLanglet](https://togithub.com/VincentLanglet)!
-   Update BetterReflection
- ReflectionSourceStubber - fix enum as default function parameter value
(https://github.com/ondrejmirtes/BetterReflection/commit/135a394e2fba447a788ac3a36818e4cde8b87ac4),
[https://github.com/nunomaduro/larastan/issues/1749](https://togithub.com/nunomaduro/larastan/issues/1749)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.35...1.10.36)

# Improvements 🔧

- DumpParametersCommand: `--json` option
(https://github.com/phpstan/phpstan-src/commit/91a0002402123b96a08978ba400b5d76d5456693)
- Implement `reportUncheckedExceptionDeadCatch` option (defaults to
`true`)
([#&#8203;2648](https://togithub.com/phpstan/phpstan-src/pull/2648)),
[#&#8203;9921](https://togithub.com/phpstan/phpstan/issues/9921), thanks
[@&#8203;VincentLanglet](https://togithub.com/VincentLanglet)!
- Support union types in `array_chunk()`
([#&#8203;2635](https://togithub.com/phpstan/phpstan-src/pull/2635)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Result cache: Indicate key differences in cache metadata
([#&#8203;2630](https://togithub.com/phpstan/phpstan-src/pull/2630)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Get rid of annoying "on an unknown class ReflectionEnum" error on PHP
< 8.0
(https://github.com/phpstan/phpstan-src/commit/2b9af363a3d2a9620c4b9bfb65e81813b69623d0)

# Bugfixes 🐛

- Fix resolving nested conditional types with union subjects
([#&#8203;2641](https://togithub.com/phpstan/phpstan-src/pull/2641)),
[#&#8203;9860](https://togithub.com/phpstan/phpstan/issues/9860), thanks
[@&#8203;rvanvelzen](https://togithub.com/rvanvelzen)!
- Detect array_rand second parameter
([#&#8203;2633](https://togithub.com/phpstan/phpstan-src/pull/2633)),
[#&#8203;9803](https://togithub.com/phpstan/phpstan/issues/9803), thanks
[@&#8203;staabm](https://togithub.com/staabm)!
- Fix subtracting types from union template types
([#&#8203;2652](https://togithub.com/phpstan/phpstan-src/pull/2652)),
[#&#8203;9939](https://togithub.com/phpstan/phpstan/issues/9939), thanks
[@&#8203;rvanvelzen](https://togithub.com/rvanvelzen)!
- fix infinite cycle due to incorrect implements/extends
([#&#8203;2483](https://togithub.com/phpstan/phpstan-src/pull/2483)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!
- Fix ConstantFloatType value dump precision
([#&#8203;2358](https://togithub.com/phpstan/phpstan-src/pull/2358)),
thanks [@&#8203;mvorisek](https://togithub.com/mvorisek)!
- Do not trigger PhpDocInheritanceResolver if we do not need the PHPDoc
type when resolving the type of ClassConstFetch
([#&#8203;2414](https://togithub.com/phpstan/phpstan-src/pull/2414)),
[#&#8203;9039](https://togithub.com/phpstan/phpstan/issues/9039), thanks
[@&#8203;VincentLanglet](https://togithub.com/VincentLanglet)!

# Function signature fixes 🤖

- `connection_*` functions are impure
([#&#8203;2555](https://togithub.com/phpstan/phpstan-src/pull/2555)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Add stubs for `mysqli` and `mysqli_result` classes
([#&#8203;2295](https://togithub.com/phpstan/phpstan-src/pull/2295)),
thanks [@&#8203;phansys](https://togithub.com/phansys)!

# Internals 🔍

- E2E test about env variables in config parameters
(https://github.com/phpstan/phpstan-src/commit/980ab5bba4de0246587647e8cf6b7abe95697379)
- Prevent unnecessary calls to `getFiniteTypes()`
([#&#8203;2636](https://togithub.com/phpstan/phpstan-src/pull/2636)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Remove unnecessary IO
([#&#8203;2613](https://togithub.com/phpstan/phpstan-src/pull/2613)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Restrict "Merge maintained branch" workflow to the main repository
([#&#8203;2654](https://togithub.com/phpstan/phpstan-src/pull/2654)),
thanks [@&#8203;thg2k](https://togithub.com/thg2k)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.34...1.10.35)

# Major new features 🚀

- Generics: **Type projections aka call-site variance**
([#&#8203;2485](https://togithub.com/phpstan/phpstan-src/pull/2485)),
thanks [@&#8203;jiripudil](https://togithub.com/jiripudil)!
- Learn more:
https://phpstan.org/blog/guide-to-call-site-generic-variance

# Bugfixes 🐛

- Make `value-of<...>` lazier
(https://github.com/phpstan/phpstan-src/commit/234f77d652bf6326be4bf5c25c7aab67145aca71),
[#&#8203;9881](https://togithub.com/phpstan/phpstan/issues/9881)
- Update BetterReflection,
[#&#8203;9877](https://togithub.com/phpstan/phpstan/issues/9877)
- Fix `ReflectionAttribute::newInstance()` with nested class using named
arguments
(https://github.com/ondrejmirtes/BetterReflection/commit/8d751dd38f4d089715e748863d0d8e4113bc408c),
thanks [@&#8203;enumag](https://togithub.com/enumag)!
- Improve typing of filters that do not accept non-falsy strings
([#&#8203;2620](https://togithub.com/phpstan/phpstan-src/pull/2620)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!

# Internals 🔍

- name-collision-detector 2.0
(https://github.com/phpstan/phpstan-src/commit/c3cb573c595bf5cc72471fd8d773aa3b0296b035)
- Remove `phpstan/phpstan-php-parser`
([#&#8203;2632](https://togithub.com/phpstan/phpstan-src/pull/2632)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.33...1.10.34)

# Improvements 🔧

- Add support and tests for `$this` type assertions
([#&#8203;2609](https://togithub.com/phpstan/phpstan-src/pull/2609)),
[#&#8203;8904](https://togithub.com/phpstan/phpstan/issues/8904), thanks
[@&#8203;ekisu](https://togithub.com/ekisu)!
- Update [phpstan/phpdoc-parser to
1.24.0](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.24.0)
- Allow asserting the type of `$this`
([https://github.com/phpstan/phpdoc-parser/pull/209](https://togithub.com/phpstan/phpdoc-parser/pull/209)),
thanks [@&#8203;ekisu](https://togithub.com/ekisu)!
- Avoid creating an Exception when it is not necessary
([https://github.com/phpstan/phpdoc-parser/pull/208](https://togithub.com/phpstan/phpdoc-parser/pull/208)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Added `--fail-without-result-cache` CLI option
([#&#8203;2611](https://togithub.com/phpstan/phpstan-src/pull/2611)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Make result cache independent from configs include order
([#&#8203;2606](https://togithub.com/phpstan/phpstan-src/pull/2606)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Reduce unnecessary calls into reflection
([#&#8203;2614](https://togithub.com/phpstan/phpstan-src/pull/2614)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Micro-optimize with `in_array()`
([#&#8203;2618](https://togithub.com/phpstan/phpstan-src/pull/2618)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!
- Cover ArgumentsNormalizer with BC promise
(https://github.com/phpstan/phpstan-src/commit/b87db6233f08414e176f02ba2dcf08414cb1d83d)
- LastConditionVisitor: condition followed by throw is marked as last
([#&#8203;2405](https://togithub.com/phpstan/phpstan-src/pull/2405)),
thanks [@&#8203;JanTvrdik](https://togithub.com/JanTvrdik)!

# Function signature fixes 🤖

- fix incorrect doc for `inotify_read`
([#&#8203;2605](https://togithub.com/phpstan/phpstan-src/pull/2605)),
thanks [@&#8203;taka-oyama](https://togithub.com/taka-oyama)!

# Internals 🔍

- name-collision-detector
(https://github.com/phpstan/phpstan-src/commit/95cdbe577513286c36dcf513fe76f269e8a32125)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.32...1.10.33)

# Improvements 🔧

- Support for referencing environment variables in the config
([#&#8203;2559](https://togithub.com/phpstan/phpstan-src/pull/2559)),
[#&#8203;1918](https://togithub.com/phpstan/phpstan/issues/1918)
- Made parent class reflection resolving lazier
([#&#8203;2584](https://togithub.com/phpstan/phpstan-src/pull/2584)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- FileTypeMapper - optimization of type aliases
(https://github.com/phpstan/phpstan-src/commit/2be81ac1cffa02da2bd0e3b52961cd3d528f2325)
- Use NonAcceptingNeverType in more places
(https://github.com/phpstan/phpstan-src/commit/3e03e9d7c15fdf64e6d55539a6c3045b3b8c6604)
- MethodCall: mark virtual nullsafe call with attribute
([#&#8203;2598](https://togithub.com/phpstan/phpstan-src/pull/2598)),
[#&#8203;9830](https://togithub.com/phpstan/phpstan/issues/9830), thanks
[@&#8203;janedbal](https://togithub.com/janedbal)!

# Bugfixes 🐛

- Fix `checkBenevolentUnionTypes: true` along with `@template` with
`array-key` bound
([#&#8203;2587](https://togithub.com/phpstan/phpstan-src/pull/2587)),
[#&#8203;9766](https://togithub.com/phpstan/phpstan/issues/9766), thanks
[@&#8203;VincentLanglet](https://togithub.com/VincentLanglet)!
- Fix type inference of `array_sum()`
([#&#8203;2591](https://togithub.com/phpstan/phpstan-src/pull/2591)),
[#&#8203;9808](https://togithub.com/phpstan/phpstan/issues/9808), thanks
[@&#8203;zer0-star](https://togithub.com/zer0-star)!
- Update Symfony polyfills
(https://github.com/phpstan/phpstan-src/commit/dfcaa3082c975b13847ff9de5e55438ce7b65fc4),
[#&#8203;8538](https://togithub.com/phpstan/phpstan/issues/8538)

# Function signature fixes 🤖

- More precise `inotify` related function signatures
([#&#8203;2599](https://togithub.com/phpstan/phpstan-src/pull/2599)),
thanks [@&#8203;thg2k](https://togithub.com/thg2k)!

# Internals 🔍

- Prevent most `$parentPhpDocBlock->getClassReflection()->isBuiltin()`
calls
([#&#8203;2585](https://togithub.com/phpstan/phpstan-src/pull/2585)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- micro: use `spl_object_id()`
([#&#8203;2592](https://togithub.com/phpstan/phpstan-src/pull/2592)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Update `nette/di`
([#&#8203;2597](https://togithub.com/phpstan/phpstan-src/pull/2597))

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.31...1.10.32)

# Improvements 🔧

- Optimize FileTypeMapper for huge PHPDocs
([#&#8203;2582](https://togithub.com/phpstan/phpstan-src/pull/2582)),
[#&#8203;9498](https://togithub.com/phpstan/phpstan/issues/9498)
- This fixes performance issue for projects that use Carbon
(`nesbot/carbon`)
- Optimize DumpParametersCommand
(https://github.com/phpstan/phpstan-src/commit/379008a6a632e6e657ad920147a87772c41438e1)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.30...1.10.31)

# Improvements 🔧

- Cache OptimizedDirectorySourceLocator data for faster subsequent runs
and less work needed by child processes
(https://github.com/phpstan/phpstan-src/commit/b66210f114f695a23d62f884615874cf5f7c6bab)
- `NonAcceptingNeverType`
([#&#8203;2540](https://togithub.com/phpstan/phpstan-src/pull/2540)),
[#&#8203;9133](https://togithub.com/phpstan/phpstan/issues/9133),
[#&#8203;6485](https://togithub.com/phpstan/phpstan/issues/6485), thanks
[@&#8203;jiripudil](https://togithub.com/jiripudil)!
- ClearResultCacheCommand - `--xdebug` option
(https://github.com/phpstan/phpstan-src/commit/3befb53be3acb9c6807d1ac0834eafb399762440)

# Internals 🔍

- Do not pass a fake path to analyse in ClearResultCacheCommand; check
paths count later when asking for files
(https://github.com/phpstan/phpstan-src/commit/4e37a2d78baed28974f140775bcc7f5cba62cf6b)
- FileCacheStorage - reference cache key in a comment
(https://github.com/phpstan/phpstan-src/commit/0fbf0eed7ba63bdae6a8ce7ef33a96bd12236b45)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.29...1.10.30)

# Improvements 🔧

- NotAnalysedTraitRule - do not report for analysis of files-only paths
(https://github.com/phpstan/phpstan-src/commit/5f59d58b62ba130aaeedd7d804f3d0bb2b19e4fd)

# Bugfixes 🐛

- Fix several issues with nullsafe type specification
([#&#8203;2577](https://togithub.com/phpstan/phpstan-src/pull/2577)),
[#&#8203;9105](https://togithub.com/phpstan/phpstan/issues/9105),
[#&#8203;5172](https://togithub.com/phpstan/phpstan/issues/5172),
[#&#8203;8517](https://togithub.com/phpstan/phpstan/issues/8517),
[#&#8203;7980](https://togithub.com/phpstan/phpstan/issues/7980),
[#&#8203;8664](https://togithub.com/phpstan/phpstan/issues/8664),
[#&#8203;9293](https://togithub.com/phpstan/phpstan/issues/9293), thanks
[@&#8203;schlndh](https://togithub.com/schlndh)!
- Do not report unused class elements if the element is used on an
uncertain type like `mixed`
(https://github.com/phpstan/phpstan-src/commit/cbdb30d596d44cd00361989df72cb15f33f26109),
[#&#8203;9765](https://togithub.com/phpstan/phpstan/issues/9765)
- ConditionalTagsExtension: add missing tags
([#&#8203;2574](https://togithub.com/phpstan/phpstan-src/pull/2574)),
thanks [@&#8203;janedbal](https://togithub.com/janedbal)!
- CleaningVisitor - keep closures and arrow functions
(https://github.com/phpstan/phpstan-src/commit/0501aaf259f16cd1bd27e2a6ec2d8b1de5af5edf),
[#&#8203;9776](https://togithub.com/phpstan/phpstan/issues/9776)
- Fix baseline for access to uninitialized property from trait
([#&#8203;2568](https://togithub.com/phpstan/phpstan-src/pull/2568)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!
- Fix generalizing types in loops
(https://github.com/phpstan/phpstan-src/commit/c09be9ec0e8ca6b448da52ee5320417bc692adf9),
[#&#8203;9753](https://togithub.com/phpstan/phpstan/issues/9753)
- Fix foreach scope when iterating non-array and
`polluteScopeWithAlwaysIterableForeach` is `true`
(https://github.com/phpstan/phpstan-src/commit/853a1e693eb18b9c1eef87f264c90b4d446db710),
[#&#8203;9784](https://togithub.com/phpstan/phpstan/issues/9784)

# Internals 🔍

- Issue bot - special NotAnalysedTraitRule that runs even with
`onlyFiles=true`
(https://github.com/phpstan/phpstan-src/commit/6c941aecbfd47dd09315d995821eb904288f04c1)
- Ability to disable `implicitThrows` in tests
([#&#8203;2576](https://togithub.com/phpstan/phpstan-src/pull/2576)),
thanks [@&#8203;janedbal](https://togithub.com/janedbal)!
- Rename duplicate symbols
(https://github.com/phpstan/phpstan-src/commit/21717178796e2081d3c4275e6cc54821cfcdcba6)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.28...1.10.29)

# Improvements 🔧

-   Update nikic/php-parser to v4.17.1
- PHP 8.3 features are no longer parse errors. Full-fledged PHP 8.3
support is coming later this year.
-   Update BetterReflection to 6.12.0

# Bugfixes 🐛

- PHPStan Pro - when launching, `PHP_BINARY` needs to be escaped
(https://github.com/phpstan/phpstan-src/commit/2c7cfd8b82beb355c1125524049cf6d16495e067)

# Function signature fixes 🤖

- Fix FTP-related function signatures
([#&#8203;2551](https://togithub.com/phpstan/phpstan-src/pull/2551)),
thanks [@&#8203;thg2k](https://togithub.com/thg2k)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.27...1.10.28)

# Improvements 🔧

- Update BetterReflection to 6.12.0
(https://github.com/phpstan/phpstan-src/commit/7c49c944c7a40a2065f27d2ba94eb90f0f2fc22d)

# Bugfixes 🐛

- Nullsafe operator on `null` results in `null`
(https://github.com/phpstan/phpstan-src/commit/5c40c853ff91d518dea2afee9449ef58d8479314),
[#&#8203;9721](https://togithub.com/phpstan/phpstan/issues/9721)
- Properties set in the native constructor are initialized in additional
constructors
(https://github.com/phpstan/phpstan-src/commit/1b0c6a0166e6e5199407377d124cfe5cdac74b87),
[#&#8203;9619](https://togithub.com/phpstan/phpstan/issues/9619)
- Fix performance problem with nested BooleanOr and BooleanAnd
(https://github.com/phpstan/phpstan-src/commit/9adae6c4f8c4797c8e60353430ba9a66dc897bb7),
[#&#8203;9690](https://togithub.com/phpstan/phpstan/issues/9690),
[#&#8203;9676](https://togithub.com/phpstan/phpstan/issues/9676)
- CallableTypeHelper - copy variadic parameters if the accepting closure
has more parameters
(https://github.com/phpstan/phpstan-src/commit/31ed326fb113238df762bf9237da50e4613bde32),
[#&#8203;9699](https://togithub.com/phpstan/phpstan/issues/9699)

# Internals 🔍

- Simplify access to ClassReflection in ClassPropertyNode
([#&#8203;2565](https://togithub.com/phpstan/phpstan-src/pull/2565)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.26...1.10.27)

# Bleeding edge 🔪

- More precise `stream_socket_client()` signature
([#&#8203;2519](https://togithub.com/phpstan/phpstan-src/pull/2519)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- More precise `scandir()` signature
([#&#8203;2518](https://togithub.com/phpstan/phpstan-src/pull/2518)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- More precise `extract()` signature
([#&#8203;2517](https://togithub.com/phpstan/phpstan-src/pull/2517)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

*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 🔧

- Report trait access to unititialized property in the trait instead of
class
([#&#8203;2531](https://togithub.com/phpstan/phpstan-src/pull/2531)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!
- Type projections, part 2: enforce elementary rules
([#&#8203;2481](https://togithub.com/phpstan/phpstan-src/pull/2481)),
thanks [@&#8203;jiripudil](https://togithub.com/jiripudil)!
- Unify ignoring lines in traits with parser tokens
(https://github.com/phpstan/phpstan-src/commit/01294d86b811444b72d7c67c5e75f115daddbd13),
[#&#8203;6175](https://togithub.com/phpstan/phpstan/issues/6175)

# Bugfixes 🐛

- Fix json method exception
([#&#8203;2524](https://togithub.com/phpstan/phpstan-src/pull/2524)),
[#&#8203;9568](https://togithub.com/phpstan/phpstan/issues/9568), thanks
[@&#8203;VincentLanglet](https://togithub.com/VincentLanglet)!
- Support of printf with dynamic width
([#&#8203;2543](https://togithub.com/phpstan/phpstan-src/pull/2543)),
[#&#8203;9674](https://togithub.com/phpstan/phpstan/issues/9674), thanks
[@&#8203;kukulich](https://togithub.com/kukulich)!
- Support of printf with dynamic precision (and improved support of
dynamic width)
([#&#8203;2544](https://togithub.com/phpstan/phpstan-src/pull/2544)),
[#&#8203;9677](https://togithub.com/phpstan/phpstan/issues/9677), thanks
[@&#8203;kukulich](https://togithub.com/kukulich)!
- Fix types for conditional parameters after checks
([#&#8203;2548](https://togithub.com/phpstan/phpstan-src/pull/2548)),
[#&#8203;7915](https://togithub.com/phpstan/phpstan/issues/7915), thanks
[@&#8203;rvanvelzen](https://togithub.com/rvanvelzen)!
- Prevent `Call to end() on null`
(https://github.com/phpstan/phpstan-src/commit/a5e5719bcbe3385f2bac77704e7da850da766a01),
[#&#8203;9722](https://togithub.com/phpstan/phpstan/issues/9722)
- Fix internal error in SimpleXMLElementConstructorThrowTypeExtension
([#&#8203;2561](https://togithub.com/phpstan/phpstan-src/pull/2561)),
[#&#8203;9716](https://togithub.com/phpstan/phpstan/issues/9716), thanks
[@&#8203;staabm](https://togithub.com/staabm)!
- Method extensions class name is case-insensitive
([#&#8203;2562](https://togithub.com/phpstan/phpstan-src/pull/2562)),
[#&#8203;9716](https://togithub.com/phpstan/phpstan/issues/9716), thanks
[@&#8203;staabm](https://togithub.com/staabm)!
- InArrayFunctionTypeSpecifyingExtension - fix calls with less than 2
parameters
(https://github.com/phpstan/phpstan-src/commit/4d77e98e151599d12fd828df969929ed419a0924),
[#&#8203;9711](https://togithub.com/phpstan/phpstan/issues/9711)

# Function signature fixes 🤖

- `uopz_flags` - flags are optional
(https://github.com/phpstan/phpstan-src/commit/917750efd8550446492e91ca3069179416fa80f1),
[#&#8203;9611](https://togithub.com/phpstan/phpstan/issues/9611)
- Add `base64_decode` overloads to PHP 8+
([#&#8203;2529](https://togithub.com/phpstan/phpstan-src/pull/2529)),
[#&#8203;9428](https://togithub.com/phpstan/phpstan/issues/9428), thanks
[@&#8203;dktapps](https://togithub.com/dktapps)!
- Mark few Ds methods as impure
([#&#8203;2550](https://togithub.com/phpstan/phpstan-src/pull/2550)),
thanks [@&#8203;simPod](https://togithub.com/simPod)!

# Internals 🔍

- Avoid doing work before its necessary in mutating scope.
([#&#8203;2537](https://togithub.com/phpstan/phpstan-src/pull/2537)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Changed `linesToIgnore` attribute format
(https://github.com/phpstan/phpstan-src/commit/2862a7bf7927a7e76771b71f43206d01dfc5d6ef)
- Prevent unnecessary work in MutatingScope
([#&#8203;2554](https://togithub.com/phpstan/phpstan-src/pull/2554)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Validate parameters with parametersSchema each time after container
creation
([#&#8203;2558](https://togithub.com/phpstan/phpstan-src/pull/2558))

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.25...1.10.26)

# Improvements 🔧

- More precise return type for trigger_error
([#&#8203;2526](https://togithub.com/phpstan/phpstan-src/pull/2526)),
thanks [@&#8203;paulbalandan](https://togithub.com/paulbalandan)!

# Bugfixes 🐛

- Fix filtering default stub files on Windows
([#&#8203;2406](https://togithub.com/phpstan/phpstan-src/pull/2406)),
thanks [@&#8203;maryo](https://togithub.com/maryo)!
- FileHelper absolutize and normalize: Fix path with scheme
([#&#8203;2506](https://togithub.com/phpstan/phpstan-src/pull/2506)),
thanks [@&#8203;mvorisek](https://togithub.com/mvorisek)!
- Fix `array_keys()` and \`array_values()\`\` on constant arrays
([#&#8203;2516](https://togithub.com/phpstan/phpstan-src/pull/2516)),
thanks [@&#8203;jlherren](https://togithub.com/jlherren)!
- Fix access to uninitialized property via extension in additional
constructor
(https://github.com/phpstan/phpstan-src/commit/218aad0804bebd8f0ad60eea69afb24d8fa4ca48),
[#&#8203;9619](https://togithub.com/phpstan/phpstan/issues/9619)
- Fix result cache bug with imported type aliases
(https://github.com/phpstan/phpstan-src/commit/553c4b141b62244f629b22fe7e8054196cd73a58),
[#&#8203;9622](https://togithub.com/phpstan/phpstan/issues/9622)
- Fix result cache bug with imported type aliases in a trait
(https://github.com/phpstan/phpstan-src/commit/d8071d0904e4b06a814a0b8b8d7f343d72db0633)
- Fix PHP 8.3 deprecation (`$foo--` with a non-numeric string no longer
allowed)
(https://github.com/phpstan/phpstan-src/commit/c6f4c4ceb7d7355ef761a6ffaa1b1574469789c6)
- Array shape with optional keys might be a list
(https://github.com/phpstan/phpstan-src/commit/97f0039fe568eec83607861c36718e8f79c481ff)
- ArrayMapFunctionReturnTypeExtension - preserve array being a list
(https://github.com/phpstan/phpstan-src/commit/d55c4f2c207a6a07712cff2cdaba670fee950258)

# Function signature fixes 🤖

- More precise `ftp_*` mode parameter type
([#&#8203;2513](https://togithub.com/phpstan/phpstan-src/pull/2513)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Fix signature of `DOMNode::lookupNamespaceURI`
([#&#8203;2527](https://togithub.com/phpstan/phpstan-src/pull/2527)),
thanks [@&#8203;paulbalandan](https://togithub.com/paulbalandan)!

# Internals 🔍

- Simplify access to class reflections in InClassNode rules
([#&#8203;2514](https://togithub.com/phpstan/phpstan-src/pull/2514)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Simplify access to class reflections in ClassPropertiesNode
([#&#8203;2520](https://togithub.com/phpstan/phpstan-src/pull/2520)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Simplify access to function reflection in FunctionReturnStatementsNode
rules
([#&#8203;2522](https://togithub.com/phpstan/phpstan-src/pull/2522)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Set class and method reflection in the MethodReturnStatementNode
([#&#8203;2515](https://togithub.com/phpstan/phpstan-src/pull/2515)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Simplify access to class reflections in ClassConstantsNode and
ClassMethodsNode rules
([#&#8203;2521](https://togithub.com/phpstan/phpstan-src/pull/2521)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Introduce InTraitNode
(https://github.com/phpstan/phpstan-src/commit/657fc54b7d358622b791828f94a6a6d9d0f8207c)
- TrinaryLogic for `isList` in ConstantArrayType
(https://github.com/phpstan/phpstan-src/commit/158c61c6777acb416fb5ff243916c1483b0f220a,
https://github.com/phpstan/phpstan-src/commit/f0a9fd796e1b1d023affdb7fb4ffd344d79becd4)
- Add polyfill for PHP 8.1
(https://github.com/phpstan/phpstan-src/commit/a8818be2f31d2bc33ac6ccb3c3f221248e70a514,
https://github.com/phpstan/phpstan-src/commit/cda7e69587a3d46afe098bf7657af364f3980356)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.24...1.10.25)

# Improvements 🔧

- Understand that promoted property can come from renamed trait
constructor
(https://github.com/phpstan/phpstan-src/commit/eafba2e09164846a010dc29e65bbc49c814941ae)
- Understand that methods called from constructor throwing exception
cannot leave object in an uninitializad state
(https://github.com/phpstan/phpstan-src/commit/f4d060b6888c8ef4469e99becfd23eb64c40da89)

# Bugfixes 🐛

- Allow promoted properties in trait `__construct` even when renamed
(https://github.com/phpstan/phpstan-src/commit/4dd3f753b1438c30e9ee882a3f2b4632b1a8cecc),
[#&#8203;9577](https://togithub.com/phpstan/phpstan/issues/9577)
- IllegalConstructorStaticCallRule - fix for renamed trait constructor
(https://github.com/phpstan/phpstan-src/commit/65330d3be77c4c7e28a2eb51b19850f8895c147a),
[#&#8203;9577](https://togithub.com/phpstan/phpstan/issues/9577)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.23...1.10.24)

# Improvements 🔧

- Evaluate uninitialized properties based on each execution end in
constructor
(https://github.com/phpstan/phpstan-src/commit/b2d2a9d08df092e78fa0cd652e158e13f2e63a7d),
[#&#8203;7649](https://togithub.com/phpstan/phpstan/issues/7649)
- ConstructorReturnTypeRule
(https://github.com/phpstan/phpstan-src/commit/2ebbb5303aad6b757c65ca6f12cafebed79bed83)

# Bugfixes 🐛

- Fix `processCalledMethod` when anonymous classes are involved
(https://github.com/phpstan/phpstan-src/commit/3f5277975a4c625b0fd6a29ea256a672d0bb77fa)
- Do not require return type for renamed trait constructor
(https://github.com/phpstan/phpstan-src/commit/f6ca9c88d66af8d272e4baec19dbd63a0ec54a5f),
[#&#8203;9571](https://togithub.com/phpstan/phpstan/issues/9571)
- FileTypeMapper - fix PHPDocs for renamed trait methods
(https://github.com/phpstan/phpstan-src/commit/0bd48b4ae0f397de435ba657f7a36284d90ef2dd),
[#&#8203;9571](https://togithub.com/phpstan/phpstan/issues/9571),
[#&#8203;6856](https://togithub.com/phpstan/phpstan/issues/6856)
- Register `json_validate` stub only on PHP 8.3+
(https://github.com/phpstan/phpstan-src/commit/8f8c1af790395a07eb46016ec20f20485bc42c66),
[#&#8203;9574](https://togithub.com/phpstan/phpstan/issues/9574)

# Function signature fixes 🤖

- More precise `session_status()` return type
([#&#8203;2509](https://togithub.com/phpstan/phpstan-src/pull/2509)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.22...1.10.23)

# Improvements 🔧

- Fix false positives and false negatives about uninitialized properties
(https://github.com/phpstan/phpstan-src/commit/348debc5c3b38c5f40448bae63d76cc99a6baea8),
[#&#8203;7198](https://togithub.com/phpstan/phpstan/issues/7198)
- This leads to uninitialized properties being detected in more places
- Lazy initialization of `AnalyserResult::$errors`
([#&#8203;2400](https://togithub.com/phpstan/phpstan-src/pull/2400)),
thanks [@&#8203;takaram](https://togithub.com/takaram)!
- Check additional assign of promoted readonly property
(https://github.com/phpstan/phpstan-src/commit/8fe4401489c58da040889ed18bffda10ba89f05c)

# Bugfixes 🐛

- Fix readonly property assigned in if-else
(https://github.com/phpstan/phpstan-src/commit/ce3c1641926e8abf7ce6dca055717e1657deb792),
[#&#8203;6402](https://togithub.com/phpstan/phpstan/issues/6402)
- Fix ConstantArrayTypeBuilder's isList flag
([#&#8203;2408](https://togithub.com/phpstan/phpstan-src/pull/2408)),
thanks [@&#8203;jlherren](https://togithub.com/jlherren)!
- TypeSpecifier - handle AlwaysRememberedExpr in handling Identical
(https://github.com/phpstan/phpstan-src/commit/a769a1c90c7d9b051e42225104dbc3c83768a553),
[#&#8203;9499](https://togithub.com/phpstan/phpstan/issues/9499)
- Fix processing traits with renamed methods
(https://github.com/phpstan/phpstan-src/commit/c6035f3ca1511332c9fec762135a24f5963dee06),
[#&#8203;7198](https://togithub.com/phpstan/phpstan/issues/7198),
[#&#8203;6039](https://togithub.com/phpstan/phpstan/issues/6039),
[#&#8203;4758](https://togithub.com/phpstan/phpstan/issues/4758)

# Function signature fixes 🤖

- Allow `null` in `mysqli*real_connect` arguments
([#&#8203;2508](https://togithub.com/phpstan/phpstan-src/pull/2508)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

# Internals 🔍

- Cheap checks first in IgnoredRegexValidator
([#&#8203;2505](https://togithub.com/phpstan/phpstan-src/pull/2505)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Do not use `instanceof ThisType` as it can be unreliable in case of
intersection types
(https://github.com/phpstan/phpstan-src/commit/79359450f36c073fa8444a7e87c0e29867f6b4c1)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.21...1.10.22)

# Bleeding edge 🔪

- More precise `file()` flags args
([#&#8203;2476](https://togithub.com/phpstan/phpstan-src/pull/2476),
[#&#8203;2482](https://togithub.com/phpstan/phpstan-src/pull/2482)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Non-static methods cannot be used as static callables in PHP 8+
([#&#8203;2420](https://togithub.com/phpstan/phpstan-src/pull/2420)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- More precise `flock()` operation flags
([#&#8203;2477](https://togithub.com/phpstan/phpstan-src/pull/2477)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Rule for `call_user_func()`
([#&#8203;2479](https://togithub.com/phpstan/phpstan-src/pull/2479)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

*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 🔧

- Add return type extension for `constant()`
([#&#8203;2474](https://togithub.com/phpstan/phpstan-src/pull/2474)),
thanks [@&#8203;herndlm](https://togithub.com/herndlm)!
- Dynamic `assert()` throw type extension
([#&#8203;2427](https://togithub.com/phpstan/phpstan-src/pull/2427)),
thanks
[@&#8203;patrickkusebauch](https://togithub.com/patrickkusebauch)!
- Update nikic/PHP-Parser
(https://github.com/phpstan/phpstan-src/commit/79b3034acf926b23ec3bcfed1ad36ea375f01981)
- PHP 8.3: `json_validate()` stub
(https://github.com/phpstan/phpstan-src/commit/828b269c0dccda404e33a5cca1ac4be1998e18ba),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Implement `call_user_func()` DynamicFunctionReturnTypeExtension
([#&#8203;2479](https://togithub.com/phpstan/phpstan-src/pull/2479)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

# Bugfixes 🐛

- Add support for math with constant numeric string
([#&#8203;2209](https://togithub.com/phpstan/phpstan-src/pull/2209)),
[#&#8203;8803](https://togithub.com/phpstan/phpstan/issues/8803),
[#&#8203;8827](https://togithub.com/phpstan/phpstan/issues/8827), thanks
[@&#8203;VincentLanglet](https://togithub.com/VincentLanglet)!
- Use case insensitive matching to detect usages of private methods
([#&#8203;2484](https://togithub.com/phpstan/phpstan-src/pull/2484)),
[#&#8203;8346](https://togithub.com/phpstan/phpstan/issues/8346), thanks
[@&#8203;stof](https://togithub.com/stof)!
- fix array_splice with non-array replacement
([#&#8203;2457](https://togithub.com/phpstan/phpstan-src/pull/2457)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!
- Resolve key and value type of partially non-iterable types when
entering foreach
(https://github.com/phpstan/phpstan-src/commit/cb5a2b4575bee005c33fcbdc3748abc160cbda14),
[#&#8203;9535](https://togithub.com/phpstan/phpstan/issues/9535),
[#&#8203;4907](https://togithub.com/phpstan/phpstan/issues/4907),
[#&#8203;8924](https://togithub.com/phpstan/phpstan/issues/8924),
[#&#8203;5998](https://togithub.com/phpstan/phpstan/issues/5998)
- Foreach can append to the array but it does not change the number of
iterations
(https://github.com/phpstan/phpstan-src/commit/27085c5516f6864d73e660d6e897a1466c4169a6),
[#&#8203;4612](https://togithub.com/phpstan/phpstan/issues/4612)
- MutatingScope - process left side of BooleanAnd and BooleanOr before
getting type of the whole expression
(https://github.com/phpstan/phpstan-src/commit/989dd6fab8b0bf66777e20c533c90c7841d05c3a),
[#&#8203;5365](https://togithub.com/phpstan/phpstan/issues/5365),
[#&#8203;6551](https://togithub.com/phpstan/phpstan/issues/6551),
[#&#8203;7491](https://togithub.com/phpstan/phpstan/issues/7491),
[#&#8203;4004](https://togithub.com/phpstan/phpstan/issues/4004),
[#&#8203;2499](https://togithub.com/phpstan/phpstan/issues/2499)
- MutatingScope - process ternary cond before getting type of the whole
expression
(https://github.com/phpstan/phpstan-src/commit/faba80560516dc2780ff014f36171e806a7b19c2)
- Fix processing switch with complex case conditions
(https://github.com/phpstan/phpstan-src/commit/f6b34f2ac86d2830f53ba51601067232ea1bf6d6),
[#&#8203;5326](https://togithub.com/phpstan/phpstan/issues/5326)
- Fix ClassConstFetch Identical specification with Yoda conditions
([#&#8203;2498](https://togithub.com/phpstan/phpstan-src/pull/2498)),
[#&#8203;9542](https://togithub.com/phpstan/phpstan/issues/9542), thanks
[@&#8203;herndlm](https://togithub.com/herndlm)!

# Function signature fixes 🤖

- Update functionMap for ext-mongodb 1.16
([#&#8203;2473](https://togithub.com/phpstan/phpstan-src/pull/2473)),
thanks [@&#8203;alcaeus](https://togithub.com/alcaeus)!
- Add false to the `db2_num_rows()` return type
([#&#8203;2456](https://togithub.com/phpstan/phpstan-src/pull/2456)),
thanks [@&#8203;morozov](https://togithub.com/morozov)!
- More precise `ignore_user_abort()` return type
([#&#8203;2489](https://togithub.com/phpstan/phpstan-src/pull/2489)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

# Internals 🔍

- Type projections, part 1: call-site variance in GenericObjectType
([#&#8203;2471](https://togithub.com/phpstan/phpstan-src/pull/2471)),
thanks [@&#8203;jiripudil](https://togithub.com/jiripudil)!
- Test PHP 8.3
([#&#8203;2486](https://togithub.com/phpstan/phpstan-src/pull/2486))
- Cleanup NodeScopeResolver
([#&#8203;2499](https://togithub.com/phpstan/phpstan-src/pull/2499)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.20...1.10.21)

# Bugfixes 🐛

- Fix defining variables in match condition
(https://github.com/phpstan/phpstan-src/commit/d6c2752b4edf145120d7b0ac7908828fde2289e8),
[#&#8203;9474](https://togithub.com/phpstan/phpstan/issues/9474)
- Fix UnusedClosureUsesRule for already traversed match
(https://github.com/phpstan/phpstan-src/commit/a7194865487069a0c718227e5a39cd6eab32b8ea),
[https://github.com/phpstan/phpstan-phpunit/issues/190](https://togithub.com/phpstan/phpstan-phpunit/issues/190),
[#&#8203;9478](https://togithub.com/phpstan/phpstan/issues/9478)
- Update BetterReflection
(https://github.com/phpstan/phpstan-src/commit/a540e44a3649f722464488db3b786c5c894c1775),
[#&#8203;9477](https://togithub.com/phpstan/phpstan/issues/9477)
- Fix newInstance on ReflectionAttribute adapter with enum argument
(https://github.com/ondrejmirtes/BetterReflection/commit/277b96077b3c15c12605d876be1b87dd1a88b6f8)

# Internals 🔍

- Cheap checks first in ObjectType
([#&#8203;2475](https://togithub.com/phpstan/phpstan-src/pull/2475)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.19...1.10.20)

# Improvements 🔧

- PHPStan Pro: Change Cloudflare DNS for to family version
([#&#8203;2467](https://togithub.com/phpstan/phpstan-src/pull/2467)),
thanks [@&#8203;spaze](https://togithub.com/spaze)!
- Add `non-zero-int` type
([#&#8203;2449](https://togithub.com/phpstan/phpstan-src/pull/2449)),
thanks [@&#8203;PrinsFrank](https://togithub.com/PrinsFrank)!
- Implement `gettype()` return type extension
([#&#8203;2437](https://togithub.com/phpstan/phpstan-src/pull/2437)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

# Bugfixes 🐛

- Allow to remember constant and impure expressions in `match` condition
(https://github.com/phpstan/phpstan-src/commit/0cdda0b210a623ee299323da80771c2c84c602f9),
[#&#8203;4451](https://togithub.com/phpstan/phpstan/issues/4451),
[#&#8203;6064](https://togithub.com/phpstan/phpstan/issues/6064),
[#&#8203;9457](https://togithub.com/phpstan/phpstan/issues/9457)
- Fix `gettype` in `match` condition
(https://github.com/phpstan/phpstan-src/commit/e4ef00c0573daea5e83199d182e35ea988a7d95b,
https://github.com/phpstan/phpstan-src/commit/caa0a5b5247b2ff58c56b543aa3cb286b00ffde7),
[#&#8203;8614](https://togithub.com/phpstan/phpstan/issues/8614)
- Fix `get_class` in `match` condition
(https://github.com/phpstan/phpstan-src/commit/106526db8bd64880af81faa61d9f970e793e3c38),
[#&#8203;1885](https://togithub.com/phpstan/phpstan/issues/1885),
[#&#8203;8536](https://togithub.com/phpstan/phpstan/issues/8536),
[#&#8203;8092](https://togithub.com/phpstan/phpstan/issues/8092)
- Understand `get_class` compared with `static::class`
(https://github.com/phpstan/phpstan-src/commit/590eb03e0ce2b5b02562ee9bb0af803fcbb1dc95),
[#&#8203;1885](https://togithub.com/phpstan/phpstan/issues/1885)
- Understand `gettype` when there's a union of strings on the other side
(https://github.com/phpstan/phpstan-src/commit/36e412ffed0ab6f4220c58276b06041a7a487db3),
[#&#8203;6294](https://togithub.com/phpstan/phpstan/issues/6294),
[#&#8203;2580](https://togithub.com/phpstan/phpstan/issues/2580)
- Treat ConstantArrayType as covariant in its keys and values
([#&#8203;2464](https://togithub.com/phpstan/phpstan-src/pull/2464)),
[#&#8203;9161](https://togithub.com/phpstan/phpstan/issues/9161), thanks
[@&#8203;jiripudil](https://togithub.com/jiripudil)!
- Treat ArrayType as covariant in its keys and values
([#&#8203;2465](https://togithub.com/phpstan/phpstan-src/pull/2465)),
thanks [@&#8203;jiripudil](https://togithub.com/jiripudil)!
- Make `NonEmptyArrayType::toArray()` return `$this`
([#&#8203;2349](https://togithub.com/phpstan/phpstan-src/pull/2349)),
[#&#8203;9208](https://togithub.com/phpstan/phpstan/issues/9208), thanks
[@&#8203;zonuexe](https://togithub.com/zonuexe)!
- Retain list type via `array_push()` and `array_unshift()`
([#&#8203;2451](https://togithub.com/phpstan/phpstan-src/pull/2451)),
[#&#8203;8449](https://togithub.com/phpstan/phpstan/issues/8449), thanks
[@&#8203;herndlm](https://togithub.com/herndlm)!
- For `@var` above throw and return, change the type of expr only for
the stmt callback
(https://github.com/phpstan/phpstan-src/commit/b55109537dd62ac0e352b0a55df62cfc83f12f08),
[#&#8203;9459](https://togithub.com/phpstan/phpstan/issues/9459)

# Internals 🔍

- Remove redundant conditions from
RemoveUnusedCodeByPhpVersionIdVisitor.
([#&#8203;2459](https://togithub.com/phpstan/phpstan-src/pull/2459)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Return early in CachingVistor to avoid always-false instanceof checks.
([#&#8203;2460](https://togithub.com/phpstan/phpstan-src/pull/2460)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!
- Introduce CombinationsHelper
(https://github.com/phpstan/phpstan-src/commit/175307e12de100632a05f6a122e0873a3c1fc6a1)
- `Type::getFiniteTypes()`
(https://github.com/phpstan/phpstan-src/commit/7912caf4b66bdff65d3d6795d4c584c17ece5e51,
https://github.com/phpstan/phpstan-src/commit/fa9a951f808466be36792ba65f128f9838ab617e,
https://github.com/phpstan/phpstan-src/commit/b5cf52b916ad4d155f1809356c96cbe924f51dbe)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.18...1.10.19)

# Bleeding edge 🔪

- Analysis with zero files results in non-zero exit code
(https://github.com/phpstan/phpstan-src/commit/46ff440648e62617df86aa74ba905ffa99897737),
[#&#8203;9410](https://togithub.com/phpstan/phpstan/issues/9410)

*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 🔧

- Detect invalid key in multi dimensional array fetch
([#&#8203;2445](https://togithub.com/phpstan/phpstan-src/pull/2445)),
[#&#8203;6315](https://togithub.com/phpstan/phpstan/issues/6315), thanks
[@&#8203;schlndh](https://togithub.com/schlndh)!
- Support unions of scalars in `sprintf()` arguments
(https://github.com/phpstan/phpstan-src/commit/1f955703eea90b7bdf8439ede81a5c6adda85af1)
- Update nikic/php-parser
(https://github.com/phpstan/phpstan-src/commit/51a284b8a8c04a06f430063f0267e168c048d88a)
- Update BetterReflection
(https://github.com/phpstan/phpstan-src/commit/ff8ad7e9b3933911d321846bc43f678a43b067d8)

# Bugfixes 🐛

- UnusedPrivatePropertyRule - recognize static properties fetched on
expr
(https://github.com/phpstan/phpstan-src/commit/503978b05e412477d72bb5d846dade3c246f0f70),
[#&#8203;9409](https://togithub.com/phpstan/phpstan/issues/9409),
[#&#8203;8541](https://togithub.com/phpstan/phpstan/issues/8541)
- Union of enum cases accepts the enum class type with negated cases
([#&#8203;2418](https://togithub.com/phpstan/phpstan-src/pull/2418)),
[#&#8203;8846](https://togithub.com/phpstan/phpstan/issues/8846), thanks
[@&#8203;takaram](https://togithub.com/takaram)!
- Fix key type of superglobal variables
([#&#8203;2446](https://togithub.com/phpstan/phpstan-src/pull/2446)),
[#&#8203;9306](https://togithub.com/phpstan/phpstan/issues/9306), thanks
[@&#8203;schlndh](https://togithub.com/schlndh)!
- Do not treat definition of functions and class-likes as unreachable
([#&#8203;2263](https://togithub.com/phpstan/phpstan-src/pull/2263)),
[#&#8203;4002](https://togithub.com/phpstan/phpstan/issues/4002),
[#&#8203;8966](https://togithub.com/phpstan/phpstan/issues/8966),
[#&#8203;8319](https://togithub.com/phpstan/phpstan/issues/8319), thanks
[@&#8203;takaram](https://togithub.com/takaram)!

# Function signature fixes 🤖

- Allow `Redis::connect()` to have 7 parameters
([#&#8203;2442](https://togithub.com/phpstan/phpstan-src/pull/2442)),
[#&#8203;9413](https://togithub.com/phpstan/phpstan/issues/9413), thanks
[@&#8203;thbley](https://togithub.com/thbley)!

# Internals 🔍

- StringAlwaysAcceptingObjectWithToStringType is supertype of Stringable
objects
(https://github.com/phpstan/phpstan-src/commit/9de9efa67facca90b5c5c97851eaf8afff310b4e)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.17...1.10.18)

Implicit throw point is enough to no longer mark multi-catch as dead
(https://github.com/phpstan/phpstan-src/commit/c587dd1d870f7a67623e1a3bb7f2811fda688bab),
[#&#8203;9406](https://togithub.com/phpstan/phpstan/issues/9406)

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.16...1.10.17)

# Improvements 🔧

- StubValidator - add missing rules about type aliases
(https://github.com/phpstan/phpstan-src/commit/8bb45376ca37a9d67a9a0362809b663cd7567e11)

# Bugfixes 🐛

- Fix more `in_array` issues
([#&#8203;2432](https://togithub.com/phpstan/phpstan-src/pull/2432)),
[#&#8203;6959](https://togithub.com/phpstan/phpstan/issues/6959), thanks
[@&#8203;schlndh](https://togithub.com/schlndh)!
- Fix overriding `__debugInfo` with covariant return type
([#&#8203;2435](https://togithub.com/phpstan/phpstan-src/pull/2435)),
[#&#8203;9391](https://togithub.com/phpstan/phpstan/issues/9391), thanks
[@&#8203;staabm](https://togithub.com/staabm)!
- Improve `Map::remove()` `@throws` inference
([#&#8203;2434](https://togithub.com/phpstan/phpstan-src/pull/2434)),
[#&#8203;9066](https://togithub.com/phpstan/phpstan/issues/9066), thanks
[@&#8203;baci266](https://togithub.com/baci266)!
- `array_is_list` narrows the type even when not on Bleeding Edge
(https://github.com/phpstan/phpstan-src/commit/de2566adeafe5ca36a3517f0a4e3c147d63f037a),
[#&#8203;9381](https://togithub.com/phpstan/phpstan/issues/9381)
- AutoloadSourceLocator - do not execute autoloader if the class already
exists but is evaled
(https://github.com/phpstan/phpstan-src/commit/32b889dd29202eb545d8558b1c93a6b804828d8d),
[#&#8203;7960](https://togithub.com/phpstan/phpstan/issues/7960)
- EnumSanityRule - use scope inside enum
(https://github.com/phpstan/phpstan-src/commit/04af510e5649a834f2e99750007048ba686ad995),
[#&#8203;9402](https://togithub.com/phpstan/phpstan/issues/9402)
- Fix native type of array after `array_push()`
(https://github.com/phpstan/phpstan-src/commit/564f79f96c6104cda479a3d0319af356d1b166ad),
[#&#8203;9403](https://togithub.com/phpstan/phpstan/issues/9403)
- Refactor pieces looking for dead code for more precise detection of
properties, methods, constants
(https://github.com/phpstan/phpstan-src/commit/d09401df4514a16eb38334cf4187093a4e66eefb,
https://github.com/phpstan/phpstan-src/commit/ffc0495d89763b65d93256928cb95bc4b07f6138),
[#&#8203;8412](https://togithub.com/phpstan/phpstan/issues/8412),
[#&#8203;8958](https://togithub.com/phpstan/phpstan/issues/8958),
[#&#8203;8563](https://togithub.com/phpstan/phpstan/issues/8563), thanks
[@&#8203;takaram](https://togithub.com/takaram)!
- Fix param-type specification interfering with root-expression types
([#&#8203;2439](https://togithub.com/phpstan/phpstan-src/pull/2439)),
[#&#8203;9404](https://togithub.com/phpstan/phpstan/issues/9404), thanks
[@&#8203;staabm](https://togithub.com/staabm)!

# Function signature fixes 🤖

- More precise `getimagesize*` return type
([#&#8203;2438](https://togithub.com/phpstan/phpstan-src/pull/2438)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- base64\_decode returns false only in strict mode
([#&#8203;2419](https://togithub.com/phpstan/phpstan-src/pull/2419)),
thanks [@&#8203;kamil-tekiela](https://togithub.com/kamil-tekiela)!

# Internals 🔍

- Minor refinements to MutatingScope `empty()` and typehint helper
([#&#8203;2430](https://togithub.com/phpstan/phpstan-src/pull/2430)),
thanks [@&#8203;mad-briller](https://togithub.com/mad-briller)!

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

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.15...1.10.16)

# Bleeding edge 🔪

- Report dead types even in multi-exception catch
([#&#8203;2399](https://togithub.com/phpstan/phpstan-src/pull/2399)),
thanks [@&#8203;JanTvrdik](https://togithub.com/JanTvrdik)!
- `error_log` errors with `message_type=2`
([#&#8203;2428](https://togithub.com/phpstan/phpstan-src/pull/2428)),
[#&#8203;9380](https://togithub.com/phpstan/phpstan/issues/9380), thanks
[@&#8203;staabm](https://togithub.com/staabm)!

*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 🔧

- `CallableType` and `ClosureType::describe()` - use phpdoc-parser
Printer for better precision
(https://github.com/phpstan/phpstan-src/commit/30f60c18f5efa9e7d5a5495c90f901178cf17a57),
[#&#8203;9268](https://togithub.com/phpstan/phpstan/issues/9268)
- `OffsetAccessType::describe()` uses toPhpDocNode and phpdoc-parser
printer
(https://github.com/phpstan/phpstan-src/commit/347fdbf2caa4d889d9e59af12fc1049a2aa608bb)
- Smarter `extract()` with constant arrays
([#&#8203;2417](https://togithub.com/phpstan/phpstan-src/pull/2417)),
[#&#8203;9331](https://togithub.com/phpstan/phpstan/issues/9331), thanks
[@&#8203;MartinMystikJonas](https://togithub.com/MartinMystikJonas)!
- Detect more issues in enum declarations
([#&#8203;2371](https://togithub.com/phpstan/phpstan-src/pull/2371)),
[#&#8203;9184](https://togithub.com/phpstan/phpstan/issues/9184), thanks
[@&#8203;kubk](https://togithub.com/kubk)!
- Correct magic signature methods when typehints are missing
([#&#8203;2409](https://togithub.com/phpstan/phpstan-src/pull/2409)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

# Bugfixes 🐛

- Fix `SplDoublyLinkedList::offsetGet` return type
([#&#8203;2373](https://togithub.com/phpstan/phpstan-src/pull/2373)),
[#&#8203;9274](https://togithub.com/phpstan/phpstan/issues/9274), thanks
[@&#8203;takaram](https://togithub.com/takaram)!
- Delegate `get_called_class()` to `static::class`
(https://github.com/phpstan/phpstan-src/commit/188acf440787c611fa86344b84fe1f41f027e4f6),
[#&#8203;7574](https://togithub.com/phpstan/phpstan/issues/7574),
[#&#8203;5252](https://togithub.com/phpstan/phpstan/issues/5252),
[#&#8203;4061](https://togithub.com/phpstan/phpstan/issues/4061)
- Fix enum type subtracting
([#&#8203;2415](https://togithub.com/phpstan/phpstan-src/pull/2415)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!
- Fix loose comparison against enum
([#&#8203;2410](https://togithub.com/phpstan/phpstan-src/pull/2410)),
thanks [@&#8203;schlndh](https://togithub.c

</details>

---

### Configuration

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

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

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

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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/kayman-mk/blog-tech-at-work).

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

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
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add support for asserting the type of $this
2 participants