What's Changed
Features
- Make UnitEnum name property non-empty by @ricardoboss in #6964
- allow using EnumCase in an Attribute by @orklah in #6984
- Display target PHP version by @weirdan in #7006
- Colorized file name and line in console output by @Rarst in #4160
- Infer
::from()
and::tryFrom()
return types on backed enums by @weirdan in #7011 - Added enum-related stubs and callmaps by @weirdan in #7012
- Raise RedundantCast when using array_values on a list (fixes #6988) by @danog in #6997
- refine getdate array structure by @orklah in #7032
- Improved
preg_match()
output param type inference by @rarila in #7027 - flag usage of get_class outside class without args by @orklah in #7043
Fixes
- Correct missing key-value for stream_get_meta_data function by @mallardduck in #6949
- fix null propagation in return by @orklah in #6952
- Update $data argument types of file_put_contents by @ciaranmcnulty in #6954
- check __callStatic purity instead of the pseudoMethod purity by @orklah in #6953
- sleep(0) is valid by @BenMorel in #6955
- usleep(0) is valid by @LeSuisse in #6961
- Invalid SoapClient::__doRequest() response type by @veewee in #6927
- prevent Psalm from considering throwing methods as unused just because they're immutable by @orklah in #6972
- Attempt to fix #6937 by @ptomulik in #6963
- fix counting array properties when some are Never by @orklah in #6971
- Attempt fixing issue 6973 by @ptomulik in #6974
- using length instead of count for php 7.1 compatibility by @AlessandroMinoccheri in #6981
- don't accept unresolved literal string as valid callable-strings by @orklah in #6979
- Stub fixes for mysqli extension by @kamil-tekiela in #6986
- Taint can't be transmitted through numerics nor bool by @orklah in #6993
- Disable list flag for TKeyedArray after unset by @orklah in #7002
- Drop special handling of constant references on enums by @weirdan in #6995
- Fix signatures of gmstrftime and strftime by @kamil-tekiela in #7008
- Include enum cases in const wildcards by @weirdan in #7010
- Allow overriding the signature type by a param docblock for promoted properties by @orklah in #7013
- Fix mysqli_fetch_* stubs by @kamil-tekiela in #7014
- Escape GHA output by @weirdan in #7016
- fix signature for openssl_open under PHP >= 8.0 by @pilif in #6987
- refine abs return type by @orklah in #7023
- flag DeprecatedProperty on static fetch by @orklah in #7025
- remove the remaining dynamic property assignment by @orklah in #7022
- ignore irrelevant errors for php-parser 4.13.2 by @orklah in #7033
- Throw exception when baseline file is empty by @kamil-tekiela in #7036
- Fix RedisCluster::getOption() and RedisCluster::setOption() argument types by @ostrolucky in #7030
- get_class does not return false by @kamil-tekiela in #7042
- Consider emptiness for array_count_values() by @weirdan in #7045
- Don't output console links in CI env by @weirdan in #7049
Docs
- Add --php-version to CLI help by @DaveLiddament in #7024
- document the behavior of methods in IssueBuffer by @orklah in #7040
Internal changes
- Use return type hints instead of php doc "@return void" by @rarila in #7003
- Make test runnable on plain windows by @rarila in #7005
- Drop unused $fq_classlike_names property by @weirdan in #7004
- Fix failing symlink test on Windows by @rarila in #7009
- Disabled coverage (and xdebug) for CI builds by @weirdan in #7017
- Add tests for UnresolvableInclude by @pawel-slowik in #7021
- Migrate most IssueBuffer::accepts calls to IssueBuffer::maybeAdd by @muglug in #7020
- Prevent VoidProgress from outputting anything by @weirdan in #7031
- Enhancing composer scripts by @rarila in #7029
- Beautified phpcs.xml by @rarila in #7041
- Remove always-false args by @muglug in #7056
New Contributors
- @mallardduck made their first contribution in #6949
- @ciaranmcnulty made their first contribution in #6954
- @ptomulik made their first contribution in #6963
- @AlessandroMinoccheri made their first contribution in #6981
Full Changelog: 4.13.0...v4.14.0