chore(deps): update phpstan packages to v2 (major)
This MR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
phpstan/phpstan |
^1.6 -> ^2.0
|
||||
phpstan/phpstan-deprecation-rules |
^1.1 -> ^2.0
|
Release Notes
phpstan/phpstan (phpstan/phpstan)
v2.0.1
🐛
Bugfixes - fix: check for existence of second arg in CountCharsFunctionDynamicReturnTypeExtension (#3620), thanks @canvural!
- Fix resolving tentative return type (https://github.com/phpstan/phpstan-src/commit/753fc4d98fe8929aa8816f454d2f9a836ccd7a6b)
- And fixes from PHPStan 1.12.10
v2.0.0
Check out the UPGRADING guide!.
Buy the PHPStan elephpant and T-shirts!
🚀
Major new features -
Level 10 - level 9 on steroids, treats all
mixed
types strictly, not just explicitmixed
-
Array
list
type (#1751), #3311, #8185, #6243, thanks @rvanvelzen!- Lists are arrays with sequential integer keys starting at 0
-
Lower memory consumption thanks to breaking up of reference cycles
- Learn more »
- In testing the memory consumption was reduced by 50–70 %.
-
Enhancements in handling parameters passed by reference
- Learn more on phpstan.org
- #2941, thanks @ljmaskey!
- New rules (level 0):
- MagicConstantContextRule (#2741), #10099, thanks @staabm!
- MissingMagicSerializationMethodsRule (#1711), #7482, thanks @staabm!
- Check vprintf/vsprintf arguments against placeholder count (#3126), thanks @staabm!
- Check if required file exists (#3294), #3397, thanks @Bellangelo!
- Add
@readonly
rule that disallows default values (#1391), thanks @herndlm! - Rule about
@phpstan-consistent-constructor
(#1296), thanks @canvural! - Check code in custom PHPStan extensions for runtime reflection concepts like
is_a()
orclass_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)
- Report
- Check that PHPStan class in class constant fetch is covered by backward compatibility promise (https://github.com/phpstan/phpstan-src/commit/9e007251ce61788f6a0319a53f1de6cf801ed233)
- Previously absent type checks:
- Check existing classes in
@phpstan-self-out
(https://github.com/phpstan/phpstan-src/commit/6838669976bf20232abde36ecdd52b1770fa50c9) - Check nonexistent classes in local type aliases (https://github.com/phpstan/phpstan-src/commit/2485b2e9c129e789ec3b2d7db81ca30f87c63911)
- Check unresolvable types in local type aliases (https://github.com/phpstan/phpstan-src/commit/5f7d12b2fb2809525ab0e96eeae95093204ea4d3)
- Check generics in local type aliases (https://github.com/phpstan/phpstan-src/commit/5a2d4416d94ab77a2a2e7e1bfaba4c5ed2a13c25)
- Check existing classes in
@param-out
(https://github.com/phpstan/phpstan-src/commit/30c4b9e80f51af8b5f166ba3aae93d8409c9c0ea), #10260 - Check existing classes in
@param-closure-this
(https://github.com/phpstan/phpstan-src/commit/2fa539a39e06bcc3155b109fd8d246703ceb176d), #10933
- Check existing classes in
- New rules (level 2):
-
Validate inline PHPDoc
@var
tag type against native type (https://github.com/phpstan/phpstan-src/commit/a69e3bc2f1e87f6da1e65d7935f1cc36bd5c42fe)- Set
reportWrongPhpDocTypeInVarTag
totrue
to have all types validated, not just native ones - Use config option
reportAnyTypeWideningInVarTag: true
for stricter behaviour (#2840), thanks @janedbal! - IncompatibleDefaultParameterTypeRule for closures (https://github.com/phpstan/phpstan-src/commit/0264f5bc48448c7e02a23b82eef4177d0617a82f)
- Set
- Checking truthiness of
@phpstan-pure
above functions and methods - Check variance of template types in properties (#2314), thanks @jiripudil!
- Report narrowing
PHPStan\Type\Type
interface via@var
(https://github.com/phpstan/phpstan-src/commit/713b98fb107213c28e3d8c8b4b43c5f5fc47c144), https://github.com/nunomaduro/larastan/issues/1567#issuecomment-1460445389 - Previously absent type checks:
- Check
@mixin
PHPDoc tag above traits (https://github.com/phpstan/phpstan-src/commit/0d0de946900adf4eb3c799b1b547567536e23147) - Check
@extends
,@implements
,@use
for unresolvable types (https://github.com/phpstan/phpstan-src/commit/2bb528233edb75312614166e282776f279cf2018), #11552 - Check types in
@method
tags (https://github.com/phpstan/phpstan-src/commit/5b7e474680eaf33874b7ed6a227677adcbed9ca5) - Check generics
@method
@template
tags above traits (https://github.com/phpstan/phpstan-src/commit/aadbf62d3ae4517fc7a212b07130bedcef8d13ac) - Check types in
@property
tags (https://github.com/phpstan/phpstan-src/commit/55ea2ae516df22a071ab873fdd6f748a3af0520e), #10752, #9356
- Check
-
Validate inline PHPDoc
- New rule (level 3):
- ArrayUnpackingRule (#856), thanks @canvural!
- New rules (level 4):
- Check too wide private property type (https://github.com/phpstan/phpstan-src/commit/7453f4f75fae3d635063589467842aae29d88b54)
- LogicalXorConstantConditionRule (https://github.com/phpstan/phpstan-src/commit/3a12724fd636b1bcf36c22b36e8f765d97150895, https://github.com/phpstan/phpstan-src/commit/3b011f6524254dad0f16840fdcfdbe7421548617), #7539
- Check that each trait is used and analysed at least once (https://github.com/phpstan/phpstan-src/commit/c4d05276fb8605d6ac20acbe1cc5df31cd6c10b0)
- Report useless return values of function calls like
var_export
without$return=true
(#3225), #11320, thanks @staabm! - ConstantLooseComparisonRule (https://github.com/phpstan/phpstan-src/commit/6ebf2361a3c831dd105a815521889428c295dc9f)
- Check
new
/function call/method call/static method call on a separate line without any side effects even without@phpstan-pure
PHPDoc tag on the declaration side - Always report always true conditions, except for last elseif and match arm (https://github.com/phpstan/phpstan-src/commit/565fb0f6da9cdc58e8686598015561a848693972)
- Remove "unreachable branches" rules: UnreachableIfBranchesRule, UnreachableTernaryElseBranchRule, unreachable arm error in MatchExpressionRule
- Because "always true" is always reported, these are no longer needed
- New rules (level 5):
- Check preg_quote delimiter sanity (#3252), #11338, thanks @staabm!
- Rule for
call_user_func()
(#2479), thanks @staabm! - Report useless
array_filter()
calls (#1077), #6840, thanks @leongersen! - Report useless
array_values()
calls (#2917), thanks @kamil-zacek! - Check array functions which require stringish values (#3132), #11141, #5848, #3694, #11111, thanks @schlndh!
- Check unresolvable parameters (#1319), thanks @rvanvelzen!
- Enforce
@no-named-arguments
(https://github.com/phpstan/phpstan-src/commit/74ba8c23696948f2647d880df72f375346f41010), #5968
- New rules (level 6):
- Previously absent type checks:
- Check missing types in
@phpstan-self-out
(https://github.com/phpstan/phpstan-src/commit/892b319f25f04bc1b55c3d0063b607909612fe6d) - Check missing types in local type aliases (https://github.com/phpstan/phpstan-src/commit/ce7ffaf02d624a7fb9d38f8e5dffc9739f1233fc)
- Check missing types in
@mixin
(https://github.com/phpstan/phpstan-src/commit/3175c81f26fd5bcb4a161b24e774921870ed2533)
- Check missing types in
- Previously absent type checks:
- New option:
polluteScopeWithBlock
(defaults totrue
,false
inphpstan-strict-rules
) (https://github.com/phpstan/phpstan-src/commit/946cf180c960930c2c42075d0f28ff9090507272) - Support
@readonly
property and@immutable
class PHPDoc (#1295, #1335), #4082, thanks @herndlm! - Deprecate various
instanceof *Type
in favour of new methods onType
interface, (https://github.com/phpstan/phpstan-src/commit/436e6d3015cbeba4645d38bc7a6a865b9c6d7c74), learn more: Why Is instanceof *Type Wrong and Getting Deprecated?
🔧
Improvements - TableErrorFormatter - always output identifiers (https://github.com/phpstan/phpstan-src/commit/fc66c24113e9fe88c3155703224eb03768846fdd)
- Config option
exceptions.check.tooWideThrowType
made true by default (https://github.com/phpstan/phpstan-src/commit/1b1da3e2ce3acf10dde03d9656638cda4f7389a4) - Use
implicitThrows
to only look for explicit throw points in too-wide@throws
rules when set tofalse
(https://github.com/phpstan/phpstan-src/commit/a0e688c1d1e4c5e82f989b26485eb9162f47aa97) - Rules about tooWideThrowType moved to level 4 (https://github.com/phpstan/phpstan-src/commit/d7798d7f2c47f426efe91c566e6cafd5a4e2410c)
- Both .php and .neon baselines now include error identifiers (https://github.com/phpstan/phpstan-src/commit/f38addda2b151b6e41a746a37659c0bbe9e2293b, https://github.com/phpstan/phpstan-src/commit/c8b7ea9e8f51c8bbc38dfa6b04f9a0172f5cfea0)
- PHPDoc parser: Require whitespace before description with limited start tokens (https://github.com/phpstan/phpdoc-parser/pull/128), https://github.com/phpstan/phpdoc-parser/issues/125, thanks @rvanvelzen!
- Unescape strings in PHPDoc parser (https://github.com/phpstan/phpstan-src/commit/97786ed8376b478ec541ea9df1c450c1fbfe7461)
- PHPDoc parser: add config for lines in its AST & enable ignoring errors within PHPDocs (#2807), thanks @janedbal!
- InvalidPhpDocTagValueRule: include PHPDoc line number in the error message (https://github.com/phpstan/phpstan-src/commit/a04e0be832900749b5b4ba22e2de21db8bfa09a0)
- No implicit wildcard in FileExcluder (https://github.com/phpstan/phpstan-src/commit/e19e6e5f8cfa706cc30e44a17276a6bc269f995c), #10299
- Report invalid exclude paths in PHP config (https://github.com/phpstan/phpstan-src/commit/9718c14f1ffac81ba3d2bf331b4e8b4041a4d004)
- Do not generalize template types, except when in
GenericObjectType
(#2818, #2821) - Non-static methods cannot be used as static callables in PHP 8+ (#2420), thanks @staabm!
- Analysis with zero files results in non-zero exit code (https://github.com/phpstan/phpstan-src/commit/46ff440648e62617df86aa74ba905ffa99897737), #9410
- Fail build when project config uses custom extensions outside of analysed paths
- This will only occur after a run that uses already present and valid result cache
- Returning plain strings as errors no longer supported, use RuleErrorBuilder
- Require identifier in custom rules (https://github.com/phpstan/phpstan-src/commit/969e6fa31d5484d42dab902703cfc6820a983cfd)
- New
RuleLevelHelper::accepts()
behaviour (https://github.com/phpstan/phpstan-src/commit/941fc815db49315b8783dc466cf593e0d8a85d23), #11119, #4174 - Infer explicit mixed when instantiating generic class with unknown template types (https://github.com/phpstan/phpstan-src/commit/089d4c6fb6eb709c44123548d33990113d174b86), #6398
- Use explicit mixed for global array variables (#1411), #7082, thanks @herndlm!
- Consider implicit throw points when the only explicit one is
Throw_
(https://github.com/phpstan/phpstan-src/commit/22eef6d5ab9a4afafb2305258fea273be6cc06e4), #4912 - Run missing type check on
@param-out
(https://github.com/phpstan/phpstan-src/commit/56b20024386d983927c64dfa895ff026bed2798c) - Report "missing return" error closer to where the return is missing (https://github.com/phpstan/phpstan-src/commit/04f8636e6577cbcaefc944725eed74c0d7865ead)
- Report dead types even in multi-exception catch (#2399), thanks @JanTvrdik!
- MethodSignatureRule - look at abstract trait method (https://github.com/phpstan/phpstan-src/commit/5fd8cee591ce1b07daa5f98a1ddcdfc723f1b5eb)
- OverridingMethodRule - include template types in prototype declaring class description (https://github.com/phpstan/phpstan-src/commit/ca2c66cc4dff59ba44d52b82cb9e0aa3256240f3)
- Detect overriding
@final
method in OverridingMethodRule, #9135 - Improve error wording of the NonexistentOffset, BooleanAndConstantConditionRule, and BooleanOrConstantConditionRule (#1882), thanks @VincentLanglet!
- Stricter ++/-- operator check (#3255), thanks @schlndh!
- Check mixed in binary operator (#3231), #7538, #10440, thanks @schlndh!
- Check mixed in unary operator (#3253), thanks @schlndh!
- Stub files validation - detect duplicate classes and functions (https://github.com/phpstan/phpstan-src/commit/ddf8d5c3859c2c75c20f525a0e2ca8b99032373a, https://github.com/phpstan/phpstan-src/commit/17e4b74335e5235d7cd6708eb687a774a0eeead4)
- NoopRule - take advantage of impure points (https://github.com/phpstan/phpstan-src/commit/a6470521b65d7424f552633c1f3827704c6262c3), #10389
- Improve impossible type checker for void-returning functions (#1857), #8169, thanks @rvanvelzen!
- Check template type variance in
@param-out
(https://github.com/phpstan/phpstan-src/commit/7ceb19d3b42cf4632d10c2babb0fc5a21b6c8352), https://github.com/phpstan/phpstan/issues/8880#issuecomment-1426971473 - Fix position variance of static method parameters (#2313), thanks @jiripudil!
- Empty
skipCheckGenericClasses
(https://github.com/phpstan/phpstan-src/commit/28c2c79b16cac6ba6b01f1b4d211541dd49d8a77) - Report unnecessary nullsafe property fetch inside
??
/isset
/empty
with different message (#1253), thanks @rajyan! - Specify explicit mixed array type via
is_array
(#1191), thanks @herndlm! - TooWideMethodReturnTypehintRule - always report for final methods (https://github.com/phpstan/phpstan-src/commit/c30e9a484c8245b8126cd63444607ca74d2af761)
- Move IllegalConstructorMethodCallRule and IllegalConstructorStaticCallRule to phpstan-strict-rules (https://github.com/phpstan/phpstan-src/commit/124b30f98c182193187be0b9c2e151e477429b7a, https://github.com/phpstan/phpstan-strict-rules/commit/0c82c96f2a55d8b91bbc7ee6512c94f68a206b43)
- Check invalid PHPDocs in previously unchecked statement types (https://github.com/phpstan/phpstan-src/commit/9780d352f3264aac09ac7954f691de1877db8e01)
- InvalidPHPStanDocTagRule in StubValidator (https://github.com/phpstan/phpstan-src/commit/9c2552b7e744926d1a74c1ba8fd32c64079eed61)
- CallToConstructorStatementWithoutSideEffectsRule - report class with no constructor (https://github.com/phpstan/phpstan-src/commit/b116d25a6e4ba6c09f59af6569d9e6f6fd20aff4)
- ContainerFactory - always check duplicate files (https://github.com/phpstan/phpstan-src/commit/939a715a0636ed05752659dbe7646c1f1a574765)
- Display parent class name for anonymous class like native PHP does (#3362), thanks @mvorisek!
- Always report static property fetch in
isset()
, not just on PHP 8.2+ (#3476), thanks @ondrejmirtes! - Revert "Dumb down parameter types in some recently added stubs" (https://github.com/phpstan/phpstan-src/commit/950a491485c46068074ca3f4f6dc5b970d41465a)
- Do not apply heuristics of
Collection<...>|Foo[]
being resolved to Collection of Foo (https://github.com/phpstan/phpstan-src/commit/fff8f095988a66f298aa4037fe8e6ba98266063c) - Collected PHP errors cannot be ignored (https://github.com/phpstan/phpstan-src/commit/1d3f4313955dc6fa5c6ce60fa58afe765964e5b0)
- Added missing rules to StubValidator (https://github.com/phpstan/phpstan-src/commit/bf19914cac1682d0eab8bf65a874ba368522311c)
- Report precise offsets in errors (#3504), thanks @ruudk!
- IntersectionType - always describe list as list (https://github.com/phpstan/phpstan-src/commit/f680629bc92e4dd5d7acd3bc60c9539fb047452b)
- ArrayType::describe - explicit mixed should be stated explicitly (https://github.com/phpstan/phpstan-src/commit/6cf223840f89c972551f373ade9eea16d12e143b)
- Refactor IntersectionType::describe() (https://github.com/phpstan/phpstan-src/commit/67fbfaee6585c2d47485dc2a159ee76d3ed02b35)
- Remove inefficient caching from
PhpMethodReflection
andPhpFunctionReflection::isVariadic()
(#3534), thanks @staabm! - Clean file cache from unused items (https://github.com/phpstan/phpstan-src/commit/466ad51740d629c9137a77dac28a676b71ef7197)
- Journal for used generated containers (https://github.com/phpstan/phpstan-src/commit/57c65888e6372a4056afbbacc8207d411ea8559a)
- Use named argument in error for variadic types (#3611), thanks @ruudk!
🐛
Bugfixes - Fix invariance composition (#2054), thanks @jiripudil!
- Fix checking generic
mixed
type based on config (#2885), thanks @schlndh!
🤖
Function signature fixes - Countable stub with
0|positive-int
(#1027), thanks @staabm! - More precise types for bcmath function parameters (#2217), thanks @Warxcell!
- Specify
Imagick
parameter types (#2334), thanks @zonuexe! -
max()
/min()
should expect non-empty-array (#2163), thanks @staabm! - Narrow
Closure::bind
$newScope
param (#2817), thanks @mvorisek! -
error_log
errors withmessage_type=2
(#2428), #9380, thanks @staabm! - Update functionMap (#2699, #2783), thanks @zonuexe!
- Improve image related functions signature (#3127), thanks @thg2k!
- Support
FILE_NO_DEFAULT_CONTEXT
infile()
(#2482), thanks @staabm! - Fix ftp related function signatures (#2551), thanks @thg2k!
- More precise
file()
flags args (#2476, #2482), thanks @staabm! - More precise
flock()
operation flags (#2477), thanks @staabm! - More precise
stream_socket_client()
signature (#2519), thanks @staabm! - More precise
scandir()
signature (#2518), thanks @staabm! - More precise
extract()
signature (#2517), thanks @staabm! - More precise
RecursiveIteratorIterator::__construct()
parameter types (#2835), thanks @staabm! - Update
Locale
signatures (#2880), thanks @devnix! - Improved the type of the
$mode
parameter for thecount()
(#3190), thanks @kuma3! - Check
filter_input*
type param type (#2271), thanks @herndlm! - Change
curl_setopt
function signature based on 2nd arg (#1719), thanks @staabm! - Support returning an array or a string in
count_chars()
(#3596), thanks @u01jmg3! - xdebug_get_function_stack: fix signature (#3605), thanks @janedbal!
🔍
Internals - Tool to make optional parameters required across the codebase (https://github.com/phpstan/phpstan-src/commit/7e366e08f96e2e4095b3f02b5487e8f9531f37bf)
- A few more MutatingScope method parameters made required (https://github.com/phpstan/phpstan-src/commit/2c4c0cde75e637ac323e81def57d4a2ace952429)
- CommandHelper::begin() parameters made required (https://github.com/phpstan/phpstan-src/commit/f17cf9ec43111cb29dd50d620fb6259c0ab0d373)
- MethodTag - constructor parameter
$templateTags
is required (https://github.com/phpstan/phpstan-src/commit/5b58f83e6d8b5044d742caed9729d00178c4a9de) - InitializerExprTypeResolver - constructor parameter
$usePathConstantsAsConstantString
made required (https://github.com/phpstan/phpstan-src/commit/f88d9ba7f56ef6c3b783aee1c909a3422c0ef3c3) -
PhpMethodReflectionFactory::create()
- all parameters are required (https://github.com/phpstan/phpstan-src/commit/8bfbf8f254a68e4f1b15419eb950ea677fc2916e) - FunctionCallParametersCheck - parameters
$nodeType
and$acceptsNamedArguments
made required (https://github.com/phpstan/phpstan-src/commit/493752737c32eb878de4dfb91817761b952348e4) - MethodParameterComparisonHelper - parameter
$ignorable
ofcompare()
method made required (https://github.com/phpstan/phpstan-src/commit/f85a500288b0b8ef9a19d405c0e3d99ab57ce797) - Parameter
$dateTimeClass
of DateTimeModifyReturnTypeExtension constructor made required (https://github.com/phpstan/phpstan-src/commit/a8cd423e842deaa7d924580665207a4b1a373115) - NativeFunctionReflection construct parameters made required (https://github.com/phpstan/phpstan-src/commit/64ff598cd42268d2178d02efd208afe637060978)
- Cover AccessoryArrayListType constructor with BC promise (https://github.com/phpstan/phpstan-src/commit/51de9032c6e98bff2d6eb0e5b7295720ec0276b9)
- Add
PhpVersion
parameter to variousType
methods (#3478), thanks @VincentLanglet! - Move ContainerDynamicReturnTypeExtension to build/PHPStan (https://github.com/phpstan/phpstan-src/commit/5651bec661582b2d62de1b4ae9d5f27e69e3c524)
- Renamed NewOptimizedDirectorySourceLocator to OptimizedDirectorySourceLocator (https://github.com/phpstan/phpstan-src/commit/db02a30ca11c7b9839c30e0321ed403dd14f6c73)
- Remove unneded abstraction (https://github.com/phpstan/phpstan-src/commit/f302c9069274afa63ec1b4f313ca72340699e9d8)
- Introduce native return types thanks to PHP 7.4 return type covariance (https://github.com/phpstan/phpstan-src/commit/392f090066bfc9946b4ad524ffecf3d420c23114)
- ReadWritePropertiesExtension - use ExtendedPropertyReflection in parameter type (https://github.com/phpstan/phpstan-src/commit/f0a629685de2202687b9f92bd0e1a516daf2443e)
- Declare more precise
getClass()
return types in extension interfaces (#1754), thanks @staabm! - (https://github.com/phpstan/phpstan-src/commit/38cb5a315e5573231d8695df343c8ee87a8c3b2e)
- HasOffsetType - put constructor parameter type natively (https://github.com/phpstan/phpstan-src/commit/b5accb3f6bbcffc8a44934539b88903e09b6a174)
- Printer is covered by BC promise (https://github.com/phpstan/phpstan-src/commit/b0858332efc7aa2f2fde7544a2a821ba81bde13b)
- More interfaces that are not supposed to be implemented in userland (https://github.com/phpstan/phpstan-src/commit/778af2ed74ba59bfb2a69fd5b45821ccdb1107c9, https://github.com/phpstan/phpstan-src/commit/cb6ab5544a016c52f931fc390bcdf9c627819d8f)
- Refactored
FunctionCallParametersCheck::check()
parameters (https://github.com/phpstan/phpstan-src/commit/710e09c41698efb1d8d3ae31791944077dbb9cc1) - Spread list usages in Reflection, Scope, Type (#3530), thanks @janedbal!
- Remove $isFinal dead-code in PhpFunctionReflection (#3545), thanks @staabm!
- Get rid of unnecessary
instanceof self
inConstantArrayType
(#3552), thanks @herndlm! - test: use
bashunit -a
exit_code to check for errors (#3533), thanks @Chemaclass! - Upgrade bashunit:0.18.0 for e2e tests (#3614), thanks @Chemaclass!
- Remove dead code (#3575), thanks @staabm!
- Remove dead code in ConstantConditionRuleHelper (#3597), thanks @staabm!
v1.12.10
🐛
Bugfixes - ClassReflection: resolve missing template type to its default (if set) rather than bound (#3623), #11899, thanks @jiripudil!
- Fix
for
endless loop detection (#3622), #11992, thanks @herndlm! - Fix tagging Docker image (https://github.com/phpstan/phpstan/commit/379b9a230ededc558195620de0f31d251bbe6166)
v1.12.9
🔧
Improvements - Support
@readonly
PHPDoc on the class as alternative to@immutable
(#3523), #11775, thanks @herndlm!
🐛
Bugfixes - Fix too early lowercase-string inference (#3585), #11852, thanks @VincentLanglet!
- Support
for
endless loops (#3573), #6807, #8463, #9374, thanks @herndlm! - More precise types for
preg_match
greater than0
(#3612), #11293, thanks @staabm! - Too-wide return type - do not report void in PHPDoc union type (https://github.com/phpstan/phpstan-src/commit/5f0b1ccfa47060c209ead7116005214183c0e56f), #11980
- Too-wide return type - allow
void
return type in a union when the returned expr is originallyvoid
(https://github.com/phpstan/phpstan-src/commit/80c1df2d73210227776db5443dbc28c2d71fa289), #11980 - RichParser - fix
@phpstan-ignore
with trait in the same file (https://github.com/phpstan/phpstan-src/commit/381c1370e7ce3b1c2d8de6c5b30913908c362eb8), #11981
🔍
Internals - Result DTOs - make reasons unique (https://github.com/phpstan/phpstan-src/commit/ccfb4ab7a19151925b9434e3245892006b3d9dcd)
v1.12.8
🔧
Improvements - OffsetAccessValueAssignmentRule optimization for huge arrays (https://github.com/phpstan/phpstan-src/commit/a07996a9cad15c0c6e6e8fd57338236734a5c0dd)
- Fix performance issue with big appended arrays (https://github.com/phpstan/phpstan-src/commit/537c12c0c3f14371ceaf59051fc5445339857a97), #11913
- processAssignVar optimization for arrays (https://github.com/phpstan/phpstan-src/commit/16f63b3a48105ddce37d816e157f004fe9164cf9),
- Another micro optimization (https://github.com/phpstan/phpstan-src/commit/c04555b9387dea448a5649348546e9629063dda8)
- Optimization of huge unions of oversized arrays (https://github.com/phpstan/phpstan-src/commit/4dfbe16ed9cdf0808027f3bcbdb26980ec39df3f)
- Avoid new HasOffsetValueType being intersected with oversized array (https://github.com/phpstan/phpstan-src/commit/deef91983766dd61c18d4f9d819ffc94fb701cd5)
- Add ArrayFindFunctionReturnTypeExtension (PHP 8.4) (#3518, #3608), thanks @zonuexe!
🐛
Bugfixes - Do not transform
$this
in return type even in final classes (#3599), #11857, thanks @calebdw! - Exclude
E_DEPRECATED
from error_reporting (https://github.com/phpstan/phpstan-src/commit/277e34b23a43b7ff0cca0c141789d0a786690e9b), #11937 - More precise types in immediately invoked callables (#3593, #3602), #11561, #11945, thanks @staabm!
- Only use last for condition to filter scope (#3578), thanks @herndlm!
- Preserve correct UnionType subclass in
filterTypes()
(#3535), #11663, thanks @VincentLanglet!
🤖
Function signature fixes -
Imagick::writeImage(s)File
supportingformat
parameter (#3588), thanks @kingjia90!
🔍
Internals - Remove unnecessary
instanceof ConstantBooleanType
in loop analysis (#3577), #11913, thanks @herndlm! - NodeScopeResolver - refactoring before optimization (https://github.com/phpstan/phpstan-src/commit/1a0099dc61674ff1eb0ef8d68c90011f2206a64b)
- Add
@api
to TypeExpr (#3601), thanks @ruudk! - Split ArrayFilterFunctionReturnTypeExtension to Helper (#3606), thanks @zonuexe!
- Introduce
UnionType::filterTypes
(#3607), thanks @VincentLanglet!
v1.12.7
🚀
Major new features - Implement template default types (#3457), #4801, thanks @jiripudil!
🔧
Improvements - Move result cache output from debug (
-vvv
) to very verbose (-vv
) mode (#3345), thanks @janedbal! - Support for
non-empty-array
andnon-empty-list
array shape kind (https://github.com/phpstan/phpstan-src/commit/107a7e38e2173d8b8b4f18e5d592fc8ead02b96a) - Improve lowercase string verbosity level (#3567), thanks @VincentLanglet!
- Show TypeResult reasons in StrictComparisonOfDifferentTypesRule (https://github.com/phpstan/phpstan-src/commit/34bacd74410573cf79754348231849b474b7312e)
- Decorate reasons when comparing ConstantArrayType (https://github.com/phpstan/phpstan-src/commit/dc5d8f4d3eef18b1d80b8ffb3a1adfe8de6d7268), #11799, #10421
🐛
Bugfixes - Fix nextAutoIndexes in array coming from ArrayCombineFunctionReturnTypeExtension (https://github.com/phpstan/phpstan-src/commit/c4ba43462cecb03ef57805ffd683f77d57b79a4a), #11819
- Fix return type of
array_reverse()
with optional keys (#3406), #11549, thanks @herndlm! - Try to quit the child process only after internal errors were accounted for (https://github.com/phpstan/phpstan-src/commit/dcd69eba14ed57b32c2f1b759cd8289772f364ac), #11826
- react/http PHP 8.4 patch (https://github.com/phpstan/phpstan-src/commit/40e461d2e8dff171cdf588e380eb20e782e94eb1)
🤖
Function signature fixes - functionMap: more precise
get_defined_vars()
(#3546), thanks @janedbal! - Reflection
getAttributes
returnslist
(#3548), thanks @ManuelHu! - More precise md5/sha1 return type (#3541), thanks @staabm!
- Improve return type of token_name() and PhpToken::getTokenName() (#3558), #11808, thanks @zonuexe!
🔍
Internals - Fix typo (https://github.com/phpstan/phpstan-src/commit/5b43d5004648ded12d5a635db9bb82c56efc2c11)
- Introduce isSuperTypeOfWithReason (#3538), thanks @VincentLanglet!
- Add function
PHPStan\dumpPhpDocType()
(#3559), #11561, thanks @zonuexe! - Introduce TypeResult (https://github.com/phpstan/phpstan-src/commit/a815d575dc10616e510713e01627369b10980d31)
phpstan/phpstan-deprecation-rules (phpstan/phpstan-deprecation-rules)
v2.0.0
- 81833b5 - Removed always true PHP_VERSION_ID condition
- f4a969d - Merge branch '1.2.x' into 2.0.x
-
0ccccb1 -
selectSingle()
is being deprecated - 392bbe7 - Updates for PHPStan 2.0 changes
- 89572d5 - Merge branch '1.2.x' into 2.0.x
- 398e2e2 - Merge remote-tracking branch 'origin/1.2.x' into 2.0.x
- 4590cf6 - Update build-cs
- 681b2db - Stop testing PHP 7.2 and 7.3
- 0e1d78a - Open 2.0.x
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.