vimeo/psalm (vimeo/psalm)
### [`v5.25.0`](https://togithub.com/vimeo/psalm/releases/tag/5.25.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.24.0...5.25.0)
#### What's Changed
##### Features
- Casting int-range should keep literals by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10941](https://togithub.com/vimeo/psalm/pull/10941)
- Update help panel by [@llaville](https://togithub.com/llaville) in [https://github.com/vimeo/psalm/pull/11000](https://togithub.com/vimeo/psalm/pull/11000)
- Add support for phpstan-pure by [@VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10975](https://togithub.com/vimeo/psalm/pull/10975)
- Precise preg_match_all return type by [@VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10969](https://togithub.com/vimeo/psalm/pull/10969)
##### Fixes
- Fix-[GH-10933](https://togithub.com/vimeo/psalm/issues/10933)-And-[GH-10951](https://togithub.com/vimeo/psalm/issues/10951) by [@jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/10953](https://togithub.com/vimeo/psalm/pull/10953)
- redis: add possible types for `Redis#auth` method by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10934](https://togithub.com/vimeo/psalm/pull/10934)
- Avoid false positive about array which are non-callable by [@VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10935](https://togithub.com/vimeo/psalm/pull/10935)
- Fix literal-string|non-empty-literal-string by [@VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10930](https://togithub.com/vimeo/psalm/pull/10930)
- Fix signature of Locale::canonicalize. by [@ADmad](https://togithub.com/ADmad) in [https://github.com/vimeo/psalm/pull/11010](https://togithub.com/vimeo/psalm/pull/11010)
#### New Contributors
- [@llaville](https://togithub.com/llaville) made their first contribution in [https://github.com/vimeo/psalm/pull/11000](https://togithub.com/vimeo/psalm/pull/11000)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.24.0...5.25.0
### [`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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
#### 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**: https://github.com/vimeo/psalm/compare/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)
##### 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**: https://github.com/vimeo/psalm/compare/5.17.0...5.18.0
### [`v5.17.0`](https://togithub.com/vimeo/psalm/releases/tag/5.17.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.16.0...5.17.0)
#### What's Changed
##### Features
- Implement by-ref closure use analysis by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10419](https://togithub.com/vimeo/psalm/pull/10419)
##### Fixes
- Update MongoDB stubs for 1.17 by [@alcaeus](https://togithub.com/alcaeus) in [https://github.com/vimeo/psalm/pull/10402](https://togithub.com/vimeo/psalm/pull/10402)
- Fix backtick analysis by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10409](https://togithub.com/vimeo/psalm/pull/10409)
- Declare we do not support document highlighting by [@tm1000](https://togithub.com/tm1000) in [https://github.com/vimeo/psalm/pull/10408](https://togithub.com/vimeo/psalm/pull/10408)
- update define types to be correct by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10423](https://togithub.com/vimeo/psalm/pull/10423)
- Fix return type of DOMXPath::query by [@nielsdos](https://togithub.com/nielsdos) in [https://github.com/vimeo/psalm/pull/10443](https://togithub.com/vimeo/psalm/pull/10443)
- Fix CLI -r error by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10442](https://togithub.com/vimeo/psalm/pull/10442)
- Use correct file path while adding unused suppressions for virtual \__ā¦ by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10434](https://togithub.com/vimeo/psalm/pull/10434)
- Restore support for null coalesce on match expressions by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/10422](https://togithub.com/vimeo/psalm/pull/10422)
- Fix static magic method pureness not being inherited from traits by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/10429](https://togithub.com/vimeo/psalm/pull/10429)
- Fix POSIX only detection of absolute paths by [@rarila](https://togithub.com/rarila) in [https://github.com/vimeo/psalm/pull/10441](https://togithub.com/vimeo/psalm/pull/10441)
- Emit UnusedPsalmSuppress issues for suppressed issues already removed by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10431](https://togithub.com/vimeo/psalm/pull/10431)
- Use keyed arrays when assigning literal union keys & assertion fixes by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10439](https://togithub.com/vimeo/psalm/pull/10439)
##### Internal changes
- use branch name to randomize tests to ensure test dependencies will error by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10424](https://togithub.com/vimeo/psalm/pull/10424)
#### New Contributors
- [@nielsdos](https://togithub.com/nielsdos) made their first contribution in [https://github.com/vimeo/psalm/pull/10443](https://togithub.com/vimeo/psalm/pull/10443)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.16.0...5.17.0
### [`v5.16.0`](https://togithub.com/vimeo/psalm/releases/tag/5.16.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.15.0...5.16.0)
#### What's Changed
##### Features
- Show success message and type stats with GHA formatter by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10145](https://togithub.com/vimeo/psalm/pull/10145)
- New sinks for TaintedCallable [#10117](https://togithub.com/vimeo/psalm/issues/10117) by [@cgocast](https://togithub.com/cgocast) in [https://github.com/vimeo/psalm/pull/10154](https://togithub.com/vimeo/psalm/pull/10154)
- Properly inherit assertions from parents or implemented faces by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10157](https://togithub.com/vimeo/psalm/pull/10157)
- Flag invalid declares by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10176](https://togithub.com/vimeo/psalm/pull/10176)
- Narrow `ArrayObject` `TKey` template by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10190](https://togithub.com/vimeo/psalm/pull/10190)
- Allow object assertions for `mixed` values by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10207](https://togithub.com/vimeo/psalm/pull/10207)
- Issue handlers priority by [@gmessier](https://togithub.com/gmessier) in [https://github.com/vimeo/psalm/pull/10202](https://togithub.com/vimeo/psalm/pull/10202)
- Check for declare strict_types in block mode by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/10234](https://togithub.com/vimeo/psalm/pull/10234)
- feat(LSP): Improve the autocomplete for nested array shape by [@ging-dev](https://togithub.com/ging-dev) in [https://github.com/vimeo/psalm/pull/10230](https://togithub.com/vimeo/psalm/pull/10230)
- Add alias support to psalm-check-type by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10264](https://togithub.com/vimeo/psalm/pull/10264)
- Allow parameter names in callable docblocks with templates by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10261](https://togithub.com/vimeo/psalm/pull/10261)
- Disallow `never` type for parameters by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/10266](https://togithub.com/vimeo/psalm/pull/10266)
- Fix auto completion by partial property or method by [@issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10320](https://togithub.com/vimeo/psalm/pull/10320)
- Add stubs for rdKafka by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10351](https://togithub.com/vimeo/psalm/pull/10351)
- Suppressing NoValue should not treat subsequent code as unevaluated by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10303](https://togithub.com/vimeo/psalm/pull/10303)
- Fix misc callable bugs by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10370](https://togithub.com/vimeo/psalm/pull/10370)
##### Fixes
- Added more gc_status return fields by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10138](https://togithub.com/vimeo/psalm/pull/10138)
- Filter baseline when checking individual files by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10115](https://togithub.com/vimeo/psalm/pull/10115)
- Assertion enhancements regarding `value-of` in combination with backed enums by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10150](https://togithub.com/vimeo/psalm/pull/10150)
- `strrchr()`: `$before_needle` parameter by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10151](https://togithub.com/vimeo/psalm/pull/10151)
- Update `mysqli` stub by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10155](https://togithub.com/vimeo/psalm/pull/10155)
- Fix crash on property access to undefined property on a class with a missing dependncy by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10159](https://togithub.com/vimeo/psalm/pull/10159)
- Prevent infinite-loop when resolving type-aliases by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10156](https://togithub.com/vimeo/psalm/pull/10156)
- InheritorViolation was only being triggered on grand-childen classes by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10169](https://togithub.com/vimeo/psalm/pull/10169)
- Restore support for namespaced functions in referencedFunction config by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/10186](https://togithub.com/vimeo/psalm/pull/10186)
- `DateTimeZone::getName()` always returns `non-empty-string` by [@gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10187](https://togithub.com/vimeo/psalm/pull/10187)
- Only the binary op 'plus' works with two arrays by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10209](https://togithub.com/vimeo/psalm/pull/10209)
- Add openssl_\*\_export_to_file to impure functions by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10210](https://togithub.com/vimeo/psalm/pull/10210)
- add FILTER_SANITIZE_URL filter to filter_var by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10214](https://togithub.com/vimeo/psalm/pull/10214)
- Allow class-string where T is a union by [@MidnightDesign](https://togithub.com/MidnightDesign) in [https://github.com/vimeo/psalm/pull/10194](https://togithub.com/vimeo/psalm/pull/10194)
- Loop over PDOStatement::fetch() arguments by [@cgocast](https://togithub.com/cgocast) in [https://github.com/vimeo/psalm/pull/10237](https://togithub.com/vimeo/psalm/pull/10237)
- Inherited assertions v2 by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10189](https://togithub.com/vimeo/psalm/pull/10189)
- Resolve inherited conditional return types by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10191](https://togithub.com/vimeo/psalm/pull/10191)
- Allow stringable objects in `sprintf()` values by [@MidnightDesign](https://togithub.com/MidnightDesign) in [https://github.com/vimeo/psalm/pull/10231](https://togithub.com/vimeo/psalm/pull/10231)
- fix: [#10239](https://togithub.com/vimeo/psalm/issues/10239) by [@ging-dev](https://togithub.com/ging-dev) in [https://github.com/vimeo/psalm/pull/10240](https://togithub.com/vimeo/psalm/pull/10240)
- Remove duplicate namespace in InternalMethod error message by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10241](https://togithub.com/vimeo/psalm/pull/10241)
- Add stream_socket_shutdown socket_shutdown to impure function list by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/10244](https://togithub.com/vimeo/psalm/pull/10244)
- Emit `MethodSignatureMismatch` when descendant does not return by reference by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/10248](https://togithub.com/vimeo/psalm/pull/10248)
- Negated class_exist check on class-string converts to string instead of mixed by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10262](https://togithub.com/vimeo/psalm/pull/10262)
- Fix error message for implicitly returning functions with `never` return type by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/10254](https://togithub.com/vimeo/psalm/pull/10254)
- Type check nested templates by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/10271](https://togithub.com/vimeo/psalm/pull/10271)
- Fix return of BadSqlTainter::afterExpressionAnalysis() by [@cgocast](https://togithub.com/cgocast) in [https://github.com/vimeo/psalm/pull/10270](https://togithub.com/vimeo/psalm/pull/10270)
- Allow tainted numerics except for 'html' and 'has_quotes' by [@cgocast](https://togithub.com/cgocast) in [https://github.com/vimeo/psalm/pull/10242](https://togithub.com/vimeo/psalm/pull/10242)
- fix final class constant type by [@kk-daniel](https://togithub.com/kk-daniel) in [https://github.com/vimeo/psalm/pull/10279](https://togithub.com/vimeo/psalm/pull/10279)
- Fix inferring enum case value from a class constant by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/10274](https://togithub.com/vimeo/psalm/pull/10274)
- fix: [#10080](https://togithub.com/vimeo/psalm/issues/10080) by [@ging-dev](https://togithub.com/ging-dev) in [https://github.com/vimeo/psalm/pull/10228](https://togithub.com/vimeo/psalm/pull/10228)
- Fix memory explosion with calls to method_exists by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10290](https://togithub.com/vimeo/psalm/pull/10290)
- Additional caching fixes by [@ging-dev](https://togithub.com/ging-dev) in [https://github.com/vimeo/psalm/pull/10289](https://togithub.com/vimeo/psalm/pull/10289)
- str_replace / substr_replace signature improvements by [@mathroc](https://togithub.com/mathroc) in [https://github.com/vimeo/psalm/pull/10277](https://togithub.com/vimeo/psalm/pull/10277)
- Fix method calls and property accesses after extension_loaded by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10295](https://togithub.com/vimeo/psalm/pull/10295)
- fix [@param-out](https://togithub.com/param-out) with named arguments by [@kk-daniel](https://togithub.com/kk-daniel) in [https://github.com/vimeo/psalm/pull/10312](https://togithub.com/vimeo/psalm/pull/10312)
- Narrow down `get_browser` returning array or object by [@simonberger](https://togithub.com/simonberger) in [https://github.com/vimeo/psalm/pull/10314](https://togithub.com/vimeo/psalm/pull/10314)
- Allow int keys when calling Redis methods by [@greg0ire](https://togithub.com/greg0ire) in [https://github.com/vimeo/psalm/pull/10355](https://togithub.com/vimeo/psalm/pull/10355)
- Finding methods and properties for auto completion feature by [@issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10385](https://togithub.com/vimeo/psalm/pull/10385)
- update decimal stubs from documented URL by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10379](https://togithub.com/vimeo/psalm/pull/10379)
- Fix Phar build failure by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/10391](https://togithub.com/vimeo/psalm/pull/10391)
- Fix redundant condition mixed type escape hatch & loose comparison int type shouldnt be mixed by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10388](https://togithub.com/vimeo/psalm/pull/10388)
- Fix [#10398](https://togithub.com/vimeo/psalm/issues/10398): add missing methods of ReflectionProperty class in CallMap and CallMap deltas. by [@niconoe-](https://togithub.com/niconoe-) in [https://github.com/vimeo/psalm/pull/10399](https://togithub.com/vimeo/psalm/pull/10399)
##### Docs
- docs: A semicolon expected by [@lens0021](https://togithub.com/lens0021) in [https://github.com/vimeo/psalm/pull/10149](https://togithub.com/vimeo/psalm/pull/10149)
- Add documentation for [@psalm-flow](https://togithub.com/psalm-flow) by [@ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10349](https://togithub.com/vimeo/psalm/pull/10349)
##### Internal changes
- Extract the list of impure functions into its own dictionary by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10136](https://togithub.com/vimeo/psalm/pull/10136)
- `composer.json` tweaks by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10161](https://togithub.com/vimeo/psalm/pull/10161)
- Bump actions/checkout from 3 to 4 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/vimeo/psalm/pull/10192](https://togithub.com/vimeo/psalm/pull/10192)
- Update IssueBuffer.php by [@aleksandr-shevchenko](https://togithub.com/aleksandr-shevchenko) in [https://github.com/vimeo/psalm/pull/10294](https://togithub.com/vimeo/psalm/pull/10294)
- Backport rector fixes to 5.x by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10306](https://togithub.com/vimeo/psalm/pull/10306)
- Bump fkirc/skip-duplicate-actions from 5.3.0 to 5.3.1 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/vimeo/psalm/pull/10313](https://togithub.com/vimeo/psalm/pull/10313)
- Allow Symfony 7 by [@kbond](https://togithub.com/kbond) in [https://github.com/vimeo/psalm/pull/10335](https://togithub.com/vimeo/psalm/pull/10335)
- Get rid of legacy 7.3 logic by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10319](https://togithub.com/vimeo/psalm/pull/10319)
- Finalize all internal classes by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10318](https://togithub.com/vimeo/psalm/pull/10318)
- fix CI "split" unevenly splits the number of tests by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10389](https://togithub.com/vimeo/psalm/pull/10389)
- Fix circleci builds by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10396](https://togithub.com/vimeo/psalm/pull/10396)
##### Other changes
- Add exec output param out by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10128](https://togithub.com/vimeo/psalm/pull/10128)
#### New Contributors
- [@lens0021](https://togithub.com/lens0021) made their first contribution in [https://github.com/vimeo/psalm/pull/10149](https://togithub.com/vimeo/psalm/pull/10149)
- [@kk-daniel](https://togithub.com/kk-daniel) made their first contribution in [https://github.com/vimeo/psalm/pull/10279](https://togithub.com/vimeo/psalm/pull/10279)
- [@aleksandr-shevchenko](https://togithub.com/aleksandr-shevchenko) made their first contribution in [https://github.com/vimeo/psalm/pull/10294](https://togithub.com/vimeo/psalm/pull/10294)
- [@simonberger](https://togithub.com/simonberger) made their first contribution in [https://github.com/vimeo/psalm/pull/10314](https://togithub.com/vimeo/psalm/pull/10314)
- [@kbond](https://togithub.com/kbond) made their first contribution in [https://github.com/vimeo/psalm/pull/10335](https://togithub.com/vimeo/psalm/pull/10335)
- [@issidorov](https://togithub.com/issidorov) made their first contribution in [https://github.com/vimeo/psalm/pull/10320](https://togithub.com/vimeo/psalm/pull/10320)
**Full Changelog**: https://github.com/vimeo/psalm/compare/5.15.0...5.16.0
### [`v5.15.0`](https://togithub.com/vimeo/psalm/releases/tag/5.15.0)
[Compare Source](https://togithub.com/vimeo/psalm/compare/5.14.1...5.15.0)
#### What's Changed
##### Features
- Check if argument passed to isset() is not a variable by [@Nitamet](https://togithub.com/Nitamet) in [https://github.com/vimeo/psalm/pull/10068](https://togithub.com/vimeo/psalm/pull/10068)
- Fix [#9997](https://togithub.com/vimeo/psalm/issues/9997) dynamic properties on SimpleXmlElement by [@ygottschalk](https://togithub.com/ygottschalk) in [https://github.com/vimeo/psalm/pull/10049](https://togithub.com/vimeo/psalm/pull/10049)
- Nicer PHP version checking by [@Nitamet](https://togithub.com/Nitamet) in [https://github.com/vimeo/psalm/pull/10129](https://togithub.com/vimeo/psalm/pull/10129)
##### Fix
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, check this box
This PR contains the following updates:
^4.24
->^4.24 \|\| ^5.0
Release Notes
vimeo/psalm (vimeo/psalm)
### [`v5.25.0`](https://togithub.com/vimeo/psalm/releases/tag/5.25.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.24.0...5.25.0) #### What's Changed ##### Features - Casting int-range should keep literals by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10941](https://togithub.com/vimeo/psalm/pull/10941) - Update help panel by [@llaville](https://togithub.com/llaville) in [https://github.com/vimeo/psalm/pull/11000](https://togithub.com/vimeo/psalm/pull/11000) - Add support for phpstan-pure by [@VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10975](https://togithub.com/vimeo/psalm/pull/10975) - Precise preg_match_all return type by [@VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10969](https://togithub.com/vimeo/psalm/pull/10969) ##### Fixes - Fix-[GH-10933](https://togithub.com/vimeo/psalm/issues/10933)-And-[GH-10951](https://togithub.com/vimeo/psalm/issues/10951) by [@jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/10953](https://togithub.com/vimeo/psalm/pull/10953) - redis: add possible types for `Redis#auth` method by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10934](https://togithub.com/vimeo/psalm/pull/10934) - Avoid false positive about array which are non-callable by [@VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10935](https://togithub.com/vimeo/psalm/pull/10935) - Fix literal-string|non-empty-literal-string by [@VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10930](https://togithub.com/vimeo/psalm/pull/10930) - Fix signature of Locale::canonicalize. by [@ADmad](https://togithub.com/ADmad) in [https://github.com/vimeo/psalm/pull/11010](https://togithub.com/vimeo/psalm/pull/11010) #### New Contributors - [@llaville](https://togithub.com/llaville) made their first contribution in [https://github.com/vimeo/psalm/pull/11000](https://togithub.com/vimeo/psalm/pull/11000) **Full Changelog**: https://github.com/vimeo/psalm/compare/5.24.0...5.25.0 ### [`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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) #### 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**: https://github.com/vimeo/psalm/compare/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) ##### 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**: https://github.com/vimeo/psalm/compare/5.17.0...5.18.0 ### [`v5.17.0`](https://togithub.com/vimeo/psalm/releases/tag/5.17.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.16.0...5.17.0) #### What's Changed ##### Features - Implement by-ref closure use analysis by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10419](https://togithub.com/vimeo/psalm/pull/10419) ##### Fixes - Update MongoDB stubs for 1.17 by [@alcaeus](https://togithub.com/alcaeus) in [https://github.com/vimeo/psalm/pull/10402](https://togithub.com/vimeo/psalm/pull/10402) - Fix backtick analysis by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10409](https://togithub.com/vimeo/psalm/pull/10409) - Declare we do not support document highlighting by [@tm1000](https://togithub.com/tm1000) in [https://github.com/vimeo/psalm/pull/10408](https://togithub.com/vimeo/psalm/pull/10408) - update define types to be correct by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10423](https://togithub.com/vimeo/psalm/pull/10423) - Fix return type of DOMXPath::query by [@nielsdos](https://togithub.com/nielsdos) in [https://github.com/vimeo/psalm/pull/10443](https://togithub.com/vimeo/psalm/pull/10443) - Fix CLI -r error by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10442](https://togithub.com/vimeo/psalm/pull/10442) - Use correct file path while adding unused suppressions for virtual \__ā¦ by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10434](https://togithub.com/vimeo/psalm/pull/10434) - Restore support for null coalesce on match expressions by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/10422](https://togithub.com/vimeo/psalm/pull/10422) - Fix static magic method pureness not being inherited from traits by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/10429](https://togithub.com/vimeo/psalm/pull/10429) - Fix POSIX only detection of absolute paths by [@rarila](https://togithub.com/rarila) in [https://github.com/vimeo/psalm/pull/10441](https://togithub.com/vimeo/psalm/pull/10441) - Emit UnusedPsalmSuppress issues for suppressed issues already removed by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10431](https://togithub.com/vimeo/psalm/pull/10431) - Use keyed arrays when assigning literal union keys & assertion fixes by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10439](https://togithub.com/vimeo/psalm/pull/10439) ##### Internal changes - use branch name to randomize tests to ensure test dependencies will error by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10424](https://togithub.com/vimeo/psalm/pull/10424) #### New Contributors - [@nielsdos](https://togithub.com/nielsdos) made their first contribution in [https://github.com/vimeo/psalm/pull/10443](https://togithub.com/vimeo/psalm/pull/10443) **Full Changelog**: https://github.com/vimeo/psalm/compare/5.16.0...5.17.0 ### [`v5.16.0`](https://togithub.com/vimeo/psalm/releases/tag/5.16.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.15.0...5.16.0) #### What's Changed ##### Features - Show success message and type stats with GHA formatter by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10145](https://togithub.com/vimeo/psalm/pull/10145) - New sinks for TaintedCallable [#10117](https://togithub.com/vimeo/psalm/issues/10117) by [@cgocast](https://togithub.com/cgocast) in [https://github.com/vimeo/psalm/pull/10154](https://togithub.com/vimeo/psalm/pull/10154) - Properly inherit assertions from parents or implemented faces by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10157](https://togithub.com/vimeo/psalm/pull/10157) - Flag invalid declares by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10176](https://togithub.com/vimeo/psalm/pull/10176) - Narrow `ArrayObject` `TKey` template by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10190](https://togithub.com/vimeo/psalm/pull/10190) - Allow object assertions for `mixed` values by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10207](https://togithub.com/vimeo/psalm/pull/10207) - Issue handlers priority by [@gmessier](https://togithub.com/gmessier) in [https://github.com/vimeo/psalm/pull/10202](https://togithub.com/vimeo/psalm/pull/10202) - Check for declare strict_types in block mode by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/10234](https://togithub.com/vimeo/psalm/pull/10234) - feat(LSP): Improve the autocomplete for nested array shape by [@ging-dev](https://togithub.com/ging-dev) in [https://github.com/vimeo/psalm/pull/10230](https://togithub.com/vimeo/psalm/pull/10230) - Add alias support to psalm-check-type by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10264](https://togithub.com/vimeo/psalm/pull/10264) - Allow parameter names in callable docblocks with templates by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10261](https://togithub.com/vimeo/psalm/pull/10261) - Disallow `never` type for parameters by [@tuqqu](https://togithub.com/tuqqu) in [https://github.com/vimeo/psalm/pull/10266](https://togithub.com/vimeo/psalm/pull/10266) - Fix auto completion by partial property or method by [@issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10320](https://togithub.com/vimeo/psalm/pull/10320) - Add stubs for rdKafka by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10351](https://togithub.com/vimeo/psalm/pull/10351) - Suppressing NoValue should not treat subsequent code as unevaluated by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10303](https://togithub.com/vimeo/psalm/pull/10303) - Fix misc callable bugs by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10370](https://togithub.com/vimeo/psalm/pull/10370) ##### Fixes - Added more gc_status return fields by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10138](https://togithub.com/vimeo/psalm/pull/10138) - Filter baseline when checking individual files by [@edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10115](https://togithub.com/vimeo/psalm/pull/10115) - Assertion enhancements regarding `value-of` in combination with backed enums by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10150](https://togithub.com/vimeo/psalm/pull/10150) - `strrchr()`: `$before_needle` parameter by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10151](https://togithub.com/vimeo/psalm/pull/10151) - Update `mysqli` stub by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10155](https://togithub.com/vimeo/psalm/pull/10155) - Fix crash on property access to undefined property on a class with a missing dependncy by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10159](https://togithub.com/vimeo/psalm/pull/10159) - Prevent infinite-loop when resolving type-aliases by [@boesing](https://togithub.com/boesing) in [https://github.com/vimeo/psalm/pull/10156](https://togithub.com/vimeo/psalm/pull/10156) - InheritorViolation was only being triggered on grand-childen classes by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10169](https://togithub.com/vimeo/psalm/pull/10169) - Restore support for namespaced functions in referencedFunction config by [@tscni](https://togithub.com/tscni) in [https://github.com/vimeo/psalm/pull/10186](https://togithub.com/vimeo/psalm/pull/10186) - `DateTimeZone::getName()` always returns `non-empty-string` by [@gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10187](https://togithub.com/vimeo/psalm/pull/10187) - Only the binary op 'plus' works with two arrays by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10209](https://togithub.com/vimeo/psalm/pull/10209) - Add openssl_\*\_export_to_file to impure functions by [@robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10210](https://togithub.com/vimeo/psalm/pull/10210) - add FILTER_SANITIZE_URL filter to filter_var by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10214](https://togithub.com/vimeo/psalm/pull/10214) - Allow class-stringConfiguration
š 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 was generated by Mend Renovate. View the repository job log.