Bugfixes š
- Use declared property type instead of scope-narrowed type when inferring generic
newexpression types (#5467), #11844, thanks @VincentLanglet and @staabm!
Performance šļø
- Use pairwise
TypeCombinator::intersectfolding for conditional expression holders to avoid exponential union distribution (#5482), #14475 - Fix more cases (#5482), #14475
- More pair-wise intersect (#5482), #14475
- Avoid 2^N
getAllArrays()expansion inimplode()return type extension (#5482), #14475 - Avoid 2^N
getAllArrays()expansion inConstantArrayType::getFiniteTypes()(#5482), #14475 - Bail early in
TypeUtils::flattenTypes()to avoid 2^NgetAllArrays()expansion (#5482), #14475 - Batch
unionWithinspecifyTypesForFlattenedBooleanOrfalsey path to avoid O(N²) (phpstan/phpstan-src@7eab3d2) - Add flattening optimization for deep
BooleanAndchains in truthy context (phpstan/phpstan-src@3f5f2de) - Use hash map for O(1) key lookup in
ConstantArrayType(phpstan/phpstan-src@8019f65) - Fix infinite hang when analysing
src/wp-includes/user.phpin wordpress-develop (#5485)
Function signature fixes š¤
Internals š
- Fix PHPUnit warning (#5484), thanks @VincentLanglet!