nikic/PHP-Parser
### [`v4.14.0`](https://togithub.com/nikic/PHP-Parser/blob/HEAD/CHANGELOG.md#Version-4140-2022-05-31)
[Compare Source](https://togithub.com/nikic/PHP-Parser/compare/v4.13.2...v4.14.0)
##### Added
- Added support for readonly classes.
- Added `rawValue` attribute to `LNumber`, `DNumber` and `String_` nodes, which stores the unparsed
value of the literal (e.g. `"1_000"` rather than `1000`).
phpstan/phpdoc-parser
### [`v1.6.4`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.4)
[Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.6.3...1.6.4)
- [135607f](http://github.com/phpstan/phpdoc-parser/commit/135607f9ccc297d6923d49c2bcf309f509413215) - Support [@template-contravariant](https://togithub.com/template-contravariant) tags
- [25ddf93](http://github.com/phpstan/phpdoc-parser/commit/25ddf938d8f71485ab9630428920ea8474504db4) - Simplify parsing of type alias import
### [`v1.6.3`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.3)
[Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.6.2...1.6.3)
- [4a07085](http://github.com/phpstan/phpdoc-parser/commit/4a07085f74cb1f3fc7103efa537d9f00ebb74ec7) - Micro-optimize lexer
### [`v1.6.2`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.2)
[Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.6.1...1.6.2)
- [76150ae](http://github.com/phpstan/phpdoc-parser/commit/76150ae7512439b4e6903db834e4a327596b617d) - Optimize generated regex
### [`v1.6.1`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.1)
[Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.6.0...1.6.1)
- [5aaeb83](http://github.com/phpstan/phpdoc-parser/commit/5aaeb83195d6d96515329d14688547d7c81e59e9) - Optimize Lexer::tokenize()
- [07c49b0](http://github.com/phpstan/phpdoc-parser/commit/07c49b0107f79289bd8dad07e7e733b78cb6d1bf) - Regression test
- [4c25f7f](http://github.com/phpstan/phpdoc-parser/commit/4c25f7fc4dbe9ec7140e8661a2a76f13a3156cd8) - Install phpstan/phpstan-phpunit
### [`v1.6.0`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.0)
[Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.5.1...1.6.0)
- [3cb62d1](http://github.com/phpstan/phpdoc-parser/commit/3cb62d10845338136ff4ba299ab0986bbf84ba77) - Make requiring whitespace before description optional
- [1e355a3](http://github.com/phpstan/phpdoc-parser/commit/1e355a35e2a8ddfd1910ae674ee99d562847b4b5) - Support all atomic types as nullable types
- [7c621a2](http://github.com/phpstan/phpdoc-parser/commit/7c621a221778202175b5c5df3ff2bcbaea5efd59) - Fix parsing phpdoc with no trailing whitespace
- [9d45205](http://github.com/phpstan/phpdoc-parser/commit/9d452051cbb2676d232a61920b5a9f336207af65) - Allow omitting [@param](https://togithub.com/param) type
- [d579798](http://github.com/phpstan/phpdoc-parser/commit/d579798d2fefdc27de8227ab4a5b4eabe9532be7) - Require whitespace before description with limited start tokens
- [b75949e](http://github.com/phpstan/phpdoc-parser/commit/b75949e747354aecfa280116df9eb2b0b5c6dcc8) - Update dependency slevomat/coding-standard to v7.2.1
- [5968e5f](http://github.com/phpstan/phpdoc-parser/commit/5968e5f71a00ce00d3e8ccf1c84a551996cee344) - Fix typo in doc/grammars
- [5e424af](http://github.com/phpstan/phpdoc-parser/commit/5e424af90d346e2491f6c603634b1c8d081fc982) - Update dependency slevomat/coding-standard to v7.2.0
phpstan/phpstan
### [`v1.8.1`](https://togithub.com/phpstan/phpstan/releases/tag/1.8.1)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.8.0...1.8.1)
# Improvements π§
- ReadWritePropertiesExtensions are part of ClassPropertiesNode (https://github.com/phpstan/phpstan-src/commit/49c27d8849b1d153a67f28e612e490a71b4fd477), [https://github.com/phpstan/phpstan-src/pull/1480#issuecomment-1169960148](https://togithub.com/phpstan/phpstan-src/pull/1480#issuecomment-1169960148)
- Add ClosureTypeFactory ([#1484](https://togithub.com/phpstan/phpstan-src/pull/1483)), [https://github.com/phpstan/phpstan/discussions/7546](https://togithub.com/phpstan/phpstan/discussions/7546), thanks [@canvural](https://togithub.com/canvural)!
- Handle native function `@throws` tag in stub file ([#1487](https://togithub.com/phpstan/phpstan-src/pull/1487)), [#7552](https://togithub.com/phpstan/phpstan/issues/7552), thanks [@VincentLanglet](https://togithub.com/VincentLanglet)!
- Add `#[AllowDynamicProperties]` PHP 8.2 attribute stub ([#1478](https://togithub.com/phpstan/phpstan-src/pull/1478)), thanks [@andypost](https://togithub.com/andypost)!
- Add rule that disallows final private methods on PHP 8.0+ ([#1490](https://togithub.com/phpstan/phpstan-src/pull/1490)), thanks [@herndlm](https://togithub.com/herndlm)!
- Inherit `@immutable` phpdoc ([#1489](https://togithub.com/phpstan/phpstan-src/pull/1489)), [#7506](https://togithub.com/phpstan/phpstan/issues/7506), thanks [@herndlm](https://togithub.com/herndlm)!
- Mark `ClassReflection::evictPrivateSymbols()` as internal (https://github.com/phpstan/phpstan-src/commit/9138ab2a1b63d9ee31764cc812cca404f265ecb7)
# Bugfixes π
- Fix type specification of various string functions with constant strings in a falsey context ([#1488](https://togithub.com/phpstan/phpstan-src/pull/1488)), [#7555](https://togithub.com/phpstan/phpstan/issues/7555), thanks [@herndlm](https://togithub.com/herndlm)!
- Fix `ConstantArrayType` creation for `preg_split` with `PREG_SPLIT_OFFSET_CAPTURE` ([#1486](https://togithub.com/phpstan/phpstan-src/pull/1486)), [#7554](https://togithub.com/phpstan/phpstan/issues/7554), thanks [@herndlm](https://togithub.com/herndlm)!
- Reindex constant arrays via `shuffle` ([#1438](https://togithub.com/phpstan/phpstan-src/pull/1438)), [#6138](https://togithub.com/phpstan/phpstan/issues/6138), thanks [@herndlm](https://togithub.com/herndlm)!
- Fix union and intersection between StaticType and ThisType (https://github.com/phpstan/phpstan-src/commit/e20e9345f57a7cd760967f459aa1eedfe2eabff8), [#6291](https://togithub.com/phpstan/phpstan/issues/6291), [#7211](https://togithub.com/phpstan/phpstan/issues/7211), [#7550](https://togithub.com/phpstan/phpstan/issues/7550)
- Enhance `FILTER_VALIDATE_INT` option in `filter_var` ([#1499](https://togithub.com/phpstan/phpstan-src/pull/1499)), [#7608](https://togithub.com/phpstan/phpstan/issues/7608), thanks [@takeokunn](https://togithub.com/takeokunn)!
- Fix handling of `str_split` / `mb_str_split` string arg compound types ([#1496](https://togithub.com/phpstan/phpstan-src/pull/1496)), [#7580](https://togithub.com/phpstan/phpstan/issues/7580), thanks [@herndlm](https://togithub.com/herndlm)!
- Fix Identical type specification of constant types ([#1493](https://togithub.com/phpstan/phpstan-src/pull/1493)), [#7257](https://togithub.com/phpstan/phpstan/issues/7257), [#6781](https://togithub.com/phpstan/phpstan/issues/6781), [#6647](https://togithub.com/phpstan/phpstan/issues/6647), [#5896](https://togithub.com/phpstan/phpstan/issues/5896), [#5474](https://togithub.com/phpstan/phpstan/issues/5474), [#6000](https://togithub.com/phpstan/phpstan/issues/6000), thanks [@herndlm](https://togithub.com/herndlm)!
- Better `StaticType::traverse()` (https://github.com/phpstan/phpstan-src/commit/0e257067ff92fbcb37b034cccdbea864a233c198)
- `GenericClassStringType::isSuperTypeOf()` - do not convert maybe into no (https://github.com/phpstan/phpstan-src/commit/6fba5429b9784801a89cdc6cfa3d6f8cfd1d82e8), [#6697](https://togithub.com/phpstan/phpstan/issues/6697)
- Fix subtractable `StaticType` (https://github.com/phpstan/phpstan-src/commit/0906336d29e807baba1a9eeca7b1545240c4ce5c), [#6443](https://togithub.com/phpstan/phpstan/issues/6443)
# Function signature fixes π€
- Fix return type of `octdec()` ([#1500](https://togithub.com/phpstan/phpstan-src/pull/1500)), thanks [@zonuexe](https://togithub.com/zonuexe)!
### [`v1.8.0`](https://togithub.com/phpstan/phpstan/releases/tag/1.8.0)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.15...1.8.0)
# Major new features π
- Collectors - allows writing custom rules that target the whole project
- Read more: https://phpstan.org/developing-extensions/collectors
- New `rememberPossiblyImpureFunctionValues` config parameter (defaults to `true`) (https://github.com/phpstan/phpstan-src/commit/50ed38f04de93b4d0ea9573d0a4789853a4b9f32), [#7529](https://togithub.com/phpstan/phpstan/issues/7529)
\*Β Read more: https://phpstan.org/config-reference#rememberpossiblyimpurefunctionvalues
# Bleeding edge πͺ
- Check that each trait is used and analysed at least once - level 4 (https://github.com/phpstan/phpstan-src/commit/c4d05276fb8605d6ac20acbe1cc5df31cd6c10b0)
- Check that PHPStan class in class constant fetch is covered by backward compatibility promise (https://github.com/phpstan/phpstan-src/commit/9e007251ce61788f6a0319a53f1de6cf801ed233)
*If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:*
includes:
- vendor/phpstan/phpstan/conf/bleedingEdge.neon
*Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)*
# Improvements π§
- Type a ranged value for `filter_var(FILTER_VALIDATE_INT)` ([#1443](https://togithub.com/phpstan/phpstan-src/pull/1443)), [#7494](https://togithub.com/phpstan/phpstan/issues/7494), thanks [@zonuexe](https://togithub.com/zonuexe)!
- Allow BooleanAnd and BooleanOr as standalone expressions with right sides always false (https://github.com/phpstan/phpstan-src/commit/f9374e74beec7082228454693dcdc14000070266), [#2741](https://togithub.com/phpstan/phpstan/issues/2741)
- Added `@api` annotation to `NodeScopeResolver::processStmtNodes()` ([#1464](https://togithub.com/phpstan/phpstan-src/pull/1464)), thanks [@vojtech-dobes](https://togithub.com/vojtech-dobes)!
- Add `ClassReflection->is()` shortcut ([#1468](https://togithub.com/phpstan/phpstan-src/pull/1468)), thanks [@janedbal](https://togithub.com/janedbal)!
- Force update of the PHPStan Pro PHAR in case of crash (https://github.com/phpstan/phpstan-src/commit/b95606ec291a7cf926ca757e544bfa089da950aa)
- Intersect optimization for large unions ([#1471](https://togithub.com/phpstan/phpstan-src/pull/1471)), thanks [@neclimdul](https://togithub.com/neclimdul)!
- Update phpdoc-parser (https://github.com/phpstan/phpstan-src/commit/7aa19e02c60c75961333d99cfb5c4704796d6e55)
- Simplify parsing of type alias import ([https://github.com/phpstan/phpdoc-parser/pull/137](https://togithub.com/phpstan/phpdoc-parser/pull/137)), thanks [@jiripudil](https://togithub.com/jiripudil)!
- Support `@template-contravariant` tags ([https://github.com/phpstan/phpdoc-parser/pull/140](https://togithub.com/phpstan/phpdoc-parser/pull/140)), thanks [@autaut03](https://togithub.com/autaut03)!
# Bugfixes π
- Prevent crashing for negative bit shifts ([#1447](https://togithub.com/phpstan/phpstan-src/pull/1447)), [#7490](https://togithub.com/phpstan/phpstan/issues/7490), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Fix infinite recursion for template intersection type accepts() ([#1450](https://togithub.com/phpstan/phpstan-src/pull/1450)), [#7500](https://togithub.com/phpstan/phpstan/issues/7500), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Run with parallel runner only when `proc_open` is not disabled ([#1451](https://togithub.com/phpstan/phpstan-src/pull/1451)), [#7488](https://togithub.com/phpstan/phpstan/issues/7488), thanks [@mvorisek](https://togithub.com/mvorisek)!
- Suppress `is_file` warnings in `bin/phpstan` ([#1466](https://togithub.com/phpstan/phpstan-src/pull/1466)), thanks [@mvorisek](https://togithub.com/mvorisek)!
- Fix specifying types for chained assignments ([#1473](https://togithub.com/phpstan/phpstan-src/pull/1473)), [#7142](https://togithub.com/phpstan/phpstan/issues/7142), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Consider autoloaders passed in `-a` (https://github.com/phpstan/phpstan-src/commit/78016fe92840c02a5981f4ab2ea28fc2d3e49f27)
# Function signature fixes π€
- `Closure::bind()` with `$newScope = null` ([#1446](https://togithub.com/phpstan/phpstan-src/pull/1446)), [#7489](https://togithub.com/phpstan/phpstan/issues/7489), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- `Closure::bindTo()` with `$newScope = null` ([#1448](https://togithub.com/phpstan/phpstan-src/pull/1448)), thanks [@mvorisek](https://togithub.com/mvorisek)!
- Fix return type for `imagesx` and `imagesy` functions ([#1452](https://togithub.com/phpstan/phpstan-src/pull/1452)), thanks [@norkunas](https://togithub.com/norkunas)!
- Add `NoRewindIterator` stub ([#1453](https://togithub.com/phpstan/phpstan-src/pull/1453)), thanks [@drupol](https://togithub.com/drupol)!
- Add `LimitIterator` stub ([#1455](https://togithub.com/phpstan/phpstan-src/pull/1455)), thanks [@drupol](https://togithub.com/drupol)!
- Add `InfiniteIterator` stub ([#1454](https://togithub.com/phpstan/phpstan-src/pull/1454)), thanks [@drupol](https://togithub.com/drupol)!
- Add `CachingIterator` stub ([#1456](https://togithub.com/phpstan/phpstan-src/pull/1456)), thanks [@drupol](https://togithub.com/drupol)!
- Add `RegexIterator` stub ([#1462](https://togithub.com/phpstan/phpstan-src/pull/1462)), thanks [@drupol](https://togithub.com/drupol)!
- Add `EmptyIterator` stub ([#1472](https://togithub.com/phpstan/phpstan-src/pull/1472)), thanks [@drupol](https://togithub.com/drupol)!
- Narrow return type of `array_keys` slightly ([#1474](https://togithub.com/phpstan/phpstan-src/pull/1474)), thanks [@Seldaek](https://togithub.com/Seldaek)!
### [`v1.7.15`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.15)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.14...1.7.15)
# Improvements π§
- Support for relative paths in `editorUrl` for Docker environment ([#1414](https://togithub.com/phpstan/phpstan-src/pull/1414)), [#7043](https://togithub.com/phpstan/phpstan/issues/7043), thanks [@Wirone](https://togithub.com/Wirone)!
- Support positional arguments in `sprintf()` constant format inference ([#1437](https://togithub.com/phpstan/phpstan-src/pull/1437), [#1440](https://togithub.com/phpstan/phpstan-src/pull/1440), [#1441](https://togithub.com/phpstan/phpstan-src/pull/1441)), thanks [@staabm](https://togithub.com/staabm)!
- Dynamic return type extension for `sscanf()` and `fscanf()` ([#1434](https://togithub.com/phpstan/phpstan-src/pull/1434)), thanks [@staabm](https://togithub.com/staabm)!
- Virtual nodes (InClassMethodNode, InFunctionNode, InClosureNode) - pass and provide getters for specific reflection so that `Scope::getFunction()` does not need to be used (https://github.com/phpstan/phpstan-src/commit/f18bd86495fc6811ee04c305ff4b379b10cd07bb)
# Bleeding edge πͺ
- Check code in custom PHPStan extensions for runtime reflection concepts like `is_a()` or `class_parents()` (https://github.com/phpstan/phpstan-src/commit/c4a662ac6c3ec63f063238880b243b5399c34fcc)
- Check code in custom PHPStan extensions for runtime reflection concepts like `new ReflectionMethod()` (https://github.com/phpstan/phpstan-src/commit/536306611cbb5877b6565755cd07b87f9ccfdf08)
- ApiInstanceofRule
- Report `instanceof` of classes not covered by backward compatibility promise (https://github.com/phpstan/phpstan-src/commit/ff4d02d62a7a2e2c4d928d48d31d49246dba7139)
- Report `instanceof` of classes covered by backward compatibility promise but where the assumption might change (https://github.com/phpstan/phpstan-src/commit/996bc69fa977aa64f601bd82b8a0ae39be0cbeef)
*If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:*
includes:
- vendor/phpstan/phpstan/conf/bleedingEdge.neon
*Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)*
# Bugfixes π
- Fix return type for arrow function generators ([#1422](https://togithub.com/phpstan/phpstan-src/pull/1422)), [#7031](https://togithub.com/phpstan/phpstan/issues/7031), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Improve intersecting constant array with general array ([#1429](https://togithub.com/phpstan/phpstan-src/pull/1429)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Allow `numeric-string` being returned for `non-empty-string` ([#1428](https://togithub.com/phpstan/phpstan-src/pull/1428)), [#7265](https://togithub.com/phpstan/phpstan/issues/7265), thanks [@staabm](https://togithub.com/staabm)!
- Specify array type via `in_array` ([#1430](https://togithub.com/phpstan/phpstan-src/pull/1430)), [#7153](https://togithub.com/phpstan/phpstan/issues/7153), [#7275](https://togithub.com/phpstan/phpstan/issues/7275), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Specify `non-empty-array after` after `in_array()` ([#1108](https://togithub.com/phpstan/phpstan-src/pull/1108)), [#6167](https://togithub.com/phpstan/phpstan/issues/6167), thanks [@staabm](https://togithub.com/staabm)!
- Array after `array_push` / `array_unshift` call can still be empty ([#1431](https://togithub.com/phpstan/phpstan-src/pull/1431)), [#7424](https://togithub.com/phpstan/phpstan/issues/7424), thanks [@herndlm](https://togithub.com/herndlm)!
- Fix `TemplateTypeArgumentStrategy::accepts()` (https://github.com/phpstan/phpstan-src/commit/85ab8cfe237b9a90d12f211dd1938a99cc299bba), [#7460](https://togithub.com/phpstan/phpstan/issues/7460)
- Improve parenthesization for union types ([#1433](https://togithub.com/phpstan/phpstan-src/pull/1433)), [#7484](https://togithub.com/phpstan/phpstan/issues/7484), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Result cache is invalidated for files where PHP 8 attributes changed ([#1427](https://togithub.com/phpstan/phpstan-src/pull/1427)), [#6797](https://togithub.com/phpstan/phpstan/issues/6797), [#7413](https://togithub.com/phpstan/phpstan/issues/7413), thanks [@olsavmic](https://togithub.com/olsavmic)!
- Fix `TypeCombinator::union()` for intersection of array and template type ([#1444](https://togithub.com/phpstan/phpstan-src/pull/1444)), [#4117](https://togithub.com/phpstan/phpstan/issues/4117), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
# Function signature fixes π€
- Be more specific about the XHProf sampling type (`xhprof_sample_disable()`) ([#1436](https://togithub.com/phpstan/phpstan-src/pull/1436)), thanks [@johnbillion](https://togithub.com/johnbillion)!
### [`v1.7.14`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.14)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.13...1.7.14)
# Improvements π§
- Update phpdoc-parser
- Micro-optimize lexer ([https://github.com/phpstan/phpdoc-parser/pull/135](https://togithub.com/phpstan/phpdoc-parser/pull/135)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Update BetterReflection to 5.6.0 ([#1421](https://togithub.com/phpstan/phpstan-src/pull/1421)), [#7429](https://togithub.com/phpstan/phpstan/issues/7429), [#7428](https://togithub.com/phpstan/phpstan/issues/7428)
- Add dynamic return type extension for `date_create` ([#1413](https://togithub.com/phpstan/phpstan-src/pull/1413)), thanks [@VincentLanglet](https://togithub.com/VincentLanglet)!
- more precise `sprintf()` return type on constant formats ([#1410](https://togithub.com/phpstan/phpstan-src/pull/1410)), [#7387](https://togithub.com/phpstan/phpstan/issues/7387), thanks [@staabm](https://togithub.com/staabm)!
- Update PhpStorm stubs ([#1419](https://togithub.com/phpstan/phpstan-src/pull/1419))
- Assert functions do not throw anything (https://github.com/phpstan/phpstan-src/commit/9878eef9a7b04b8a7fa14b004ebfbb1e3d5cb0a8)
- Deprecate `MutatingScope::enterCatch()` (https://github.com/phpstan/phpstan-src/commit/4a7d7da6f57be75e3f0dbc4b048663dbd5a58e1d)
# Bugfixes π
- Support `literal-string` as array key ([#1420](https://togithub.com/phpstan/phpstan-src/pull/1420)), [#7353](https://togithub.com/phpstan/phpstan/issues/7353), [#6163](https://togithub.com/phpstan/phpstan/issues/6163), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
# Function signature fixes π€
- Update string compare return values ([#1412](https://togithub.com/phpstan/phpstan-src/pull/1412)), thanks [@bytestream](https://togithub.com/bytestream)!
### [`v1.7.13`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.13)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.12...1.7.13)
# Improvements π§
- Optimization of printing expressions using ExprPrinter (https://github.com/phpstan/phpstan-src/commit/e12524e21537b970c91e363c616503e6d7d41f38, https://github.com/phpstan/phpstan-src/commit/fba292944a67cb91158042a0f952e5e15bcf30c7)
- Do not require an existing filename when reading PHPDocs from an evaled class ([#1409](https://togithub.com/phpstan/phpstan-src/pull/1409)), [#7441](https://togithub.com/phpstan/phpstan/issues/7441)
- StatementExitPoint and ThrowPoint covered by BC promise (https://github.com/phpstan/phpstan-src/commit/e8b8ffdd7d164a7ddcafcf6cb570f56b71bb2263)
- Update phpdoc-parser [#7426](https://togithub.com/phpstan/phpstan/issues/7426)
- Optimize `Lexer::tokenize()` ([https://github.com/phpstan/phpdoc-parser/pull/133](https://togithub.com/phpstan/phpdoc-parser/pull/133)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Optimize generated regex ([https://github.com/phpstan/phpdoc-parser/pull/134](https://togithub.com/phpstan/phpdoc-parser/pull/134)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
# Bleeding edge πͺ
- Use explicit mixed for global array variables ([#1411](https://togithub.com/phpstan/phpstan-src/pull/1411)), thanks [@herndlm](https://togithub.com/herndlm)!
*If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:*
includes:
- vendor/phpstan/phpstan/conf/bleedingEdge.neon
*Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)*
# Bugfixes π
- Fix incorrect UnhandledMatchError for match expressions using spaceship operator ([#1408](https://togithub.com/phpstan/phpstan-src/pull/1408)), [#4451](https://togithub.com/phpstan/phpstan/issues/4451), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Fix resolving class const fetch for constant strings ([#1416](https://togithub.com/phpstan/phpstan-src/pull/1416)), [#7391](https://togithub.com/phpstan/phpstan/issues/7391), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Fix resolving user-defined constants in sub-namespaces ([#1415](https://togithub.com/phpstan/phpstan-src/pull/1415)), [#7352](https://togithub.com/phpstan/phpstan/issues/7352), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- `TypeUtils::getDirectClassNames()` - return unique list of class names (https://github.com/phpstan/phpstan-src/commit/b85fce0707f65a633163d2bf5215e57c927011b9)
- Fix "missing return" for void/never conditional return types ([#1418](https://togithub.com/phpstan/phpstan-src/pull/1418)), [#7384](https://togithub.com/phpstan/phpstan/issues/7384), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
### [`v1.7.12`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.12)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.11...1.7.12)
# Improvements π§
- Update phpstan/phpdoc-parser to 1.6.0 (https://github.com/phpstan/phpstan-src/commit/ef8c7c37f2ab3def07860a4cdc20c7ed56758a8c)
- Allow omitting `@param` type ([https://github.com/phpstan/phpdoc-parser/pull/127](https://togithub.com/phpstan/phpdoc-parser/pull/127)), [https://github.com/phpstan/phpdoc-parser/issues/77](https://togithub.com/phpstan/phpdoc-parser/issues/77), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Support all atomic types as nullable types ([https://github.com/phpstan/phpdoc-parser/pull/129](https://togithub.com/phpstan/phpdoc-parser/pull/129)), [https://github.com/phpstan/phpdoc-parser/issues/124](https://togithub.com/phpstan/phpdoc-parser/issues/124), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Support constant string and integer as template bound ([#1402](https://togithub.com/phpstan/phpstan-src/pull/1402)), [#7381](https://togithub.com/phpstan/phpstan/issues/7381), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Introduce `ExtendedMethodReflection` interface ([#1403](https://togithub.com/phpstan/phpstan-src/pull/1403))
- The purpose of this interface is to be able to answer more questions about methods without breaking backward compatibility with existing MethodsClassReflectionExtension.
- Developers are meant to only use the MethodReflection interface and its methods in their code.
- Methods on ExtendedMethodReflection are subject to change.
# Bleeding edge πͺ
- PHPDoc parser: Require whitespace before description with limited start tokens ([https://github.com/phpstan/phpdoc-parser/pull/128](https://togithub.com/phpstan/phpdoc-parser/pull/128)), [https://github.com/phpstan/phpdoc-parser/issues/125](https://togithub.com/phpstan/phpdoc-parser/issues/125), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
*If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:*
includes:
- vendor/phpstan/phpstan/conf/bleedingEdge.neon
*Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)*
# Bugfixes π
- Fix node scope resolving of array/list expression assignments ([#1405](https://togithub.com/phpstan/phpstan-src/pull/1405)), [#7119](https://togithub.com/phpstan/phpstan/issues/7119), thanks [@herndlm](https://togithub.com/herndlm)!
- Do not consider arrays with an unknown class string to be a callback ([#1404](https://togithub.com/phpstan/phpstan-src/pull/1404)), [#7389](https://togithub.com/phpstan/phpstan/issues/7389), thanks [@herndlm](https://togithub.com/herndlm)!
- Add array_udiff to arrayFunctions.stub ([#1407](https://togithub.com/phpstan/phpstan-src/pull/1407)), [#6105](https://togithub.com/phpstan/phpstan/issues/6105), thanks [@akalineskou](https://togithub.com/akalineskou)!
### [`v1.7.11`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.11)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.10...1.7.11)
# Bleeding edge πͺ
- Add `@readonly` rule that disallows default values ([#1391](https://togithub.com/phpstan/phpstan-src/pull/1391)), thanks [@herndlm](https://togithub.com/herndlm)!
*If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:*
includes:
- vendor/phpstan/phpstan/conf/bleedingEdge.neon
*Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)*
# Bugfixes π
- `BetterReflectionProvider::getClass()` - handle `InvalidIdentifierName` too (https://github.com/phpstan/phpstan-src/commit/64b0907db03da40ecb3d98bde905bbc3214bb08d), [#7404](https://togithub.com/phpstan/phpstan/issues/7404)
- BetterReflection: `ReflectionClass` adapter - implement `newInstance*` methods (https://github.com/ondrejmirtes/BetterReflection/commit/90dd5834447f8a184ff312855bdae2b793c34748), [https://github.com/phpstan/phpstan/discussions/7403](https://togithub.com/phpstan/phpstan/discussions/7403)
### [`v1.7.10`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.10)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.9...1.7.10)
# Improvements π§
- Adapt to different `vendor-dir` setting in `composer.json`, and also `COMPOSER` environment variable ([#1384](https://togithub.com/phpstan/phpstan-src/pull/1384)), thanks [@canvural](https://togithub.com/canvural)!
# Bugfixes π
- Fix BC break in `PHPStan\Node\ClassMethod` (https://github.com/phpstan/phpstan-src/commit/9b4a5913aa47d94acb47e3c06fce83db8ea5fd8b), https://github.com/phpstan/phpstan-src/commit/d0a9d084ea66be4afdf965dd51e1b6d91d36c6b7#r75178623
- Fix `TypeUtils::getDirectClassNames` for nested type ([#1380](https://togithub.com/phpstan/phpstan-src/pull/1380)), thanks [@mvorisek](https://togithub.com/mvorisek)!
- Consistent gathering of all stub files for their analysis ([#1355](https://togithub.com/phpstan/phpstan-src/pull/1355)), thanks [@canvural](https://togithub.com/canvural)!
- Dont report unsafe static if constructor is in both parent and interface ([#1395](https://togithub.com/phpstan/phpstan-src/pull/1395)), [#6007](https://togithub.com/phpstan/phpstan/issues/6007), thanks [@canvural](https://togithub.com/canvural)!
# Internals π
- Added ` bin `into `phpcs.xml`, and applied it ([#1393](https://togithub.com/phpstan/phpstan-src/pull/1393), [#1394](https://togithub.com/phpstan/phpstan-src/pull/1394)), thanks [@sasezaki](https://togithub.com/sasezaki)!
### [`v1.7.9`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.9)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.8...1.7.9)
# Improvements π§
- Read PHPDocs from trait stubs ([#1390](https://togithub.com/phpstan/phpstan-src/pull/1390)), [#5233](https://togithub.com/phpstan/phpstan/issues/5233), thanks [@canvural](https://togithub.com/canvural)!
- Infer `non-empty-string` on str-casing functions comparison with constant string ([#1382](https://togithub.com/phpstan/phpstan-src/pull/1382)), thanks [@staabm](https://togithub.com/staabm)!
- Make trait properties and methods first class node citizens ([#1370](https://togithub.com/phpstan/phpstan-src/pull/1370)), thanks [@herndlm](https://togithub.com/herndlm)!
# Bugfixes π
- Support intersection types in `MutatingScope::getTypeToInstantiateForNew()` ([#1388](https://togithub.com/phpstan/phpstan-src/pull/1388)), [#7374](https://togithub.com/phpstan/phpstan/issues/7374), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
### [`v1.7.8`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.8)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.7...1.7.8)
# Improvements π§
- Update `nikic/php-parser` to 4.14.0 (https://github.com/phpstan/phpstan-src/commit/fbaab8f9a65fb0655b0322c792d914feb399e27e)
# Bugfixes π
- Improve unresolved template type checks for complex conditional types ([#1377](https://togithub.com/phpstan/phpstan-src/pull/1377)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- FileCacheStorage - suppress potential file load issue (https://github.com/phpstan/phpstan-src/commit/b73a3962176ddcb6c3ddcd1e6f688900ebe9df1f)
- Do not overwrite promoted property PHPDoc with constructor PHPDoc ([#1376](https://togithub.com/phpstan/phpstan-src/pull/1376)), [#7361](https://togithub.com/phpstan/phpstan/issues/7361), thanks [@herndlm](https://togithub.com/herndlm)!
- Fix/native type specification ([#1372](https://togithub.com/phpstan/phpstan-src/pull/1372)), thanks [@rajyan](https://togithub.com/rajyan)!
# Function signature fixes π€
- Fix signatures of `PDO::pgsqlCopy{From,To}{Array,File}` ([#1375](https://togithub.com/phpstan/phpstan-src/pull/1375)), thanks [@takaram](https://togithub.com/takaram)!
### [`v1.7.7`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.7)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.6...1.7.7)
# Bugfixes π
- AutoloadFunctionsSourceLocator - avoid ReflectionSourceStubber bugs by trying AutoloadSourceLocator first ([#1373](https://togithub.com/phpstan/phpstan-src/pull/1373)), [#7365](https://togithub.com/phpstan/phpstan/issues/7365), [#7360](https://togithub.com/phpstan/phpstan/issues/7360), [#7363](https://togithub.com/phpstan/phpstan/issues/7363)
- BetterReflection - allow class autoloading for `invoke()` etc. (https://github.com/ondrejmirtes/BetterReflection/commit/2a0638be397dfe7aa30a5e530ebf7b59f9c1d4e7), [#7333](https://togithub.com/phpstan/phpstan/issues/7333)
### [`v1.7.6`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.6)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.5...1.7.6)
# Bugfixes π
- Rewrite the located identifier name with class aliases in mind ([#1369](https://togithub.com/phpstan/phpstan-src/pull/1369)), [#7308](https://togithub.com/phpstan/phpstan/issues/7308)
- Class definition from autoloader should be preferred over PhpStorm stubs, [#7357](https://togithub.com/phpstan/phpstan/issues/7357), [#3634](https://togithub.com/phpstan/phpstan/issues/3634)
### [`v1.7.5`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.5)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.4...1.7.5)
# Bugfixes π
Fixes for more custom autoloader scenarios ([#7296](https://togithub.com/phpstan/phpstan/issues/7296), [#7308](https://togithub.com/phpstan/phpstan/issues/7308)):
- Create class reflection from runtime reflection after custom autoloader run ([#1368](https://togithub.com/phpstan/phpstan-src/pull/1368))
- Additional fix to make class aliases work (https://github.com/phpstan/phpstan-src/commit/99acc024f9ac00abe202da492c29cb5081a13d0c)
- Include custom autoloaders registered in Composer dependencies (https://github.com/phpstan/phpstan-src/commit/eab4542c4b8877c5f7e85d31d9aa688212f77a77)
### [`v1.7.4`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.4)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.3...1.7.4)
# Improvements π§
- Avoid additional irrelevant constructor-related checks in `UnusedPrivatePropertyRule` ([#1360](https://togithub.com/phpstan/phpstan-src/pull/1360)), thanks [@herndlm](https://togithub.com/herndlm)!
# Bugfixes π
- Fix `ConstantArrayType` optional key unsetting via `removeLastElements` ([#1366](https://togithub.com/phpstan/phpstan-src/pull/1366)), [#7351](https://togithub.com/phpstan/phpstan/issues/7351), thanks [@herndlm](https://togithub.com/herndlm)!
- Fix `array_walk` callback parameters ([#1367](https://togithub.com/phpstan/phpstan-src/pull/1367)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Always resolve constants with namespace-aware logic (https://github.com/phpstan/phpstan-src/commit/e73f320b57951703927140b7ee27a4fa5da54b90), [#7352](https://togithub.com/phpstan/phpstan/issues/7352)
- Use trait property promotion in uninitialized props checks ([#1362](https://togithub.com/phpstan/phpstan-src/pull/1362)), [#7314](https://togithub.com/phpstan/phpstan/issues/7314), thanks [@herndlm](https://togithub.com/herndlm)!
- infer `non-empty-string` on `strstr()` comparison with constant string ([#1365](https://togithub.com/phpstan/phpstan-src/pull/1365)), thanks [@staabm](https://togithub.com/staabm)!
# Function signature fixes π€
- Fix `stream_bucket_make_writeable` ([#1361](https://togithub.com/phpstan/phpstan-src/pull/1361)), [#7341](https://togithub.com/phpstan/phpstan/issues/7341), thanks [@VincentLanglet](https://togithub.com/VincentLanglet)!
### [`v1.7.3`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.3)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.2...1.7.3)
# Improvements π§
- [Docker image](https://phpstan.org/user-guide/docker): default tag uses PHP 8.0, introducing new tag for PHP 8.1 ([#7334](https://togithub.com/phpstan/phpstan/issues/7334)):
- `latest` + `latest-php8.0` use PHP 8.0
- `latest-php8.1` uses PHP 8.1
- `1` + `1-php8.0` use PHP 8.0
- `1-php8.1` uses PHP 8.1
- `1.7.3` + `1.7.3-php8.0` use PHP 8.0
- `1.7.3-php8.1` uses PHP 8.1
- `nightly` + `nightly-php8.0` use PHP 8.0
- `nightly-php8.1` uses PHP 8.1
- NodeScopeResolver: call `nodeCallback` for all attribute-related nodes ([#1333](https://togithub.com/phpstan/phpstan-src/pull/1333)), [#7071](https://togithub.com/phpstan/phpstan/issues/7071), thanks [@janedbal](https://togithub.com/janedbal)!
- Consistent approach to stubFiles + StubFilesExtension (https://github.com/phpstan/phpstan-src/commit/d3589dc5415f5a639ef68bc9dccd481922df50c5), [#7330](https://togithub.com/phpstan/phpstan/issues/7330)
- Consider optional keys in ConstantArrayType removeFirst and removeLast ([#1352](https://togithub.com/phpstan/phpstan-src/pull/1352)), thanks [@herndlm](https://togithub.com/herndlm)!
- Consider optional keys in `ConstantArrayType::slice` ([#1345](https://togithub.com/phpstan/phpstan-src/pull/1345)), thanks [@herndlm](https://togithub.com/herndlm)!
- Understand variadic arg type with `@no-named-args` ([#1349](https://togithub.com/phpstan/phpstan-src/pull/1349)), [#5968](https://togithub.com/phpstan/phpstan/issues/5968), thanks [@jrmajor](https://togithub.com/jrmajor)!
- Add `ArrayChunkFunctionReturnTypeExtension` ([#1356](https://togithub.com/phpstan/phpstan-src/pull/1356)), [#7277](https://togithub.com/phpstan/phpstan/issues/7277), thanks [@herndlm](https://togithub.com/herndlm)!
# Bugfixes π
- TypeSpecifier - observe `hasSideEffects()` for static methods (https://github.com/phpstan/phpstan-src/commit/1182199bcffbb3f6cd73a1e5058020ecbbcfa02a), [#7210](https://togithub.com/phpstan/phpstan/issues/7210)
- Use ReadWritePropertiesExtensions in `MissingReadOnlyPropertyAssignRule` ([#1357](https://togithub.com/phpstan/phpstan-src/pull/1357)), [#6632](https://togithub.com/phpstan/phpstan/issues/6632), [#7337](https://togithub.com/phpstan/phpstan/issues/7337), thanks [@herndlm](https://togithub.com/herndlm)!
# Function signature fixes π€
- Fix incorrect type for `NumberFormatter:format()` and `NumberFormatter::formatCurrency()` ([#1350](https://togithub.com/phpstan/phpstan-src/pull/1350)), thanks [@MartkCz](https://togithub.com/MartkCz)!
### [`v1.7.2`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.2)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.1...1.7.2)
# Improvements π§
- Specify types from conditional return types ([#1343](https://togithub.com/phpstan/phpstan-src/pull/1343)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Introduce CiDetectedErrorFormatter (https://github.com/phpstan/phpstan-src/commit/86cfb85437e38964154a23d343ade703efa44b6f), [#7305](https://togithub.com/phpstan/phpstan/issues/7305)
- Generic `AppendIterator` stub (https://github.com/phpstan/phpstan-src/commit/50cbc45cd5affb88b43efaff4edba39c5449768e), [https://github.com/phpstan/phpstan/discussions/7322](https://togithub.com/phpstan/phpstan/discussions/7322)
# Bugfixes π
- ConsistentConstructorRule - use defined parent constructor to compare ([#1344](https://togithub.com/phpstan/phpstan-src/pull/1344)), [#7307](https://togithub.com/phpstan/phpstan/issues/7307), thanks [@canvural](https://togithub.com/canvural)!
- Fix/issue with `isset` / `??` ([#1351](https://togithub.com/phpstan/phpstan-src/pull/1351)), [#7318](https://togithub.com/phpstan/phpstan/issues/7318), thanks [@rajyan](https://togithub.com/rajyan)!
- Fix static reflection issues with custom autoloaders (https://github.com/phpstan/phpstan-src/commit/6962280fde4815cb4eb5870e0d8ba1d4867b4cb0), [#7308](https://togithub.com/phpstan/phpstan/issues/7308), [#7306](https://togithub.com/phpstan/phpstan/issues/7306), [#7293](https://togithub.com/phpstan/phpstan/issues/7293)
### [`v1.7.1`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.1)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.0...1.7.1)
# Improvements π§
- Simplify and cleanup `ArraySliceFunctionReturnTypeExtension` ([#1341](https://togithub.com/phpstan/phpstan-src/pull/1341)), thanks [@herndlm](https://togithub.com/herndlm)!
# Bugfixes π
- Properly support constant arrays in `array_reverse` ([#1342](https://togithub.com/phpstan/phpstan-src/pull/1342)), thanks [@herndlm](https://togithub.com/herndlm)!
- ReflectionSourceStubber - do not make optional parameter without default value available nullable (fixes Phalcon reflection issue) (https://github.com/phpstan/phpstan/commit/7beee3d5db13cb1535915c2ec45d5b656be25f1a, https://github.com/ondrejmirtes/BetterReflection/commit/4495bf122966e316c2e171fcc940aa789f4746e4, https://github.com/phpstan/phpstan-src/commit/c24aa5a165bf7e5bd1cd5edc2a6aedbc238a0de3), [#7294](https://togithub.com/phpstan/phpstan/issues/7294)
### [`v1.7.0`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.0)
[Compare Source](https://togithub.com/phpstan/phpstan/compare/1.6.9...1.7.0)
This release closes **25 issues**! π₯³
# Major new features π
- **Fully static reflection!** ([#1265](https://togithub.com/phpstan/phpstan-src/pull/1265))
- PHPStan used runtime reflection before June 2020 (https://phpstan.org/blog/zero-config-analysis-with-static-reflection) and hybrid reflection after that
- Analysed code is no longer executed, except for files referenced in `bootstrapFiles` and `files` sections in Composer `autoload` configuration
- This prevents various fatal errors during analysis
- Also solves edge cases like [#7077](https://togithub.com/phpstan/phpstan/issues/7077), [#7019](https://togithub.com/phpstan/phpstan/issues/7019)
- Native reflection is always `BetterReflection` adapter ([https://github.com/phpstan/phpstan-src/pull/1265](https://togithub.com/phpstan/phpstan-src/pull/1265)/commits/ef603397df6036647f6b030407b3316159dc330f)
- Global constants no longer have to be defined in `bootstrapFiles` ([#1277](https://togithub.com/phpstan/phpstan-src/pull/1277), [#1282](https://togithub.com/phpstan/phpstan-src/pull/1282)), thanks [@kukulich](https://togithub.com/kukulich)!
- Implement `@phpstan-consistent-constructor` and add a new rule as another way to supress `new static()` issues ([#1296](https://togithub.com/phpstan/phpstan-src/pull/1296)), thanks [@canvural](https://togithub.com/canvural)!
- See the update article: https://phpstan.org/blog/solving-phpstan-error-unsafe-usage-of-new-static
- Offset/index access PHPDoc type ([https://github.com/phpstan/phpdoc-parser/pull/119](https://togithub.com/phpstan/phpdoc-parser/pull/119), [#1318](https://togithub.com/phpstan/phpstan-src/pull/1318)), [#7094](https://togithub.com/phpstan/phpstan/issues/7094), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
# Bleeding edge πͺ
- Unresolvable parameters ([#1319](https://togithub.com/phpstan/phpstan-src/pull/1319)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Support `@readonly` property and `@immutable` class PHPDoc ([#1295](https://togithub.com/phpstan/phpstan-src/pull/1295), [#1335](https://togithub.com/phpstan/phpstan-src/pull/1335)), [#4082](https://togithub.com/phpstan/phpstan/issues/4082), thanks [@herndlm](https://togithub.com/herndlm)!
*If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:*
includes:
- vendor/phpstan/phpstan/conf/bleedingEdge.neon
*Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)*
# Improvements π§
- Allow setting error format in configuration file ([#841](https://togithub.com/phpstan/phpstan-src/pull/841)), thanks [@ruudk](https://togithub.com/ruudk)!
- Deprecated `PHPStan\Type\ConstantTypeHelper::getTypeFromValue()`. Instead of going from runtime value -> PHPStan type, use `PHPStan\Reflection\InitializerExprTypeResolver::getType()` to go from Expr -> PHPStan type. In case you have `Scope` available, use `Scope::getType()`.
- Read default values from php-8-stubs and jetbrains/phpstorm-stubs (https://github.com/phpstan/phpstan-src/commit/7ce177e71b7f6b363d07585015ed2e2c08e9a32e)
- Normalize named arguments when calling extensions ([#1301](https://togithub.com/phpstan/phpstan-src/pull/1301), [#1313](https://togithub.com/phpstan/phpstan-src/pull/1313)), [#5866](https://togithub.com/phpstan/phpstan/issues/5866), thanks [@staabm](https://togithub.com/staabm)!
- implement str-case functions return type extension ([#1325](https://togithub.com/phpstan/phpstan-src/pull/1325)), thanks [@staabm](https://togithub.com/staabm)!
- ClearResultCacheCommand: allow `--debug` flag (https://github.com/phpstan/phpstan-src/commit/5f5b96d432207395dc7371f62a9d52081f56a405)
# Bugfixes π
- Fix `get_class` on enum case ([#1272](https://togithub.com/phpstan/phpstan-src/pull/1272)), [#7167](https://togithub.com/phpstan/phpstan/issues/7167), thanks [@olsavmic](https://togithub.com/olsavmic)!
- Keep template types when using `::class` ([#1271](https://togithub.com/phpstan/phpstan-src/pull/1271)), [#6864](https://togithub.com/phpstan/phpstan/issues/6864), [#6986](https://togithub.com/phpstan/phpstan/issues/6986), thanks [@olsavmic](https://togithub.com/olsavmic)!
- Fix supertype checks for conditional types ([#1287](https://togithub.com/phpstan/phpstan-src/pull/1287)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Fix using `value-of`/`key-of` with template types ([#1288](https://togithub.com/phpstan/phpstan-src/pull/1288)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Invalidate `openssl_error_string` after openssl function calls ([#1292](https://togithub.com/phpstan/phpstan-src/pull/1292)), [#7106](https://togithub.com/phpstan/phpstan/issues/7106), thanks [@pbourdet](https://togithub.com/pbourdet)!
- Fix initializer expr ConstFetch (https://github.com/phpstan/phpstan-src/commit/761d1168224f5fdda4ffa0c5ba7d8069f6a79987), [#4950](https://togithub.com/phpstan/phpstan/issues/4950)
- Fix various things around `isset()` and `ArrayDimFetch` ([#1307](https://togithub.com/phpstan/phpstan-src/pull/1307)), [#6508](https://togithub.com/phpstan/phpstan/issues/6508), [#7000](https://togithub.com/phpstan/phpstan/issues/7000), [#7190](https://togithub.com/phpstan/phpstan/issues/7190), [#7144](https://togithub.com/phpstan/phpstan/issues/7144), thanks [@rajyan](https://togithub.com/rajyan)!
- Fix call to `DatePeriod` constructor with named arguments (https://github.com/phpstan/phpstan-src/commit/59453678ac863bd3293e03fe355e0f17a33783b9), [#7048](https://togithub.com/phpstan/phpstan/issues/7048), [#5553](https://togithub.com/phpstan/phpstan/issues/5553)
- Prevent redundant messages about missing iterable types in conditional target/subject ([#1314](https://togithub.com/phpstan/phpstan-src/pull/1314)), [#7215](https://togithub.com/phpstan/phpstan/issues/7215), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- StubSourceLocatorFactory - read files from StubFilesExtension (https://github.com/phpstan/phpstan-src/commit/0ecddcca760fc220b1a907d921b2d2c02809551f)
- improve `is_subclass_of` type checks ([#1321](https://togithub.com/phpstan/phpstan-src/pull/1321)), [#2755](https://togithub.com/phpstan/phpstan/issues/2755), thanks [@staabm](https://togithub.com/staabm)!
- allow `$isOffsetAccessible->maybe()` for isUndefinedExpressionAllowed and isSpecified expression ([#1312](https://togithub.com/phpstan/phpstan-src/pull/1312)), [#7229](https://togithub.com/phpstan/phpstan/issues/7229), thanks [@rajyan](https://togithub.com/rajyan)!
- Fix constant array comparison for optional keys ([#1324](https://togithub.com/phpstan/phpstan-src/pull/1324)), [#7248](https://togithub.com/phpstan/phpstan/issues/7248), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Simplify resolving constant scalar identical expressions ([#1329](https://togithub.com/phpstan/phpstan-src/pull/1329)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)!
- Use `ConstructorsHelper` in `ReadOnlyByPhpDocPropertyAssignRule` and `ReadOnlyPropertyAssignRule` ([#1328](https://togithub.com/phpstan/phpstan-src/pull/1328)), [#6612](https://togithub.com/phpstan/phpstan/issues/6612), thanks [@herndlm](https://togithub.com/herndlm)!
- Class attributes should also be included in class statements ([#1338](https://togithub.com/phpstan/phpstan-src/pull/1338)), [#7116](https://togithub.com/phpstan/phpstan/issues/7116), thanks [@bartv2](https://togithub.com/bartv2)!
- Use trait properties in uninitialized props checks ([#1340](https://togithub.com/phpstan/phpstan-src/pull/1340)), [#7219](https://togithub.com/phpstan/phpstan/issues/7219), thanks [@herndlm](https://togithub.com/herndlm)!
- Improve `array_reverse` with constant arrays ([#1337](https://togithub.com/phpstan/phpstan-src/pull/1337)), [#7278](https://togithub.com/phpstan/phpstan/issues/7278), thanks [@herndlm](https://togithub.com/herndlm)!
# Function signature fixes π€
- Replace `var_export()` extension with conditional-type stub ([#1244](https://togithub.com/phpstan/phpstan-src/pull/1244)), thanks [@staabm](https://togithub.com/staabm)!
- Use conditional types for `is_a()` via stub ([#1310](https://togithub.com/phpstan/phpstan/issues/1310)) ([#1310](https://togithub.com/phpstan/phpstan-src/pull/1310), [#1311](https://togithub.com/phpstan/phpstan-src/pull/1311)), [#4371](https://togithub.com/phpstan/phpstan/issues/4371), thanks [@staabm](https://togithub.com/staabm)!
- Narrow the type for the `mb_ereg_replace_callback()` callable. ([#1316](https://togithub.com/phpstan/phpstan-src/pull/1316)), thanks [@johnbillion](https://togithub.com/johnbillion)!
- Add an array shape for the elements returned by `DateTimeZone::getTransitions()`. ([#1315](https://togithub.com/phpstan/phpstan-src/pull/1315)), thanks [@johnbillion](https://togithub.com/johnbillion)!
- Fix incorrect argument for `RedisCluster::getOption()` and `RedisCluster::setOption()` ([#1334](https://togithub.com/phpstan/phpstan-src/pull/1334)), thanks [@taka-oyama](https://togithub.com/taka-oyama)!
symfony/console
### [`v6.1.2`](https://togithub.com/symfony/console/releases/tag/v6.1.2)
[Compare Source](https://togithub.com/symfony/console/compare/v6.1.1...v6.1.2)
**Changelog** (https://github.com/symfony/console/compare/v6.1.1...v6.1.2)
- bug [#46747](https://togithub.com/symfony/console/issues/46747) Fix global state pollution between tests run with ApplicationTester (Seldaek)
### [`v6.1.1`](https://togithub.com/symfony/console/releases/tag/v6.1.1)
[Compare Source](https://togithub.com/symfony/console/compare/v6.1.0...v6.1.1)
**Changelog** (https://github.com/symfony/console/compare/v6.1.0...v6.1.1)
- bug [#46608](https://togithub.com/symfony/console/issues/46608) Fix deprecation when description is null (HypeMC)
- bug [#46574](https://togithub.com/symfony/console/issues/46574) Escape % in command name & description from PHP (getDefault\* methods) (ogizanagi)
### [`v6.1.0`](https://togithub.com/symfony/console/releases/tag/v6.1.0)
[Compare Source](https://togithub.com/symfony/console/compare/v6.0.10...v6.1.0)
**Changelog** (https://github.com/symfony/console/compare/v6.1.0-RC1...v6.1.0)
- bug [#46387](https://togithub.com/symfony/console/issues/46387) Complete negatable options (Fish) (GromNaN)
### [`v6.0.10`](https://togithub.com/symfony/console/releases/tag/v6.0.10)
[Compare Source](https://togithub.com/symfony/console/compare/v6.0.9...v6.0.10)
**Changelog** (https://github.com/symfony/console/compare/v6.0.9...v6.0.10)
- bug [#46747](https://togithub.com/symfony/console/issues/46747) Fix global state pollution between tests run with ApplicationTester (Seldaek)
- bug [#46608](https://togithub.com/symfony/console/issues/46608) Fix deprecation when description is null (HypeMC)
- bug [#46595](https://togithub.com/symfony/console/issues/46595) Escape % in command name & description from getDefaultName() (ogizanagi)
- bug [#46574](https://togithub.com/symfony/console/issues/46574) Escape % in command name & description from PHP (getDefault\* methods) (ogizanagi)
### [`v6.0.9`](https://togithub.com/symfony/console/releases/tag/v6.0.9)
[Compare Source](https://togithub.com/symfony/console/compare/v6.0.8...v6.0.9)
**Changelog** (https://github.com/symfony/console/compare/v6.0.8...v6.0.9)
- bug [#46386](https://togithub.com/symfony/console/issues/46386) Β Fix missing negative variation of negatable options in shell completion (GromNaN)
- bug [#46114](https://togithub.com/symfony/console/issues/46114) Fixes "Incorrectly nested style tag found" error when using multi-line header content (Perturbatio)
- bug [#46341](https://togithub.com/symfony/console/issues/46341) Fix aliases handling in command name completion (Seldaek)
- bug [#46291](https://togithub.com/symfony/console/issues/46291) Suppress unhandled error in some specific use-cases. (rw4lll)
- bug [#46264](https://togithub.com/symfony/console/issues/46264) Better required argument check in InputArgument (jnoordsij)
symfony/Finder
### [`v6.1.0`](https://togithub.com/symfony/finder/releases/tag/v6.1.0)
[Compare Source](https://togithub.com/symfony/Finder/compare/v6.0.8...v6.1.0)
**Changelog** (https://github.com/symfony/finder/compare/v6.1.0-RC1...v6.1.0)
- no significant changes
Configuration
π Schedule: Branch creation - "before 3am on Monday" (UTC), Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π» Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
4.13.2
->4.14.0
1.5.1
->1.6.4
1.6.9
->1.8.1
6.0.8
->6.1.2
6.0.8
->6.1.0
Release Notes
nikic/PHP-Parser
### [`v4.14.0`](https://togithub.com/nikic/PHP-Parser/blob/HEAD/CHANGELOG.md#Version-4140-2022-05-31) [Compare Source](https://togithub.com/nikic/PHP-Parser/compare/v4.13.2...v4.14.0) ##### Added - Added support for readonly classes. - Added `rawValue` attribute to `LNumber`, `DNumber` and `String_` nodes, which stores the unparsed value of the literal (e.g. `"1_000"` rather than `1000`).phpstan/phpdoc-parser
### [`v1.6.4`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.4) [Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.6.3...1.6.4) - [135607f](http://github.com/phpstan/phpdoc-parser/commit/135607f9ccc297d6923d49c2bcf309f509413215) - Support [@template-contravariant](https://togithub.com/template-contravariant) tags - [25ddf93](http://github.com/phpstan/phpdoc-parser/commit/25ddf938d8f71485ab9630428920ea8474504db4) - Simplify parsing of type alias import ### [`v1.6.3`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.3) [Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.6.2...1.6.3) - [4a07085](http://github.com/phpstan/phpdoc-parser/commit/4a07085f74cb1f3fc7103efa537d9f00ebb74ec7) - Micro-optimize lexer ### [`v1.6.2`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.2) [Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.6.1...1.6.2) - [76150ae](http://github.com/phpstan/phpdoc-parser/commit/76150ae7512439b4e6903db834e4a327596b617d) - Optimize generated regex ### [`v1.6.1`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.1) [Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.6.0...1.6.1) - [5aaeb83](http://github.com/phpstan/phpdoc-parser/commit/5aaeb83195d6d96515329d14688547d7c81e59e9) - Optimize Lexer::tokenize() - [07c49b0](http://github.com/phpstan/phpdoc-parser/commit/07c49b0107f79289bd8dad07e7e733b78cb6d1bf) - Regression test - [4c25f7f](http://github.com/phpstan/phpdoc-parser/commit/4c25f7fc4dbe9ec7140e8661a2a76f13a3156cd8) - Install phpstan/phpstan-phpunit ### [`v1.6.0`](https://togithub.com/phpstan/phpdoc-parser/releases/tag/1.6.0) [Compare Source](https://togithub.com/phpstan/phpdoc-parser/compare/1.5.1...1.6.0) - [3cb62d1](http://github.com/phpstan/phpdoc-parser/commit/3cb62d10845338136ff4ba299ab0986bbf84ba77) - Make requiring whitespace before description optional - [1e355a3](http://github.com/phpstan/phpdoc-parser/commit/1e355a35e2a8ddfd1910ae674ee99d562847b4b5) - Support all atomic types as nullable types - [7c621a2](http://github.com/phpstan/phpdoc-parser/commit/7c621a221778202175b5c5df3ff2bcbaea5efd59) - Fix parsing phpdoc with no trailing whitespace - [9d45205](http://github.com/phpstan/phpdoc-parser/commit/9d452051cbb2676d232a61920b5a9f336207af65) - Allow omitting [@param](https://togithub.com/param) type - [d579798](http://github.com/phpstan/phpdoc-parser/commit/d579798d2fefdc27de8227ab4a5b4eabe9532be7) - Require whitespace before description with limited start tokens - [b75949e](http://github.com/phpstan/phpdoc-parser/commit/b75949e747354aecfa280116df9eb2b0b5c6dcc8) - Update dependency slevomat/coding-standard to v7.2.1 - [5968e5f](http://github.com/phpstan/phpdoc-parser/commit/5968e5f71a00ce00d3e8ccf1c84a551996cee344) - Fix typo in doc/grammars - [5e424af](http://github.com/phpstan/phpdoc-parser/commit/5e424af90d346e2491f6c603634b1c8d081fc982) - Update dependency slevomat/coding-standard to v7.2.0phpstan/phpstan
### [`v1.8.1`](https://togithub.com/phpstan/phpstan/releases/tag/1.8.1) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.8.0...1.8.1) # Improvements π§ - ReadWritePropertiesExtensions are part of ClassPropertiesNode (https://github.com/phpstan/phpstan-src/commit/49c27d8849b1d153a67f28e612e490a71b4fd477), [https://github.com/phpstan/phpstan-src/pull/1480#issuecomment-1169960148](https://togithub.com/phpstan/phpstan-src/pull/1480#issuecomment-1169960148) - Add ClosureTypeFactory ([#1484](https://togithub.com/phpstan/phpstan-src/pull/1483)), [https://github.com/phpstan/phpstan/discussions/7546](https://togithub.com/phpstan/phpstan/discussions/7546), thanks [@canvural](https://togithub.com/canvural)! - Handle native function `@throws` tag in stub file ([#1487](https://togithub.com/phpstan/phpstan-src/pull/1487)), [#7552](https://togithub.com/phpstan/phpstan/issues/7552), thanks [@VincentLanglet](https://togithub.com/VincentLanglet)! - Add `#[AllowDynamicProperties]` PHP 8.2 attribute stub ([#1478](https://togithub.com/phpstan/phpstan-src/pull/1478)), thanks [@andypost](https://togithub.com/andypost)! - Add rule that disallows final private methods on PHP 8.0+ ([#1490](https://togithub.com/phpstan/phpstan-src/pull/1490)), thanks [@herndlm](https://togithub.com/herndlm)! - Inherit `@immutable` phpdoc ([#1489](https://togithub.com/phpstan/phpstan-src/pull/1489)), [#7506](https://togithub.com/phpstan/phpstan/issues/7506), thanks [@herndlm](https://togithub.com/herndlm)! - Mark `ClassReflection::evictPrivateSymbols()` as internal (https://github.com/phpstan/phpstan-src/commit/9138ab2a1b63d9ee31764cc812cca404f265ecb7) # Bugfixes π - Fix type specification of various string functions with constant strings in a falsey context ([#1488](https://togithub.com/phpstan/phpstan-src/pull/1488)), [#7555](https://togithub.com/phpstan/phpstan/issues/7555), thanks [@herndlm](https://togithub.com/herndlm)! - Fix `ConstantArrayType` creation for `preg_split` with `PREG_SPLIT_OFFSET_CAPTURE` ([#1486](https://togithub.com/phpstan/phpstan-src/pull/1486)), [#7554](https://togithub.com/phpstan/phpstan/issues/7554), thanks [@herndlm](https://togithub.com/herndlm)! - Reindex constant arrays via `shuffle` ([#1438](https://togithub.com/phpstan/phpstan-src/pull/1438)), [#6138](https://togithub.com/phpstan/phpstan/issues/6138), thanks [@herndlm](https://togithub.com/herndlm)! - Fix union and intersection between StaticType and ThisType (https://github.com/phpstan/phpstan-src/commit/e20e9345f57a7cd760967f459aa1eedfe2eabff8), [#6291](https://togithub.com/phpstan/phpstan/issues/6291), [#7211](https://togithub.com/phpstan/phpstan/issues/7211), [#7550](https://togithub.com/phpstan/phpstan/issues/7550) - Enhance `FILTER_VALIDATE_INT` option in `filter_var` ([#1499](https://togithub.com/phpstan/phpstan-src/pull/1499)), [#7608](https://togithub.com/phpstan/phpstan/issues/7608), thanks [@takeokunn](https://togithub.com/takeokunn)! - Fix handling of `str_split` / `mb_str_split` string arg compound types ([#1496](https://togithub.com/phpstan/phpstan-src/pull/1496)), [#7580](https://togithub.com/phpstan/phpstan/issues/7580), thanks [@herndlm](https://togithub.com/herndlm)! - Fix Identical type specification of constant types ([#1493](https://togithub.com/phpstan/phpstan-src/pull/1493)), [#7257](https://togithub.com/phpstan/phpstan/issues/7257), [#6781](https://togithub.com/phpstan/phpstan/issues/6781), [#6647](https://togithub.com/phpstan/phpstan/issues/6647), [#5896](https://togithub.com/phpstan/phpstan/issues/5896), [#5474](https://togithub.com/phpstan/phpstan/issues/5474), [#6000](https://togithub.com/phpstan/phpstan/issues/6000), thanks [@herndlm](https://togithub.com/herndlm)! - Better `StaticType::traverse()` (https://github.com/phpstan/phpstan-src/commit/0e257067ff92fbcb37b034cccdbea864a233c198) - `GenericClassStringType::isSuperTypeOf()` - do not convert maybe into no (https://github.com/phpstan/phpstan-src/commit/6fba5429b9784801a89cdc6cfa3d6f8cfd1d82e8), [#6697](https://togithub.com/phpstan/phpstan/issues/6697) - Fix subtractable `StaticType` (https://github.com/phpstan/phpstan-src/commit/0906336d29e807baba1a9eeca7b1545240c4ce5c), [#6443](https://togithub.com/phpstan/phpstan/issues/6443) # Function signature fixes π€ - Fix return type of `octdec()` ([#1500](https://togithub.com/phpstan/phpstan-src/pull/1500)), thanks [@zonuexe](https://togithub.com/zonuexe)! ### [`v1.8.0`](https://togithub.com/phpstan/phpstan/releases/tag/1.8.0) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.15...1.8.0) # Major new features π - Collectors - allows writing custom rules that target the whole project - Read more: https://phpstan.org/developing-extensions/collectors - New `rememberPossiblyImpureFunctionValues` config parameter (defaults to `true`) (https://github.com/phpstan/phpstan-src/commit/50ed38f04de93b4d0ea9573d0a4789853a4b9f32), [#7529](https://togithub.com/phpstan/phpstan/issues/7529) \*Β Read more: https://phpstan.org/config-reference#rememberpossiblyimpurefunctionvalues # Bleeding edge πͺ - Check that each trait is used and analysed at least once - level 4 (https://github.com/phpstan/phpstan-src/commit/c4d05276fb8605d6ac20acbe1cc5df31cd6c10b0) - Check that PHPStan class in class constant fetch is covered by backward compatibility promise (https://github.com/phpstan/phpstan-src/commit/9e007251ce61788f6a0319a53f1de6cf801ed233) *If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:* includes: - vendor/phpstan/phpstan/conf/bleedingEdge.neon *Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)* # Improvements π§ - Type a ranged value for `filter_var(FILTER_VALIDATE_INT)` ([#1443](https://togithub.com/phpstan/phpstan-src/pull/1443)), [#7494](https://togithub.com/phpstan/phpstan/issues/7494), thanks [@zonuexe](https://togithub.com/zonuexe)! - Allow BooleanAnd and BooleanOr as standalone expressions with right sides always false (https://github.com/phpstan/phpstan-src/commit/f9374e74beec7082228454693dcdc14000070266), [#2741](https://togithub.com/phpstan/phpstan/issues/2741) - Added `@api` annotation to `NodeScopeResolver::processStmtNodes()` ([#1464](https://togithub.com/phpstan/phpstan-src/pull/1464)), thanks [@vojtech-dobes](https://togithub.com/vojtech-dobes)! - Add `ClassReflection->is()` shortcut ([#1468](https://togithub.com/phpstan/phpstan-src/pull/1468)), thanks [@janedbal](https://togithub.com/janedbal)! - Force update of the PHPStan Pro PHAR in case of crash (https://github.com/phpstan/phpstan-src/commit/b95606ec291a7cf926ca757e544bfa089da950aa) - Intersect optimization for large unions ([#1471](https://togithub.com/phpstan/phpstan-src/pull/1471)), thanks [@neclimdul](https://togithub.com/neclimdul)! - Update phpdoc-parser (https://github.com/phpstan/phpstan-src/commit/7aa19e02c60c75961333d99cfb5c4704796d6e55) - Simplify parsing of type alias import ([https://github.com/phpstan/phpdoc-parser/pull/137](https://togithub.com/phpstan/phpdoc-parser/pull/137)), thanks [@jiripudil](https://togithub.com/jiripudil)! - Support `@template-contravariant` tags ([https://github.com/phpstan/phpdoc-parser/pull/140](https://togithub.com/phpstan/phpdoc-parser/pull/140)), thanks [@autaut03](https://togithub.com/autaut03)! # Bugfixes π - Prevent crashing for negative bit shifts ([#1447](https://togithub.com/phpstan/phpstan-src/pull/1447)), [#7490](https://togithub.com/phpstan/phpstan/issues/7490), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Fix infinite recursion for template intersection type accepts() ([#1450](https://togithub.com/phpstan/phpstan-src/pull/1450)), [#7500](https://togithub.com/phpstan/phpstan/issues/7500), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Run with parallel runner only when `proc_open` is not disabled ([#1451](https://togithub.com/phpstan/phpstan-src/pull/1451)), [#7488](https://togithub.com/phpstan/phpstan/issues/7488), thanks [@mvorisek](https://togithub.com/mvorisek)! - Suppress `is_file` warnings in `bin/phpstan` ([#1466](https://togithub.com/phpstan/phpstan-src/pull/1466)), thanks [@mvorisek](https://togithub.com/mvorisek)! - Fix specifying types for chained assignments ([#1473](https://togithub.com/phpstan/phpstan-src/pull/1473)), [#7142](https://togithub.com/phpstan/phpstan/issues/7142), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Consider autoloaders passed in `-a` (https://github.com/phpstan/phpstan-src/commit/78016fe92840c02a5981f4ab2ea28fc2d3e49f27) # Function signature fixes π€ - `Closure::bind()` with `$newScope = null` ([#1446](https://togithub.com/phpstan/phpstan-src/pull/1446)), [#7489](https://togithub.com/phpstan/phpstan/issues/7489), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - `Closure::bindTo()` with `$newScope = null` ([#1448](https://togithub.com/phpstan/phpstan-src/pull/1448)), thanks [@mvorisek](https://togithub.com/mvorisek)! - Fix return type for `imagesx` and `imagesy` functions ([#1452](https://togithub.com/phpstan/phpstan-src/pull/1452)), thanks [@norkunas](https://togithub.com/norkunas)! - Add `NoRewindIterator` stub ([#1453](https://togithub.com/phpstan/phpstan-src/pull/1453)), thanks [@drupol](https://togithub.com/drupol)! - Add `LimitIterator` stub ([#1455](https://togithub.com/phpstan/phpstan-src/pull/1455)), thanks [@drupol](https://togithub.com/drupol)! - Add `InfiniteIterator` stub ([#1454](https://togithub.com/phpstan/phpstan-src/pull/1454)), thanks [@drupol](https://togithub.com/drupol)! - Add `CachingIterator` stub ([#1456](https://togithub.com/phpstan/phpstan-src/pull/1456)), thanks [@drupol](https://togithub.com/drupol)! - Add `RegexIterator` stub ([#1462](https://togithub.com/phpstan/phpstan-src/pull/1462)), thanks [@drupol](https://togithub.com/drupol)! - Add `EmptyIterator` stub ([#1472](https://togithub.com/phpstan/phpstan-src/pull/1472)), thanks [@drupol](https://togithub.com/drupol)! - Narrow return type of `array_keys` slightly ([#1474](https://togithub.com/phpstan/phpstan-src/pull/1474)), thanks [@Seldaek](https://togithub.com/Seldaek)! ### [`v1.7.15`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.15) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.14...1.7.15) # Improvements π§ - Support for relative paths in `editorUrl` for Docker environment ([#1414](https://togithub.com/phpstan/phpstan-src/pull/1414)), [#7043](https://togithub.com/phpstan/phpstan/issues/7043), thanks [@Wirone](https://togithub.com/Wirone)! - Support positional arguments in `sprintf()` constant format inference ([#1437](https://togithub.com/phpstan/phpstan-src/pull/1437), [#1440](https://togithub.com/phpstan/phpstan-src/pull/1440), [#1441](https://togithub.com/phpstan/phpstan-src/pull/1441)), thanks [@staabm](https://togithub.com/staabm)! - Dynamic return type extension for `sscanf()` and `fscanf()` ([#1434](https://togithub.com/phpstan/phpstan-src/pull/1434)), thanks [@staabm](https://togithub.com/staabm)! - Virtual nodes (InClassMethodNode, InFunctionNode, InClosureNode) - pass and provide getters for specific reflection so that `Scope::getFunction()` does not need to be used (https://github.com/phpstan/phpstan-src/commit/f18bd86495fc6811ee04c305ff4b379b10cd07bb) # Bleeding edge πͺ - Check code in custom PHPStan extensions for runtime reflection concepts like `is_a()` or `class_parents()` (https://github.com/phpstan/phpstan-src/commit/c4a662ac6c3ec63f063238880b243b5399c34fcc) - Check code in custom PHPStan extensions for runtime reflection concepts like `new ReflectionMethod()` (https://github.com/phpstan/phpstan-src/commit/536306611cbb5877b6565755cd07b87f9ccfdf08) - ApiInstanceofRule - Report `instanceof` of classes not covered by backward compatibility promise (https://github.com/phpstan/phpstan-src/commit/ff4d02d62a7a2e2c4d928d48d31d49246dba7139) - Report `instanceof` of classes covered by backward compatibility promise but where the assumption might change (https://github.com/phpstan/phpstan-src/commit/996bc69fa977aa64f601bd82b8a0ae39be0cbeef) *If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:* includes: - vendor/phpstan/phpstan/conf/bleedingEdge.neon *Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)* # Bugfixes π - Fix return type for arrow function generators ([#1422](https://togithub.com/phpstan/phpstan-src/pull/1422)), [#7031](https://togithub.com/phpstan/phpstan/issues/7031), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Improve intersecting constant array with general array ([#1429](https://togithub.com/phpstan/phpstan-src/pull/1429)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Allow `numeric-string` being returned for `non-empty-string` ([#1428](https://togithub.com/phpstan/phpstan-src/pull/1428)), [#7265](https://togithub.com/phpstan/phpstan/issues/7265), thanks [@staabm](https://togithub.com/staabm)! - Specify array type via `in_array` ([#1430](https://togithub.com/phpstan/phpstan-src/pull/1430)), [#7153](https://togithub.com/phpstan/phpstan/issues/7153), [#7275](https://togithub.com/phpstan/phpstan/issues/7275), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Specify `non-empty-array after` after `in_array()` ([#1108](https://togithub.com/phpstan/phpstan-src/pull/1108)), [#6167](https://togithub.com/phpstan/phpstan/issues/6167), thanks [@staabm](https://togithub.com/staabm)! - Array after `array_push` / `array_unshift` call can still be empty ([#1431](https://togithub.com/phpstan/phpstan-src/pull/1431)), [#7424](https://togithub.com/phpstan/phpstan/issues/7424), thanks [@herndlm](https://togithub.com/herndlm)! - Fix `TemplateTypeArgumentStrategy::accepts()` (https://github.com/phpstan/phpstan-src/commit/85ab8cfe237b9a90d12f211dd1938a99cc299bba), [#7460](https://togithub.com/phpstan/phpstan/issues/7460) - Improve parenthesization for union types ([#1433](https://togithub.com/phpstan/phpstan-src/pull/1433)), [#7484](https://togithub.com/phpstan/phpstan/issues/7484), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Result cache is invalidated for files where PHP 8 attributes changed ([#1427](https://togithub.com/phpstan/phpstan-src/pull/1427)), [#6797](https://togithub.com/phpstan/phpstan/issues/6797), [#7413](https://togithub.com/phpstan/phpstan/issues/7413), thanks [@olsavmic](https://togithub.com/olsavmic)! - Fix `TypeCombinator::union()` for intersection of array and template type ([#1444](https://togithub.com/phpstan/phpstan-src/pull/1444)), [#4117](https://togithub.com/phpstan/phpstan/issues/4117), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! # Function signature fixes π€ - Be more specific about the XHProf sampling type (`xhprof_sample_disable()`) ([#1436](https://togithub.com/phpstan/phpstan-src/pull/1436)), thanks [@johnbillion](https://togithub.com/johnbillion)! ### [`v1.7.14`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.14) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.13...1.7.14) # Improvements π§ - Update phpdoc-parser - Micro-optimize lexer ([https://github.com/phpstan/phpdoc-parser/pull/135](https://togithub.com/phpstan/phpdoc-parser/pull/135)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Update BetterReflection to 5.6.0 ([#1421](https://togithub.com/phpstan/phpstan-src/pull/1421)), [#7429](https://togithub.com/phpstan/phpstan/issues/7429), [#7428](https://togithub.com/phpstan/phpstan/issues/7428) - Add dynamic return type extension for `date_create` ([#1413](https://togithub.com/phpstan/phpstan-src/pull/1413)), thanks [@VincentLanglet](https://togithub.com/VincentLanglet)! - more precise `sprintf()` return type on constant formats ([#1410](https://togithub.com/phpstan/phpstan-src/pull/1410)), [#7387](https://togithub.com/phpstan/phpstan/issues/7387), thanks [@staabm](https://togithub.com/staabm)! - Update PhpStorm stubs ([#1419](https://togithub.com/phpstan/phpstan-src/pull/1419)) - Assert functions do not throw anything (https://github.com/phpstan/phpstan-src/commit/9878eef9a7b04b8a7fa14b004ebfbb1e3d5cb0a8) - Deprecate `MutatingScope::enterCatch()` (https://github.com/phpstan/phpstan-src/commit/4a7d7da6f57be75e3f0dbc4b048663dbd5a58e1d) # Bugfixes π - Support `literal-string` as array key ([#1420](https://togithub.com/phpstan/phpstan-src/pull/1420)), [#7353](https://togithub.com/phpstan/phpstan/issues/7353), [#6163](https://togithub.com/phpstan/phpstan/issues/6163), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! # Function signature fixes π€ - Update string compare return values ([#1412](https://togithub.com/phpstan/phpstan-src/pull/1412)), thanks [@bytestream](https://togithub.com/bytestream)! ### [`v1.7.13`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.13) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.12...1.7.13) # Improvements π§ - Optimization of printing expressions using ExprPrinter (https://github.com/phpstan/phpstan-src/commit/e12524e21537b970c91e363c616503e6d7d41f38, https://github.com/phpstan/phpstan-src/commit/fba292944a67cb91158042a0f952e5e15bcf30c7) - Do not require an existing filename when reading PHPDocs from an evaled class ([#1409](https://togithub.com/phpstan/phpstan-src/pull/1409)), [#7441](https://togithub.com/phpstan/phpstan/issues/7441) - StatementExitPoint and ThrowPoint covered by BC promise (https://github.com/phpstan/phpstan-src/commit/e8b8ffdd7d164a7ddcafcf6cb570f56b71bb2263) - Update phpdoc-parser [#7426](https://togithub.com/phpstan/phpstan/issues/7426) - Optimize `Lexer::tokenize()` ([https://github.com/phpstan/phpdoc-parser/pull/133](https://togithub.com/phpstan/phpdoc-parser/pull/133)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Optimize generated regex ([https://github.com/phpstan/phpdoc-parser/pull/134](https://togithub.com/phpstan/phpdoc-parser/pull/134)), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! # Bleeding edge πͺ - Use explicit mixed for global array variables ([#1411](https://togithub.com/phpstan/phpstan-src/pull/1411)), thanks [@herndlm](https://togithub.com/herndlm)! *If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:* includes: - vendor/phpstan/phpstan/conf/bleedingEdge.neon *Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)* # Bugfixes π - Fix incorrect UnhandledMatchError for match expressions using spaceship operator ([#1408](https://togithub.com/phpstan/phpstan-src/pull/1408)), [#4451](https://togithub.com/phpstan/phpstan/issues/4451), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Fix resolving class const fetch for constant strings ([#1416](https://togithub.com/phpstan/phpstan-src/pull/1416)), [#7391](https://togithub.com/phpstan/phpstan/issues/7391), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Fix resolving user-defined constants in sub-namespaces ([#1415](https://togithub.com/phpstan/phpstan-src/pull/1415)), [#7352](https://togithub.com/phpstan/phpstan/issues/7352), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - `TypeUtils::getDirectClassNames()` - return unique list of class names (https://github.com/phpstan/phpstan-src/commit/b85fce0707f65a633163d2bf5215e57c927011b9) - Fix "missing return" for void/never conditional return types ([#1418](https://togithub.com/phpstan/phpstan-src/pull/1418)), [#7384](https://togithub.com/phpstan/phpstan/issues/7384), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! ### [`v1.7.12`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.12) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.11...1.7.12) # Improvements π§ - Update phpstan/phpdoc-parser to 1.6.0 (https://github.com/phpstan/phpstan-src/commit/ef8c7c37f2ab3def07860a4cdc20c7ed56758a8c) - Allow omitting `@param` type ([https://github.com/phpstan/phpdoc-parser/pull/127](https://togithub.com/phpstan/phpdoc-parser/pull/127)), [https://github.com/phpstan/phpdoc-parser/issues/77](https://togithub.com/phpstan/phpdoc-parser/issues/77), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Support all atomic types as nullable types ([https://github.com/phpstan/phpdoc-parser/pull/129](https://togithub.com/phpstan/phpdoc-parser/pull/129)), [https://github.com/phpstan/phpdoc-parser/issues/124](https://togithub.com/phpstan/phpdoc-parser/issues/124), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Support constant string and integer as template bound ([#1402](https://togithub.com/phpstan/phpstan-src/pull/1402)), [#7381](https://togithub.com/phpstan/phpstan/issues/7381), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! - Introduce `ExtendedMethodReflection` interface ([#1403](https://togithub.com/phpstan/phpstan-src/pull/1403)) - The purpose of this interface is to be able to answer more questions about methods without breaking backward compatibility with existing MethodsClassReflectionExtension. - Developers are meant to only use the MethodReflection interface and its methods in their code. - Methods on ExtendedMethodReflection are subject to change. # Bleeding edge πͺ - PHPDoc parser: Require whitespace before description with limited start tokens ([https://github.com/phpstan/phpdoc-parser/pull/128](https://togithub.com/phpstan/phpdoc-parser/pull/128)), [https://github.com/phpstan/phpdoc-parser/issues/125](https://togithub.com/phpstan/phpdoc-parser/issues/125), thanks [@rvanvelzen](https://togithub.com/rvanvelzen)! *If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:* includes: - vendor/phpstan/phpstan/conf/bleedingEdge.neon *Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)* # Bugfixes π - Fix node scope resolving of array/list expression assignments ([#1405](https://togithub.com/phpstan/phpstan-src/pull/1405)), [#7119](https://togithub.com/phpstan/phpstan/issues/7119), thanks [@herndlm](https://togithub.com/herndlm)! - Do not consider arrays with an unknown class string to be a callback ([#1404](https://togithub.com/phpstan/phpstan-src/pull/1404)), [#7389](https://togithub.com/phpstan/phpstan/issues/7389), thanks [@herndlm](https://togithub.com/herndlm)! - Add array_udiff to arrayFunctions.stub ([#1407](https://togithub.com/phpstan/phpstan-src/pull/1407)), [#6105](https://togithub.com/phpstan/phpstan/issues/6105), thanks [@akalineskou](https://togithub.com/akalineskou)! ### [`v1.7.11`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.11) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.10...1.7.11) # Bleeding edge πͺ - Add `@readonly` rule that disallows default values ([#1391](https://togithub.com/phpstan/phpstan-src/pull/1391)), thanks [@herndlm](https://togithub.com/herndlm)! *If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's `phpstan.neon`:* includes: - vendor/phpstan/phpstan/conf/bleedingEdge.neon *Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. [Learn more](https://phpstan.org/blog/what-is-bleeding-edge)* # Bugfixes π - `BetterReflectionProvider::getClass()` - handle `InvalidIdentifierName` too (https://github.com/phpstan/phpstan-src/commit/64b0907db03da40ecb3d98bde905bbc3214bb08d), [#7404](https://togithub.com/phpstan/phpstan/issues/7404) - BetterReflection: `ReflectionClass` adapter - implement `newInstance*` methods (https://github.com/ondrejmirtes/BetterReflection/commit/90dd5834447f8a184ff312855bdae2b793c34748), [https://github.com/phpstan/phpstan/discussions/7403](https://togithub.com/phpstan/phpstan/discussions/7403) ### [`v1.7.10`](https://togithub.com/phpstan/phpstan/releases/tag/1.7.10) [Compare Source](https://togithub.com/phpstan/phpstan/compare/1.7.9...1.7.10) # Improvements π§ - Adapt to different `vendor-dir` setting in `composer.json`, and also `COMPOSER` environment variable ([#1384](https://togithub.com/phpstan/phpstan-src/pull/1384)), thanks [@canvural](https://togithub.com/canvural)! # Bugfixes π - Fix BC break in `PHPStan\Node\ClassMethod` (https://github.com/phpstan/phpstan-src/commit/9b4a5913aa47d94acb47e3c06fce83db8ea5fd8b), https://github.com/phpstan/phpstan-src/commit/d0a9d084ea66be4afdf965dd51e1b6d91d36c6b7#r75178623 - Fix `TypeUtils::getDirectClassNames` for nested type ([#1380](https://togithub.com/phpstan/phpstan-src/pull/1380)), thanks [@mvorisek](https://togithub.com/mvorisek)! - Consistent gathering of all stub files for their analysis ([#1355](https://togithub.com/phpstan/phpstan-src/pull/1355)), thanks [@canvural](https://togithub.com/canvural)! - Dont report unsafe static if constructor is in both parent and interface ([#1395](https://togithub.com/phpstan/phpstan-src/pull/1395)), [#6007](https://togithub.com/phpstan/phpstan/issues/6007), thanks [@canvural](https://togithub.com/canvural)! # Internals π - Added `symfony/console
### [`v6.1.2`](https://togithub.com/symfony/console/releases/tag/v6.1.2) [Compare Source](https://togithub.com/symfony/console/compare/v6.1.1...v6.1.2) **Changelog** (https://github.com/symfony/console/compare/v6.1.1...v6.1.2) - bug [#46747](https://togithub.com/symfony/console/issues/46747) Fix global state pollution between tests run with ApplicationTester (Seldaek) ### [`v6.1.1`](https://togithub.com/symfony/console/releases/tag/v6.1.1) [Compare Source](https://togithub.com/symfony/console/compare/v6.1.0...v6.1.1) **Changelog** (https://github.com/symfony/console/compare/v6.1.0...v6.1.1) - bug [#46608](https://togithub.com/symfony/console/issues/46608) Fix deprecation when description is null (HypeMC) - bug [#46574](https://togithub.com/symfony/console/issues/46574) Escape % in command name & description from PHP (getDefault\* methods) (ogizanagi) ### [`v6.1.0`](https://togithub.com/symfony/console/releases/tag/v6.1.0) [Compare Source](https://togithub.com/symfony/console/compare/v6.0.10...v6.1.0) **Changelog** (https://github.com/symfony/console/compare/v6.1.0-RC1...v6.1.0) - bug [#46387](https://togithub.com/symfony/console/issues/46387) Complete negatable options (Fish) (GromNaN) ### [`v6.0.10`](https://togithub.com/symfony/console/releases/tag/v6.0.10) [Compare Source](https://togithub.com/symfony/console/compare/v6.0.9...v6.0.10) **Changelog** (https://github.com/symfony/console/compare/v6.0.9...v6.0.10) - bug [#46747](https://togithub.com/symfony/console/issues/46747) Fix global state pollution between tests run with ApplicationTester (Seldaek) - bug [#46608](https://togithub.com/symfony/console/issues/46608) Fix deprecation when description is null (HypeMC) - bug [#46595](https://togithub.com/symfony/console/issues/46595) Escape % in command name & description from getDefaultName() (ogizanagi) - bug [#46574](https://togithub.com/symfony/console/issues/46574) Escape % in command name & description from PHP (getDefault\* methods) (ogizanagi) ### [`v6.0.9`](https://togithub.com/symfony/console/releases/tag/v6.0.9) [Compare Source](https://togithub.com/symfony/console/compare/v6.0.8...v6.0.9) **Changelog** (https://github.com/symfony/console/compare/v6.0.8...v6.0.9) - bug [#46386](https://togithub.com/symfony/console/issues/46386) Β Fix missing negative variation of negatable options in shell completion (GromNaN) - bug [#46114](https://togithub.com/symfony/console/issues/46114) Fixes "Incorrectly nested style tag found" error when using multi-line header content (Perturbatio) - bug [#46341](https://togithub.com/symfony/console/issues/46341) Fix aliases handling in command name completion (Seldaek) - bug [#46291](https://togithub.com/symfony/console/issues/46291) Suppress unhandled error in some specific use-cases. (rw4lll) - bug [#46264](https://togithub.com/symfony/console/issues/46264) Better required argument check in InputArgument (jnoordsij)symfony/Finder
### [`v6.1.0`](https://togithub.com/symfony/finder/releases/tag/v6.1.0) [Compare Source](https://togithub.com/symfony/Finder/compare/v6.0.8...v6.1.0) **Changelog** (https://github.com/symfony/finder/compare/v6.1.0-RC1...v6.1.0) - no significant changesConfiguration
π Schedule: Branch creation - "before 3am on Monday" (UTC), Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π» Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.