Skip to content
Closed
162 changes: 162 additions & 0 deletions bin/functionMetadata_original.php
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,168 @@
'DateTimeImmutable::getTimestamp' => ['hasSideEffects' => false],
'DateTimeImmutable::getTimezone' => ['hasSideEffects' => false],

'Redis::append' => ['hasSideEffects' => true],
'Redis::bitcount' => ['hasSideEffects' => true],
'Redis::bitop' => ['hasSideEffects' => true],
'Redis::bitpos' => ['hasSideEffects' => true],
'Redis::blPop' => ['hasSideEffects' => true],
'Redis::blmove' => ['hasSideEffects' => true],
'Redis::blmpop' => ['hasSideEffects' => true],
'Redis::brPop' => ['hasSideEffects' => true],
'Redis::brpoplpush' => ['hasSideEffects' => true],
'Redis::bzmpop' => ['hasSideEffects' => true],
'Redis::bzPopMax' => ['hasSideEffects' => true],
'Redis::bzPopMin' => ['hasSideEffects' => true],
'Redis::connect' => ['hasSideEffects' => true],
'Redis::dbSize' => ['hasSideEffects' => true],
'Redis::decr' => ['hasSideEffects' => true],
'Redis::decrBy' => ['hasSideEffects' => true],
'Redis::del' => ['hasSideEffects' => true],
'Redis::delete' => ['hasSideEffects' => true],
'Redis::exists' => ['hasSideEffects' => true],
'Redis::expire' => ['hasSideEffects' => true],
'Redis::expireAt' => ['hasSideEffects' => true],
'Redis::expiretime' => ['hasSideEffects' => true],
'Redis::flushAll' => ['hasSideEffects' => true],
'Redis::flushDB' => ['hasSideEffects' => true],
'Redis::function' => ['hasSideEffects' => true],
'Redis::geoadd' => ['hasSideEffects' => true],
'Redis::geodist' => ['hasSideEffects' => true],
'Redis::geohash' => ['hasSideEffects' => true],
'Redis::geopos' => ['hasSideEffects' => true],
'Redis::georadius' => ['hasSideEffects' => true],
'Redis::georadiusbymember' => ['hasSideEffects' => true],
'Redis::georadiusbymember_ro' => ['hasSideEffects' => true],
'Redis::geosearch' => ['hasSideEffects' => true],
'Redis::geosearchstore' => ['hasSideEffects' => true],
'Redis::get' => ['hasSideEffects' => true],
'Redis::getBit' => ['hasSideEffects' => true],
'Redis::getEx' => ['hasSideEffects' => true],
'Redis::getDBNum' => ['hasSideEffects' => true],
'Redis::getDel' => ['hasSideEffects' => true],
'Redis::getLastError' => ['hasSideEffects' => true],
'Redis::getMode' => ['hasSideEffects' => true],
'Redis::getOption' => ['hasSideEffects' => true],
'Redis::getPersistentID' => ['hasSideEffects' => true],
'Redis::getRange' => ['hasSideEffects' => true],
'Redis::lcs' => ['hasSideEffects' => true],
'Redis::lmpop' => ['hasSideEffects' => true],
'Redis::getReadTimeout' => ['hasSideEffects' => true],
'Redis::getset' => ['hasSideEffects' => true],
'Redis::getTimeout' => ['hasSideEffects' => true],
'Redis::getTransferredBytes' => ['hasSideEffects' => true],
'Redis::hDel' => ['hasSideEffects' => true],
'Redis::hExists' => ['hasSideEffects' => true],
'Redis::hGet' => ['hasSideEffects' => true],
'Redis::hGetAll' => ['hasSideEffects' => true],
'Redis::hIncrBy' => ['hasSideEffects' => true],
'Redis::hIncrByFloat' => ['hasSideEffects' => true],
'Redis::hKeys' => ['hasSideEffects' => true],
'Redis::hLen' => ['hasSideEffects' => true],
'Redis::hMget' => ['hasSideEffects' => true],
'Redis::hMset' => ['hasSideEffects' => true],
'Redis::hRandField' => ['hasSideEffects' => true],
'Redis::hscan' => ['hasSideEffects' => true],
'Redis::hSet' => ['hasSideEffects' => true],
'Redis::hSetNx' => ['hasSideEffects' => true],
'Redis::hStrLen' => ['hasSideEffects' => true],
'Redis::hVals' => ['hasSideEffects' => true],
'Redis::incr' => ['hasSideEffects' => true],
'Redis::incrBy' => ['hasSideEffects' => true],
'Redis::incrByFloat' => ['hasSideEffects' => true],
'Redis::isConnected' => ['hasSideEffects' => true],
'Redis::keys' => ['hasSideEffects' => true],
'Redis::lastSave' => ['hasSideEffects' => true],
'Redis::lInsert' => ['hasSideEffects' => true],
'Redis::lLen' => ['hasSideEffects' => true],
'Redis::lMove' => ['hasSideEffects' => true],
'Redis::lPop' => ['hasSideEffects' => true],
'Redis::lPos' => ['hasSideEffects' => true],
'Redis::lPush' => ['hasSideEffects' => true],
'Redis::lPushx' => ['hasSideEffects' => true],
'Redis::lSet' => ['hasSideEffects' => true],
'Redis::lindex' => ['hasSideEffects' => true],
'Redis::lrange' => ['hasSideEffects' => true],
'Redis::lrem' => ['hasSideEffects' => true],
'Redis::ltrim' => ['hasSideEffects' => true],
'Redis::mget' => ['hasSideEffects' => true],
'Redis::move' => ['hasSideEffects' => true],
'Redis::mset' => ['hasSideEffects' => true],
'Redis::msetnx' => ['hasSideEffects' => true],
'Redis::pconnect' => ['hasSideEffects' => true],
'Redis::persist' => ['hasSideEffects' => true],
'Redis::pexpire' => ['hasSideEffects' => true],
'Redis::pexpireAt' => ['hasSideEffects' => true],
'Redis::pexpiretime' => ['hasSideEffects' => true],
'Redis::rpoplpush' => ['hasSideEffects' => true],
'Redis::rPush' => ['hasSideEffects' => true],
'Redis::rPushx' => ['hasSideEffects' => true],
'Redis::sAdd' => ['hasSideEffects' => true],
'Redis::sAddArray' => ['hasSideEffects' => true],
'Redis::scan' => ['hasSideEffects' => true],
'Redis::scard' => ['hasSideEffects' => true],
'Redis::script' => ['hasSideEffects' => true],
'Redis::sDiff' => ['hasSideEffects' => true],
'Redis::sDiffStore' => ['hasSideEffects' => true],
'Redis::set' => ['hasSideEffects' => true],
'Redis::setBit' => ['hasSideEffects' => true],
'Redis::setRange' => ['hasSideEffects' => true],
'Redis::setOption' => ['hasSideEffects' => true],
'Redis::setex' => ['hasSideEffects' => true],
'Redis::setnx' => ['hasSideEffects' => true],
'Redis::sInter' => ['hasSideEffects' => true],
'Redis::sintercard' => ['hasSideEffects' => true],
'Redis::sInterStore' => ['hasSideEffects' => true],
'Redis::sismember' => ['hasSideEffects' => true],
'Redis::sMembers' => ['hasSideEffects' => true],
'Redis::sMisMember' => ['hasSideEffects' => true],
'Redis::sMove' => ['hasSideEffects' => true],
'Redis::sPop' => ['hasSideEffects' => true],
'Redis::sort' => ['hasSideEffects' => true],
'Redis::sort_ro' => ['hasSideEffects' => true],
'Redis::sRandMember' => ['hasSideEffects' => true],
'Redis::srem' => ['hasSideEffects' => true],
'Redis::sscan' => ['hasSideEffects' => true],
'Redis::sUnion' => ['hasSideEffects' => true],
'Redis::sUnionStore' => ['hasSideEffects' => true],
'Redis::time' => ['hasSideEffects' => true],
'Redis::touch' => ['hasSideEffects' => true],
'Redis::ttl' => ['hasSideEffects' => true],
'Redis::type' => ['hasSideEffects' => true],
'Redis::unlink' => ['hasSideEffects' => true],
'Redis::zAdd' => ['hasSideEffects' => true],
'Redis::zCard' => ['hasSideEffects' => true],
'Redis::zCount' => ['hasSideEffects' => true],
'Redis::zdiff' => ['hasSideEffects' => true],
'Redis::zdiffstore' => ['hasSideEffects' => true],
'Redis::zIncrBy' => ['hasSideEffects' => true],
'Redis::zinter' => ['hasSideEffects' => true],
'Redis::zintercard' => ['hasSideEffects' => true],
'Redis::zinterstore' => ['hasSideEffects' => true],
'Redis::zLexCount' => ['hasSideEffects' => true],
'Redis::zmpop' => ['hasSideEffects' => true],
'Redis::zMscore' => ['hasSideEffects' => true],
'Redis::zPopMax' => ['hasSideEffects' => true],
'Redis::zPopMin' => ['hasSideEffects' => true],
'Redis::zRange' => ['hasSideEffects' => true],
'Redis::zRangeByLex' => ['hasSideEffects' => true],
'Redis::zRangeByScore' => ['hasSideEffects' => true],
'Redis::zrangestore' => ['hasSideEffects' => true],
'Redis::zRandMember' => ['hasSideEffects' => true],
'Redis::zRank' => ['hasSideEffects' => true],
'Redis::zRem' => ['hasSideEffects' => true],
'Redis::zRemRangeByLex' => ['hasSideEffects' => true],
'Redis::zRemRangeByRank' => ['hasSideEffects' => true],
'Redis::zRemRangeByScore' => ['hasSideEffects' => true],
'Redis::zRevRange' => ['hasSideEffects' => true],
'Redis::zRevRangeByLex' => ['hasSideEffects' => true],
'Redis::zRevRangeByScore' => ['hasSideEffects' => true],
'Redis::zRevRank' => ['hasSideEffects' => true],
'Redis::zscan' => ['hasSideEffects' => true],
'Redis::zScore' => ['hasSideEffects' => true],
'Redis::zunion' => ['hasSideEffects' => true],
'Redis::zunionstore' => ['hasSideEffects' => true],

