Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.10.57
->1.11.8
1.1.4
->1.2.0
1.3.15
->1.4.0
1.5.2
->1.6.0
Release Notes
phpstan/phpstan (phpstan/phpstan)
v1.11.8
Compare Source
Bleeding edge 🔪
var_export
without$return=true
(#3225), #11320, thanks @staabm!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
: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
Improvements 🔧
$matches
frompreg_match()
improvements:(\d*)
can be empty-string (#3257), thanks @staabm!diagnose
command to run DiagnoseExtensions (phpstan/phpstan-src@22c84d2)sprintf()
inference (#3232), thanks @staabm!-v
(#3239, #3242), thanks @janedbal!sprintf()
format arg-based return type (#3192), #11248, #10493, thanks @staabm!Bugfixes 🐛
pathinfo()
return type for union type flags (#3120), #10760, thanks @staabm!pow()
lead to error (#2796), #10125, thanks @staabm!Function signature fixes 🤖
Internals 🔍
@api
(#3240), thanks @janedbal!v1.11.7
Compare Source
Improvements 🔧
match
expression analysis with enum with performance in mind (phpstan/phpstan-src@b98abe0), #11263-vvv
CLI option.-vv
for unignorable errors when generating the baseline (phpstan/phpstan-src@d931c89), #3973MutatingScope::resolveType()
- cache closure body analysis data (phpstan/phpstan-src@fd31156), #11283Bugfixes 🐛
@no-named-arguments
above class (phpstan/phpstan-src@815270d), #11275count()
narrowing on $matches (#3210), #11277, thanks @staabm!Function signature fixes 🤖
getimagesize
,getimagesizefromstring
: zero is a possible value for height and width (#3207), thanks @mfruehauf!Internals 🔍
ObjectType::getEnumCases()
(#3203, #3204), #11263, thanks @staabm!v1.11.6
Compare Source
v1.11.5
Compare Source
Bleeding edge 🔪
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
: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
Improvements 🔧
Bugfixes 🐛
get_debug_type()
DynamicFunctionReturnTypeExtension (#3128), thanks @patrickkusebauch!Function signature fixes 🤖
gnupg_init()
options
parameter is optional (#3129), thanks @yphoenix!RedisCluster::__construct
signature (#3130), #11158, thanks @wolfgangzwiauer!AMQPQueue::unbind()
routingKey type (#3143), thanks @ben-challis!AMQPQueue::consume()
callback (#3144), #9445, thanks @ben-challis!IntlDateFormatter
methods (#3149), thanks @chosten!Exception::getTrace()
return type (phpstan/phpstan-src@492cd89)Internals 🔍
PrepareCommand::fixComposerJson()
(phpstan/phpstan-src@4537ef1)lint >=
andPHP_VERSION_ID
in NodeScopeResolverTest (phpstan/phpstan-src@b530b0d)TypeInferenceTestCase::gatherAssertTypesFromDirectory()
(phpstan/phpstan-src@595de78)v1.11.4
Compare Source
Improvements 🔧
--generate-baseline
combined with--pro
(phpstan/phpstan-src@dd028cb), #11093phpstan/extension-installer
v1.4 (phpstan/phpstan-src@1d005ef)Bugfixes 🐛
numeric-string
types after string concat (#3117), thanks @staabm!count()
(#2812), thanks @staabm!array_slice()
returnsnon-empty-array
for existing offsets and positive limit (#3124), #10721, thanks @staabm!ClosureType()
as maybe impure by default when no$impurePoints
array provided (#3125), #11135, thanks @jf-m!Function signature fixes 🤖
tempnam()
andtmpfile()
to benevolent union (#3111), thanks @zonuexe!gnupg_init
function (#3118), thanks @pistej!Internals 🔍
react/promise
(phpstan/phpstan-src@da754e2)v1.11.3
Compare Source
Improvements 🔧
*ParameterClosureTypeExtension
(#3089), thanks @canvural!get_debug_type
function (#2910), #10558, #10585, thanks @patrickkusebauch!explode
return type precision (#3096), thanks @staabm!Bugfixes 🐛
array_map
argument take into account unpack (#2901), #10527, thanks @ryium!parse_url
(#2918), #4754, thanks @ChrisBrenton!$http_response_header
is alist<string>
(#2959), thanks @Seldaek!str_repeat()
(#2914), #10572, thanks @staabm!in_array
is not strict (#2539), #9662, #10228, thanks @staabm!substr()
type narrowing for possibly single char result (#3081), #11035, #9804, thanks @staabm!$this
cannot be reassigned when passed by reference (#3097), #10477, thanks @takaram!constant('')
(#3013), #10867, thanks @staabm!Function signature fixes 🤖
SplFileObject::fgets()
(#3103), thanks @DanielSiepmann!Locale
signatures (#2880), #7855, #8149, thanks @devnix!fread()
length parameter type and return type (#3105), thanks @thg2k!non-falsy-string
(#3108), thanks @schlndh!Internals 🔍
TemplateTagValueNode::$name
cannot be empty string (phpstan/phpdoc-parser@fcaefac), thanks @staabm!v1.11.2
Compare Source
Improvements 🔧
@phpstan-ignore
identifiers parser (#3079, #3090, #3091), thanks @janedbal!@phpstan-ignore identifier (comment), identifier2 (comment2)
$passedToType
frominFunctionCallsStack
(phpstan/phpstan-src@ca41b7d, phpstan/phpstan-src@da4fd7a), #5508, #10254, #10732Function signature fixes 🤖
Internals 🔍
nette/di
(phpstan/phpstan-src@2ab647e)array_filter
callbacks (phpstan/phpstan-src@754b7b8)@api
annotation toAcceptsResult::__construct
(#3092), thanks @canvural!v1.11.1
Compare Source
Improvements 🔧
sprintf()
constant result inference (#3075), thanks @staabm!Bugfixes 🐛
impure(Function|Method).pure
if it has@phpstan-assert
tags (phpstan/phpstan-src@9544f8a)reportPossiblyNonexistentConstantArrayOffset: true
(phpstan/phpstan-src@5277630), #10997self
andstatic
in@phpstan-closure-this
from trait stub file (phpstan/phpstan-src@9340249), #11009Function signature fixes 🤖
uri
instream_get_meta_data
calls is always present on PHP 8.3+ (phpstan/phpstan-src@885d46b), #11024, #10999v1.11.0
Compare Source
Read the article about PHPStan 1.11 on phpstan.org »
Major new features 🚀
@phpstan-ignore
comment (uses current or next line automatically)ignoreErrors
section of your configuration file (phpstan.neon)-v
@phpstan-ignore-line
and@phpstan-ignore-next-line
to the new@phpstan-ignore
comment style with error identifiers. The old comment style is dangerous because it ignores all errors, current and future, on that line.ignoreErrors
, from your baseline and also ignored locally in source code using comments--pro
CLI option@param-immediately-invoked-callable
,@param-later-invoked-callable
@phpstan-pure
@param-closure-this
to describe what$this
is bound to in a passed closurereportPossiblyNonexistentGeneralArrayOffset
reportPossiblyNonexistentConstantArrayOffset
Bleeding edge 🔪
@phpstan-pure
above functions and methodsnew
/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@param-out
(phpstan/phpstan-src@56b2002)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
: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
Improvements 🔧
checkMissingIterableValueType: false
andcheckGenericClassInNonGenericObjectType: false
in favour of ignoring via identifiers (phpstan/phpstan-src@a649981)new
type (#3050), #9704, thanks @ruudk!RuleErrorBuilder::file()
- file path needs to exist (phpstan/phpstan-src@c453f29)$this
and used variables after invoking closure (#2980)@phan-
prefixes on recognized PHPDoc tags (#3000), thanks @anomiex!pure-callable
andpure-Closure
PHPDoc types (phpstan/phpstan-src@cdaff5f)highlight_string()
flips side-effects depending on $return (#3021), thanks @staabm!Bugfixes 🐛
AccessoryNonFalsyStringType::toInteger()
returnIntegerType
instead of non-zero (#3018), #10893, thanks @zonuexe!polluteScopeWithAlwaysIterableForeach
(#3029), #10922, thanks @VincentLanglet!count($x) > $n === true
negation (#3037), #10952, thanks @rvanvelzen!new
with wrong name case (phpstan/phpstan-src@59ac31a)preg_match_all
behaviour with no flags (phpstan/phpstan-src@a856ec7)file_get_contents
is an impure function (phpstan/phpstan-src@2b5b317)ClosureType::equals()
(phpstan/phpstan-src@29c35b5)exceptions.implicitThrows: false
(#3016), thanks @janedbal!ConstantArrayType::hasOffsetValueType()
for offset union type where all types are valid (phpstan/phpstan-src@26e949b)non-empty-list
always has offset 0 (phpstan/phpstan-src@f4d1d48)non-empty-string
/non-falsey-string
aftermb_strlen()
(#3038), thanks @staabm!Type::isOffsetAccessLegal()
to detect offset access that crashes even inisset()
(#3045), #8393, #10926, thanks @rajyan!match()
condition correctly (#3053), #10974, #9694, thanks @rvanvelzen!json_decode
with force array flag: subtract all objects, not just stdClass (#3052), thanks @rajyan!strlen($x) > $n === true
negation (#3040), thanks @staabm!Continue_
points should not be used forwhile (true)
(#3057), #10980, thanks @greew!Function signature fixes 🤖
stream_get_meta_data()
optional (#3024), #10887, thanks @hirokinoue!Closure::bind
$newScope
param (#2817), thanks @mvorisek!Imagick::identifyImage()
return type (#3017), thanks @SVillette!Internals 🔍
ClassReflection::getClassTypeDescription()
(phpstan/phpstan-src@dec9e43)RuleErrorBuilder::treatPhpDocTypesAsCertainTip()
for a bit more DRYness (#3035), thanks @axlon!v1.10.67
Compare Source
This is the last release, or one of the last releases, in 1.10.x series. The next one is going to be PHPStan 1.11, and it's going to be released at some point in May 2024.
Improvements 🔧
Bugfixes 🐛
date()
return types (#2888), #10468, #6613, thanks @zonuexe!get_defined_vars()
as using constructor arguments (#3012), #10865, thanks @rvanvelzen!Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, 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 was generated by Mend Renovate. View the repository job log.