phpstan/phpstan
### [`v1.11.8`](https://togithub.com/phpstan/phpstan/releases/tag/1.11.8)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.11.7...1.11.8)
# Bleeding edge 🔪
- Report useless return values of function calls like `var_export` without `$return=true` ([#3225](https://togithub.com/phpstan/phpstan-src/pull/3225)), [#11320](https://togithub.com/phpstan/phpstan/issues/11320), thanks [@staabm](https://togithub.com/staabm)!
- Check mixed in binary operator ([#3231](https://togithub.com/phpstan/phpstan-src/pull/3231)), [#7538](https://togithub.com/phpstan/phpstan/issues/7538), [#10440](https://togithub.com/phpstan/phpstan/issues/10440), thanks [@schlndh](https://togithub.com/schlndh)!
- Check vprintf/vsprintf arguments against placeholder count ([#3126](https://togithub.com/phpstan/phpstan-src/pull/3126)), thanks [@staabm](https://togithub.com/staabm)!
- Check mixed in unary operator ([#3253](https://togithub.com/phpstan/phpstan-src/pull/3253)), thanks [@schlndh](https://togithub.com/schlndh)!
- Report "missing return" error closer to where the return is missing (https://github.com/phpstan/phpstan-src/commit/04f8636e6577cbcaefc944725eed74c0d7865ead)
- Stricter ++/-- operator check ([#3255](https://togithub.com/phpstan/phpstan-src/pull/3255)), thanks [@schlndh](https://togithub.com/schlndh)!
- Check preg_quote delimiter sanity ([#3252](https://togithub.com/phpstan/phpstan-src/pull/3252)), [#11338](https://togithub.com/phpstan/phpstan/issues/11338), thanks [@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 🔧
- Precise array shape for `$matches` from `preg_match()` improvements:
- RegexArrayShapeMatcher - trailling groups are not optional when PREG_UNMATCHED_AS_NULL ([#3219](https://togithub.com/phpstan/phpstan-src/pull/3219)), [#11311](https://togithub.com/phpstan/phpstan/issues/11311), thanks [@staabm](https://togithub.com/staabm)!
- Fix preg_match named capturing groups ([#3228](https://togithub.com/phpstan/phpstan-src/pull/3228)), [#11323](https://togithub.com/phpstan/phpstan/issues/11323), thanks [@staabm](https://togithub.com/staabm)!
- RegexArrayShapeMatcher - Fix optional groups with PREG_UNMATCHED_AS_NULL ([#3229](https://togithub.com/phpstan/phpstan-src/pull/3229)), thanks [@staabm](https://togithub.com/staabm)!
- Allow overriding the PHP 7.2 support for PREG_UNMATCHED_AS_NULL ([#3226](https://togithub.com/phpstan/phpstan-src/pull/3226)), thanks [@Seldaek](https://togithub.com/Seldaek)!
- RegexArrayShapeMatcher - Fix PREG_UNMATCHED_AS_NULL with optional leading groups ([#3234](https://togithub.com/phpstan/phpstan-src/pull/3234)), [#11331](https://togithub.com/phpstan/phpstan/issues/11331), thanks [@staabm](https://togithub.com/staabm)!
- RegexArrayShapeMatcher - Support preg_quote()'d patterns ([#3233](https://togithub.com/phpstan/phpstan-src/pull/3233)), [#11332](https://togithub.com/phpstan/phpstan/issues/11332), thanks [@staabm](https://togithub.com/staabm)!
- RegexArrayShapeMatcher - Fix PREG_UNMATCHED_AS_NULL with top level alternation ([#3238](https://togithub.com/phpstan/phpstan-src/pull/3238)), thanks [@staabm](https://togithub.com/staabm)!
- RegexArrayShapeMatcher - More precise non-empty-string and numeric-string ([#3249](https://togithub.com/phpstan/phpstan-src/pull/3249)), thanks [@staabm](https://togithub.com/staabm)!
- Fix regex parsing by completing the grammar ([#3244](https://togithub.com/phpstan/phpstan-src/pull/3244)), thanks [@Seldaek](https://togithub.com/Seldaek)!
- RegexArrayShapeMatcher - `(\d*)` can be empty-string ([#3257](https://togithub.com/phpstan/phpstan-src/pull/3257)), thanks [@staabm](https://togithub.com/staabm)!
- Add `diagnose` command to run DiagnoseExtensions (https://github.com/phpstan/phpstan-src/commit/22c84d2e64dd30780c995d8a720a487bb484dc02)
- Diagnose extension: Info about extensions installed via extension-installer (https://github.com/phpstan/phpstan-src/commit/db71f04aa14f5be6421e92d7b76031605de5ad80)
- Diagnose extension - where is PHPStan running from (https://github.com/phpstan/phpstan-src/commit/76464eed45dee10154cb25b9f05586c346046adc)
- Parallel scheduler becomes DiagnoseExtension (https://github.com/phpstan/phpstan-src/commit/c7c9689cd86a9811eeaa2bb365ab5bc302109802)
- ResultCacheManager: output restore time in debug mode ([#3224](https://togithub.com/phpstan/phpstan-src/pull/3224)), thanks [@janedbal](https://togithub.com/janedbal)!
- Add hint as to what might be wrong when invalid identifiers are used ([#3230](https://togithub.com/phpstan/phpstan-src/pull/3230)), thanks [@Seldaek](https://togithub.com/Seldaek)!
- Optimize array_map with many arrays (https://github.com/phpstan/phpstan-src/commit/09fbc92c415a2b9789463b3ca8fa7c73cc3475bd), [#11297](https://togithub.com/phpstan/phpstan/issues/11297)
- Improved `sprintf()` inference ([#3232](https://togithub.com/phpstan/phpstan-src/pull/3232)), thanks [@staabm](https://togithub.com/staabm)!
- Print elapsed analysis time with `-v` ([#3239](https://togithub.com/phpstan/phpstan-src/pull/3239), [#3242](https://togithub.com/phpstan/phpstan-src/pull/3242)), thanks [@janedbal](https://togithub.com/janedbal)!
- More precise `sprintf()` format arg-based return type ([#3192](https://togithub.com/phpstan/phpstan-src/pull/3192)), [#11248](https://togithub.com/phpstan/phpstan/issues/11248), [#10493](https://togithub.com/phpstan/phpstan/issues/10493), thanks [@staabm](https://togithub.com/staabm)!
# Bugfixes 🐛
- Fix return type of round/ceil/floor in non strict type environment ([#3223](https://togithub.com/phpstan/phpstan-src/pull/3223)), [#11319](https://togithub.com/phpstan/phpstan/issues/11319), thanks [@BackEndTea](https://togithub.com/BackEndTea)!
- Fix statement analysis after early-terminating statements ([#3227](https://togithub.com/phpstan/phpstan-src/pull/3227)), [#11179](https://togithub.com/phpstan/phpstan/issues/11179), thanks [@takaram](https://togithub.com/takaram)!
- Fix match of union of enums (https://github.com/phpstan/phpstan-src/commit/44e40f054569f3eeed81280bf0d2f50659fb1056), [#11313](https://togithub.com/phpstan/phpstan/issues/11313)
- Fix `pathinfo()` return type for union type flags ([#3120](https://togithub.com/phpstan/phpstan-src/pull/3120)), [#10760](https://togithub.com/phpstan/phpstan/issues/10760), thanks [@staabm](https://togithub.com/staabm)!
- Fix and simplify discovering composer autoloader project path (https://github.com/phpstan/phpstan-src/commit/2cc6cda6969a63267e70c2074efa0477b69c9083)
- Ignore non-explicit NeverType in purity check ([#3243](https://togithub.com/phpstan/phpstan-src/pull/3243)), [#11207](https://togithub.com/phpstan/phpstan/issues/11207), thanks [@staabm](https://togithub.com/staabm)!
- Non-numeric strings in `pow()` lead to error ([#2796](https://togithub.com/phpstan/phpstan-src/pull/2796)), [#10125](https://togithub.com/phpstan/phpstan/issues/10125), thanks [@staabm](https://togithub.com/staabm)!
- Closure with by-ref parameter is impure (https://github.com/phpstan/phpstan-src/commit/f1abacddb3787ce279e51b1f88f1543d52b9759c), [#11361](https://togithub.com/phpstan/phpstan/issues/11361)
- PathRoutingParser - check if the file is a symlink that might be in analysed paths (https://github.com/phpstan/phpstan-src/commit/c9a6d2e61edfad189a765df3c3a06674a10d4fb5), [#6585](https://togithub.com/phpstan/phpstan/issues/6585)
# Function signature fixes 🤖
- Fix new headers functions in php 8.4 ([#3221](https://togithub.com/phpstan/phpstan-src/pull/3221)), thanks [@Seldaek](https://togithub.com/Seldaek)!
# Internals 🔍
- Indicate file on TypeInferenceTestCase validation errors ([#3166](https://togithub.com/phpstan/phpstan-src/pull/3166)), thanks [@staabm](https://togithub.com/staabm)!
- nette/di - patch for PHP 8.4 support (https://github.com/phpstan/phpstan-src/commit/1245ea73e5a24aefc4fac87ebe73d9720deac7c9)
- InternalError is part of `@api` ([#3240](https://togithub.com/phpstan/phpstan-src/pull/3240)), thanks [@janedbal](https://togithub.com/janedbal)!
- Refactor RegexArrayShapeMatcher ([#3248](https://togithub.com/phpstan/phpstan-src/pull/3248)), thanks [@staabm](https://togithub.com/staabm)!
- Refactor PrintfParametersRule ([#3247](https://togithub.com/phpstan/phpstan-src/pull/3247)), thanks [@staabm](https://togithub.com/staabm)!
- Simplify RegularExpressionPatternRule ([#3251](https://togithub.com/phpstan/phpstan-src/pull/3251)), thanks [@staabm](https://togithub.com/staabm)!
- Copy regex grammar from hoa/regex into the project (https://github.com/phpstan/phpstan-src/commit/bacb3c6d11edb5f30176e70ade6e72ac4f2e23dd)
- Apply Grammar.patch to reflect previous phpstan state (https://github.com/phpstan/phpstan-src/commit/e71cff468aa4695e9bfa09d01e0ec5194890e7f1)
- ExecutionEndNode always has a statement (https://github.com/phpstan/phpstan-src/commit/27e0f91efad4c9fcacae98b2e3394c069e9e5095)
- Fix PHP_VERSION_ID comparison in test ([#3254](https://togithub.com/phpstan/phpstan-src/pull/3254)), thanks [@staabm](https://togithub.com/staabm)!
- Apply the stricter signatures for PHP 8.0 after the basic ones for PHP 8.0 ([#3259](https://togithub.com/phpstan/phpstan-src/pull/3259)), thanks [@thg2k](https://togithub.com/thg2k)!
- Refactor function signature map files loading ([#3262](https://togithub.com/phpstan/phpstan-src/pull/3262)), thanks [@thg2k](https://togithub.com/thg2k)!
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.
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR contains the following updates:
1.11.7
->1.11.8
Release Notes
phpstan/phpstan
### [`v1.11.8`](https://togithub.com/phpstan/phpstan/releases/tag/1.11.8) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.11.7...1.11.8) # Bleeding edge 🔪 - Report useless return values of function calls like `var_export` without `$return=true` ([#3225](https://togithub.com/phpstan/phpstan-src/pull/3225)), [#11320](https://togithub.com/phpstan/phpstan/issues/11320), thanks [@staabm](https://togithub.com/staabm)! - Check mixed in binary operator ([#3231](https://togithub.com/phpstan/phpstan-src/pull/3231)), [#7538](https://togithub.com/phpstan/phpstan/issues/7538), [#10440](https://togithub.com/phpstan/phpstan/issues/10440), thanks [@schlndh](https://togithub.com/schlndh)! - Check vprintf/vsprintf arguments against placeholder count ([#3126](https://togithub.com/phpstan/phpstan-src/pull/3126)), thanks [@staabm](https://togithub.com/staabm)! - Check mixed in unary operator ([#3253](https://togithub.com/phpstan/phpstan-src/pull/3253)), thanks [@schlndh](https://togithub.com/schlndh)! - Report "missing return" error closer to where the return is missing (https://github.com/phpstan/phpstan-src/commit/04f8636e6577cbcaefc944725eed74c0d7865ead) - Stricter ++/-- operator check ([#3255](https://togithub.com/phpstan/phpstan-src/pull/3255)), thanks [@schlndh](https://togithub.com/schlndh)! - Check preg_quote delimiter sanity ([#3252](https://togithub.com/phpstan/phpstan-src/pull/3252)), [#11338](https://togithub.com/phpstan/phpstan/issues/11338), thanks [@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 🔧 - Precise array shape for `$matches` from `preg_match()` improvements: - RegexArrayShapeMatcher - trailling groups are not optional when PREG_UNMATCHED_AS_NULL ([#3219](https://togithub.com/phpstan/phpstan-src/pull/3219)), [#11311](https://togithub.com/phpstan/phpstan/issues/11311), thanks [@staabm](https://togithub.com/staabm)! - Fix preg_match named capturing groups ([#3228](https://togithub.com/phpstan/phpstan-src/pull/3228)), [#11323](https://togithub.com/phpstan/phpstan/issues/11323), thanks [@staabm](https://togithub.com/staabm)! - RegexArrayShapeMatcher - Fix optional groups with PREG_UNMATCHED_AS_NULL ([#3229](https://togithub.com/phpstan/phpstan-src/pull/3229)), thanks [@staabm](https://togithub.com/staabm)! - Allow overriding the PHP 7.2 support for PREG_UNMATCHED_AS_NULL ([#3226](https://togithub.com/phpstan/phpstan-src/pull/3226)), thanks [@Seldaek](https://togithub.com/Seldaek)! - RegexArrayShapeMatcher - Fix PREG_UNMATCHED_AS_NULL with optional leading groups ([#3234](https://togithub.com/phpstan/phpstan-src/pull/3234)), [#11331](https://togithub.com/phpstan/phpstan/issues/11331), thanks [@staabm](https://togithub.com/staabm)! - RegexArrayShapeMatcher - Support preg_quote()'d patterns ([#3233](https://togithub.com/phpstan/phpstan-src/pull/3233)), [#11332](https://togithub.com/phpstan/phpstan/issues/11332), thanks [@staabm](https://togithub.com/staabm)! - RegexArrayShapeMatcher - Fix PREG_UNMATCHED_AS_NULL with top level alternation ([#3238](https://togithub.com/phpstan/phpstan-src/pull/3238)), thanks [@staabm](https://togithub.com/staabm)! - RegexArrayShapeMatcher - More precise non-empty-string and numeric-string ([#3249](https://togithub.com/phpstan/phpstan-src/pull/3249)), thanks [@staabm](https://togithub.com/staabm)! - Fix regex parsing by completing the grammar ([#3244](https://togithub.com/phpstan/phpstan-src/pull/3244)), thanks [@Seldaek](https://togithub.com/Seldaek)! - RegexArrayShapeMatcher - `(\d*)` can be empty-string ([#3257](https://togithub.com/phpstan/phpstan-src/pull/3257)), thanks [@staabm](https://togithub.com/staabm)! - Add `diagnose` command to run DiagnoseExtensions (https://github.com/phpstan/phpstan-src/commit/22c84d2e64dd30780c995d8a720a487bb484dc02) - Diagnose extension: Info about extensions installed via extension-installer (https://github.com/phpstan/phpstan-src/commit/db71f04aa14f5be6421e92d7b76031605de5ad80) - Diagnose extension - where is PHPStan running from (https://github.com/phpstan/phpstan-src/commit/76464eed45dee10154cb25b9f05586c346046adc) - Parallel scheduler becomes DiagnoseExtension (https://github.com/phpstan/phpstan-src/commit/c7c9689cd86a9811eeaa2bb365ab5bc302109802) - ResultCacheManager: output restore time in debug mode ([#3224](https://togithub.com/phpstan/phpstan-src/pull/3224)), thanks [@janedbal](https://togithub.com/janedbal)! - Add hint as to what might be wrong when invalid identifiers are used ([#3230](https://togithub.com/phpstan/phpstan-src/pull/3230)), thanks [@Seldaek](https://togithub.com/Seldaek)! - Optimize array_map with many arrays (https://github.com/phpstan/phpstan-src/commit/09fbc92c415a2b9789463b3ca8fa7c73cc3475bd), [#11297](https://togithub.com/phpstan/phpstan/issues/11297) - Improved `sprintf()` inference ([#3232](https://togithub.com/phpstan/phpstan-src/pull/3232)), thanks [@staabm](https://togithub.com/staabm)! - Print elapsed analysis time with `-v` ([#3239](https://togithub.com/phpstan/phpstan-src/pull/3239), [#3242](https://togithub.com/phpstan/phpstan-src/pull/3242)), thanks [@janedbal](https://togithub.com/janedbal)! - More precise `sprintf()` format arg-based return type ([#3192](https://togithub.com/phpstan/phpstan-src/pull/3192)), [#11248](https://togithub.com/phpstan/phpstan/issues/11248), [#10493](https://togithub.com/phpstan/phpstan/issues/10493), thanks [@staabm](https://togithub.com/staabm)! # Bugfixes 🐛 - Fix return type of round/ceil/floor in non strict type environment ([#3223](https://togithub.com/phpstan/phpstan-src/pull/3223)), [#11319](https://togithub.com/phpstan/phpstan/issues/11319), thanks [@BackEndTea](https://togithub.com/BackEndTea)! - Fix statement analysis after early-terminating statements ([#3227](https://togithub.com/phpstan/phpstan-src/pull/3227)), [#11179](https://togithub.com/phpstan/phpstan/issues/11179), thanks [@takaram](https://togithub.com/takaram)! - Fix match of union of enums (https://github.com/phpstan/phpstan-src/commit/44e40f054569f3eeed81280bf0d2f50659fb1056), [#11313](https://togithub.com/phpstan/phpstan/issues/11313) - Fix `pathinfo()` return type for union type flags ([#3120](https://togithub.com/phpstan/phpstan-src/pull/3120)), [#10760](https://togithub.com/phpstan/phpstan/issues/10760), thanks [@staabm](https://togithub.com/staabm)! - Fix and simplify discovering composer autoloader project path (https://github.com/phpstan/phpstan-src/commit/2cc6cda6969a63267e70c2074efa0477b69c9083) - Ignore non-explicit NeverType in purity check ([#3243](https://togithub.com/phpstan/phpstan-src/pull/3243)), [#11207](https://togithub.com/phpstan/phpstan/issues/11207), thanks [@staabm](https://togithub.com/staabm)! - Non-numeric strings in `pow()` lead to error ([#2796](https://togithub.com/phpstan/phpstan-src/pull/2796)), [#10125](https://togithub.com/phpstan/phpstan/issues/10125), thanks [@staabm](https://togithub.com/staabm)! - Closure with by-ref parameter is impure (https://github.com/phpstan/phpstan-src/commit/f1abacddb3787ce279e51b1f88f1543d52b9759c), [#11361](https://togithub.com/phpstan/phpstan/issues/11361) - PathRoutingParser - check if the file is a symlink that might be in analysed paths (https://github.com/phpstan/phpstan-src/commit/c9a6d2e61edfad189a765df3c3a06674a10d4fb5), [#6585](https://togithub.com/phpstan/phpstan/issues/6585) # Function signature fixes 🤖 - Fix new headers functions in php 8.4 ([#3221](https://togithub.com/phpstan/phpstan-src/pull/3221)), thanks [@Seldaek](https://togithub.com/Seldaek)! # Internals 🔍 - Indicate file on TypeInferenceTestCase validation errors ([#3166](https://togithub.com/phpstan/phpstan-src/pull/3166)), thanks [@staabm](https://togithub.com/staabm)! - nette/di - patch for PHP 8.4 support (https://github.com/phpstan/phpstan-src/commit/1245ea73e5a24aefc4fac87ebe73d9720deac7c9) - InternalError is part of `@api` ([#3240](https://togithub.com/phpstan/phpstan-src/pull/3240)), thanks [@janedbal](https://togithub.com/janedbal)! - Refactor RegexArrayShapeMatcher ([#3248](https://togithub.com/phpstan/phpstan-src/pull/3248)), thanks [@staabm](https://togithub.com/staabm)! - Refactor PrintfParametersRule ([#3247](https://togithub.com/phpstan/phpstan-src/pull/3247)), thanks [@staabm](https://togithub.com/staabm)! - Simplify RegularExpressionPatternRule ([#3251](https://togithub.com/phpstan/phpstan-src/pull/3251)), thanks [@staabm](https://togithub.com/staabm)! - Copy regex grammar from hoa/regex into the project (https://github.com/phpstan/phpstan-src/commit/bacb3c6d11edb5f30176e70ade6e72ac4f2e23dd) - Apply Grammar.patch to reflect previous phpstan state (https://github.com/phpstan/phpstan-src/commit/e71cff468aa4695e9bfa09d01e0ec5194890e7f1) - ExecutionEndNode always has a statement (https://github.com/phpstan/phpstan-src/commit/27e0f91efad4c9fcacae98b2e3394c069e9e5095) - Fix PHP_VERSION_ID comparison in test ([#3254](https://togithub.com/phpstan/phpstan-src/pull/3254)), thanks [@staabm](https://togithub.com/staabm)! - Apply the stricter signatures for PHP 8.0 after the basic ones for PHP 8.0 ([#3259](https://togithub.com/phpstan/phpstan-src/pull/3259)), thanks [@thg2k](https://togithub.com/thg2k)! - Refactor function signature map files loading ([#3262](https://togithub.com/phpstan/phpstan-src/pull/3262)), thanks [@thg2k](https://togithub.com/thg2k)!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.
This PR has been generated by Renovate Bot.