Features
Bugfixes
- Improving handling of nested template types in class strings (#5290)
- Language Server Allow static methods to be autocompleted on instances (#5210, #5295)
- Language Server Fix inferred type caching bug when editing neighbouring methods (#5297)
- Fix JSON reports containing UTF-8 strings – thanks @danog (#5300)
- Improve callmap for
gd
functions in PHP 8 – thanks @iluuu1994 (#5271) - improvements to
mysql_init
andPDOStatement::fetchAll
return type – thanks @morozov (#5306, #5317) WeakMap
is now generic – thanks @weirdan (#5313)- Allow iterable coercion from a generic object (#5310)
- Fix an issue with method memoisation (#5317)
- Allow
ReflectionParameter::getType()
to return non-null if aReflectionParameter::hasType()
call returns true (#5258) - Undefined variables can now be tracked in arrow functions – thanks @weirdan (#5343)
ImplicitToStringCast
is now emitted in more places – thanks @weirdan (#5344)- variable usage in
bool
toint
casts are now tracked – thanks @weirdan (#5349) explode
return type is improved – thanks @weirdan (#5350)ceil
just returns afloat
, thanks @simPod (#5355)- improved return type for
min
andmax
– thanks @orklah - Psalm startup variables are now shielded from plugins that change global variables – thanks @weirdan! (#5366)
- fixed integer overflow that could cause a Psalm crash – thanks @orklah (#5369)
- @orklah fixed a bug where Psalm would not accurately type the output of
array_map
when given a callable (#5373) - prevented an edge-case where calling the constructor of a genericised class could poison Psalm's internal cache (b549989)