What's Changed
Features
- Add Codebase to remaining events by @jack-worman in #8961
- Add @psalm-api annotation by @jack-worman in #8987
- Refined
explode()
types by @Ocramius in #9016 - Support constants in traits by @jack-worman in #9126
- Report unused baseline entries by @jack-worman in #9130
- Allow to specify custom shepherd endpoint by @lptn in #9133
- Narrow ->value of enum case(s) to only the possible values by @annervisser in #9157
Fixes
- Fix bug by @danog in #8955
- getopt() return type fix by @jack-worman in #8945
- Allow omitting argument offsets for map-type overrides in phpstorm.meta by @weirdan in #8781
- Extend XML enum of supported PHP ext by @lptn in #8971
- Revert #8955 by @danog in #8972
- (mb_)chr returns a non-empty-string by @fluffycondor in #8974
- Remove occurrences from error baseline by @jack-worman in #8967
- Add DateTimeInterface::__serialize and __unserialize by @michnovka in #8976
- Fix get_object_vars on enums by @jack-worman in #8973
- Fixes #8112 by @emmanuelGuiton in #8792
- Verify nullable callmap parameters by @othercorey in #8990
- Improve
invalid references
message in@psalm-type
by @weirdan in #8996 - Fix missing version in PHARs build on GA by @weirdan in #8997
- forbidden function bug and better get_defined_functions() signature by @jack-worman in #9002
- Add imap_is_open() to PHP 8.2 dictionary by @lptn in #9007
- Do not require return type on destructors in interfaces by @weirdan in #9009
- feat: add xdebug_info (fixes #8977) by @mathe42 in #9011
- Make
$http_response_header
a non-empty-list by @fluffycondor in #9001 - Preserve from_docblock in TypeCombiner by @VincentLanglet in #8999
- Add getAtomicType to IsNotAClass for proper negation Reconciliation by @orklah in #9017
- create proper TClosure instead of TNamedObject with a Closure value by @orklah in #9018
- Prevent DB escaping functions from affecting non-sql taints by @mmcev106 in #9019
- Is containedbug by @orklah in #9020
- Better type inference and type checking for large union types used in array keys/values by @Ocramius in #9022
- fix never return for MethodCalls by @kkmuffme in #9024
- Fix never return union type wrong condition by @kkmuffme in #9023
- fixes return type issues of methods reported for the wrong file by @kkmuffme in #9025
- Non empty reconciliation by @orklah in #9021
- fix @psalm-scope-this not working with FQCN with leading backslash by @kkmuffme in #9030
- Fix iterator and exception callmaps by @othercorey in #9035
- fix DateTime::modify() and DateTimeImmutable::modify() return types by @pilif in #9043
- Fix
ReflectionClass::getModifiers()
stub by @kukulich in #9047 - Fix
ReflectionClass::getReflectionConstants()
stub by @kukulich in #9048 - Fix
ReflectionClass::getTraitAliases()
stub by @kukulich in #9046 - Fix
ReflectionFunctionAbstract::getExtensionName()
stub by @kukulich in #9053 - Fix
ReflectionMethod::getModifiers()
stub by @kukulich in #9052 - Fix
ReflectionClass::getTraitNames()
stub by @kukulich in #9051 - Fix
ReflectionClass
stub by @kukulich in #9055 - fix autoloader not working with absolute path by @kkmuffme in #9044
- Narrow down the return type of DOMXPath::query() by @MidnightDesign in #9072
- fix
I::cases()
whereinterface I extends BackedEnum
by @weirdan in #9067 - fix implicit return type by @kkmuffme in #9026
- Update Call Maps and Signature for get_headers by @therealryanbonham in #9073
- dont report MissingFile error when file_exists is validated beforehand by @kkmuffme in #9012
- Handle template type on promoted property by @vincent4vx in #9092
- Additional test and fix when comparing nested templates by @emmanuelGuiton in #9095
- Automatically load stubs for random ext on PHP 8.2 by @lptn in #9099
- Add missing
int-range
aliases into the list of psalm reserved words by @eopnetto in #9107 - Clean up more callmap return types by @othercorey in #9113
- Infer getDefaultValueConstantName() type when isDefaultValueConstant() is true by @BenMorel in #9115
- Fix libxml_get_errors() return type by @jack-worman in #9118
- Fix remaining ignored CallMap return types that can be updated by @othercorey in #9122
- Fix dom_import_simplexml() by @jack-worman in #9139
- Fix ReflectionClass::newInstanceArgs() with named parameters by @BenMorel in #9085
- Fix shepherd for default domain by @lptn in #9136
- Suppress warnings when
--no-output
is specified by @weirdan in #9162
Docs
- restrictReturnTypes configuration documentation by @jack-worman in #9000
- Update ForbiddenCode.md by @maniaba in #9105
- Add information on pure-callables to documentation by @bitwise-operators in #9141
Internal changes
- Update BCC by @weirdan in #8966
- Drop symfony/polyfill-php80 dependency by @weirdan in #8988
- Fix PHPCS trailing comma by @theodorejb in #9014
- Misc fixes by @danog in #9031
- Fix remaining markdown issues by @danog in #9033
- Bump mheap/github-action-required-labels from 2 to 3 by @dependabot in #9039
- Internal: use more specific types by @lptn in #9063
- Make it more clear what do we test from Psalm output by @lptn in #9061
- Internal cleanup: Unify syntax for redis.phpstub by @lptn in #9088
- Cleanup unsupported extensions message by @lptn in #9089
- Allow sebastian/diff 5 by @Jean85 in #9117
- Enhance error output for shepherd by @lptn in #9134
- Indent docblocks in DocComment test by @weirdan in #9156
New Contributors
- @michnovka made their first contribution in #8976
- @emmanuelGuiton made their first contribution in #8792
- @mathe42 made their first contribution in #9011
- @kukulich made their first contribution in #9047
- @therealryanbonham made their first contribution in #9073
- @maniaba made their first contribution in #9105
- @eopnetto made their first contribution in #9107
Full Changelog: 5.4.0...5.5.0