New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add @psalm-api annotation #8987
Add @psalm-api annotation #8987
Conversation
db1167f
to
cf09ed1
Compare
I think a better way to implement this is by adding a |
I don't think this PR and a This also has the advantage of being more consistent. For examples, I have an UnusedClass but a bunch of UnusedMethod and UnusedProperty issues are being masked. For some reason, the class gets a reference (maybe a test was added to it). Those masked issues now start to trigger. This is annoying and unintuitive. Wouldn't |
cf09ed1
to
9add80a
Compare
A test would be welcome here, I was quite confused at first. So if I get it, tomorrow, an unused class with 50 methods will emit 51 errors because the class and each methods are unused? I get the point for properties (that can be used inside methods that are seen as unused) but for methods, I'm not sure, seems like unnecessary noise |
In my code base, I found unused method arguments being masked because because the class was unused.
So, you would be in favor of adding a new option/config? This will allow end users to opt-in. Perhaps, default it to on in Psalm 6. |
9add80a
to
8f29edf
Compare
I don't think adding a new config is a good idea, because it's the wrong way of solving the problem. The problem is that code that will get used by users of a public API is incorrectly marked as unused.
This is not the same thing, because if for example the |
I was suggesting the config as a BC layer. I would eventually want (in Psalm 6) to remove the config option and have it on all the time. But anyways, I'll experiment with trying to implement your |
8f29edf
to
2906ed4
Compare
fa87483
to
b6ec8fb
Compare
Thanks! |
b6ec8fb
to
a0296ef
Compare
Done. But, this solution still doesn't solve my original concern. I still want a way to say, I don't care if the class is not used, still check my properties, methods, and method args for usages. |
df08336
to
703723a
Compare
This sounds like the problem the corresponding plugin should be solving. It's not that hard either; it was one of the first things I did in the PHPUnit plugin.
Then it's something we need to improve. |
Prior art:
So we may want to use |
++, and now that I think of it, it would be cool to change the default of |
703723a
to
a1db8da
Compare
d8387f6
to
5cf6949
Compare
7240be3
to
deaad89
Compare
LGTM! |
deaad89
to
6fc9e50
Compare
@@ -48,4 +48,8 @@ | |||
<directory>tests</directory> | |||
</testsuite> | |||
</testsuites> | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I never used this config, does it makes sense to keep it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This config is used by default. It should be used if no other config file is given.
6fc9e50
to
cae973e
Compare
cae973e
to
703a1e1
Compare
Thanks! |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [vimeo/psalm](https://togithub.com/vimeo/psalm) | require-dev | minor | `~5.4.0` -> `~5.8.0` | --- ### Release Notes <details> <summary>vimeo/psalm</summary> ### [`v5.8.0`](https://togithub.com/vimeo/psalm/releases/tag/5.8.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.7...5.8.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Features - FFI stubs improvement by [@​UlrichEckhardt](https://togithub.com/UlrichEckhardt) in [vimeo/psalm#9368 - Support sizeof alias of count by [@​jsanahuja](https://togithub.com/jsanahuja) in [vimeo/psalm#9375 - Iterated array in `foreach` body is never empty by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9380 - Process `@psalm-api` tags on methods by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9383 - Enforce literal string length limit by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9381 - \[ibm_db2] Improve return type inference for `db2_autocommit()` by [@​phansys](https://togithub.com/phansys) in [vimeo/psalm#9310 - Only disable grpc extension if it is not properly configured by [@​gndk](https://togithub.com/gndk) in [vimeo/psalm#9398 - PHP 8.3 dictionary by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9366 - concat should never remove non empty non falsy from string [#​9411](https://togithub.com/vimeo/psalm/issues/9411) by [@​EgorBakulin](https://togithub.com/EgorBakulin) in [vimeo/psalm#9422 - Forbid private final methods by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9442 - Support for `readonly` classes by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9444 - Consider new HTML entity en/decode function defaults since PHP 8.1 by [@​pereorga](https://togithub.com/pereorga) in [vimeo/psalm#9471 ##### Fixes - Instances of `object` returned by `db2_*()` functions are always instances of `stdClass` by [@​phansys](https://togithub.com/phansys) in [vimeo/psalm#9369 - Simplify and fix Shepherd to support custom endpoints for reporting by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9296 - Fixes [#​9384](https://togithub.com/vimeo/psalm/issues/9384) (Wrong type for variable checked with is_long) by [@​ygottschalk](https://togithub.com/ygottschalk) in [vimeo/psalm#9385 - Update Phar callmaps by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9389 - Correctly process use aliases in `@psalm-scope-this` by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9390 - Allow `array` as magic method name by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9391 - Consistently report docblock issues on all classlikes by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9392 - \[ibm_db2] Update some return types in callmaps by [@​phansys](https://togithub.com/phansys) in [vimeo/psalm#9387 - Preserve PossiblyUndefinedVariable when fixing UnusedVariable by [@​edsrzf](https://togithub.com/edsrzf) in [vimeo/psalm#9400 - \[ibm_db2] Update callmaps by [@​phansys](https://togithub.com/phansys) in [vimeo/psalm#9404 - Fix [#​9401](https://togithub.com/vimeo/psalm/issues/9401) by [@​ptomulik](https://togithub.com/ptomulik) in [vimeo/psalm#9418 - Fix remaining spl and iterator callmaps by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9420 - An attempt to fix [#​4460](https://togithub.com/vimeo/psalm/issues/4460) by [@​ptomulik](https://togithub.com/ptomulik) in [vimeo/psalm#9415 - `array_pop` is impure by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9434 - Revert "`array_pop` is impure" by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9435 - Update pack() stub by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9438 - Merge param descriptions when adding or updating types by [@​aboyton](https://togithub.com/aboyton) in [vimeo/psalm#9441 - PHP 8.2 attributes moved to 8.2 stub by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9445 - Improce enum case reconciliation by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9457 - Do not strip the last `)` bracket when parsing phpdoc type aliases. by [@​pvandommelen](https://togithub.com/pvandommelen) in [vimeo/psalm#9458 - Replace package-versions with Composer 2 APIs by [@​Jean85](https://togithub.com/Jean85) in [vimeo/psalm#9459 - Fix DOM callmaps by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9460 - Don't crash on unary minus overflow by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9466 - Fix remaining intl callmaps by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9473 ##### Internal changes - Convert callmap associative-array types into proper array types by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9362 - Callmap is always non-empty by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9405 - Reorganize pushes to `psalm/phar` by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9399 - Do not display ext deprecation note when `disableExtensions` used by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9291 - Require `<?php` tag in tests by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9443 #### New Contributors - [@​UlrichEckhardt](https://togithub.com/UlrichEckhardt) made their first contribution in [vimeo/psalm#9368 - [@​jsanahuja](https://togithub.com/jsanahuja) made their first contribution in [vimeo/psalm#9375 - [@​EgorBakulin](https://togithub.com/EgorBakulin) made their first contribution in [vimeo/psalm#9422 - [@​pereorga](https://togithub.com/pereorga) made their first contribution in [vimeo/psalm#9471 **Full Changelog**: vimeo/psalm@5.7.7...5.8.0 ### [`v5.7.7`](https://togithub.com/vimeo/psalm/releases/tag/5.7.7) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.6...5.7.7) <!-- Release notes generated using configuration in .github/release.yml at 5.7.x --> #### What's Changed ##### Fixes - Don't crash on empty `jit_buffer_size` by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9397 **Full Changelog**: vimeo/psalm@5.7.6...5.7.7 ### [`v5.7.6`](https://togithub.com/vimeo/psalm/releases/tag/5.7.6) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.5...5.7.6) <!-- Release notes generated using configuration in .github/release.yml at 5.7.x --> #### What's Changed ##### Fixes - Disable `opcache.preload` if it's enabled by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9388 **Full Changelog**: vimeo/psalm@5.7.5...5.7.6 ### [`v5.7.5`](https://togithub.com/vimeo/psalm/releases/tag/5.7.5) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.4...5.7.5) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Fixes - Workaround opcache issue (fixes [#​9363](https://togithub.com/vimeo/psalm/issues/9363)) by [@​danog](https://togithub.com/danog) in [vimeo/psalm#9364 **Full Changelog**: vimeo/psalm@5.7.4...5.7.5 ### [`v5.7.4`](https://togithub.com/vimeo/psalm/releases/tag/5.7.4) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.3...5.7.4) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Fixes - Include setrawcookie as an impure function by [@​edsrzf](https://togithub.com/edsrzf) in [vimeo/psalm#9356 - Fix several spl callmap methods by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9360 - Revert "[#​7387](https://togithub.com/vimeo/psalm/issues/7387) Add asserting non-empty-string by strlen" by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9358 **Full Changelog**: vimeo/psalm@5.7.3...5.7.4 ### [`v5.7.3`](https://togithub.com/vimeo/psalm/releases/tag/5.7.3) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.2...5.7.3) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Fixes - Replace use of DOMParentNode::append() with appendChild() by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9354 **Full Changelog**: vimeo/psalm@5.7.2...5.7.3 ### [`v5.7.2`](https://togithub.com/vimeo/psalm/releases/tag/5.7.2) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.1...5.7.2) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Fixes - fix (DateTime|DateTimeImmutable)::modify() return types by [@​DaDeather](https://togithub.com/DaDeather) in [vimeo/psalm#9172 - Workaround arm64 opcache bug (fixes [#​9350](https://togithub.com/vimeo/psalm/issues/9350)) by [@​danog](https://togithub.com/danog) in [vimeo/psalm#9351 #### New Contributors - [@​DaDeather](https://togithub.com/DaDeather) made their first contribution in [vimeo/psalm#9172 **Full Changelog**: vimeo/psalm@5.7.1...5.7.2 ### [`v5.7.1`](https://togithub.com/vimeo/psalm/releases/tag/5.7.1) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.7.0...5.7.1) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Fixes - Always use 0x7FFEBFFF opcache optimization level (fixes [#​9340](https://togithub.com/vimeo/psalm/issues/9340)) by [@​danog](https://togithub.com/danog) in [vimeo/psalm#9342 - Fix `PsalmRestarter::restart()` signature by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9347 **Full Changelog**: vimeo/psalm@5.7.0...5.7.1 ### [`v5.7.0`](https://togithub.com/vimeo/psalm/releases/tag/5.7.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.6.0...5.7.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Deprecations - Deprecate `FunctionLikeStorage::$unused_docblock_params` by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9312 ##### Features - [#​7387](https://togithub.com/vimeo/psalm/issues/7387) Add asserting non-empty-string by strlen by [@​LeoVie](https://togithub.com/LeoVie) in [vimeo/psalm#8761 - Forbid implementing some interfaces by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9272 - Added issue type and psalm.dev link to Emacs report by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9299 - Allow `@var` annotations on global vars by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9301 - Allow suppressing `MissingThrowsDocblock` for individual exceptions by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9303 - Flag direct constructor calls by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9311 - Flag docblock parameters that have no counterparts in function signature by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9314 - Forbid non-null defaults for callable parameters by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9316 ##### Fixes - cdata in baseline by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#9184 - Resolve class constants within PhpStorm metadata by [@​shvlv](https://togithub.com/shvlv) in [vimeo/psalm#9173 - Detect duplicate keys in array shapes by [@​danog](https://togithub.com/danog) in [vimeo/psalm#9177 - Fix xmlrpc callmap functions that were dropped in PHP 8.0 by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9212 - fix `didChange` event in LSP by [@​ging-dev](https://togithub.com/ging-dev) in [vimeo/psalm#9207 - Added [@​psalm-pure](https://togithub.com/psalm-pure) to filter_var() by [@​mmcev106](https://togithub.com/mmcev106) in [vimeo/psalm#9170 - Add DatePeriod::INCLUDE_END_DATE option by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9220 - Add more specific return for class-implements by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9228 - Convert callmaps resource types by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9227 - Use "numeric-string" type for some MySQLi properties by [@​phansys](https://togithub.com/phansys) in [vimeo/psalm#9226 - find_unused_code CLI arg should not be overwritten by config file by [@​kkmuffme](https://togithub.com/kkmuffme) in [vimeo/psalm#9235 - Fix divide by a floating point zero by [@​aboyton](https://togithub.com/aboyton) in [vimeo/psalm#9247 - Don't crash on unknown exceptions in `@throws` docblock by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9250 - Fix Spoofchecker callmaps by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9256 - Fix crashes with invalid `@psalm-check-type` syntax by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9257 - Fix crash when int range boundary is overflown by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9260 - Drop abandoned mcve m\_ functions by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9266 - Fix several callmap fuction signatures by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9264 - fix lstat bug cache directory race condition by [@​kkmuffme](https://togithub.com/kkmuffme) in [vimeo/psalm#9253 - Drop removed xsl callmap functions by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9269 - Drop abandoned maxdb callmap functions by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9270 - Drop abandoned newt callmap functions by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9271 - Update callmap types for php 8.2 by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9273 - Fix opcache being loaded twice by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9265 - Forbid overriding built-in enum methods by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9280 - Fix remaining callmap functions by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9278 - Add curl stubs to prevent crashes by [@​kamil-tekiela](https://togithub.com/kamil-tekiela) in [vimeo/psalm#9283 - Compare enum cases thoroughly by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9286 - Drop abandoned ncurses extension by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9293 - Drop abandoned cairo extension by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9292 - Emit issues for calls to `is_a(string, class-string, false)` by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9287 - Made `WeakReference` mutable by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9297 - Flag class constant references where LHS is ordinary string by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9302 - Fixed issue message for missing `@psalm-external-mutation-free` by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9304 - Fix memcached extension callmap by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9309 - Fix strpos stub return type by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9322 - Propagate phantom classes to closure context by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9329 - Fix language server first-class callable crashes by [@​edsrzf](https://togithub.com/edsrzf) in [vimeo/psalm#9336 - Forbid first-class callables in `new` by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9338 - Negated is_numeric narrows scalar type by [@​edsrzf](https://togithub.com/edsrzf) in [vimeo/psalm#9339 ##### Docs - Documentation: Add BackedEnum compatibility to value-of docs by [@​bitwise-operators](https://togithub.com/bitwise-operators) in [vimeo/psalm#9252 - Added note on properties used in constructor only by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9298 - Added a page explaining how to add a new issue type by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9315 ##### Internal changes - Unify warning messages for deprecated config variables by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9135 - Fix newly discovered CS issues by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9210 - Fixed more CS issues by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9236 - Always enable JIT by [@​danog](https://togithub.com/danog) in [vimeo/psalm#9237 - Allow fidry/cpu-core-counter:v0.5 by [@​Slamdunk](https://togithub.com/Slamdunk) in [vimeo/psalm#9234 - Update workflows to use non-deprecated method of setting step output by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9251 - Emit warning if opcache cannot be enabled by [@​danog](https://togithub.com/danog) in [vimeo/psalm#9240 - Add option to skip callmap test by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9300 - Suggest Psalm to be installed in require-dev section by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9308 - Skip verifying callmaps based on name pattern by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9313 - Skip verifying memcache extension callmap by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9325 - Run assertions on CI by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9318 - Allow spatie/array-to-xml v3 by [@​gharlan](https://togithub.com/gharlan) in [vimeo/psalm#9331 - Disable JIT-incompatible extensions to prevent warnings by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9326 - Added the test to validate test environment itself by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9337 ##### Other changes - Remove some logic that didn't need to be there by [@​muglug](https://togithub.com/muglug) in [vimeo/psalm#9209 #### New Contributors - [@​shvlv](https://togithub.com/shvlv) made their first contribution in [vimeo/psalm#9173 - [@​LeoVie](https://togithub.com/LeoVie) made their first contribution in [vimeo/psalm#8761 - [@​phansys](https://togithub.com/phansys) made their first contribution in [vimeo/psalm#9226 - [@​Slamdunk](https://togithub.com/Slamdunk) made their first contribution in [vimeo/psalm#9234 - [@​aboyton](https://togithub.com/aboyton) made their first contribution in [vimeo/psalm#9247 - [@​edsrzf](https://togithub.com/edsrzf) made their first contribution in [vimeo/psalm#9336 **Full Changelog**: vimeo/psalm@5.6.0...5.7.0 ### [`v5.6.0`](https://togithub.com/vimeo/psalm/releases/tag/5.6.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.5.0...5.6.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Features - Check `$this` in static closures by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9164 ##### Fixes - Use STDERR for Shepherd output by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9169 ##### Typos - HEAD in all caps by [@​buismaarten](https://togithub.com/buismaarten) in [vimeo/psalm#9163 #### New Contributors - [@​buismaarten](https://togithub.com/buismaarten) made their first contribution in [vimeo/psalm#9163 **Full Changelog**: vimeo/psalm@5.5.0...5.6.0 ### [`v5.5.0`](https://togithub.com/vimeo/psalm/releases/tag/5.5.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.4.0...5.5.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Features - Add Codebase to remaining events by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#8961 - Add [@​psalm-api](https://togithub.com/psalm-api) annotation by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#8987 - Refined `explode()` types by [@​Ocramius](https://togithub.com/Ocramius) in [vimeo/psalm#9016 - Support constants in traits by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#9126 - Report unused baseline entries by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#9130 - Allow to specify custom shepherd endpoint by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9133 - Narrow ->value of enum case(s) to only the possible values by [@​annervisser](https://togithub.com/annervisser) in [vimeo/psalm#9157 ##### Fixes - Fix bug by [@​danog](https://togithub.com/danog) in [vimeo/psalm#8955 - getopt() return type fix by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#8945 - Allow omitting argument offsets for map-type overrides in phpstorm.meta by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#8781 - Extend XML enum of supported PHP ext by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#8971 - Revert [#​8955](https://togithub.com/vimeo/psalm/issues/8955) by [@​danog](https://togithub.com/danog) in [vimeo/psalm#8972 - (mb\_)chr returns a non-empty-string by [@​fluffycondor](https://togithub.com/fluffycondor) in [vimeo/psalm#8974 - Remove occurrences from error baseline by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#8967 - Add DateTimeInterface::\__serialize and \__unserialize by [@​michnovka](https://togithub.com/michnovka) in [vimeo/psalm#8976 - Fix get_object_vars on enums by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#8973 - Fixes [#​8112](https://togithub.com/vimeo/psalm/issues/8112) by [@​emmanuelGuiton](https://togithub.com/emmanuelGuiton) in [vimeo/psalm#8792 - Verify nullable callmap parameters by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#8990 - Improve `invalid references` message in `@psalm-type` by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#8996 - Fix missing version in PHARs build on GA by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#8997 - forbidden function bug and better get_defined_functions() signature by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#9002 - Add imap_is_open() to PHP 8.2 dictionary by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9007 - Do not require return type on destructors in interfaces by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9009 - feat: add xdebug_info (fixes [#​8977](https://togithub.com/vimeo/psalm/issues/8977)) by [@​mathe42](https://togithub.com/mathe42) in [vimeo/psalm#9011 - Make `$http_response_header` a non-empty-list by [@​fluffycondor](https://togithub.com/fluffycondor) in [vimeo/psalm#9001 - Preserve from_docblock in TypeCombiner by [@​VincentLanglet](https://togithub.com/VincentLanglet) in [vimeo/psalm#8999 - Add getAtomicType to IsNotAClass for proper negation Reconciliation by [@​orklah](https://togithub.com/orklah) in [vimeo/psalm#9017 - create proper TClosure instead of TNamedObject with a Closure value by [@​orklah](https://togithub.com/orklah) in [vimeo/psalm#9018 - Prevent DB escaping functions from affecting non-sql taints by [@​mmcev106](https://togithub.com/mmcev106) in [vimeo/psalm#9019 - Is containedbug by [@​orklah](https://togithub.com/orklah) in [vimeo/psalm#9020 - Better type inference and type checking for large union types used in array keys/values by [@​Ocramius](https://togithub.com/Ocramius) in [vimeo/psalm#9022 - fix never return for MethodCalls by [@​kkmuffme](https://togithub.com/kkmuffme) in [vimeo/psalm#9024 - Fix never return union type wrong condition by [@​kkmuffme](https://togithub.com/kkmuffme) in [vimeo/psalm#9023 - fixes return type issues of methods reported for the wrong file by [@​kkmuffme](https://togithub.com/kkmuffme) in [vimeo/psalm#9025 - Non empty reconciliation by [@​orklah](https://togithub.com/orklah) in [vimeo/psalm#9021 - fix [@​psalm-scope-this](https://togithub.com/psalm-scope-this) not working with FQCN with leading backslash by [@​kkmuffme](https://togithub.com/kkmuffme) in [vimeo/psalm#9030 - Fix iterator and exception callmaps by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9035 - fix DateTime::modify() and DateTimeImmutable::modify() return types by [@​pilif](https://togithub.com/pilif) in [vimeo/psalm#9043 - Fix `ReflectionClass::getModifiers()` stub by [@​kukulich](https://togithub.com/kukulich) in [vimeo/psalm#9047 - Fix `ReflectionClass::getReflectionConstants()` stub by [@​kukulich](https://togithub.com/kukulich) in [vimeo/psalm#9048 - Fix `ReflectionClass::getTraitAliases()` stub by [@​kukulich](https://togithub.com/kukulich) in [vimeo/psalm#9046 - Fix `ReflectionFunctionAbstract::getExtensionName()` stub by [@​kukulich](https://togithub.com/kukulich) in [vimeo/psalm#9053 - Fix `ReflectionMethod::getModifiers()` stub by [@​kukulich](https://togithub.com/kukulich) in [vimeo/psalm#9052 - Fix `ReflectionClass::getTraitNames()` stub by [@​kukulich](https://togithub.com/kukulich) in [vimeo/psalm#9051 - Fix `ReflectionClass` stub by [@​kukulich](https://togithub.com/kukulich) in [vimeo/psalm#9055 - fix autoloader not working with absolute path by [@​kkmuffme](https://togithub.com/kkmuffme) in [vimeo/psalm#9044 - Narrow down the return type of DOMXPath::query() by [@​MidnightDesign](https://togithub.com/MidnightDesign) in [vimeo/psalm#9072 - fix `I::cases()` where `interface I extends BackedEnum` by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9067 - fix implicit return type by [@​kkmuffme](https://togithub.com/kkmuffme) in [vimeo/psalm#9026 - Update Call Maps and Signature for get_headers by [@​therealryanbonham](https://togithub.com/therealryanbonham) in [vimeo/psalm#9073 - dont report MissingFile error when file_exists is validated beforehand by [@​kkmuffme](https://togithub.com/kkmuffme) in [vimeo/psalm#9012 - Handle template type on promoted property by [@​vincent4vx](https://togithub.com/vincent4vx) in [vimeo/psalm#9092 - Additional test and fix when comparing nested templates by [@​emmanuelGuiton](https://togithub.com/emmanuelGuiton) in [vimeo/psalm#9095 - Automatically load stubs for random ext on PHP 8.2 by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9099 - Add missing `int-range` aliases into the list of psalm reserved words by [@​eopnetto](https://togithub.com/eopnetto) in [vimeo/psalm#9107 - Clean up more callmap return types by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9113 - Infer getDefaultValueConstantName() type when isDefaultValueConstant() is true by [@​BenMorel](https://togithub.com/BenMorel) in [vimeo/psalm#9115 - Fix libxml_get_errors() return type by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#9118 - Fix remaining ignored CallMap return types that can be updated by [@​othercorey](https://togithub.com/othercorey) in [vimeo/psalm#9122 - Fix dom_import_simplexml() by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#9139 - Fix ReflectionClass::newInstanceArgs() with named parameters by [@​BenMorel](https://togithub.com/BenMorel) in [vimeo/psalm#9085 - Fix shepherd for default domain by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9136 - Suppress warnings when `--no-output` is specified by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9162 ##### Docs - restrictReturnTypes configuration documentation by [@​jack-worman](https://togithub.com/jack-worman) in [vimeo/psalm#9000 - Update ForbiddenCode.md by [@​maniaba](https://togithub.com/maniaba) in [vimeo/psalm#9105 - Add information on pure-callables to documentation by [@​bitwise-operators](https://togithub.com/bitwise-operators) in [vimeo/psalm#9141 ##### Internal changes - Update BCC by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#8966 - Drop symfony/polyfill-php80 dependency by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#8988 - Fix PHPCS trailing comma by [@​theodorejb](https://togithub.com/theodorejb) in [vimeo/psalm#9014 - Misc fixes by [@​danog](https://togithub.com/danog) in [vimeo/psalm#9031 - Fix remaining markdown issues by [@​danog](https://togithub.com/danog) in [vimeo/psalm#9033 - Bump mheap/github-action-required-labels from 2 to 3 by [@​dependabot](https://togithub.com/dependabot) in [vimeo/psalm#9039 - Internal: use more specific types by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9063 - Make it more clear what do we test from Psalm output by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9061 - Internal cleanup: Unify syntax for redis.phpstub by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9088 - Cleanup unsupported extensions message by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9089 - Allow sebastian/diff 5 by [@​Jean85](https://togithub.com/Jean85) in [vimeo/psalm#9117 - Enhance error output for shepherd by [@​lptn](https://togithub.com/lptn) in [vimeo/psalm#9134 - Indent docblocks in DocComment test by [@​weirdan](https://togithub.com/weirdan) in [vimeo/psalm#9156 #### New Contributors - [@​michnovka](https://togithub.com/michnovka) made their first contribution in [vimeo/psalm#8976 - [@​emmanuelGuiton](https://togithub.com/emmanuelGuiton) made their first contribution in [vimeo/psalm#8792 - [@​mathe42](https://togithub.com/mathe42) made their first contribution in [vimeo/psalm#9011 - [@​kukulich](https://togithub.com/kukulich) made their first contribution in [vimeo/psalm#9047 - [@​therealryanbonham](https://togithub.com/therealryanbonham) made their first contribution in [vimeo/psalm#9073 - [@​maniaba](https://togithub.com/maniaba) made their first contribution in [vimeo/psalm#9105 - [@​eopnetto](https://togithub.com/eopnetto) made their first contribution in [vimeo/psalm#9107 **Full Changelog**: vimeo/psalm@5.4.0...5.5.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://app.renovatebot.com/dashboard#github/open-feature/php-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xMDguNCIsInVwZGF0ZWRJblZlciI6IjM0LjE1OS4yIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@psalm-api