Add misc missing errors for invalid callable methods#10839
Add misc missing errors for invalid callable methods#10839
Conversation
6d475d3 to
8e98e5c
Compare
|
Failing tests are bc of a CI bug which is fixed in #10843 |
8e98e5c to
e83530a
Compare
|
Thanks! Especially for the ton of new tests. |
|
Hi @kkmuffme @weirdan, I think this PR introduce a false-positive. I get errors on SonataMediaBundle as shown by But the TwigFunction doesn't require a static callable: |
|
Can you create a minimal reproduction on psalm.dev please that can be used as a unit test when fixing this issue? Can you perhaps link me to one example of how that callable is actually used then https://github.com/twigphp/Twig/blob/68e4e5545f85e0dc9f09dff7f9db473577234fb9/src/TwigFunction.php#L61C21-L61C32 ? |
I tried, but unfortunately I still didn't understood why I cannot reproduce it on psalm.dev with something like But it's easy to get the error on this Sonata branch sonata-project/SonataMediaBundle#2452
Twig has a special behavior that's why the phpdoc is |
|
I found these snippets: https://psalm.dev/r/2d2959e71b<?php
namespace Foo;
final class TwigFunction
{
/**
* @param callable|array{class-string, string}|null $callable A callable implementing the function. If null, you need to overwrite the "node_class" option to customize compilation.
*/
public function __construct(string $name, $callable = null)
{
}
}
namespace Bar;
final class FormatterMediaExtension
{
/** @return \Foo\TwigFunction[] */
public function getFunctions(): array
{
return [
new \Foo\TwigFunction('sonata_media', [\Baz\MediaRuntime::class, 'media']),
];
}
}
namespace Baz;
final class MediaRuntime
{
public function media(string $foo): void
{
}
} |
|
I don't have time to dive into this atm, but I think the underlying issue is that: There is no way to fix this for psalm really, bc it would create other issues if |
But as soon as you change to
I found a way #10935 |
I guess this also works for psalm, doesn't it? |
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [vimeo/psalm](https://togithub.com/vimeo/psalm) | `5.23.1` -> `5.24.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vimeo/psalm (vimeo/psalm)</summary> ### [`v5.24.0`](https://togithub.com/vimeo/psalm/releases/tag/5.24.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.23.1...5.24.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Allow specifying flags to Codebase::isTypeContainedByType by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10829](https://togithub.com/vimeo/psalm/pull/10829) - Allow more callable types as subtypes of `callable` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10805](https://togithub.com/vimeo/psalm/pull/10805) - Report `parent` being used in callable context when the class does not extend anything by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10838](https://togithub.com/vimeo/psalm/pull/10838) - Report error for additional deprecated arg types in PHP 8.1/8.3 by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10824](https://togithub.com/vimeo/psalm/pull/10824) - Add MissingClassConstType Issue by [@​jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/10828](https://togithub.com/vimeo/psalm/pull/10828) - Enforce parameter names for consistent constructors by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10821](https://togithub.com/vimeo/psalm/pull/10821) - Add misc missing errors for invalid callable methods by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10839](https://togithub.com/vimeo/psalm/pull/10839) ##### Fixes - Forbid named arguments for ArrayAcccess methods by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10804](https://togithub.com/vimeo/psalm/pull/10804) - Don't crash on invalid templates by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10806](https://togithub.com/vimeo/psalm/pull/10806) - report error for single param name mismatch too since named args can even be used then by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10822](https://togithub.com/vimeo/psalm/pull/10822) - add support for named arguments for filter_var and filter_input by [@​pilif](https://togithub.com/pilif) in [https://github.com/vimeo/psalm/pull/10815](https://togithub.com/vimeo/psalm/pull/10815) - When inside isset, make array fetch result nullable by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10756](https://togithub.com/vimeo/psalm/pull/10756) - Promoted properties missing in extended \__construct should report PropertyNotSetInConstructor by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10817](https://togithub.com/vimeo/psalm/pull/10817) - Updating signature of `getmxrr()` by [@​ThomasLandauer](https://togithub.com/ThomasLandauer) in [https://github.com/vimeo/psalm/pull/10847](https://togithub.com/vimeo/psalm/pull/10847) - Improve string-int juggle consistency in array keys and display for int-like strings in type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10814](https://togithub.com/vimeo/psalm/pull/10814) - Fix storage not available in thread for intersection doc types by [@​simonberger](https://togithub.com/simonberger) in [https://github.com/vimeo/psalm/pull/10856](https://togithub.com/vimeo/psalm/pull/10856) - Don't emit MissingOverrideAttribute for implicit Stringable implementations by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10858](https://togithub.com/vimeo/psalm/pull/10858) - Specify array return type of session_get_cookie_params by [@​jorgsowa](https://togithub.com/jorgsowa) in [https://github.com/vimeo/psalm/pull/10859](https://togithub.com/vimeo/psalm/pull/10859) - Unknown [@​psalm](https://togithub.com/psalm) annotation should not make whole docblock invalid by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10885](https://togithub.com/vimeo/psalm/pull/10885) - Add `mail` to impure functions list by [@​smaddock](https://togithub.com/smaddock) in [https://github.com/vimeo/psalm/pull/10923](https://togithub.com/vimeo/psalm/pull/10923) - Update PHP 8.2 Call map delta with refined types for string comparison functions by [@​gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10883](https://togithub.com/vimeo/psalm/pull/10883) ##### Docs - document that [@​psalm-internal](https://togithub.com/psalm-internal) works for namespace + class too by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10866](https://togithub.com/vimeo/psalm/pull/10866) ##### Internal changes - fix tests running with other than called PHP binary if called with a non-default PHP binary by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10842](https://togithub.com/vimeo/psalm/pull/10842) - Explicitly set value in config to fix warning in tests by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10843](https://togithub.com/vimeo/psalm/pull/10843) - \[PHP 8.4] Fixes for implicit nullability deprecation by [@​Ayesh](https://togithub.com/Ayesh) in [https://github.com/vimeo/psalm/pull/10832](https://togithub.com/vimeo/psalm/pull/10832) - Throw exception instead of silently logging issues occurred during scan by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10902](https://togithub.com/vimeo/psalm/pull/10902) ##### Other changes - Fix conditional on non empty literal string by [@​VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10912](https://togithub.com/vimeo/psalm/pull/10912) - Ignore jsonSerialize for implementors of JsonSerializable by [@​josephwynn-sc](https://togithub.com/josephwynn-sc) in [https://github.com/vimeo/psalm/pull/10891](https://togithub.com/vimeo/psalm/pull/10891) - Add XML functions to ImpureFunctionsList [#​10882](https://togithub.com/vimeo/psalm/issues/10882) by [@​DKhalil](https://togithub.com/DKhalil) in [https://github.com/vimeo/psalm/pull/10887](https://togithub.com/vimeo/psalm/pull/10887) #### New Contributors - [@​Ayesh](https://togithub.com/Ayesh) made their first contribution in [https://github.com/vimeo/psalm/pull/10832](https://togithub.com/vimeo/psalm/pull/10832) - [@​smaddock](https://togithub.com/smaddock) made their first contribution in [https://github.com/vimeo/psalm/pull/10923](https://togithub.com/vimeo/psalm/pull/10923) - [@​josephwynn-sc](https://togithub.com/josephwynn-sc) made their first contribution in [https://github.com/vimeo/psalm/pull/10891](https://togithub.com/vimeo/psalm/pull/10891) - [@​DKhalil](https://togithub.com/DKhalil) made their first contribution in [https://github.com/vimeo/psalm/pull/10887](https://togithub.com/vimeo/psalm/pull/10887) **Full Changelog**: vimeo/psalm@5.23.1...5.24.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/Gashmob/project-templates). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMzEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjMzMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [vimeo/psalm](https://togithub.com/vimeo/psalm) | `~5.17.0` -> `~5.24.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vimeo/psalm (vimeo/psalm)</summary> ### [`v5.24.0`](https://togithub.com/vimeo/psalm/releases/tag/5.24.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.23.1...5.24.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Allow specifying flags to Codebase::isTypeContainedByType by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10829](https://togithub.com/vimeo/psalm/pull/10829) - Allow more callable types as subtypes of `callable` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10805](https://togithub.com/vimeo/psalm/pull/10805) - Report `parent` being used in callable context when the class does not extend anything by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10838](https://togithub.com/vimeo/psalm/pull/10838) - Report error for additional deprecated arg types in PHP 8.1/8.3 by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10824](https://togithub.com/vimeo/psalm/pull/10824) - Add MissingClassConstType Issue by [@​jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/10828](https://togithub.com/vimeo/psalm/pull/10828) - Enforce parameter names for consistent constructors by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10821](https://togithub.com/vimeo/psalm/pull/10821) - Add misc missing errors for invalid callable methods by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10839](https://togithub.com/vimeo/psalm/pull/10839) ##### Fixes - Forbid named arguments for ArrayAcccess methods by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10804](https://togithub.com/vimeo/psalm/pull/10804) - Don't crash on invalid templates by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10806](https://togithub.com/vimeo/psalm/pull/10806) - report error for single param name mismatch too since named args can even be used then by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10822](https://togithub.com/vimeo/psalm/pull/10822) - add support for named arguments for filter_var and filter_input by [@​pilif](https://togithub.com/pilif) in [https://github.com/vimeo/psalm/pull/10815](https://togithub.com/vimeo/psalm/pull/10815) - When inside isset, make array fetch result nullable by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10756](https://togithub.com/vimeo/psalm/pull/10756) - Promoted properties missing in extended \__construct should report PropertyNotSetInConstructor by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10817](https://togithub.com/vimeo/psalm/pull/10817) - Updating signature of `getmxrr()` by [@​ThomasLandauer](https://togithub.com/ThomasLandauer) in [https://github.com/vimeo/psalm/pull/10847](https://togithub.com/vimeo/psalm/pull/10847) - Improve string-int juggle consistency in array keys and display for int-like strings in type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10814](https://togithub.com/vimeo/psalm/pull/10814) - Fix storage not available in thread for intersection doc types by [@​simonberger](https://togithub.com/simonberger) in [https://github.com/vimeo/psalm/pull/10856](https://togithub.com/vimeo/psalm/pull/10856) - Don't emit MissingOverrideAttribute for implicit Stringable implementations by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10858](https://togithub.com/vimeo/psalm/pull/10858) - Specify array return type of session_get_cookie_params by [@​jorgsowa](https://togithub.com/jorgsowa) in [https://github.com/vimeo/psalm/pull/10859](https://togithub.com/vimeo/psalm/pull/10859) - Unknown [@​psalm](https://togithub.com/psalm) annotation should not make whole docblock invalid by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10885](https://togithub.com/vimeo/psalm/pull/10885) - Add `mail` to impure functions list by [@​smaddock](https://togithub.com/smaddock) in [https://github.com/vimeo/psalm/pull/10923](https://togithub.com/vimeo/psalm/pull/10923) - Update PHP 8.2 Call map delta with refined types for string comparison functions by [@​gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10883](https://togithub.com/vimeo/psalm/pull/10883) ##### Docs - document that [@​psalm-internal](https://togithub.com/psalm-internal) works for namespace + class too by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10866](https://togithub.com/vimeo/psalm/pull/10866) ##### Internal changes - fix tests running with other than called PHP binary if called with a non-default PHP binary by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10842](https://togithub.com/vimeo/psalm/pull/10842) - Explicitly set value in config to fix warning in tests by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10843](https://togithub.com/vimeo/psalm/pull/10843) - \[PHP 8.4] Fixes for implicit nullability deprecation by [@​Ayesh](https://togithub.com/Ayesh) in [https://github.com/vimeo/psalm/pull/10832](https://togithub.com/vimeo/psalm/pull/10832) - Throw exception instead of silently logging issues occurred during scan by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10902](https://togithub.com/vimeo/psalm/pull/10902) ##### Other changes - Fix conditional on non empty literal string by [@​VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10912](https://togithub.com/vimeo/psalm/pull/10912) - Ignore jsonSerialize for implementors of JsonSerializable by [@​josephwynn-sc](https://togithub.com/josephwynn-sc) in [https://github.com/vimeo/psalm/pull/10891](https://togithub.com/vimeo/psalm/pull/10891) - Add XML functions to ImpureFunctionsList [#​10882](https://togithub.com/vimeo/psalm/issues/10882) by [@​DKhalil](https://togithub.com/DKhalil) in [https://github.com/vimeo/psalm/pull/10887](https://togithub.com/vimeo/psalm/pull/10887) #### New Contributors - [@​Ayesh](https://togithub.com/Ayesh) made their first contribution in [https://github.com/vimeo/psalm/pull/10832](https://togithub.com/vimeo/psalm/pull/10832) - [@​smaddock](https://togithub.com/smaddock) made their first contribution in [https://github.com/vimeo/psalm/pull/10923](https://togithub.com/vimeo/psalm/pull/10923) - [@​josephwynn-sc](https://togithub.com/josephwynn-sc) made their first contribution in [https://github.com/vimeo/psalm/pull/10891](https://togithub.com/vimeo/psalm/pull/10891) - [@​DKhalil](https://togithub.com/DKhalil) made their first contribution in [https://github.com/vimeo/psalm/pull/10887](https://togithub.com/vimeo/psalm/pull/10887) **Full Changelog**: vimeo/psalm@5.23.1...5.24.0 ### [`v5.23.1`](https://togithub.com/vimeo/psalm/releases/tag/5.23.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.23.0...5.23.1) <!-- Release notes generated using configuration in .github/release.yml at 5.23.x --> #### What's Changed ##### Fixes - Fixed analysis of existing static methods if the `__callStatic()` method exists by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10812](https://togithub.com/vimeo/psalm/pull/10812) **Full Changelog**: vimeo/psalm@5.23.0...5.23.1 ### [`v5.23.0`](https://togithub.com/vimeo/psalm/releases/tag/5.23.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.22.2...5.23.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Update PHP 8.2 stubs to include `SensitiveParameterValue` by [@​gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10726](https://togithub.com/vimeo/psalm/pull/10726) - Add list of statements to BeforeFileAnalysisEvent by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10728](https://togithub.com/vimeo/psalm/pull/10728) - Forbid iterating over generators with non-nullable `send()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10697](https://togithub.com/vimeo/psalm/pull/10697) - Initial support for named parameters for callables by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10772](https://togithub.com/vimeo/psalm/pull/10772) ##### Fixes - Improve randomizer stubs by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10709](https://togithub.com/vimeo/psalm/pull/10709) - Fix detecting magic static methods by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10704](https://togithub.com/vimeo/psalm/pull/10704) - Fix non-empty-lowercase-string handling with literal non-lowercase strings by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10722](https://togithub.com/vimeo/psalm/pull/10722) - Fix RiskyTruthyFalsyComparison irrelevant errors when there is no explicit truthy/falsy type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10733](https://togithub.com/vimeo/psalm/pull/10733) - Allow `Override` attribute to be used in pure contexts by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10734](https://togithub.com/vimeo/psalm/pull/10734) - Revert "Allow tainted numerics except for 'html' and 'has_quotes'" by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10729](https://togithub.com/vimeo/psalm/pull/10729) - Fix loading stubs from phar file on Windows by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10748](https://togithub.com/vimeo/psalm/pull/10748) - Fix a false flag issue with InvalidConstantAssignmentValue by [@​MelechMizrachi](https://togithub.com/MelechMizrachi) in [https://github.com/vimeo/psalm/pull/10738](https://togithub.com/vimeo/psalm/pull/10738) - Set inside_isset false when analyzing ArrayDimFetch index by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10752](https://togithub.com/vimeo/psalm/pull/10752) - Set inside_isset = false when analyzing arguments by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10753](https://togithub.com/vimeo/psalm/pull/10753) - Fix PHP notice - crash on invalid taint-escape by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10760](https://togithub.com/vimeo/psalm/pull/10760) - Fix version comparison for `@since` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10764](https://togithub.com/vimeo/psalm/pull/10764) - Since annotations outside phpstub should not infer php version by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10769](https://togithub.com/vimeo/psalm/pull/10769) - Backport `WeakMap` iterator fix from `master` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10778](https://togithub.com/vimeo/psalm/pull/10778) - Namespace anonymous classes by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10779](https://togithub.com/vimeo/psalm/pull/10779) - Update CallMap for sqlsrv_connect and sqlsrv_errors to match reflection by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10781](https://togithub.com/vimeo/psalm/pull/10781) - `$resource` parameter of `mkdir()` is nullable since PHP 7.3 by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10802](https://togithub.com/vimeo/psalm/pull/10802) - Use wider class-string when combining class strings with intersections by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10800](https://togithub.com/vimeo/psalm/pull/10800) ##### Internal changes - Use TaintKind/TaintKindGroup constants instead of string values by [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10746](https://togithub.com/vimeo/psalm/pull/10746) - Skip symlink test on Windows by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10749](https://togithub.com/vimeo/psalm/pull/10749) - Avoid duplicating code for RiskyTruthyFalsyComparison by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10765](https://togithub.com/vimeo/psalm/pull/10765) - fix PHP 8 tests running with wrong --php-version=/phpVersion= if not explicitly specified by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10776](https://togithub.com/vimeo/psalm/pull/10776) - CS fix by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10801](https://togithub.com/vimeo/psalm/pull/10801) #### New Contributors - [@​MelechMizrachi](https://togithub.com/MelechMizrachi) made their first contribution in [https://github.com/vimeo/psalm/pull/10738](https://togithub.com/vimeo/psalm/pull/10738) **Full Changelog**: vimeo/psalm@5.22.2...5.23.0 ### [`v5.22.2`](https://togithub.com/vimeo/psalm/releases/tag/5.22.2) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.22.1...5.22.2) <!-- Release notes generated using configuration in .github/release.yml at 5.22.x --> #### What's Changed ##### Fixes - Catch missing classlike exceptions during scanning by [@​weirdan](https://togithub.com/weirdan) and [@​ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/10720](https://togithub.com/vimeo/psalm/pull/10720) **Full Changelog**: vimeo/psalm@5.22.1...5.22.2 ### [`v5.22.1`](https://togithub.com/vimeo/psalm/releases/tag/5.22.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.22.0...5.22.1) <!-- Release notes generated using configuration in .github/release.yml at 5.22.x --> #### What's Changed ##### Fixes - Improve parsing of `@psalm-type` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10713](https://togithub.com/vimeo/psalm/pull/10713) **Full Changelog**: vimeo/psalm@5.22.0...5.22.1 ### [`v5.22.0`](https://togithub.com/vimeo/psalm/releases/tag/5.22.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.21.1...5.22.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Allow inline comments in typedef shapes by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10623](https://togithub.com/vimeo/psalm/pull/10623) - allow typedef imports from any kind of classlike by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10625](https://togithub.com/vimeo/psalm/pull/10625) - Allow enum cases to be global constants by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10634](https://togithub.com/vimeo/psalm/pull/10634) - New InvalidOverride issue for Override attribute by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10644](https://togithub.com/vimeo/psalm/pull/10644) - Analyze dynamic names for static property and const fetches by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10629](https://togithub.com/vimeo/psalm/pull/10629) - New MissingOverrideAttribute issue by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10651](https://togithub.com/vimeo/psalm/pull/10651) - Flag `stdClass::__construct()` calls that have arguments by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10661](https://togithub.com/vimeo/psalm/pull/10661) - Improve Reflection stubs by [@​vudaltsov](https://togithub.com/vudaltsov) in [https://github.com/vimeo/psalm/pull/10091](https://togithub.com/vimeo/psalm/pull/10091) - Forbid constructors from returning any values by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10686](https://togithub.com/vimeo/psalm/pull/10686) - Report first class callables generated for unknown static methods by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10691](https://togithub.com/vimeo/psalm/pull/10691) - Process `@psalm-this-out` on `__construct()` as well by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10690](https://togithub.com/vimeo/psalm/pull/10690) - Report invalid number of arguments for psalm-taint-\* by [@​staabm](https://togithub.com/staabm) in [https://github.com/vimeo/psalm/pull/10699](https://togithub.com/vimeo/psalm/pull/10699) ##### Fixes - Fix ownerDocument type in dom-ext classes by [@​fluffycondor](https://togithub.com/fluffycondor) in [https://github.com/vimeo/psalm/pull/10619](https://togithub.com/vimeo/psalm/pull/10619) - Fix numeric scalar validate filter var input return type wrong by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10621](https://togithub.com/vimeo/psalm/pull/10621) - Stable baseline by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10633](https://togithub.com/vimeo/psalm/pull/10633) - Allow sebastian/diff v6 by [@​simPod](https://togithub.com/simPod) in [https://github.com/vimeo/psalm/pull/10639](https://togithub.com/vimeo/psalm/pull/10639) - CallMap: Adjust return type for `inotify_add_watch()` to `int|false` by [@​UlrichEckhardt](https://togithub.com/UlrichEckhardt) in [https://github.com/vimeo/psalm/pull/10637](https://togithub.com/vimeo/psalm/pull/10637) - Fix check-type when using builtin types from within a namespace by [@​robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10648](https://togithub.com/vimeo/psalm/pull/10648) - Do not add `callable` as a native property type by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10654](https://togithub.com/vimeo/psalm/pull/10654) - Fix additional places where base_dir was broken due to missing separator by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10630](https://togithub.com/vimeo/psalm/pull/10630) - Late binding of enum cases by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10655](https://togithub.com/vimeo/psalm/pull/10655) - Suppress `UndefinedClass` in `whatever_exists()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10659](https://togithub.com/vimeo/psalm/pull/10659) - Fix parsing magic method annotations by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10665](https://togithub.com/vimeo/psalm/pull/10665) - Strip callmap prefixes from parameter names by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10666](https://togithub.com/vimeo/psalm/pull/10666) - Narrow `ord()` return type to `int<0,255>` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10676](https://togithub.com/vimeo/psalm/pull/10676) - Template union object incorrect assertions by [@​robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10677](https://togithub.com/vimeo/psalm/pull/10677) - Don't show backtrace in `InvalidDocblock` issue message by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10679](https://togithub.com/vimeo/psalm/pull/10679) - Class consts in array shapes by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10678](https://togithub.com/vimeo/psalm/pull/10678) - Prevent mixed|null by [@​robchett](https://togithub.com/robchett) in [https://github.com/vimeo/psalm/pull/10675](https://togithub.com/vimeo/psalm/pull/10675) ##### Internal changes - Drop unused local composer repo by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10647](https://togithub.com/vimeo/psalm/pull/10647) - Clarify that Pull request labels failure is to be resolved by maintainers by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10649](https://togithub.com/vimeo/psalm/pull/10649) - Fix unstable `hasFullyQualified(Interface|Enum)()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10603](https://togithub.com/vimeo/psalm/pull/10603) - Revert partial mistakenly pushed fix by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10671](https://togithub.com/vimeo/psalm/pull/10671) **Full Changelog**: vimeo/psalm@5.21.1...5.22.0 ### [`v5.21.1`](https://togithub.com/vimeo/psalm/releases/tag/5.21.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.21.0...5.21.1) <!-- Release notes generated using configuration in .github/release.yml at 5.21.x --> #### What's Changed ##### Fixes - Fix baseline loading for path specified on the command line by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10628](https://togithub.com/vimeo/psalm/pull/10628) **Full Changelog**: vimeo/psalm@5.21.0...5.21.1 ### [`v5.21.0`](https://togithub.com/vimeo/psalm/releases/tag/5.21.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.20.0...5.21.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Allow importing typedefs from enums by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10617](https://togithub.com/vimeo/psalm/pull/10617) ##### Fixes - Fix [#​10552](https://togithub.com/vimeo/psalm/issues/10552) by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10572](https://togithub.com/vimeo/psalm/pull/10572) - Unit test improvements for php-parser 5 by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10574](https://togithub.com/vimeo/psalm/pull/10574) - Fix template replacement edge case by [@​klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/10586](https://togithub.com/vimeo/psalm/pull/10586) - Switch condition order by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10594](https://togithub.com/vimeo/psalm/pull/10594) - Partial revert "Fix auto completion by partial property or method" by [@​issidorov](https://togithub.com/issidorov) in [https://github.com/vimeo/psalm/pull/10588](https://togithub.com/vimeo/psalm/pull/10588) - \[LSP] Add issue type in description by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10607](https://togithub.com/vimeo/psalm/pull/10607) - Do not validate callable arguments in lenient contexts by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10601](https://togithub.com/vimeo/psalm/pull/10601) - `readgzfile()` is impure by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10600](https://togithub.com/vimeo/psalm/pull/10600) - Allow properties on intersections with enum interfaces by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10599](https://togithub.com/vimeo/psalm/pull/10599) - `key_exists()` is an alias for `array_key_exists()` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10598](https://togithub.com/vimeo/psalm/pull/10598) - Fix language server running with `opcache.save_comments=0` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10614](https://togithub.com/vimeo/psalm/pull/10614) - Report `MissingConstructor` for natively typed mixed properties by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10615](https://togithub.com/vimeo/psalm/pull/10615) ##### Internal changes - Bump actions/cache from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/vimeo/psalm/pull/10584](https://togithub.com/vimeo/psalm/pull/10584) - Baseline update by [@​jorgsowa](https://togithub.com/jorgsowa) in [https://github.com/vimeo/psalm/pull/10593](https://togithub.com/vimeo/psalm/pull/10593) - Re-work CheckTrivialExprVisitor by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10612](https://togithub.com/vimeo/psalm/pull/10612) - Minor php-parser tweaks by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10605](https://togithub.com/vimeo/psalm/pull/10605) #### New Contributors - [@​jorgsowa](https://togithub.com/jorgsowa) made their first contribution in [https://github.com/vimeo/psalm/pull/10593](https://togithub.com/vimeo/psalm/pull/10593) **Full Changelog**: vimeo/psalm@5.20.0...5.21.0 ### [`v5.20.0`](https://togithub.com/vimeo/psalm/releases/tag/5.20.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.19.1...5.20.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - report error for non-strict or empty comparison on truthy+falsy union by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10502](https://togithub.com/vimeo/psalm/pull/10502) ##### Fixes - Fix template, conditional array keys by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10568](https://togithub.com/vimeo/psalm/pull/10568) **Full Changelog**: vimeo/psalm@5.19.1...5.20.0 ### [`v5.19.1`](https://togithub.com/vimeo/psalm/releases/tag/5.19.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.19.0...5.19.1) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Fixes - Deprecated Template Classes are not ignored by [@​psalm-suppress](https://togithub.com/psalm-suppress) DeprecatedClass by [@​samlitowitz](https://togithub.com/samlitowitz) in [https://github.com/vimeo/psalm/pull/10518](https://togithub.com/vimeo/psalm/pull/10518) - Implement \__set method in SimpleXMLElement stub by [@​kthaler](https://togithub.com/kthaler) in [https://github.com/vimeo/psalm/pull/10536](https://togithub.com/vimeo/psalm/pull/10536) - Make getrandmax type more specific and unserialize to require class-string by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10540](https://togithub.com/vimeo/psalm/pull/10540) - Fix mb_get_info can return null - CI failing bc of reflection by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10543](https://togithub.com/vimeo/psalm/pull/10543) - make basename & dirname return types more specific by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10545](https://togithub.com/vimeo/psalm/pull/10545) - add support for extract to set variables for keyed arrays and respect EXTR_SKIP by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10544](https://togithub.com/vimeo/psalm/pull/10544) - remove redundat directory separator which caused "//" in path not found errors by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10542](https://togithub.com/vimeo/psalm/pull/10542) - Fix empty literal string becomes non-empty-string by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10499](https://togithub.com/vimeo/psalm/pull/10499) #### New Contributors - [@​samlitowitz](https://togithub.com/samlitowitz) made their first contribution in [https://github.com/vimeo/psalm/pull/10518](https://togithub.com/vimeo/psalm/pull/10518) - [@​kthaler](https://togithub.com/kthaler) made their first contribution in [https://github.com/vimeo/psalm/pull/10536](https://togithub.com/vimeo/psalm/pull/10536) **Full Changelog**: vimeo/psalm@5.19.0...5.20.0 ### [`v5.19.0`](https://togithub.com/vimeo/psalm/releases/tag/5.19.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.18.0...5.19.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> #### What's Changed ##### Features - Reduce memory consumption of caching and parallel processing without igbinary by [@​sj-i](https://togithub.com/sj-i) in [https://github.com/vimeo/psalm/pull/10532](https://togithub.com/vimeo/psalm/pull/10532) - filter_input & filter_var return type more specific by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10498](https://togithub.com/vimeo/psalm/pull/10498) ##### Fixes - strtok always returns a non-empty-string when it does not return false by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10497](https://togithub.com/vimeo/psalm/pull/10497) - Fix [#​10512](https://togithub.com/vimeo/psalm/issues/10512): Fixed SessionUpdateTimestampHandlerInterface parameter names by [@​zerkms](https://togithub.com/zerkms) in [https://github.com/vimeo/psalm/pull/10524](https://togithub.com/vimeo/psalm/pull/10524) - Fix [GH-10465](https://togithub.com/vimeo/psalm/issues/10465) by [@​florisluiten](https://togithub.com/florisluiten) in [https://github.com/vimeo/psalm/pull/10483](https://togithub.com/vimeo/psalm/pull/10483) - Fix callable without args not handled correctly by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10500](https://togithub.com/vimeo/psalm/pull/10500) - Add error when using readonly property in by-ref arg by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10505](https://togithub.com/vimeo/psalm/pull/10505) - fix: [#​10496](https://togithub.com/vimeo/psalm/issues/10496) [#​10503](https://togithub.com/vimeo/psalm/issues/10503) by [@​ging-dev](https://togithub.com/ging-dev) in [https://github.com/vimeo/psalm/pull/10508](https://togithub.com/vimeo/psalm/pull/10508) #### New Contributors - [@​florisluiten](https://togithub.com/florisluiten) made their first contribution in [https://github.com/vimeo/psalm/pull/10483](https://togithub.com/vimeo/psalm/pull/10483) **Full Changelog**: vimeo/psalm@5.18.0...5.19.0 ### [`v5.18.0`](https://togithub.com/vimeo/psalm/releases/tag/5.18.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.17.0...5.18.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> ##### What's Changed ##### Features - Add support for Override attribute by [@​delolmo](https://togithub.com/delolmo) in [https://github.com/vimeo/psalm/pull/10493](https://togithub.com/vimeo/psalm/pull/10493) ##### Fixes - Fix [#​10460](https://togithub.com/vimeo/psalm/issues/10460) by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10464](https://togithub.com/vimeo/psalm/pull/10464) - Emit AfterCodebasePopulatedEvent even on partial scans by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10457](https://togithub.com/vimeo/psalm/pull/10457) - Small assertion fix by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10455](https://togithub.com/vimeo/psalm/pull/10455) - Fix shaped array class string key combination by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10450](https://togithub.com/vimeo/psalm/pull/10450) - Fix remaining POSIX-only absolute path detection by [@​theodorejb](https://togithub.com/theodorejb) in [https://github.com/vimeo/psalm/pull/10452](https://togithub.com/vimeo/psalm/pull/10452) - dont combine empty string with numeric-string by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10459](https://togithub.com/vimeo/psalm/pull/10459) - Fix type not equal when parent by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10477](https://togithub.com/vimeo/psalm/pull/10477) - Use same parameter names in stubs by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10480](https://togithub.com/vimeo/psalm/pull/10480) - fix false positive ArgumentTypeCoercion for callback param by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10454](https://togithub.com/vimeo/psalm/pull/10454) - report error for invalid array key type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10481](https://togithub.com/vimeo/psalm/pull/10481) - fix literal int/string comparisons only using one literal by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10484](https://togithub.com/vimeo/psalm/pull/10484) - add InvalidArgument error when passing false to true param by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10488](https://togithub.com/vimeo/psalm/pull/10488) - Fix Uncaught RuntimeException: PHP Error: Uninitialized string offset 0 when $pattern is empty by [@​iMu3ic](https://togithub.com/iMu3ic) in [https://github.com/vimeo/psalm/pull/10489](https://togithub.com/vimeo/psalm/pull/10489) ##### Internal changes - fix composer scripts running with inconsistent php versions by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10463](https://togithub.com/vimeo/psalm/pull/10463) - update fidry/cpu-core-counter dependency by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10456](https://togithub.com/vimeo/psalm/pull/10456) - fix psalm v4 hardcoded in tests by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10475](https://togithub.com/vimeo/psalm/pull/10475) ##### New Contributors - [@​iMu3ic](https://togithub.com/iMu3ic) made their first contribution in [https://github.com/vimeo/psalm/pull/10489](https://togithub.com/vimeo/psalm/pull/10489) - [@​delolmo](https://togithub.com/delolmo) made their first contribution in [https://github.com/vimeo/psalm/pull/10493](https://togithub.com/vimeo/psalm/pull/10493) **Full Changelog**: vimeo/psalm@5.17.0...5.18.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/open-feature/php-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy45My4xIiwidXBkYXRlZEluVmVyIjoiMzcuMzMxLjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [phpstan/phpstan](https://togithub.com/phpstan/phpstan) | `1.10.67` -> `1.11.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [vimeo/psalm](https://togithub.com/vimeo/psalm) | `5.23.1` -> `5.24.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>phpstan/phpstan (phpstan/phpstan)</summary> ### [`v1.11.0`](https://togithub.com/phpstan/phpstan/releases/tag/1.11.0) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.10.67...1.11.0) [**Read the article about PHPStan 1.11 on phpstan.org »**](https://phpstan.org/blog/phpstan-1-11-errors-identifiers-phpstan-pro-reboot) # Major new features 🚀 - **Error identifiers** - A way to categorize reported errors by a stable identifier. Up until now you had to use specific and ever-changing error messages - Can be used for [ignoring specific errors locally](https://phpstan.org/user-guide/ignoring-errors#ignoring-in-code-using-phpdocs) with new `@phpstan-ignore` comment (uses current or next line automatically) - Can be used for [ignoring specific errors in `ignoreErrors`](https://phpstan.org/user-guide/ignoring-errors#ignoring-in-configuration-file) section of your configuration file (phpstan.neon) - Can be used in [output formatters](https://phpstan.org/user-guide/output-format) - Can be seen in PHPStan Pro GUI or in TableErrorFormatter with `-v` - Catalogue with source code links: https://phpstan.org/error-identifiers - **PHPStan Pro Reboot** - A new migration wizard will effortlessly migrate all your `@phpstan-ignore-line` and `@phpstan-ignore-next-line` to the new `@phpstan-ignore` comment style with error identifiers. The old comment style is dangerous because it ignores all errors, current and future, on that line. - Revamped UI for much more comfortable viewing and browsing of reported errors - The new UI also lets you **browse ignored errors**, from `ignoreErrors`, from your baseline and also ignored locally in source code using comments - Streaming errors during launch: You don't have to wait for the analysis to complete, you can see errors as they come in during the analysis - Support for mapping file paths to the host filesystem when running in Docker or remotely - Try it out by running PHPStan with `--pro` CLI option - PHPDoc tags describing callable lifecycle: `@param-immediately-invoked-callable`, `@param-later-invoked-callable` - Useful for exception analysis (https://phpstan.org/blog/bring-your-exceptions-under-control) and `@phpstan-pure` - PHPDoc tag `@param-closure-this` to describe what `$this` is bound to in a passed closure - Two new config options around stricter offset checks in arrays ([#​3028](https://togithub.com/phpstan/phpstan-src/pull/3028)), [#​7553](https://togithub.com/phpstan/phpstan/issues/7553), thanks [@​ttomdewit](https://togithub.com/ttomdewit)! - `reportPossiblyNonexistentGeneralArrayOffset` - `reportPossiblyNonexistentConstantArrayOffset` - [Learn more in the documentation](https://phpstan.org/config-reference#reportpossiblynonexistentgeneralarrayoffset) # Bleeding edge 🔪 - Checking truthiness of `@phpstan-pure` above functions and methods - Check `new`/function call/method call/static method call on a separate line without any side effects even without `@phpstan-pure` PHPDoc tag on the declaration side - phpstan/phpstan-src@281a87d - [#​3020](https://togithub.com/phpstan/phpstan-src/pull/3020), thanks [@​staabm](https://togithub.com/staabm)! - [#​3022](https://togithub.com/phpstan/phpstan-src/pull/3022), thanks [@​staabm](https://togithub.com/staabm)! - [#​3023](https://togithub.com/phpstan/phpstan-src/pull/3023), thanks [@​staabm](https://togithub.com/staabm)! - BetterNoopRule - take advantage of impure points (phpstan/phpstan-src@a647052), [#​10389](https://togithub.com/phpstan/phpstan/issues/10389) - Run missing type check on `@param-out` (phpstan/phpstan-src@56b2002) - CallToConstructorStatementWithoutSideEffectsRule - report class with no constructor (phpstan/phpstan-src@b116d25) - Deprecated: returning plain strings as errors, use RuleErrorBuilder - Learn more: [Using RuleErrorBuilder to enrich reported errors in custom rules](https://phpstan.org/blog/using-rule-error-builder) - Deprecated: returning RuleError without identifier (phpstan/phpstan-src@969e6fa) *If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:* includes: - vendor/phpstan/phpstan/conf/bleedingEdge.neon *Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)* # Improvements 🔧 - Generic RuleErrorBuilder (phpstan/phpstan-src@9a3ed85) - Deprecate `checkMissingIterableValueType: false` and `checkGenericClassInNonGenericObjectType: false` in favour of ignoring via identifiers (phpstan/phpstan-src@a649981) - Deprecate old NoopRule - replaced by BetterNoopRule in bleeding edge (phpstan/phpstan-src@1090835) - Allow ignoring errors from CollectedDataNode with local comments (phpstan/phpstan-src@dc3b75a) - Introduce `new` type ([#​3050](https://togithub.com/phpstan/phpstan-src/pull/3050)), [#​9704](https://togithub.com/phpstan/phpstan/issues/9704), thanks [@​ruudk](https://togithub.com/ruudk)! - RuleTestCase - fail on PHP warnings, notices etc. ([#​3030](https://togithub.com/phpstan/phpstan-src/pull/3030)), thanks [@​janedbal](https://togithub.com/janedbal)! - Check duplicate assignment of redeclared promoted readonly properties ([#​3049](https://togithub.com/phpstan/phpstan-src/pull/3049)), [#​8101](https://togithub.com/phpstan/phpstan/issues/8101), [#​9863](https://togithub.com/phpstan/phpstan/issues/9863), [#​9864](https://togithub.com/phpstan/phpstan/issues/9864), thanks [@​schlndh](https://togithub.com/schlndh)! - Remove line from "nikic/php-parser" error message ([#​2845](https://togithub.com/phpstan/phpstan-src/pull/2845)), thanks [@​mvorisek](https://togithub.com/mvorisek)! - Stub validator - PHPStan classes are known without extra stubs (phpstan/phpstan-src@d004c23) - Stub validator - PhpParser classes are known without extra stubs (phpstan/phpstan-src@3e498e1) - CheckstyleErrorFormatter - include error identifier in source attribute (phpstan/phpstan-src@f66cf5b), [#​1205](https://togithub.com/phpstan/phpstan/issues/1205) - BaselinePhpErrorFormatter - error identifiers in comments (phpstan/phpstan-src@4b32cac) - `RuleErrorBuilder::file()` - file path needs to exist (phpstan/phpstan-src@c453f29) - AbstractMethodInNonAbstractClassRule - better error message for enums (phpstan/phpstan-src@b5dd34e) - Fixed Xdebug spelling ([#​2746](https://togithub.com/phpstan/phpstan-src/pull/2746)), thanks [@​derickr](https://togithub.com/derickr)! - Track invalidated `$this` and used variables after invoking closure ([#​2980](https://togithub.com/phpstan/phpstan-src/pull/2980)) - Support `@phan-` prefixes on recognized PHPDoc tags ([#​3000](https://togithub.com/phpstan/phpstan-src/pull/3000)), thanks [@​anomiex](https://togithub.com/anomiex)! - `pure-callable` and `pure-Closure` PHPDoc types (phpstan/phpstan-src@cdaff5f) - `highlight_string()` flips side-effects depending on $return ([#​3021](https://togithub.com/phpstan/phpstan-src/pull/3021)), thanks [@​staabm](https://togithub.com/staabm)! - Improve types for predefined constants ([#​3054](https://togithub.com/phpstan/phpstan-src/pull/3054)), thanks [@​zonuexe](https://togithub.com/zonuexe)! # Bugfixes 🐛 - Make `AccessoryNonFalsyStringType::toInteger()` return `IntegerType` instead of non-zero ([#​3018](https://togithub.com/phpstan/phpstan-src/pull/3018)), [#​10893](https://togithub.com/phpstan/phpstan/issues/10893), thanks [@​zonuexe](https://togithub.com/zonuexe)! - Filter scope by non-empty array after foreach regardless of `polluteScopeWithAlwaysIterableForeach` ([#​3029](https://togithub.com/phpstan/phpstan-src/pull/3029)), [#​10922](https://togithub.com/phpstan/phpstan/issues/10922), thanks [@​VincentLanglet](https://togithub.com/VincentLanglet)! - Preserve large arrays with same keys through union ([#​3032](https://togithub.com/phpstan/phpstan-src/pull/3032)), [#​9397](https://togithub.com/phpstan/phpstan/issues/9397), [#​10080](https://togithub.com/phpstan/phpstan/issues/10080), thanks [@​schlndh](https://togithub.com/schlndh)! - Fix `count($x) > $n === true` negation ([#​3037](https://togithub.com/phpstan/phpstan-src/pull/3037)), [#​10952](https://togithub.com/phpstan/phpstan/issues/10952), thanks [@​rvanvelzen](https://togithub.com/rvanvelzen)! - Fix NAN not accepting NAN ([#​3036](https://togithub.com/phpstan/phpstan-src/pull/3036)), [#​10956](https://togithub.com/phpstan/phpstan/issues/10956), [#​10297](https://togithub.com/phpstan/phpstan/issues/10297), thanks [@​rvanvelzen](https://togithub.com/rvanvelzen)! - DateTimeInstantiationRule - fix error message for `new` with wrong name case (phpstan/phpstan-src@59ac31a) - Process ConstFetch (phpstan/phpstan-src@b5c63c2) - Fix `preg_match_all` behaviour with no flags (phpstan/phpstan-src@a856ec7) - `file_get_contents` is an impure function (phpstan/phpstan-src@2b5b317) - Fix `ClosureType::equals()` (phpstan/phpstan-src@29c35b5) - Use statement result of analysed anonymous class to inform about throw points and impure points (phpstan/phpstan-src@70a75f6) - Filter out implicit throw points from callables when `exceptions.implicitThrows: false` ([#​3016](https://togithub.com/phpstan/phpstan-src/pull/3016)), thanks [@​janedbal](https://togithub.com/janedbal)! - Fix `ConstantArrayType::hasOffsetValueType()` for offset union type where all types are valid (phpstan/phpstan-src@26e949b) - `non-empty-list` always has offset 0 (phpstan/phpstan-src@f4d1d48) - Narrow to `non-empty-string`/`non-falsey-string` after `mb_strlen()` ([#​3038](https://togithub.com/phpstan/phpstan-src/pull/3038)), thanks [@​staabm](https://togithub.com/staabm)! - Implement `Type::isOffsetAccessLegal()` to detect offset access that crashes even in `isset()` ([#​3045](https://togithub.com/phpstan/phpstan-src/pull/3045)), [#​8393](https://togithub.com/phpstan/phpstan/issues/8393), [#​10926](https://togithub.com/phpstan/phpstan/issues/10926), thanks [@​rajyan](https://togithub.com/rajyan)! - Specify types on `match()` condition correctly ([#​3053](https://togithub.com/phpstan/phpstan-src/pull/3053)), [#​10974](https://togithub.com/phpstan/phpstan/issues/10974), [#​9694](https://togithub.com/phpstan/phpstan/issues/9694), thanks [@​rvanvelzen](https://togithub.com/rvanvelzen)! - `json_decode` with force array flag: subtract all objects, not just stdClass ([#​3052](https://togithub.com/phpstan/phpstan-src/pull/3052)), thanks [@​rajyan](https://togithub.com/rajyan)! - Fix `strlen($x) > $n === true` negation ([#​3040](https://togithub.com/phpstan/phpstan-src/pull/3040)), thanks [@​staabm](https://togithub.com/staabm)! - Support multi-byte string function variants ([#​3039](https://togithub.com/phpstan/phpstan-src/pull/3039)), thanks [@​staabm](https://togithub.com/staabm)! - Final scope from `Continue_` points should not be used for `while (true)` ([#​3057](https://togithub.com/phpstan/phpstan-src/pull/3057)), [#​10980](https://togithub.com/phpstan/phpstan/issues/10980), thanks [@​greew](https://togithub.com/greew)! - Fix enum performance problem ([#​3062](https://togithub.com/phpstan/phpstan-src/pull/3062), [#​3060](https://togithub.com/phpstan/phpstan-src/pull/3060)), [#​10979](https://togithub.com/phpstan/phpstan/issues/10979), thanks [@​staabm](https://togithub.com/staabm)! - NULL and null as a property default value are treated differently when overriding a parent property ([#​3063](https://togithub.com/phpstan/phpstan-src/pull/3063)), [#​10987](https://togithub.com/phpstan/phpstan/issues/10987), thanks [@​staabm](https://togithub.com/staabm)! # Function signature fixes 🤖 - Make the url key of metadata returned by `stream_get_meta_data()` optional ([#​3024](https://togithub.com/phpstan/phpstan-src/pull/3024)), [#​10887](https://togithub.com/phpstan/phpstan/issues/10887), thanks [@​hirokinoue](https://togithub.com/hirokinoue)! - Narrow `Closure::bind` `$newScope` param ([#​2817](https://togithub.com/phpstan/phpstan-src/pull/2817)), thanks [@​mvorisek](https://togithub.com/mvorisek)! - Infer object type mysqli_fetch_object ([#​2675](https://togithub.com/phpstan/phpstan/issues/2675)) ([#​2675](https://togithub.com/phpstan/phpstan-src/pull/2675)), thanks [@​staabm](https://togithub.com/staabm)! - Fix `Imagick::identifyImage()` return type ([#​3017](https://togithub.com/phpstan/phpstan-src/pull/3017)), thanks [@​SVillette](https://togithub.com/SVillette)! # Internals 🔍 - Clean up old identifiers and metadata (phpstan/phpstan-src@c476a86) - Delete StatementOrderVisitor that is no longer needed (phpstan/phpstan-src@017d321) - Introduce `ClassReflection::getClassTypeDescription()` (phpstan/phpstan-src@dec9e43) - Fix classname typo in tests ([#​2461](https://togithub.com/phpstan/phpstan-src/pull/2461)), thanks [@​szepeviktor](https://togithub.com/szepeviktor)! - Fix various typos ([#​2463](https://togithub.com/phpstan/phpstan-src/pull/2463)), thanks [@​szepeviktor](https://togithub.com/szepeviktor)! - Added text regarding patch issues during installation ([#​2670](https://togithub.com/phpstan/phpstan-src/pull/2670)), thanks [@​mt-satak](https://togithub.com/mt-satak)! - Fix typo in ArgumentsNormalizer ([#​2705](https://togithub.com/phpstan/phpstan-src/pull/2705)), thanks [@​mad-briller](https://togithub.com/mad-briller)! - Rich PHPDoc for ExceptionTypeResolver (phpstan/phpstan-src@e7ab4f7) - Hide internal commands ([#​2833](https://togithub.com/phpstan/phpstan-src/pull/2833)), thanks [@​rvanvelzen](https://togithub.com/rvanvelzen)! - Test invalidated object in static closure ([#​2981](https://togithub.com/phpstan/phpstan-src/pull/2981)), thanks [@​staabm](https://togithub.com/staabm)! - PHPDoc: address multiple variables defined in one [@​param](https://togithub.com/param) ([#​3001](https://togithub.com/phpstan/phpstan-src/pull/3001)), thanks [@​Muqsit](https://togithub.com/Muqsit)! - Do not assume every contributor uses PhpStorm (phpstan/phpstan-src@d1834e6) - TypeInferenceTestCase: ability to disable implicit throws ([#​3015](https://togithub.com/phpstan/phpstan-src/pull/3015)), thanks [@​janedbal](https://togithub.com/janedbal)! - Slightly reduce comparing and calling methods for trivial optimizations ([#​3004](https://togithub.com/phpstan/phpstan-src/pull/3004)), [#​10926](https://togithub.com/phpstan/phpstan/issues/10926), thanks [@​zonuexe](https://togithub.com/zonuexe)! - AnalyserResultFinalizer - DRY of running CollectedDataNode rules (phpstan/phpstan-src@38e2c96) - Introduce LocalIgnoresProcessor (phpstan/phpstan-src@d026655) - Introduce `RuleErrorBuilder::treatPhpDocTypesAsCertainTip()` for a bit more DRYness ([#​3035](https://togithub.com/phpstan/phpstan-src/pull/3035)), thanks [@​axlon](https://togithub.com/axlon)! - Make ResultCacheEndToEndTest pass level 9 ([#​3055](https://togithub.com/phpstan/phpstan-src/pull/3055)), [#​10977](https://togithub.com/phpstan/phpstan/issues/10977), thanks [@​AJenbo](https://togithub.com/AJenbo)! - ClassReflection - cache enum cases (phpstan/phpstan-src@39ce042), [#​10979](https://togithub.com/phpstan/phpstan/issues/10979) </details> <details> <summary>vimeo/psalm (vimeo/psalm)</summary> ### [`v5.24.0`](https://togithub.com/vimeo/psalm/releases/tag/5.24.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.23.1...5.24.0) <!-- Release notes generated using configuration in .github/release.yml at 5.x --> ##### What's Changed ##### Features - Allow specifying flags to Codebase::isTypeContainedByType by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10829](https://togithub.com/vimeo/psalm/pull/10829) - Allow more callable types as subtypes of `callable` by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10805](https://togithub.com/vimeo/psalm/pull/10805) - Report `parent` being used in callable context when the class does not extend anything by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10838](https://togithub.com/vimeo/psalm/pull/10838) - Report error for additional deprecated arg types in PHP 8.1/8.3 by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10824](https://togithub.com/vimeo/psalm/pull/10824) - Add MissingClassConstType Issue by [@​jack-worman](https://togithub.com/jack-worman) in [https://github.com/vimeo/psalm/pull/10828](https://togithub.com/vimeo/psalm/pull/10828) - Enforce parameter names for consistent constructors by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10821](https://togithub.com/vimeo/psalm/pull/10821) - Add misc missing errors for invalid callable methods by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10839](https://togithub.com/vimeo/psalm/pull/10839) ##### Fixes - Forbid named arguments for ArrayAcccess methods by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10804](https://togithub.com/vimeo/psalm/pull/10804) - Don't crash on invalid templates by [@​weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/10806](https://togithub.com/vimeo/psalm/pull/10806) - report error for single param name mismatch too since named args can even be used then by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10822](https://togithub.com/vimeo/psalm/pull/10822) - add support for named arguments for filter_var and filter_input by [@​pilif](https://togithub.com/pilif) in [https://github.com/vimeo/psalm/pull/10815](https://togithub.com/vimeo/psalm/pull/10815) - When inside isset, make array fetch result nullable by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10756](https://togithub.com/vimeo/psalm/pull/10756) - Promoted properties missing in extended \__construct should report PropertyNotSetInConstructor by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10817](https://togithub.com/vimeo/psalm/pull/10817) - Updating signature of `getmxrr()` by [@​ThomasLandauer](https://togithub.com/ThomasLandauer) in [https://github.com/vimeo/psalm/pull/10847](https://togithub.com/vimeo/psalm/pull/10847) - Improve string-int juggle consistency in array keys and display for int-like strings in type by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10814](https://togithub.com/vimeo/psalm/pull/10814) - Fix storage not available in thread for intersection doc types by [@​simonberger](https://togithub.com/simonberger) in [https://github.com/vimeo/psalm/pull/10856](https://togithub.com/vimeo/psalm/pull/10856) - Don't emit MissingOverrideAttribute for implicit Stringable implementations by [@​edsrzf](https://togithub.com/edsrzf) in [https://github.com/vimeo/psalm/pull/10858](https://togithub.com/vimeo/psalm/pull/10858) - Specify array return type of session_get_cookie_params by [@​jorgsowa](https://togithub.com/jorgsowa) in [https://github.com/vimeo/psalm/pull/10859](https://togithub.com/vimeo/psalm/pull/10859) - Unknown [@​psalm](https://togithub.com/psalm) annotation should not make whole docblock invalid by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10885](https://togithub.com/vimeo/psalm/pull/10885) - Add `mail` to impure functions list by [@​smaddock](https://togithub.com/smaddock) in [https://github.com/vimeo/psalm/pull/10923](https://togithub.com/vimeo/psalm/pull/10923) - Update PHP 8.2 Call map delta with refined types for string comparison functions by [@​gsteel](https://togithub.com/gsteel) in [https://github.com/vimeo/psalm/pull/10883](https://togithub.com/vimeo/psalm/pull/10883) ##### Docs - document that [@​psalm-internal](https://togithub.com/psalm-internal) works for namespace + class too by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10866](https://togithub.com/vimeo/psalm/pull/10866) ##### Internal changes - fix tests running with other than called PHP binary if called with a non-default PHP binary by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10842](https://togithub.com/vimeo/psalm/pull/10842) - Explicitly set value in config to fix warning in tests by [@​kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/10843](https://togithub.com/vimeo/psalm/pull/10843) - \[PHP 8.4] Fixes for implicit nullability deprecation by [@​Ayesh](https://togithub.com/Ayesh) in [https://github.com/vimeo/psalm/pull/10832](https://togithub.com/vimeo/psalm/pull/10832) - Throw exception instead of silently logging issues occurred during scan by [@​danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/10902](https://togithub.com/vimeo/psalm/pull/10902) ##### Other changes - Fix conditional on non empty literal string by [@​VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/10912](https://togithub.com/vimeo/psalm/pull/10912) - Ignore jsonSerialize for implementors of JsonSerializable by [@​josephwynn-sc](https://togithub.com/josephwynn-sc) in [https://github.com/vimeo/psalm/pull/10891](https://togithub.com/vimeo/psalm/pull/10891) - Add XML functions to ImpureFunctionsList [#​10882](https://togithub.com/vimeo/psalm/issues/10882) by [@​DKhalil](https://togithub.com/DKhalil) in [https://github.com/vimeo/psalm/pull/10887](https://togithub.com/vimeo/psalm/pull/10887) ##### New Contributors - [@​Ayesh](https://togithub.com/Ayesh) made their first contribution in [https://github.com/vimeo/psalm/pull/10832](https://togithub.com/vimeo/psalm/pull/10832) - [@​smaddock](https://togithub.com/smaddock) made their first contribution in [https://github.com/vimeo/psalm/pull/10923](https://togithub.com/vimeo/psalm/pull/10923) - [@​josephwynn-sc](https://togithub.com/josephwynn-sc) made their first contribution in [https://github.com/vimeo/psalm/pull/10891](https://togithub.com/vimeo/psalm/pull/10891) - [@​DKhalil](https://togithub.com/DKhalil) made their first contribution in [https://github.com/vimeo/psalm/pull/10887](https://togithub.com/vimeo/psalm/pull/10887) **Full Changelog**: vimeo/psalm@5.23.1...5.24.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/cerbos/cerbos-sdk-php). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXJlYS9kZXBzIiwiYm90cyIsImtpbmQvY2hvcmUiXX0=--> Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Oğuzhan Durgun <oguzhandurgun95@gmail.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
|
This PR causes this issue - #10971 and reports incorrectly InvalidArgument |
Uh oh!
There was an error while loading. Please reload this page.