What's Changed
Features
Fixes
- ✨ [#11509] Fix regression about iterables, list and conditional types by @andrew-demb in #11558
- test(psalter): pin a constructor inherited from another file with MissingThrowsDocblock by @jirkace in #13346
- feat(stubs): substr of a non-empty-string from its start is non-empty by @jirkace in #12921
- fix(properties): the self of a trait property signature is the using class by @jirkace in #12919
- fix(isset): a variable not set by the isset branch stays possibly undefined after the if by @jirkace in #13046
- fix(unused): a call on the left of ?? is used by the coalesce by @jirkace in #13231
- fix(call): give the callback of usort() and its siblings the element type of the array by @jirkace in #13347
- fix(call): keep the narrowed type of an unchanged argument in strict_types by @jirkace in #13341
- fix(parser): accept a name after the = or ... of a callable param by @jirkace in #13226
- fix(types): a literal string id does not use the C escapes \a and \b by @jirkace in #13209
- fix(loop): report break/continue levels exceeding the enclosing structures by @jirkace in #13210
- fix(foreach): drop the invalid-iteration null of an Iterator's current() and key() by @jirkace in #13218
- fix(interface): report an undefined interface in an interface's extends list by @jirkace in #13212
- fix(inheritance): compare constructors that override an abstract constructor by @jirkace in #13211
- fix(docblock): report the class issues of a @var type at the docblock by @jirkace in #13182
- fix(return): report a void|never docblock return type that can only return implicitly by @jirkace in #13169
- fix(strings): keep the literals of a union in an interpolated string by @jirkace in #13130
- fix(try): a catch whose every path leaves does not make the variables of the try possibly undefined by @jirkace in #13183
- fix(unused): report the unused result of a pure static method call by @jirkace in #13197
- fix(properties): a redeclared protected property is accessible from the classes of its first declaration by @jirkace in #13203
- fix(docblock): a tag of a single-line docblock has no trailing blank by @jirkace in #13193
- Handle missing parents when checking inherited constants by @orklah in #13414
- fix(params): honour @psalm-suppress InvalidParamDefault by @jirkace in #13172
- fix(callable): resolve [object, 'method'] callables to inherited and trait methods by @jirkace in #13214
- fix(docblock): allow a trailing comma in a generic type by @jirkace in #13208
- fix(stubs): FFI::memcmp prefers references but also accepts values by @jirkace in #13173
- [6.x] Fix crash when a closure unsets a by-reference captured variable (backport) by @alies-dev in #12058
- [6.x] Fix type variables bounded by another type variable (backport) by @alies-dev in #12059
- Fix: don't report plugin-appended class and method suppressions as unused by @alies-dev in #12033
Internal changes
- Accept negative integer keys in the composer build patch check by @danog in #13406
- Fix 6.x CI: retry transient stub build failures, update array_first test by @danog in #13407
- Merge 6.x into master by @alies-dev in #13438
Full Changelog: 7.0.5...7.1.0