What's Changed
Removed
Codebase::$use_referencing_files
,Context::$possible_param_types
andFunctionLikeStorage::$template_covariants
were removed. We do not believe they were used by anyone, thus we don't consider it to be a BC break
Features
- Detect unused properties that are written to inside arrays by @muglug in #7129
- Allow operator overloading for Decimal extension (fixes #3938). by @AndrolGenhald in #7103
- Fix count_chars stubs by @kamil-tekiela in #7094
- Added support for first-class callables by @trowski in #7113
- Allow suppressing UnusedPsalmSuppress, remove unused suppressions. by @AndrolGenhald in #7133
- Forbid positional arg after named arg by @klimick in #7136
- in_array returns false in strict mode if types are incompatibles by @mathroc in #7141
- "No errors found!" message is now printed within a nice green block by @SMAtaurRahman in #7150
- Use igbinary for communication between processes if possible by @sj-i in #7162
- Add Set::map() to ext-ds stub by @simPod in #7156
- Improve project files discovery performance by @dvz in #7161
- allow marking enum cases as deprecated by @pilif in #7192
Fixes
- Fix non-empty-literal-string to behave as subtype of non-empty-string (fixes #7095). by @AndrolGenhald in #7105
- fix reconciliation between positive-int and inferior/superior assertions by @orklah in #7106
- don't stop analyzing array, even if we already have a type and we can't create an object like by @orklah in #7093
- fix missing case for displaying varId by @orklah in #7054
- array_count_values return type for uncertain arrays by @weirdan in #7115
- Class property issue suppression fixes. by @AndrolGenhald in #7130
- Fix type inference of closure params by @klimick in #7135
- Fix closure param type inference with named params by @klimick in #7139
- Post-assertions in loops by @klimick in #7143
- fix CI by @orklah in #7153
- Fix optional arguments in number_format (fixes #7158). by @AndrolGenhald in #7159
- Fix ldap_set_rebind_proc signature by @villfa in #7145
- Fixed compatibility with SoapClient by @yethee in #7140
- display class-strings in keyed arrays syntax and allow using them for assertions by @orklah in #7152
- ISSUE-5962 Fixed wrong line number for @method annotations by @nowaja in #7157
- Fix conflicting array_map return provider fake variables. by @AndrolGenhald in #7167
- Fix faulty comparison with typed closure by @muglug in #7175
- doesn't infer empty for ReflectionClass::getAttributes without params by @orklah in #7180
- Fixed ignoreTypeStats & useStrictTypes flag value detection for directories in config by @SMAtaurRahman in #7182
- fix #7178 again by @orklah in #7189
- fix other occurences of getAttributes by @orklah in #7190
- MySqli: some parameters are nullable by @igitur in #7186
- allow destructuring on a possible null variable as long as there is an array alongside by @orklah in #7193
- Added pure annotations to enum functions by @ricardoboss in #7194
- fix(stubs): UnitEnum::cases() can return an empty list by @azjezz in #7197
- Add early file filtering to
FileProvider::getFilesInDir()
by @dvz in #7201 - flag the context as "inside_conditional" when analyzing leftover cases to prevent emitting unused error by @orklah in #7203
- Restore attributes in ClassConstantStorage by @weirdan in #7217
Docs
Internal changes
- Remove useless chunk of code in ScopeAnalyzer by @muglug in #7097
- Use getSingleAtomic() instead of array_values(getAtomicTypes())[0]. by @AndrolGenhald in #7134
- fix some more expressions that can be replaced by getSingleAtomic by @orklah in #7137
- Fix parser cache files maintenance by @dvz in #7082
- Convertion of partials to full imports by @rarila in #7155
- Set allow-plugins for Composer 2.2 by @villfa in #7149
- Codingstyle: declare construct & namespace declaration by @rarila in #7165
- Remove superflous exclude pattern in phpcs.xml by @rarila in #7168
- Removed misleading parentheses after language construct by @kamil-tekiela in #7183
- fix wrong handling of flags in context by @orklah in #7195
- allow phpcodesniffer-composer-installer plugin by @orklah in #7205
- Workaround for PHPUnit process isolation issue with composer 2.2 by @weirdan in #7208
- Remove unused in-array assertions by @muglug in #7202
New Contributors
- @dvz made their first contribution in #7082
- @yethee made their first contribution in #7140
- @nowaja made their first contribution in #7157
- @igitur made their first contribution in #7186
Full Changelog: v4.15.0...4.16.0