Conversation
c460f78 to
06298ff
Compare
06298ff to
a1848a1
Compare
|
@weirdan please review & merge |
| // https://github.com/vimeo/psalm/issues/10761 | ||
| if (preg_match('/^([4578])\.(\d)(\.\d+)?(\s+PHP)?$/i', $since, $since_match) | ||
| && isset($since_match[1])&& isset($since_match[2]) | ||
| && (!empty($since_match[4]) || pathinfo($code_location->file_name, PATHINFO_EXTENSION) === 'phpstub')) { |
There was a problem hiding this comment.
It'll do for now, but we should probably limit this to only the stubs Psalm itself ships in future. When I renamed the stubs I didn't want .phpstub to be anything specific to Psalm, but hoped to establish a naming convention for any stubs across the ecosystem.
There was a problem hiding this comment.
Actually, I think this is a positive, but unintended side effect - we use stubs for a couple PHP extensions where we use the @SInCE annotation for the PHP version this feature become available and named all those .phpstub too.
I think it would be ideal if .phpstub would refer to stubs that are related to PHP core and/or PHP extensions - since this is basically what happens now already, with only psalm internally using this extension mostly and this would allow using @SInCE in those like it's currently used.
Therefore this won't require a change in the future, just some documentation about the .phpstub file extension somewhere?
There was a problem hiding this comment.
Many plugins use .phpstub extension, and not for built-in classes / extensions: https://github.com/search?q=org%3Apsalm%20phpstub&type=code
| $php_versions = [ | ||
| '5.4', | ||
| '5.5', | ||
| '5.6', | ||
| '7.0', | ||
| '7.1', | ||
| '7.2', | ||
| '7.3', | ||
| '7.4', | ||
| '8.0', | ||
| '8.1', | ||
| '8.2', | ||
| '8.3', | ||
| ]; |
There was a problem hiding this comment.
Note to self: we keep forgetting to update PHP version numbers in different places. This means we need to centralize PHP version handling in a single place.
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [phpstan/phpstan](https://togithub.com/phpstan/phpstan) | `1.10.59` -> `1.10.60` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [phpunit/phpunit](https://phpunit.de/) ([source](https://togithub.com/sebastianbergmann/phpunit)) | `10.5.11` -> `10.5.12` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [vimeo/psalm](https://togithub.com/vimeo/psalm) | `5.22.2` -> `5.23.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>phpstan/phpstan (phpstan/phpstan)</summary> ### [`v1.10.60`](https://togithub.com/phpstan/phpstan/releases/tag/1.10.60) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.10.59...1.10.60) [**Learn more about this release**](https://phpstan.org/blog/enhancements-in-handling-parameters-passed-by-reference) in an article on phpstan.org! # Major new features 🚀 - Generic `@method` tags: `@method T doFoo<T>(T $p)`, [#​6371](https://togithub.com/phpstan/phpstan/issues/6371) - [Learn more](https://twitter.com/OndrejMirtes/status/1760994823073370509) - [#​2931](https://togithub.com/phpstan/phpstan-src/pull/2931), [#​2935](https://togithub.com/phpstan/phpstan-src/pull/2935), thanks [@​mad-briller](https://togithub.com/mad-briller)! - Generic callable types: `callable<T>(T): T`, [#​8964](https://togithub.com/phpstan/phpstan/issues/8964) - [#​2938](https://togithub.com/phpstan/phpstan-src/pull/2938), [#​2945](https://togithub.com/phpstan/phpstan-src/pull/2945), [#​2946](https://togithub.com/phpstan/phpstan-src/pull/2946), thanks [@​mad-briller](https://togithub.com/mad-briller)! - Error on references of prefixed internal class names from PHAR files ([#​2932](https://togithub.com/phpstan/phpstan-src/pull/2932)), thanks [@​staabm](https://togithub.com/staabm)! # Bleeding edge 🔪 - **Enhancements in Handling Parameters Passed by Reference** - [Learn more on phpstan.org](https://phpstan.org/blog/enhancements-in-handling-parameters-passed-by-reference) - [#​2941](https://togithub.com/phpstan/phpstan-src/pull/2941), thanks [@​ljmaskey](https://togithub.com/ljmaskey)! - Add option `reportAnyTypeWideningInVarTag` ([#​2840](https://togithub.com/phpstan/phpstan-src/pull/2840)), thanks [@​janedbal](https://togithub.com/janedbal)! *If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:* includes: - vendor/phpstan/phpstan/conf/bleedingEdge.neon *Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)* # Improvements 🔧 - Add support for constructor assertions ([#​2950](https://togithub.com/phpstan/phpstan-src/pull/2950)), [#​10645](https://togithub.com/phpstan/phpstan/issues/10645), thanks [@​axlon](https://togithub.com/axlon)! - Report uses of deprecated constants ([#​2953](https://togithub.com/phpstan/phpstan-src/pull/2953)), thanks [@​staabm](https://togithub.com/staabm)! # Bugfixes 🐛 - Fix how union of callables is understood ([#​2902](https://togithub.com/phpstan/phpstan-src/pull/2902)), [#​10442](https://togithub.com/phpstan/phpstan/issues/10442), thanks [@​mad-briller](https://togithub.com/mad-briller)! - Fix for inferring closure parameter type from callable union (phpstan/phpstan-src@c10476d) - ArrayType - string offset might exist as integer offset ([#​2928](https://togithub.com/phpstan/phpstan-src/pull/2928)), [#​10610](https://togithub.com/phpstan/phpstan/issues/10610), thanks [@​michalbundyra](https://togithub.com/michalbundyra)! - Truncate description of huge UnionType (phpstan/phpstan-src@039a3dc), [#​10614](https://togithub.com/phpstan/phpstan/issues/10614) - fix type of `$a?->b::c()` and `$a?->b::$c` ([#​2933](https://togithub.com/phpstan/phpstan-src/pull/2933)), thanks [@​schlndh](https://togithub.com/schlndh)! - fix `fn() => __FUNCTION__` and `__METHOD__` ([#​2934](https://togithub.com/phpstan/phpstan-src/pull/2934)), thanks [@​schlndh](https://togithub.com/schlndh)! - Some sort functions do not preserve a list (phpstan/phpstan-src@034f731, phpstan/phpstan-src@0977a7b), [#​10627](https://togithub.com/phpstan/phpstan/issues/10627) - ArgumentsNormalizer - keep named arguments for unknown parameters (phpstan/phpstan-src@ad34452), [#​10628](https://togithub.com/phpstan/phpstan/issues/10628) - Check `T of mixed&Foo` and `T of mixed|Foo` ([#​2940](https://togithub.com/phpstan/phpstan-src/pull/2940)), thanks [@​schlndh](https://togithub.com/schlndh)! - Use narrowed conditional type if/else types for subtype checks ([#​2948](https://togithub.com/phpstan/phpstan-src/pull/2948)), [#​10622](https://togithub.com/phpstan/phpstan/issues/10622), thanks [@​rvanvelzen](https://togithub.com/rvanvelzen)! - Fix `isSuperTypeOf` of callable/Closure when parameter count differ ([#​2949](https://togithub.com/phpstan/phpstan-src/pull/2949)), [#​10594](https://togithub.com/phpstan/phpstan/issues/10594), thanks [@​takaram](https://togithub.com/takaram)! # Function signature fixes 🤖 - Fix `ReflectionFunctionAbstract::getExtension` return type (phpstan/phpstan-src@2ece1f8) - Correct return type of `date_sun_info()` function ([#​2947](https://togithub.com/phpstan/phpstan-src/pull/2947)), thanks [@​zonuexe](https://togithub.com/zonuexe)! - Fix return values of `mysqli get_warnings` ([#​2929](https://togithub.com/phpstan/phpstan-src/pull/2929)), thanks [@​janedbal](https://togithub.com/janedbal)! # Internals 🔍 - Replace composer-require-checker with composer-dependency-analyser ([#​2875](https://togithub.com/phpstan/phpstan-src/pull/2875)), thanks [@​janedbal](https://togithub.com/janedbal)! - Use `Type::isNull()` in `Nullsafe(MethodCall|PropertyFetch)Rule` ([#​2942](https://togithub.com/phpstan/phpstan-src/pull/2942)), thanks [@​takaram](https://togithub.com/takaram)! </details> <details> <summary>sebastianbergmann/phpunit (phpunit/phpunit)</summary> ### [`v10.5.12`](https://togithub.com/sebastianbergmann/phpunit/releases/tag/10.5.12) [Compare Source](https://togithub.com/sebastianbergmann/phpunit/compare/10.5.11...10.5.12) ##### Fixed - [#​5652](https://togithub.com/sebastianbergmann/phpunit/issues/5652): `HRTime::duration()` throws `InvalidArgumentException` *** [How to install or update PHPUnit](https://docs.phpunit.de/en/10.5/installation.html) </details> <details> <summary>vimeo/psalm (vimeo/psalm)</summary> ### [`v5.23.0`](https://togithub.com/vimeo/psalm/releases/tag/5.23.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.22.2...5.23.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Update PHP 8.2 stubs to include `SensitiveParameterValue` by [@​gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10726](https://togithub.com/vimeo/psalm/pull/10726) - Add list of statements to BeforeFileAnalysisEvent by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10728](https://togithub.com/vimeo/psalm/pull/10728) - Forbid iterating over generators with non-nullable `send()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10697](https://togithub.com/vimeo/psalm/pull/10697) - Initial support for named parameters for callables by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10772](https://togithub.com/vimeo/psalm/pull/10772) ##### Fixes - Improve randomizer stubs by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10709](https://togithub.com/vimeo/psalm/pull/10709) - Fix detecting magic static methods by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10704](https://togithub.com/vimeo/psalm/pull/10704) - Fix non-empty-lowercase-string handling with literal non-lowercase strings by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10722](https://togithub.com/vimeo/psalm/pull/10722) - Fix RiskyTruthyFalsyComparison irrelevant errors when there is no explicit truthy/falsy type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10733](https://togithub.com/vimeo/psalm/pull/10733) - Allow `Override` attribute to be used in pure contexts by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10734](https://togithub.com/vimeo/psalm/pull/10734) - Revert "Allow tainted numerics except for 'html' and 'has_quotes'" by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10729](https://togithub.com/vimeo/psalm/pull/10729) - Fix loading stubs from phar file on Windows by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10748](https://togithub.com/vimeo/psalm/pull/10748) - Fix a false flag issue with InvalidConstantAssignmentValue by [@​MelechMizrachi](https://togithub.com/MelechMizrachi) in [https://github.com/vimeo/psalm/pull/10738](https://togithub.com/vimeo/psalm/pull/10738) - Set inside_isset false when analyzing ArrayDimFetch index by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10752](https://togithub.com/vimeo/psalm/pull/10752) - Set inside_isset = false when analyzing arguments by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10753](https://togithub.com/vimeo/psalm/pull/10753) - Fix PHP notice - crash on invalid taint-escape by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10760](https://togithub.com/vimeo/psalm/pull/10760) - Fix version comparison for `@since` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10764](https://togithub.com/vimeo/psalm/pull/10764) - Since annotations outside phpstub should not infer php version by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10769](https://togithub.com/vimeo/psalm/pull/10769) - Backport `WeakMap` iterator fix from `master` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10778](https://togithub.com/vimeo/psalm/pull/10778) - Namespace anonymous classes by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10779](https://togithub.com/vimeo/psalm/pull/10779) - Update CallMap for sqlsrv_connect and sqlsrv_errors to match reflection by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10781](https://togithub.com/vimeo/psalm/pull/10781) - `$resource` parameter of `mkdir()` is nullable since PHP 7.3 by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10802](https://togithub.com/vimeo/psalm/pull/10802) - Use wider class-string when combining class strings with intersections by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10800](https://togithub.com/vimeo/psalm/pull/10800) ##### Internal changes - Use TaintKind/TaintKindGroup constants instead of string values by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10746](https://togithub.com/vimeo/psalm/pull/10746) - Skip symlink test on Windows by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10749](https://togithub.com/vimeo/psalm/pull/10749) - Avoid duplicating code for RiskyTruthyFalsyComparison by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10765](https://togithub.com/vimeo/psalm/pull/10765) - fix PHP 8 tests running with wrong --php-version=/phpVersion= if not explicitly specified by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10776](https://togithub.com/vimeo/psalm/pull/10776) - CS fix by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10801](https://togithub.com/vimeo/psalm/pull/10801) #### New Contributors - [@​MelechMizrachi](https://togithub.com/MelechMizrachi) made their first contribution in [https://github.com/vimeo/psalm/pull/10738](https://togithub.com/vimeo/psalm/pull/10738) **Full Changelog**: vimeo/psalm@5.22.2...5.23.0 </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:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMzAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIzMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> 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>
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [vimeo/psalm](https://togithub.com/vimeo/psalm) | `5.22.1` -> `5.23.1` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vimeo/psalm (vimeo/psalm)</summary> ### [`v5.23.1`](https://togithub.com/vimeo/psalm/releases/tag/5.23.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.23.0...5.23.1) <!-- Release notes generated using configuration in .github/release.yml at 5.23.x --> #### What's Changed ##### Fixes - Fixed analysis of existing static methods if the `__callStatic()` method exists by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10812](https://togithub.com/vimeo/psalm/pull/10812) **Full Changelog**: vimeo/psalm@5.23.0...5.23.1 ### [`v5.23.0`](https://togithub.com/vimeo/psalm/releases/tag/5.23.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.22.2...5.23.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Update PHP 8.2 stubs to include `SensitiveParameterValue` by [@​gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10726](https://togithub.com/vimeo/psalm/pull/10726) - Add list of statements to BeforeFileAnalysisEvent by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10728](https://togithub.com/vimeo/psalm/pull/10728) - Forbid iterating over generators with non-nullable `send()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10697](https://togithub.com/vimeo/psalm/pull/10697) - Initial support for named parameters for callables by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10772](https://togithub.com/vimeo/psalm/pull/10772) ##### Fixes - Improve randomizer stubs by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10709](https://togithub.com/vimeo/psalm/pull/10709) - Fix detecting magic static methods by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10704](https://togithub.com/vimeo/psalm/pull/10704) - Fix non-empty-lowercase-string handling with literal non-lowercase strings by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10722](https://togithub.com/vimeo/psalm/pull/10722) - Fix RiskyTruthyFalsyComparison irrelevant errors when there is no explicit truthy/falsy type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10733](https://togithub.com/vimeo/psalm/pull/10733) - Allow `Override` attribute to be used in pure contexts by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10734](https://togithub.com/vimeo/psalm/pull/10734) - Revert "Allow tainted numerics except for 'html' and 'has_quotes'" by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10729](https://togithub.com/vimeo/psalm/pull/10729) - Fix loading stubs from phar file on Windows by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10748](https://togithub.com/vimeo/psalm/pull/10748) - Fix a false flag issue with InvalidConstantAssignmentValue by [@​MelechMizrachi](https://togithub.com/MelechMizrachi) in [https://github.com/vimeo/psalm/pull/10738](https://togithub.com/vimeo/psalm/pull/10738) - Set inside_isset false when analyzing ArrayDimFetch index by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10752](https://togithub.com/vimeo/psalm/pull/10752) - Set inside_isset = false when analyzing arguments by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10753](https://togithub.com/vimeo/psalm/pull/10753) - Fix PHP notice - crash on invalid taint-escape by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10760](https://togithub.com/vimeo/psalm/pull/10760) - Fix version comparison for `@since` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10764](https://togithub.com/vimeo/psalm/pull/10764) - Since annotations outside phpstub should not infer php version by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10769](https://togithub.com/vimeo/psalm/pull/10769) - Backport `WeakMap` iterator fix from `master` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10778](https://togithub.com/vimeo/psalm/pull/10778) - Namespace anonymous classes by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10779](https://togithub.com/vimeo/psalm/pull/10779) - Update CallMap for sqlsrv_connect and sqlsrv_errors to match reflection by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10781](https://togithub.com/vimeo/psalm/pull/10781) - `$resource` parameter of `mkdir()` is nullable since PHP 7.3 by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10802](https://togithub.com/vimeo/psalm/pull/10802) - Use wider class-string when combining class strings with intersections by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10800](https://togithub.com/vimeo/psalm/pull/10800) ##### Internal changes - Use TaintKind/TaintKindGroup constants instead of string values by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10746](https://togithub.com/vimeo/psalm/pull/10746) - Skip symlink test on Windows by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10749](https://togithub.com/vimeo/psalm/pull/10749) - Avoid duplicating code for RiskyTruthyFalsyComparison by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10765](https://togithub.com/vimeo/psalm/pull/10765) - fix PHP 8 tests running with wrong --php-version=/phpVersion= if not explicitly specified by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10776](https://togithub.com/vimeo/psalm/pull/10776) - CS fix by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10801](https://togithub.com/vimeo/psalm/pull/10801) #### New Contributors - [@​MelechMizrachi](https://togithub.com/MelechMizrachi) made their first contribution in [https://github.com/vimeo/psalm/pull/10738](https://togithub.com/vimeo/psalm/pull/10738) **Full Changelog**: vimeo/psalm@5.22.2...5.23.0 ### [`v5.22.2`](https://togithub.com/vimeo/psalm/releases/tag/5.22.2) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.22.1...5.22.2) <!-- Release notes generated using configuration in .github/release.yml at 5.22.x --> #### What's Changed ##### Fixes - Catch missing classlike exceptions during scanning by [@​weirdan](https://togithub.com/weirdan) and [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10720](https://togithub.com/vimeo/psalm/pull/10720) **Full Changelog**: vimeo/psalm@5.22.1...5.22.2 </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/Gashmob/project-templates). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMDAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIzMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIn0=-->
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [vimeo/psalm](https://togithub.com/vimeo/psalm) | `~5.17.0` -> `~5.24.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vimeo/psalm (vimeo/psalm)</summary> ### [`v5.24.0`](https://togithub.com/vimeo/psalm/releases/tag/5.24.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.23.1...5.24.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Allow specifying flags to Codebase::isTypeContainedByType by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10829](https://togithub.com/vimeo/psalm/pull/10829) - Allow more callable types as subtypes of `callable` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10805](https://togithub.com/vimeo/psalm/pull/10805) - Report `parent` being used in callable context when the class does not extend anything by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10838](https://togithub.com/vimeo/psalm/pull/10838) - Report error for additional deprecated arg types in PHP 8.1/8.3 by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10824](https://togithub.com/vimeo/psalm/pull/10824) - Add MissingClassConstType Issue by [@​jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/10828](https://togithub.com/vimeo/psalm/pull/10828) - Enforce parameter names for consistent constructors by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10821](https://togithub.com/vimeo/psalm/pull/10821) - Add misc missing errors for invalid callable methods by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10839](https://togithub.com/vimeo/psalm/pull/10839) ##### Fixes - Forbid named arguments for ArrayAcccess methods by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10804](https://togithub.com/vimeo/psalm/pull/10804) - Don't crash on invalid templates by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10806](https://togithub.com/vimeo/psalm/pull/10806) - report error for single param name mismatch too since named args can even be used then by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10822](https://togithub.com/vimeo/psalm/pull/10822) - add support for named arguments for filter_var and filter_input by [@​pilif](https://togithub.com/pilif) in [https://github.com/vimeo/psalm/pull/10815](https://togithub.com/vimeo/psalm/pull/10815) - When inside isset, make array fetch result nullable by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10756](https://togithub.com/vimeo/psalm/pull/10756) - Promoted properties missing in extended \__construct should report PropertyNotSetInConstructor by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10817](https://togithub.com/vimeo/psalm/pull/10817) - Updating signature of `getmxrr()` by [@​ThomasLandauer](https://togithub.com/ThomasLandauer) in [https://github.com/vimeo/psalm/pull/10847](https://togithub.com/vimeo/psalm/pull/10847) - Improve string-int juggle consistency in array keys and display for int-like strings in type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10814](https://togithub.com/vimeo/psalm/pull/10814) - Fix storage not available in thread for intersection doc types by [@​simonberger](https://togithub.com/simonberger) in [https://github.com/vimeo/psalm/pull/10856](https://togithub.com/vimeo/psalm/pull/10856) - Don't emit MissingOverrideAttribute for implicit Stringable implementations by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10858](https://togithub.com/vimeo/psalm/pull/10858) - Specify array return type of session_get_cookie_params by [@​jorgsowa](https://togithub.com/jorgsowa) in [https://github.com/vimeo/psalm/pull/10859](https://togithub.com/vimeo/psalm/pull/10859) - Unknown [@​psalm](https://togithub.com/psalm) annotation should not make whole docblock invalid by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10885](https://togithub.com/vimeo/psalm/pull/10885) - Add `mail` to impure functions list by [@​smaddock](https://togithub.com/smaddock) in [https://github.com/vimeo/psalm/pull/10923](https://togithub.com/vimeo/psalm/pull/10923) - Update PHP 8.2 Call map delta with refined types for string comparison functions by [@​gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10883](https://togithub.com/vimeo/psalm/pull/10883) ##### Docs - document that [@​psalm-internal](https://togithub.com/psalm-internal) works for namespace + class too by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10866](https://togithub.com/vimeo/psalm/pull/10866) ##### Internal changes - fix tests running with other than called PHP binary if called with a non-default PHP binary by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10842](https://togithub.com/vimeo/psalm/pull/10842) - Explicitly set value in config to fix warning in tests by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10843](https://togithub.com/vimeo/psalm/pull/10843) - \[PHP 8.4] Fixes for implicit nullability deprecation by [@​Ayesh](https://togithub.com/Ayesh) in [https://github.com/vimeo/psalm/pull/10832](https://togithub.com/vimeo/psalm/pull/10832) - Throw exception instead of silently logging issues occurred during scan by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10902](https://togithub.com/vimeo/psalm/pull/10902) ##### Other changes - Fix conditional on non empty literal string by [@​VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10912](https://togithub.com/vimeo/psalm/pull/10912) - Ignore jsonSerialize for implementors of JsonSerializable by [@​josephwynn-sc](https://togithub.com/josephwynn-sc) in [https://github.com/vimeo/psalm/pull/10891](https://togithub.com/vimeo/psalm/pull/10891) - Add XML functions to ImpureFunctionsList [#​10882](https://togithub.com/vimeo/psalm/issues/10882) by [@​DKhalil](https://togithub.com/DKhalil) in [https://github.com/vimeo/psalm/pull/10887](https://togithub.com/vimeo/psalm/pull/10887) #### New Contributors - [@​Ayesh](https://togithub.com/Ayesh) made their first contribution in [https://github.com/vimeo/psalm/pull/10832](https://togithub.com/vimeo/psalm/pull/10832) - [@​smaddock](https://togithub.com/smaddock) made their first contribution in [https://github.com/vimeo/psalm/pull/10923](https://togithub.com/vimeo/psalm/pull/10923) - [@​josephwynn-sc](https://togithub.com/josephwynn-sc) made their first contribution in [https://github.com/vimeo/psalm/pull/10891](https://togithub.com/vimeo/psalm/pull/10891) - [@​DKhalil](https://togithub.com/DKhalil) made their first contribution in [https://github.com/vimeo/psalm/pull/10887](https://togithub.com/vimeo/psalm/pull/10887) **Full Changelog**: vimeo/psalm@5.23.1...5.24.0 ### [`v5.23.1`](https://togithub.com/vimeo/psalm/releases/tag/5.23.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.23.0...5.23.1) <!-- Release notes generated using configuration in .github/release.yml at 5.23.x --> #### What's Changed ##### Fixes - Fixed analysis of existing static methods if the `__callStatic()` method exists by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10812](https://togithub.com/vimeo/psalm/pull/10812) **Full Changelog**: vimeo/psalm@5.23.0...5.23.1 ### [`v5.23.0`](https://togithub.com/vimeo/psalm/releases/tag/5.23.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.22.2...5.23.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Update PHP 8.2 stubs to include `SensitiveParameterValue` by [@​gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10726](https://togithub.com/vimeo/psalm/pull/10726) - Add list of statements to BeforeFileAnalysisEvent by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10728](https://togithub.com/vimeo/psalm/pull/10728) - Forbid iterating over generators with non-nullable `send()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10697](https://togithub.com/vimeo/psalm/pull/10697) - Initial support for named parameters for callables by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10772](https://togithub.com/vimeo/psalm/pull/10772) ##### Fixes - Improve randomizer stubs by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10709](https://togithub.com/vimeo/psalm/pull/10709) - Fix detecting magic static methods by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10704](https://togithub.com/vimeo/psalm/pull/10704) - Fix non-empty-lowercase-string handling with literal non-lowercase strings by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10722](https://togithub.com/vimeo/psalm/pull/10722) - Fix RiskyTruthyFalsyComparison irrelevant errors when there is no explicit truthy/falsy type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10733](https://togithub.com/vimeo/psalm/pull/10733) - Allow `Override` attribute to be used in pure contexts by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10734](https://togithub.com/vimeo/psalm/pull/10734) - Revert "Allow tainted numerics except for 'html' and 'has_quotes'" by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10729](https://togithub.com/vimeo/psalm/pull/10729) - Fix loading stubs from phar file on Windows by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10748](https://togithub.com/vimeo/psalm/pull/10748) - Fix a false flag issue with InvalidConstantAssignmentValue by [@​MelechMizrachi](https://togithub.com/MelechMizrachi) in [https://github.com/vimeo/psalm/pull/10738](https://togithub.com/vimeo/psalm/pull/10738) - Set inside_isset false when analyzing ArrayDimFetch index by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10752](https://togithub.com/vimeo/psalm/pull/10752) - Set inside_isset = false when analyzing arguments by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10753](https://togithub.com/vimeo/psalm/pull/10753) - Fix PHP notice - crash on invalid taint-escape by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10760](https://togithub.com/vimeo/psalm/pull/10760) - Fix version comparison for `@since` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10764](https://togithub.com/vimeo/psalm/pull/10764) - Since annotations outside phpstub should not infer php version by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10769](https://togithub.com/vimeo/psalm/pull/10769) - Backport `WeakMap` iterator fix from `master` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10778](https://togithub.com/vimeo/psalm/pull/10778) - Namespace anonymous classes by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10779](https://togithub.com/vimeo/psalm/pull/10779) - Update CallMap for sqlsrv_connect and sqlsrv_errors to match reflection by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10781](https://togithub.com/vimeo/psalm/pull/10781) - `$resource` parameter of `mkdir()` is nullable since PHP 7.3 by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10802](https://togithub.com/vimeo/psalm/pull/10802) - Use wider class-string when combining class strings with intersections by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10800](https://togithub.com/vimeo/psalm/pull/10800) ##### Internal changes - Use TaintKind/TaintKindGroup constants instead of string values by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10746](https://togithub.com/vimeo/psalm/pull/10746) - Skip symlink test on Windows by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10749](https://togithub.com/vimeo/psalm/pull/10749) - Avoid duplicating code for RiskyTruthyFalsyComparison by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10765](https://togithub.com/vimeo/psalm/pull/10765) - fix PHP 8 tests running with wrong --php-version=/phpVersion= if not explicitly specified by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10776](https://togithub.com/vimeo/psalm/pull/10776) - CS fix by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10801](https://togithub.com/vimeo/psalm/pull/10801) #### New Contributors - [@​MelechMizrachi](https://togithub.com/MelechMizrachi) made their first contribution in [https://github.com/vimeo/psalm/pull/10738](https://togithub.com/vimeo/psalm/pull/10738) **Full Changelog**: vimeo/psalm@5.22.2...5.23.0 ### [`v5.22.2`](https://togithub.com/vimeo/psalm/releases/tag/5.22.2) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.22.1...5.22.2) <!-- Release notes generated using configuration in .github/release.yml at 5.22.x --> #### What's Changed ##### Fixes - Catch missing classlike exceptions during scanning by [@​weirdan](https://togithub.com/weirdan) and [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10720](https://togithub.com/vimeo/psalm/pull/10720) **Full Changelog**: vimeo/psalm@5.22.1...5.22.2 ### [`v5.22.1`](https://togithub.com/vimeo/psalm/releases/tag/5.22.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.22.0...5.22.1) <!-- Release notes generated using configuration in .github/release.yml at 5.22.x --> #### What's Changed ##### Fixes - Improve parsing of `@psalm-type` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10713](https://togithub.com/vimeo/psalm/pull/10713) **Full Changelog**: vimeo/psalm@5.22.0...5.22.1 ### [`v5.22.0`](https://togithub.com/vimeo/psalm/releases/tag/5.22.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.21.1...5.22.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Allow inline comments in typedef shapes by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10623](https://togithub.com/vimeo/psalm/pull/10623) - allow typedef imports from any kind of classlike by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10625](https://togithub.com/vimeo/psalm/pull/10625) - Allow enum cases to be global constants by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10634](https://togithub.com/vimeo/psalm/pull/10634) - New InvalidOverride issue for Override attribute by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10644](https://togithub.com/vimeo/psalm/pull/10644) - Analyze dynamic names for static property and const fetches by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10629](https://togithub.com/vimeo/psalm/pull/10629) - New MissingOverrideAttribute issue by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10651](https://togithub.com/vimeo/psalm/pull/10651) - Flag `stdClass::__construct()` calls that have arguments by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10661](https://togithub.com/vimeo/psalm/pull/10661) - Improve Reflection stubs by [@​vudaltsov](https://togithub.com/vudaltsov) in [https://github.com/vimeo/psalm/pull/10091](https://togithub.com/vimeo/psalm/pull/10091) - Forbid constructors from returning any values by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10686](https://togithub.com/vimeo/psalm/pull/10686) - Report first class callables generated for unknown static methods by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10691](https://togithub.com/vimeo/psalm/pull/10691) - Process `@psalm-this-out` on `__construct()` as well by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10690](https://togithub.com/vimeo/psalm/pull/10690) - Report invalid number of arguments for psalm-taint-\* by [@​staabm](https://togithub.com/staabm) in [https://github.com/vimeo/psalm/pull/10699](https://togithub.com/vimeo/psalm/pull/10699) ##### Fixes - Fix ownerDocument type in dom-ext classes by [@​fluffycondor](https://togithub.com/fluffycondor) in [https://github.com/vimeo/psalm/pull/10619](https://togithub.com/vimeo/psalm/pull/10619) - Fix numeric scalar validate filter var input return type wrong by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10621](https://togithub.com/vimeo/psalm/pull/10621) - Stable baseline by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10633](https://togithub.com/vimeo/psalm/pull/10633) - Allow sebastian/diff v6 by [@​simPod](https://togithub.com/simPod) in [https://github.com/vimeo/psalm/pull/10639](https://togithub.com/vimeo/psalm/pull/10639) - CallMap: Adjust return type for `inotify_add_watch()` to `int|false` by [@​UlrichEckhardt](https://togithub.com/UlrichEckhardt) in [https://github.com/vimeo/psalm/pull/10637](https://togithub.com/vimeo/psalm/pull/10637) - Fix check-type when using builtin types from within a namespace by [@​robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10648](https://togithub.com/vimeo/psalm/pull/10648) - Do not add `callable` as a native property type by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10654](https://togithub.com/vimeo/psalm/pull/10654) - Fix additional places where base_dir was broken due to missing separator by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10630](https://togithub.com/vimeo/psalm/pull/10630) - Late binding of enum cases by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10655](https://togithub.com/vimeo/psalm/pull/10655) - Suppress `UndefinedClass` in `whatever_exists()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10659](https://togithub.com/vimeo/psalm/pull/10659) - Fix parsing magic method annotations by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10665](https://togithub.com/vimeo/psalm/pull/10665) - Strip callmap prefixes from parameter names by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10666](https://togithub.com/vimeo/psalm/pull/10666) - Narrow `ord()` return type to `int<0,255>` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10676](https://togithub.com/vimeo/psalm/pull/10676) - Template union object incorrect assertions by [@​robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10677](https://togithub.com/vimeo/psalm/pull/10677) - Don't show backtrace in `InvalidDocblock` issue message by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10679](https://togithub.com/vimeo/psalm/pull/10679) - Class consts in array shapes by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10678](https://togithub.com/vimeo/psalm/pull/10678) - Prevent mixed|null by [@​robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10675](https://togithub.com/vimeo/psalm/pull/10675) ##### Internal changes - Drop unused local composer repo by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10647](https://togithub.com/vimeo/psalm/pull/10647) - Clarify that Pull request labels failure is to be resolved by maintainers by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10649](https://togithub.com/vimeo/psalm/pull/10649) - Fix unstable `hasFullyQualified(Interface|Enum)()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10603](https://togithub.com/vimeo/psalm/pull/10603) - Revert partial mistakenly pushed fix by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10671](https://togithub.com/vimeo/psalm/pull/10671) **Full Changelog**: vimeo/psalm@5.21.1...5.22.0 ### [`v5.21.1`](https://togithub.com/vimeo/psalm/releases/tag/5.21.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.21.0...5.21.1) <!-- Release notes generated using configuration in .github/release.yml at 5.21.x --> #### What's Changed ##### Fixes - Fix baseline loading for path specified on the command line by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10628](https://togithub.com/vimeo/psalm/pull/10628) **Full Changelog**: vimeo/psalm@5.21.0...5.21.1 ### [`v5.21.0`](https://togithub.com/vimeo/psalm/releases/tag/5.21.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.20.0...5.21.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Allow importing typedefs from enums by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10617](https://togithub.com/vimeo/psalm/pull/10617) ##### Fixes - Fix [#​10552](https://togithub.com/vimeo/psalm/issues/10552) by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10572](https://togithub.com/vimeo/psalm/pull/10572) - Unit test improvements for php-parser 5 by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10574](https://togithub.com/vimeo/psalm/pull/10574) - Fix template replacement edge case by [@​klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/10586](https://togithub.com/vimeo/psalm/pull/10586) - Switch condition order by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10594](https://togithub.com/vimeo/psalm/pull/10594) - Partial revert "Fix auto completion by partial property or method" by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10588](https://togithub.com/vimeo/psalm/pull/10588) - \[LSP] Add issue type in description by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10607](https://togithub.com/vimeo/psalm/pull/10607) - Do not validate callable arguments in lenient contexts by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10601](https://togithub.com/vimeo/psalm/pull/10601) - `readgzfile()` is impure by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10600](https://togithub.com/vimeo/psalm/pull/10600) - Allow properties on intersections with enum interfaces by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10599](https://togithub.com/vimeo/psalm/pull/10599) - `key_exists()` is an alias for `array_key_exists()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10598](https://togithub.com/vimeo/psalm/pull/10598) - Fix language server running with `opcache.save_comments=0` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10614](https://togithub.com/vimeo/psalm/pull/10614) - Report `MissingConstructor` for natively typed mixed properties by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10615](https://togithub.com/vimeo/psalm/pull/10615) ##### Internal changes - Bump actions/cache from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/vimeo/psalm/pull/10584](https://togithub.com/vimeo/psalm/pull/10584) - Baseline update by [@​jorgsowa](https://togithub.com/jorgsowa) in [https://github.com/vimeo/psalm/pull/10593](https://togithub.com/vimeo/psalm/pull/10593) - Re-work CheckTrivialExprVisitor by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10612](https://togithub.com/vimeo/psalm/pull/10612) - Minor php-parser tweaks by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10605](https://togithub.com/vimeo/psalm/pull/10605) #### New Contributors - [@​jorgsowa](https://togithub.com/jorgsowa) made their first contribution in [https://github.com/vimeo/psalm/pull/10593](https://togithub.com/vimeo/psalm/pull/10593) **Full Changelog**: vimeo/psalm@5.20.0...5.21.0 ### [`v5.20.0`](https://togithub.com/vimeo/psalm/releases/tag/5.20.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.19.1...5.20.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - report error for non-strict or empty comparison on truthy+falsy union by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10502](https://togithub.com/vimeo/psalm/pull/10502) ##### Fixes - Fix template, conditional array keys by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10568](https://togithub.com/vimeo/psalm/pull/10568) **Full Changelog**: vimeo/psalm@5.19.1...5.20.0 ### [`v5.19.1`](https://togithub.com/vimeo/psalm/releases/tag/5.19.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.19.0...5.19.1) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Fixes - Deprecated Template Classes are not ignored by [@​psalm-suppress](https://togithub.com/psalm-suppress) DeprecatedClass by [@​samlitowitz](https://togithub.com/samlitowitz) in [https://github.com/vimeo/psalm/pull/10518](https://togithub.com/vimeo/psalm/pull/10518) - Implement \__set method in SimpleXMLElement stub by [@​kthaler](https://togithub.com/kthaler) in [https://github.com/vimeo/psalm/pull/10536](https://togithub.com/vimeo/psalm/pull/10536) - Make getrandmax type more specific and unserialize to require class-string by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10540](https://togithub.com/vimeo/psalm/pull/10540) - Fix mb_get_info can return null - CI failing bc of reflection by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10543](https://togithub.com/vimeo/psalm/pull/10543) - make basename & dirname return types more specific by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10545](https://togithub.com/vimeo/psalm/pull/10545) - add support for extract to set variables for keyed arrays and respect EXTR_SKIP by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10544](https://togithub.com/vimeo/psalm/pull/10544) - remove redundat directory separator which caused "//" in path not found errors by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10542](https://togithub.com/vimeo/psalm/pull/10542) - Fix empty literal string becomes non-empty-string by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10499](https://togithub.com/vimeo/psalm/pull/10499) #### New Contributors - [@​samlitowitz](https://togithub.com/samlitowitz) made their first contribution in [https://github.com/vimeo/psalm/pull/10518](https://togithub.com/vimeo/psalm/pull/10518) - [@​kthaler](https://togithub.com/kthaler) made their first contribution in [https://github.com/vimeo/psalm/pull/10536](https://togithub.com/vimeo/psalm/pull/10536) **Full Changelog**: vimeo/psalm@5.19.0...5.20.0 ### [`v5.19.0`](https://togithub.com/vimeo/psalm/releases/tag/5.19.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.18.0...5.19.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Reduce memory consumption of caching and parallel processing without igbinary by [@​sj-i](https://togithub.com/sj-i) in [https://github.com/vimeo/psalm/pull/10532](https://togithub.com/vimeo/psalm/pull/10532) - filter_input & filter_var return type more specific by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10498](https://togithub.com/vimeo/psalm/pull/10498) ##### Fixes - strtok always returns a non-empty-string when it does not return false by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10497](https://togithub.com/vimeo/psalm/pull/10497) - Fix [#​10512](https://togithub.com/vimeo/psalm/issues/10512): Fixed SessionUpdateTimestampHandlerInterface parameter names by [@​zerkms](https://togithub.com/zerkms) in [https://github.com/vimeo/psalm/pull/10524](https://togithub.com/vimeo/psalm/pull/10524) - Fix [GH-10465](https://togithub.com/vimeo/psalm/issues/10465) by [@​florisluiten](https://togithub.com/florisluiten) in [https://github.com/vimeo/psalm/pull/10483](https://togithub.com/vimeo/psalm/pull/10483) - Fix callable without args not handled correctly by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10500](https://togithub.com/vimeo/psalm/pull/10500) - Add error when using readonly property in by-ref arg by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10505](https://togithub.com/vimeo/psalm/pull/10505) - fix: [#​10496](https://togithub.com/vimeo/psalm/issues/10496) [#​10503](https://togithub.com/vimeo/psalm/issues/10503) by [@​ging-dev](https://togithub.com/ging-dev) in [https://github.com/vimeo/psalm/pull/10508](https://togithub.com/vimeo/psalm/pull/10508) #### New Contributors - [@​florisluiten](https://togithub.com/florisluiten) made their first contribution in [https://github.com/vimeo/psalm/pull/10483](https://togithub.com/vimeo/psalm/pull/10483) **Full Changelog**: vimeo/psalm@5.18.0...5.19.0 ### [`v5.18.0`](https://togithub.com/vimeo/psalm/releases/tag/5.18.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.17.0...5.18.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> ##### What's Changed ##### Features - Add support for Override attribute by [@​delolmo](https://togithub.com/delolmo) in [https://github.com/vimeo/psalm/pull/10493](https://togithub.com/vimeo/psalm/pull/10493) ##### Fixes - Fix [#​10460](https://togithub.com/vimeo/psalm/issues/10460) by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10464](https://togithub.com/vimeo/psalm/pull/10464) - Emit AfterCodebasePopulatedEvent even on partial scans by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10457](https://togithub.com/vimeo/psalm/pull/10457) - Small assertion fix by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10455](https://togithub.com/vimeo/psalm/pull/10455) - Fix shaped array class string key combination by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10450](https://togithub.com/vimeo/psalm/pull/10450) - Fix remaining POSIX-only absolute path detection by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10452](https://togithub.com/vimeo/psalm/pull/10452) - dont combine empty string with numeric-string by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10459](https://togithub.com/vimeo/psalm/pull/10459) - Fix type not equal when parent by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10477](https://togithub.com/vimeo/psalm/pull/10477) - Use same parameter names in stubs by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10480](https://togithub.com/vimeo/psalm/pull/10480) - fix false positive ArgumentTypeCoercion for callback param by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10454](https://togithub.com/vimeo/psalm/pull/10454) - report error for invalid array key type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10481](https://togithub.com/vimeo/psalm/pull/10481) - fix literal int/string comparisons only using one literal by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10484](https://togithub.com/vimeo/psalm/pull/10484) - add InvalidArgument error when passing false to true param by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10488](https://togithub.com/vimeo/psalm/pull/10488) - Fix Uncaught RuntimeException: PHP Error: Uninitialized string offset 0 when $pattern is empty by [@​iMu3ic](https://togithub.com/iMu3ic) in [https://github.com/vimeo/psalm/pull/10489](https://togithub.com/vimeo/psalm/pull/10489) ##### Internal changes - fix composer scripts running with inconsistent php versions by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10463](https://togithub.com/vimeo/psalm/pull/10463) - update fidry/cpu-core-counter dependency by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10456](https://togithub.com/vimeo/psalm/pull/10456) - fix psalm v4 hardcoded in tests by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10475](https://togithub.com/vimeo/psalm/pull/10475) ##### New Contributors - [@​iMu3ic](https://togithub.com/iMu3ic) made their first contribution in [https://github.com/vimeo/psalm/pull/10489](https://togithub.com/vimeo/psalm/pull/10489) - [@​delolmo](https://togithub.com/delolmo) made their first contribution in [https://github.com/vimeo/psalm/pull/10493](https://togithub.com/vimeo/psalm/pull/10493) **Full Changelog**: vimeo/psalm@5.17.0...5.18.0 </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/open-feature/php-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy45My4xIiwidXBkYXRlZEluVmVyIjoiMzcuMzMxLjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@sinceannotations should only infer PHP version in .phpstub files or for@since 8.0.0 PHPrefs Psalm ignores functions with certain@sinceannotations, and then reports a ParseError #10761Fixes #10761