'SplDoublyLinkedList::pop' => ['hasSideEffects' => true],
'SplDoublyLinkedList::shift' => ['hasSideEffects' => true],

Expand Down
2 changes: 0 additions & 2 deletions conf/config.neon
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,6 @@ parameters:
universalObjectCratesClasses:
- stdClass
stubFiles:
- ../stubs/Memcached.stub
- ../stubs/Redis.stub
- ../stubs/ReflectionAttribute.stub
- ../stubs/ReflectionClassConstant.stub
- ../stubs/ReflectionFunctionAbstract.stub
Expand Down
161 changes: 161 additions & 0 deletions resources/functionMetadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -452,6 +452,167 @@
'NumberFormatter::getPattern' => ['hasSideEffects' => false],
'NumberFormatter::getSymbol' => ['hasSideEffects' => false],
'NumberFormatter::getTextAttribute' => ['hasSideEffects' => false],
'Redis::append' => ['hasSideEffects' => true],
'Redis::bitcount' => ['hasSideEffects' => true],
'Redis::bitop' => ['hasSideEffects' => true],
'Redis::bitpos' => ['hasSideEffects' => true],
'Redis::blPop' => ['hasSideEffects' => true],
'Redis::blmove' => ['hasSideEffects' => true],
'Redis::blmpop' => ['hasSideEffects' => true],
'Redis::brPop' => ['hasSideEffects' => true],
'Redis::brpoplpush' => ['hasSideEffects' => true],
'Redis::bzPopMax' => ['hasSideEffects' => true],
'Redis::bzPopMin' => ['hasSideEffects' => true],
'Redis::bzmpop' => ['hasSideEffects' => true],
'Redis::connect' => ['hasSideEffects' => true],
'Redis::dbSize' => ['hasSideEffects' => true],
'Redis::decr' => ['hasSideEffects' => true],
'Redis::decrBy' => ['hasSideEffects' => true],
'Redis::del' => ['hasSideEffects' => true],
'Redis::delete' => ['hasSideEffects' => true],
'Redis::exists' => ['hasSideEffects' => true],
'Redis::expire' => ['hasSideEffects' => true],
'Redis::expireAt' => ['hasSideEffects' => true],
'Redis::expiretime' => ['hasSideEffects' => true],
'Redis::flushAll' => ['hasSideEffects' => true],
'Redis::flushDB' => ['hasSideEffects' => true],
'Redis::function' => ['hasSideEffects' => true],
'Redis::geoadd' => ['hasSideEffects' => true],
'Redis::geodist' => ['hasSideEffects' => true],
'Redis::geohash' => ['hasSideEffects' => true],
'Redis::geopos' => ['hasSideEffects' => true],
'Redis::georadius' => ['hasSideEffects' => true],
'Redis::georadiusbymember' => ['hasSideEffects' => true],
'Redis::georadiusbymember_ro' => ['hasSideEffects' => true],
'Redis::geosearch' => ['hasSideEffects' => true],
'Redis::geosearchstore' => ['hasSideEffects' => true],
'Redis::get' => ['hasSideEffects' => true],
'Redis::getBit' => ['hasSideEffects' => true],
'Redis::getDBNum' => ['hasSideEffects' => true],
'Redis::getDel' => ['hasSideEffects' => true],
'Redis::getEx' => ['hasSideEffects' => true],
'Redis::getLastError' => ['hasSideEffects' => true],
'Redis::getMode' => ['hasSideEffects' => true],
'Redis::getOption' => ['hasSideEffects' => true],
'Redis::getPersistentID' => ['hasSideEffects' => true],
'Redis::getRange' => ['hasSideEffects' => true],
'Redis::getReadTimeout' => ['hasSideEffects' => true],
'Redis::getTimeout' => ['hasSideEffects' => true],
'Redis::getTransferredBytes' => ['hasSideEffects' => true],
'Redis::getset' => ['hasSideEffects' => true],
'Redis::hDel' => ['hasSideEffects' => true],
'Redis::hExists' => ['hasSideEffects' => true],
'Redis::hGet' => ['hasSideEffects' => true],
'Redis::hGetAll' => ['hasSideEffects' => true],
'Redis::hIncrBy' => ['hasSideEffects' => true],
'Redis::hIncrByFloat' => ['hasSideEffects' => true],
'Redis::hKeys' => ['hasSideEffects' => true],
'Redis::hLen' => ['hasSideEffects' => true],
'Redis::hMget' => ['hasSideEffects' => true],
'Redis::hMset' => ['hasSideEffects' => true],
'Redis::hRandField' => ['hasSideEffects' => true],
'Redis::hSet' => ['hasSideEffects' => true],
'Redis::hSetNx' => ['hasSideEffects' => true],
'Redis::hStrLen' => ['hasSideEffects' => true],
'Redis::hVals' => ['hasSideEffects' => true],
'Redis::hscan' => ['hasSideEffects' => true],
'Redis::incr' => ['hasSideEffects' => true],
'Redis::incrBy' => ['hasSideEffects' => true],
'Redis::incrByFloat' => ['hasSideEffects' => true],
'Redis::isConnected' => ['hasSideEffects' => true],
'Redis::keys' => ['hasSideEffects' => true],
'Redis::lInsert' => ['hasSideEffects' => true],
'Redis::lLen' => ['hasSideEffects' => true],
'Redis::lMove' => ['hasSideEffects' => true],
'Redis::lPop' => ['hasSideEffects' => true],
'Redis::lPos' => ['hasSideEffects' => true],
'Redis::lPush' => ['hasSideEffects' => true],
'Redis::lPushx' => ['hasSideEffects' => true],
'Redis::lSet' => ['hasSideEffects' => true],
'Redis::lastSave' => ['hasSideEffects' => true],
'Redis::lcs' => ['hasSideEffects' => true],
'Redis::lindex' => ['hasSideEffects' => true],
'Redis::lmpop' => ['hasSideEffects' => true],
'Redis::lrange' => ['hasSideEffects' => true],
'Redis::lrem' => ['hasSideEffects' => true],
'Redis::ltrim' => ['hasSideEffects' => true],
'Redis::mget' => ['hasSideEffects' => true],
'Redis::move' => ['hasSideEffects' => true],
'Redis::mset' => ['hasSideEffects' => true],
'Redis::msetnx' => ['hasSideEffects' => true],
'Redis::pconnect' => ['hasSideEffects' => true],
'Redis::persist' => ['hasSideEffects' => true],
'Redis::pexpire' => ['hasSideEffects' => true],
'Redis::pexpireAt' => ['hasSideEffects' => true],
'Redis::pexpiretime' => ['hasSideEffects' => true],
'Redis::rPush' => ['hasSideEffects' => true],
'Redis::rPushx' => ['hasSideEffects' => true],
'Redis::rpoplpush' => ['hasSideEffects' => true],
'Redis::sAdd' => ['hasSideEffects' => true],
'Redis::sAddArray' => ['hasSideEffects' => true],
'Redis::sDiff' => ['hasSideEffects' => true],
'Redis::sDiffStore' => ['hasSideEffects' => true],
'Redis::sInter' => ['hasSideEffects' => true],
'Redis::sInterStore' => ['hasSideEffects' => true],
'Redis::sMembers' => ['hasSideEffects' => true],
'Redis::sMisMember' => ['hasSideEffects' => true],
'Redis::sMove' => ['hasSideEffects' => true],
'Redis::sPop' => ['hasSideEffects' => true],
'Redis::sRandMember' => ['hasSideEffects' => true],
'Redis::sUnion' => ['hasSideEffects' => true],
'Redis::sUnionStore' => ['hasSideEffects' => true],
'Redis::scan' => ['hasSideEffects' => true],
'Redis::scard' => ['hasSideEffects' => true],
'Redis::script' => ['hasSideEffects' => true],
'Redis::set' => ['hasSideEffects' => true],
'Redis::setBit' => ['hasSideEffects' => true],
'Redis::setOption' => ['hasSideEffects' => true],
'Redis::setRange' => ['hasSideEffects' => true],
'Redis::setex' => ['hasSideEffects' => true],
'Redis::setnx' => ['hasSideEffects' => true],
'Redis::sintercard' => ['hasSideEffects' => true],
'Redis::sismember' => ['hasSideEffects' => true],
'Redis::sort' => ['hasSideEffects' => true],
'Redis::sort_ro' => ['hasSideEffects' => true],
'Redis::srem' => ['hasSideEffects' => true],
'Redis::sscan' => ['hasSideEffects' => true],
'Redis::time' => ['hasSideEffects' => true],
'Redis::touch' => ['hasSideEffects' => true],
'Redis::ttl' => ['hasSideEffects' => true],
'Redis::type' => ['hasSideEffects' => true],
'Redis::unlink' => ['hasSideEffects' => true],
'Redis::zAdd' => ['hasSideEffects' => true],
'Redis::zCard' => ['hasSideEffects' => true],
'Redis::zCount' => ['hasSideEffects' => true],
'Redis::zIncrBy' => ['hasSideEffects' => true],
'Redis::zLexCount' => ['hasSideEffects' => true],
'Redis::zMscore' => ['hasSideEffects' => true],
'Redis::zPopMax' => ['hasSideEffects' => true],
'Redis::zPopMin' => ['hasSideEffects' => true],
'Redis::zRandMember' => ['hasSideEffects' => true],
'Redis::zRange' => ['hasSideEffects' => true],
'Redis::zRangeByLex' => ['hasSideEffects' => true],
'Redis::zRangeByScore' => ['hasSideEffects' => true],
'Redis::zRank' => ['hasSideEffects' => true],
'Redis::zRem' => ['hasSideEffects' => true],
'Redis::zRemRangeByLex' => ['hasSideEffects' => true],
'Redis::zRemRangeByRank' => ['hasSideEffects' => true],
'Redis::zRemRangeByScore' => ['hasSideEffects' => true],
'Redis::zRevRange' => ['hasSideEffects' => true],
'Redis::zRevRangeByLex' => ['hasSideEffects' => true],
'Redis::zRevRangeByScore' => ['hasSideEffects' => true],
'Redis::zRevRank' => ['hasSideEffects' => true],
'Redis::zScore' => ['hasSideEffects' => true],
'Redis::zdiff' => ['hasSideEffects' => true],
'Redis::zdiffstore' => ['hasSideEffects' => true],
'Redis::zinter' => ['hasSideEffects' => true],
'Redis::zintercard' => ['hasSideEffects' => true],
'Redis::zinterstore' => ['hasSideEffects' => true],
'Redis::zmpop' => ['hasSideEffects' => true],
'Redis::zrangestore' => ['hasSideEffects' => true],
'Redis::zscan' => ['hasSideEffects' => true],
'Redis::zunion' => ['hasSideEffects' => true],
'Redis::zunionstore' => ['hasSideEffects' => true],
'ReflectionAttribute::getArguments' => ['hasSideEffects' => false],
'ReflectionAttribute::getName' => ['hasSideEffects' => false],
'ReflectionAttribute::getTarget' => ['hasSideEffects' => false],
Expand Down
5 changes: 0 additions & 5 deletions src/Analyser/MutatingScope.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
use PHPStan\Php\PhpVersion;
use PHPStan\Php\PhpVersionFactory;
use PHPStan\Php\PhpVersions;
use PHPStan\PhpDoc\ResolvedPhpDocBlock;
use PHPStan\Reflection\Assertions;
use PHPStan\Reflection\AttributeReflection;
use PHPStan\Reflection\AttributeReflectionFactory;
Expand Down Expand Up @@ -1492,7 +1491,6 @@ public function enterClassMethod(
array $immediatelyInvokedCallableParameters = [],
array $phpDocClosureThisTypeParameters = [],
bool $isConstructor = false,
?ResolvedPhpDocBlock $resolvedPhpDocBlock = null,
): self
{
if (!$this->isInClass()) {
Expand Down Expand Up @@ -1522,7 +1520,6 @@ public function enterClassMethod(
$asserts ?? Assertions::createEmpty(),
$selfOutType,
$phpDocComment,
$resolvedPhpDocBlock,
array_map(fn (Type $type): Type => $this->transformStaticType(TemplateTypeHelper::toArgument($type)), $parameterOutTypes),
$immediatelyInvokedCallableParameters,
array_map(fn (Type $type): Type => $this->transformStaticType(TemplateTypeHelper::toArgument($type)), $phpDocClosureThisTypeParameters),
Expand All @@ -1546,7 +1543,6 @@ public function enterPropertyHook(
?string $deprecatedDescription,
bool $isDeprecated,
?string $phpDocComment,
?ResolvedPhpDocBlock $resolvedPhpDocBlock = null,
): self
{
if (!$this->isInClass()) {
Expand Down Expand Up @@ -1611,7 +1607,6 @@ public function enterPropertyHook(
Assertions::createEmpty(),
null,
$phpDocComment,
$resolvedPhpDocBlock,
[],
[],
[],
Expand Down
Loading
Loading