Change in behaviour
- accessing a not-previously-specified key of an object-like array is now a bug (#2787)
- any args passed to an unknown method must now be defined beforehand (#2909)
Other bugfixes
- @Daeroni improved some builtin
GD
functions (#2851) - @JaredCDN prevented a TypeError when generating xml reports (#2856)
- Psalter: fix
MissingParamType
replacement when for parameters passed by-reference (#2857) - Prevent
DuplicateArrayKey
warning when unpacking multiple arrays without known key types (#2852) - Allow comparison between different templated object-like arrays (#2849)
- Allow casting templated types (#2848)
- Allow class constants to contain array offset references for other class constants (#2844)
- Forbid passing in mutatable class to a mutation-free context (#2805)
- Allow
"5.0"
wherenumeric
is expected (#2827) - Only warn about deprecated classes where they're used explicitly (#2721)
- Warn when an immutable class depends on a mutable parent (#2242)
- Detect error when asserting on result of function call (#1684)
- Break apart a
scalar
type into constituent parts where necessary (#1311) - Treat
echo
as impure (#2867) - Prevent use of impure
__toString
(#2866) - Prevent keyed arrays from being interpreted as
callable
(#2871) - @ArSn fixed setting memory_limit artificially low when running Psalter (#2873)
- Allow
@method as(string $s)
(#2881) - Handle templated intersections more equally (#2875)
- @pilif added a config
skipChecksOnUnresolvableIncludes
that you can disable to make Psalm more strict when it encountersinclude
s for unknown files (#2817) - @jdreesen improved the return type of
range(...)
- Keep track of which argument a given template param was inferred from, to avoid overwriting the inference (#2900)
- Don't care about method case in the PhpStorm meta scanner (#2890)
- Rename stubs to prevent issues in PHPStorm (#2879)
- Trim carriage returns where necessary (#2859)
- Prevent ternaries from being considered a valid reference (#2910)
- @leightonthomas supported trailing commas in type aliases (#1799)
- Prevent contradiction with templated
object
equality (#2918) - Don't emit
MissingPropertyType
where the property is defined in a third-party lib (#2388)