Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/5.x' into origin_master
Browse files Browse the repository at this point in the history
  • Loading branch information
danog committed Nov 26, 2023
2 parents 3926847 + b654545 commit 24735a0
Show file tree
Hide file tree
Showing 50 changed files with 2,207 additions and 341 deletions.
5 changes: 3 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ jobs:
command: bin/build-phar.sh
- run:
name: Smoke test Phar file
command: build/psalm.phar --version
# Change the root away from the project root to avoid conflicts with the Composer autoloader
command: build/psalm.phar --version --root build
- store_artifacts:
path: build/psalm.phar
- run:
Expand All @@ -63,7 +64,7 @@ jobs:
# The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass
resource_class: large
test-with-real-projects:
executor: php-81
executor: php-82
steps:
- checkout # used here just for the side effect of loading the github public ssh key so we can clone other stuff
- attach_workspace:
Expand Down
1 change: 1 addition & 0 deletions bin/test-with-real-projects.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ psl)
cd endtoend-test-psl
git checkout 2.3.x
composer install
sed 's/ErrorOutputBehavior::Packed, ErrorOutputBehavior::Discard/ErrorOutputBehavior::Discard/g' -i src/Psl/Shell/execute.php
"$PSALM" --monochrome -c config/psalm.xml
"$PSALM" --monochrome -c config/psalm.xml tests/static-analysis
;;
Expand Down
18 changes: 17 additions & 1 deletion bin/tests-github-actions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,23 @@ exit "$exit_code"'
mkdir -p build/parallel/ build/phpunit/logs/

find tests -name '*Test.php' | shuf --random-source=<(get_seeded_random) > build/tests_all
split --number="l/$chunk_number/$chunk_count" build/tests_all > build/tests_split
# split incorrectly splits the lines by byte size, which means that the number of tests per file are as evenly distributed as possible
#split --number="l/$chunk_number/$chunk_count" build/tests_all > build/tests_split
local -r lines=$(wc -l <build/tests_all)
local -r chunk_lines=$(( $lines / $chunk_count ))
local -r rest=$(( $lines % $chunk_count ))
local start_line
local end_line
if [[ $chunk_number -le $rest ]]
then
start_line=$(( ($chunk_number - 1) * $chunk_lines + $chunk_number ))
end_line=$(( $chunk_number * $chunk_lines + $chunk_number ))
else
start_line=$(( ($chunk_number - 1) * $chunk_lines + $rest + 1 ))
end_line=$(( $chunk_number * $chunk_lines + $rest ))
fi
awk "NR==$start_line,NR==$end_line" <build/tests_all > build/tests_split

parallel --group -j"$parallel_processes" --rpl {_}\ s/\\//_/g --joblog build/parallel/jobs.log "$phpunit_cmd" < build/tests_split
}

Expand Down
67 changes: 41 additions & 26 deletions dictionaries/CallMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@
'array_diff_ukey\'1' => ['array', 'array'=>'array', 'rest'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'],
'array_fill' => ['array<int,mixed>', 'start_index'=>'int', 'count'=>'int', 'value'=>'mixed'],
'array_fill_keys' => ['array', 'keys'=>'array', 'value'=>'mixed'],
'array_filter' => ['array', 'array'=>'array', 'callback='=>'callable(mixed,mixed=):scalar|null', 'mode='=>'int'],
'array_filter' => ['array', 'array'=>'array', 'callback='=>'callable(mixed,array-key=):mixed|null', 'mode='=>'int'],
'array_flip' => ['array<string|int>', 'array'=>'array<string|int>'],
'array_intersect' => ['array', 'array'=>'array', '...arrays='=>'array'],
'array_intersect_assoc' => ['array', 'array'=>'array', '...arrays='=>'array'],
Expand Down Expand Up @@ -7060,19 +7060,19 @@
'MongoDB\BSON\Binary::getType' => ['int'],
'MongoDB\BSON\Binary::__toString' => ['string'],
'MongoDB\BSON\Binary::serialize' => ['string'],
'MongoDB\BSON\Binary::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\Binary::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Binary::jsonSerialize' => ['mixed'],
'MongoDB\BSON\BinaryInterface::getData' => ['string'],
'MongoDB\BSON\BinaryInterface::getType' => ['int'],
'MongoDB\BSON\BinaryInterface::__toString' => ['string'],
'MongoDB\BSON\DBPointer::__toString' => ['string'],
'MongoDB\BSON\DBPointer::serialize' => ['string'],
'MongoDB\BSON\DBPointer::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\DBPointer::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\DBPointer::jsonSerialize' => ['mixed'],
'MongoDB\BSON\Decimal128::__construct' => ['void', 'value' => 'string'],
'MongoDB\BSON\Decimal128::__toString' => ['string'],
'MongoDB\BSON\Decimal128::serialize' => ['string'],
'MongoDB\BSON\Decimal128::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\Decimal128::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Decimal128::jsonSerialize' => ['mixed'],
'MongoDB\BSON\Decimal128Interface::__toString' => ['string'],
'MongoDB\BSON\Document::fromBSON' => ['MongoDB\BSON\Document', 'bson' => 'string'],
Expand All @@ -7084,13 +7084,17 @@
'MongoDB\BSON\Document::toPHP' => ['object|array', 'typeMap=' => '?array'],
'MongoDB\BSON\Document::toCanonicalExtendedJSON' => ['string'],
'MongoDB\BSON\Document::toRelaxedExtendedJSON' => ['string'],
'MongoDB\BSON\Document::offsetExists' => ['bool', 'offset' => 'mixed'],
'MongoDB\BSON\Document::offsetGet' => ['mixed', 'offset' => 'mixed'],
'MongoDB\BSON\Document::offsetSet' => ['void', 'offset' => 'mixed', 'value' => 'mixed'],
'MongoDB\BSON\Document::offsetUnset' => ['void', 'offset' => 'mixed'],
'MongoDB\BSON\Document::__toString' => ['string'],
'MongoDB\BSON\Document::serialize' => ['string'],
'MongoDB\BSON\Document::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\Document::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Int64::__construct' => ['void', 'value' => 'string|int'],
'MongoDB\BSON\Int64::__toString' => ['string'],
'MongoDB\BSON\Int64::serialize' => ['string'],
'MongoDB\BSON\Int64::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\Int64::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Int64::jsonSerialize' => ['mixed'],
'MongoDB\BSON\Iterator::current' => ['mixed'],
'MongoDB\BSON\Iterator::key' => ['string|int'],
Expand All @@ -7102,22 +7106,22 @@
'MongoDB\BSON\Javascript::getScope' => ['?object'],
'MongoDB\BSON\Javascript::__toString' => ['string'],
'MongoDB\BSON\Javascript::serialize' => ['string'],
'MongoDB\BSON\Javascript::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\Javascript::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Javascript::jsonSerialize' => ['mixed'],
'MongoDB\BSON\JavascriptInterface::getCode' => ['string'],
'MongoDB\BSON\JavascriptInterface::getScope' => ['?object'],
'MongoDB\BSON\JavascriptInterface::__toString' => ['string'],
'MongoDB\BSON\MaxKey::serialize' => ['string'],
'MongoDB\BSON\MaxKey::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\MaxKey::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\MaxKey::jsonSerialize' => ['mixed'],
'MongoDB\BSON\MinKey::serialize' => ['string'],
'MongoDB\BSON\MinKey::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\MinKey::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\MinKey::jsonSerialize' => ['mixed'],
'MongoDB\BSON\ObjectId::__construct' => ['void', 'id=' => '?string'],
'MongoDB\BSON\ObjectId::getTimestamp' => ['int'],
'MongoDB\BSON\ObjectId::__toString' => ['string'],
'MongoDB\BSON\ObjectId::serialize' => ['string'],
'MongoDB\BSON\ObjectId::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\ObjectId::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\ObjectId::jsonSerialize' => ['mixed'],
'MongoDB\BSON\ObjectIdInterface::getTimestamp' => ['int'],
'MongoDB\BSON\ObjectIdInterface::__toString' => ['string'],
Expand All @@ -7126,30 +7130,35 @@
'MongoDB\BSON\PackedArray::getIterator' => ['MongoDB\BSON\Iterator'],
'MongoDB\BSON\PackedArray::has' => ['bool', 'index' => 'int'],
'MongoDB\BSON\PackedArray::toPHP' => ['object|array', 'typeMap=' => '?array'],
'MongoDB\BSON\PackedArray::offsetExists' => ['bool', 'offset' => 'mixed'],
'MongoDB\BSON\PackedArray::offsetGet' => ['mixed', 'offset' => 'mixed'],
'MongoDB\BSON\PackedArray::offsetSet' => ['void', 'offset' => 'mixed', 'value' => 'mixed'],
'MongoDB\BSON\PackedArray::offsetUnset' => ['void', 'offset' => 'mixed'],
'MongoDB\BSON\PackedArray::__toString' => ['string'],
'MongoDB\BSON\PackedArray::serialize' => ['string'],
'MongoDB\BSON\PackedArray::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\PackedArray::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Persistable::bsonSerialize' => ['stdClass|MongoDB\BSON\Document|array'],
'MongoDB\BSON\Regex::__construct' => ['void', 'pattern' => 'string', 'flags=' => 'string'],
'MongoDB\BSON\Regex::getPattern' => ['string'],
'MongoDB\BSON\Regex::getFlags' => ['string'],
'MongoDB\BSON\Regex::__toString' => ['string'],
'MongoDB\BSON\Regex::serialize' => ['string'],
'MongoDB\BSON\Regex::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\Regex::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Regex::jsonSerialize' => ['mixed'],
'MongoDB\BSON\RegexInterface::getPattern' => ['string'],
'MongoDB\BSON\RegexInterface::getFlags' => ['string'],
'MongoDB\BSON\RegexInterface::__toString' => ['string'],
'MongoDB\BSON\Serializable::bsonSerialize' => ['object|array'],
'MongoDB\BSON\Serializable::bsonSerialize' => ['stdClass|MongoDB\BSON\Document|MongoDB\BSON\PackedArray|array'],
'MongoDB\BSON\Symbol::__toString' => ['string'],
'MongoDB\BSON\Symbol::serialize' => ['string'],
'MongoDB\BSON\Symbol::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\Symbol::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Symbol::jsonSerialize' => ['mixed'],
'MongoDB\BSON\Timestamp::__construct' => ['void', 'increment' => 'string|int', 'timestamp' => 'string|int'],
'MongoDB\BSON\Timestamp::getTimestamp' => ['int'],
'MongoDB\BSON\Timestamp::getIncrement' => ['int'],
'MongoDB\BSON\Timestamp::__toString' => ['string'],
'MongoDB\BSON\Timestamp::serialize' => ['string'],
'MongoDB\BSON\Timestamp::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\Timestamp::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Timestamp::jsonSerialize' => ['mixed'],
'MongoDB\BSON\TimestampInterface::getTimestamp' => ['int'],
'MongoDB\BSON\TimestampInterface::getIncrement' => ['int'],
Expand All @@ -7158,13 +7167,13 @@
'MongoDB\BSON\UTCDateTime::toDateTime' => ['DateTime'],
'MongoDB\BSON\UTCDateTime::__toString' => ['string'],
'MongoDB\BSON\UTCDateTime::serialize' => ['string'],
'MongoDB\BSON\UTCDateTime::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\UTCDateTime::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\UTCDateTime::jsonSerialize' => ['mixed'],
'MongoDB\BSON\UTCDateTimeInterface::toDateTime' => ['DateTime'],
'MongoDB\BSON\UTCDateTimeInterface::__toString' => ['string'],
'MongoDB\BSON\Undefined::__toString' => ['string'],
'MongoDB\BSON\Undefined::serialize' => ['string'],
'MongoDB\BSON\Undefined::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\BSON\Undefined::unserialize' => ['void', 'data' => 'string'],
'MongoDB\BSON\Undefined::jsonSerialize' => ['mixed'],
'MongoDB\BSON\Unserializable::bsonUnserialize' => ['void', 'data' => 'array'],
'MongoDB\Driver\BulkWrite::__construct' => ['void', 'options=' => '?array'],
Expand Down Expand Up @@ -7197,7 +7206,7 @@
'MongoDB\Driver\Cursor::valid' => ['bool'],
'MongoDB\Driver\CursorId::__toString' => ['string'],
'MongoDB\Driver\CursorId::serialize' => ['string'],
'MongoDB\Driver\CursorId::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\Driver\CursorId::unserialize' => ['void', 'data' => 'string'],
'MongoDB\Driver\CursorInterface::getId' => ['MongoDB\Driver\CursorId'],
'MongoDB\Driver\CursorInterface::getServer' => ['MongoDB\Driver\Server'],
'MongoDB\Driver\CursorInterface::isDead' => ['bool'],
Expand Down Expand Up @@ -7266,6 +7275,7 @@
'MongoDB\Driver\Monitoring\CommandSucceededEvent::getServer' => ['MongoDB\Driver\Server'],
'MongoDB\Driver\Monitoring\CommandSucceededEvent::getServiceId' => ['?MongoDB\BSON\ObjectId'],
'MongoDB\Driver\Monitoring\CommandSucceededEvent::getServerConnectionId' => ['?int'],
'MongoDB\Driver\Monitoring\LogSubscriber::log' => ['void', 'level' => 'int', 'domain' => 'string', 'message' => 'string'],
'MongoDB\Driver\Monitoring\SDAMSubscriber::serverChanged' => ['void', 'event' => 'MongoDB\Driver\Monitoring\ServerChangedEvent'],
'MongoDB\Driver\Monitoring\SDAMSubscriber::serverClosed' => ['void', 'event' => 'MongoDB\Driver\Monitoring\ServerClosedEvent'],
'MongoDB\Driver\Monitoring\SDAMSubscriber::serverOpening' => ['void', 'event' => 'MongoDB\Driver\Monitoring\ServerOpeningEvent'],
Expand Down Expand Up @@ -7308,18 +7318,18 @@
'MongoDB\Driver\ReadConcern::__construct' => ['void', 'level=' => '?string'],
'MongoDB\Driver\ReadConcern::getLevel' => ['?string'],
'MongoDB\Driver\ReadConcern::isDefault' => ['bool'],
'MongoDB\Driver\ReadConcern::bsonSerialize' => ['object|array'],
'MongoDB\Driver\ReadConcern::bsonSerialize' => ['stdClass'],
'MongoDB\Driver\ReadConcern::serialize' => ['string'],
'MongoDB\Driver\ReadConcern::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\Driver\ReadConcern::unserialize' => ['void', 'data' => 'string'],
'MongoDB\Driver\ReadPreference::__construct' => ['void', 'mode' => 'string|int', 'tagSets=' => '?array', 'options=' => '?array'],
'MongoDB\Driver\ReadPreference::getHedge' => ['?object'],
'MongoDB\Driver\ReadPreference::getMaxStalenessSeconds' => ['int'],
'MongoDB\Driver\ReadPreference::getMode' => ['int'],
'MongoDB\Driver\ReadPreference::getModeString' => ['string'],
'MongoDB\Driver\ReadPreference::getTagSets' => ['array'],
'MongoDB\Driver\ReadPreference::bsonSerialize' => ['object|array'],
'MongoDB\Driver\ReadPreference::bsonSerialize' => ['stdClass'],
'MongoDB\Driver\ReadPreference::serialize' => ['string'],
'MongoDB\Driver\ReadPreference::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\Driver\ReadPreference::unserialize' => ['void', 'data' => 'string'],
'MongoDB\Driver\Server::executeBulkWrite' => ['MongoDB\Driver\WriteResult', 'namespace' => 'string', 'bulkWrite' => 'MongoDB\Driver\BulkWrite', 'options=' => 'MongoDB\Driver\WriteConcern|array|null'],
'MongoDB\Driver\Server::executeCommand' => ['MongoDB\Driver\Cursor', 'db' => 'string', 'command' => 'MongoDB\Driver\Command', 'options=' => 'MongoDB\Driver\ReadPreference|array|null'],
'MongoDB\Driver\Server::executeQuery' => ['MongoDB\Driver\Cursor', 'namespace' => 'string', 'query' => 'MongoDB\Driver\Query', 'options=' => 'MongoDB\Driver\ReadPreference|array|null'],
Expand All @@ -7339,9 +7349,9 @@
'MongoDB\Driver\Server::isPrimary' => ['bool'],
'MongoDB\Driver\Server::isSecondary' => ['bool'],
'MongoDB\Driver\ServerApi::__construct' => ['void', 'version' => 'string', 'strict=' => '?bool', 'deprecationErrors=' => '?bool'],
'MongoDB\Driver\ServerApi::bsonSerialize' => ['object|array'],
'MongoDB\Driver\ServerApi::bsonSerialize' => ['stdClass'],
'MongoDB\Driver\ServerApi::serialize' => ['string'],
'MongoDB\Driver\ServerApi::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\Driver\ServerApi::unserialize' => ['void', 'data' => 'string'],
'MongoDB\Driver\ServerDescription::getHelloResponse' => ['array'],
'MongoDB\Driver\ServerDescription::getHost' => ['string'],
'MongoDB\Driver\ServerDescription::getLastUpdateTime' => ['int'],
Expand Down Expand Up @@ -7371,9 +7381,9 @@
'MongoDB\Driver\WriteConcern::getW' => ['string|int|null'],
'MongoDB\Driver\WriteConcern::getWtimeout' => ['int'],
'MongoDB\Driver\WriteConcern::isDefault' => ['bool'],
'MongoDB\Driver\WriteConcern::bsonSerialize' => ['object|array'],
'MongoDB\Driver\WriteConcern::bsonSerialize' => ['stdClass'],
'MongoDB\Driver\WriteConcern::serialize' => ['string'],
'MongoDB\Driver\WriteConcern::unserialize' => ['void', 'serialized' => 'string'],
'MongoDB\Driver\WriteConcern::unserialize' => ['void', 'data' => 'string'],
'MongoDB\Driver\WriteConcernError::getCode' => ['int'],
'MongoDB\Driver\WriteConcernError::getInfo' => ['?object'],
'MongoDB\Driver\WriteConcernError::getMessage' => ['string'],
Expand Down Expand Up @@ -10636,16 +10646,21 @@
'ReflectionProperty::__toString' => ['string'],
'ReflectionProperty::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
'ReflectionProperty::getDeclaringClass' => ['ReflectionClass'],
'ReflectionProperty::getDefaultValue' => ['mixed'],
'ReflectionProperty::getDocComment' => ['string|false'],
'ReflectionProperty::getModifiers' => ['int'],
'ReflectionProperty::getName' => ['string'],
'ReflectionProperty::getType' => ['?ReflectionType'],
'ReflectionProperty::getValue' => ['mixed', 'object='=>'null|object'],
'ReflectionProperty::hasDefaultValue' => ['bool'],
'ReflectionProperty::hasType' => ['bool'],
'ReflectionProperty::isDefault' => ['bool'],
'ReflectionProperty::isInitialized' => ['bool', 'object='=>'null|object'],
'ReflectionProperty::isPrivate' => ['bool'],
'ReflectionProperty::isPromoted' => ['bool'],
'ReflectionProperty::isProtected' => ['bool'],
'ReflectionProperty::isPublic' => ['bool'],
'ReflectionProperty::isReadonly' => ['bool'],
'ReflectionProperty::isStatic' => ['bool'],
'ReflectionProperty::setAccessible' => ['void', 'accessible'=>'bool'],
'ReflectionProperty::setValue' => ['void', 'object'=>'null|object', 'value'=>''],
Expand Down
1 change: 1 addition & 0 deletions dictionaries/CallMap_74_delta.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
return [
'added' => [
'ReflectionProperty::getType' => ['?ReflectionType'],
'ReflectionProperty::isInitialized' => ['bool', 'object'=>'object'],
'mb_str_split' => ['list<string>|false', 'string'=>'string', 'length='=>'positive-int', 'encoding='=>'string'],
'openssl_x509_verify' => ['int', 'certificate'=>'string|resource', 'public_key'=>'string|array|resource'],
],
Expand Down
11 changes: 9 additions & 2 deletions dictionaries/CallMap_80_delta.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
'ReflectionFunctionAbstract::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
'ReflectionParameter::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
'ReflectionProperty::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
'ReflectionProperty::getDefaultValue' => ['mixed'],
'ReflectionProperty::hasDefaultValue' => ['bool'],
'ReflectionProperty::isPromoted' => ['bool'],
'ReflectionUnionType::getTypes' => ['list<ReflectionNamedType>'],
'SplFixedArray::getIterator' => ['Iterator'],
'WeakMap::count' => ['int'],
Expand Down Expand Up @@ -424,6 +427,10 @@
'old' => ['mixed', 'object='=>'object'],
'new' => ['mixed', 'object='=>'null|object'],
],
'ReflectionProperty::isInitialized' => [
'old' => ['bool', 'object'=>'object'],
'new' => ['bool', 'object='=>'null|object'],
],
'SplFileInfo::getFileInfo' => [
'old' => ['SplFileInfo', 'class='=>'class-string'],
'new' => ['SplFileInfo', 'class='=>'?class-string'],
Expand Down Expand Up @@ -553,8 +560,8 @@
'new' => ['array', 'array'=>'array', '...arrays='=>'array'],
],
'array_filter' => [
'old' => ['array', 'array'=>'array', 'callback='=>'callable(mixed,mixed=):scalar', 'mode='=>'int'],
'new' => ['array', 'array'=>'array', 'callback='=>'callable(mixed,mixed=):scalar|null', 'mode='=>'int'],
'old' => ['array', 'array'=>'array', 'callback='=>'callable(mixed,array-key=):mixed', 'mode='=>'int'],
'new' => ['array', 'array'=>'array', 'callback='=>'callable(mixed,array-key=):mixed|null', 'mode='=>'int'],
],
'array_key_exists' => [
'old' => ['bool', 'key'=>'string|int', 'array'=>'array|object'],
Expand Down
1 change: 1 addition & 0 deletions dictionaries/CallMap_81_delta.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
'ReflectionFunctionAbstract::hasTentativeReturnType' => ['bool'],
'ReflectionFunctionAbstract::isStatic' => ['bool'],
'ReflectionObject::isEnum' => ['bool'],
'ReflectionProperty::isReadonly' => ['bool'],
'sodium_crypto_stream_xchacha20' => ['non-empty-string', 'length'=>'positive-int', 'nonce'=>'non-empty-string', 'key'=>'non-empty-string'],
'sodium_crypto_stream_xchacha20_keygen' => ['non-empty-string'],
'sodium_crypto_stream_xchacha20_xor' => ['string', 'message'=>'string', 'nonce'=>'non-empty-string', 'key'=>'non-empty-string'],
Expand Down
Loading

0 comments on commit 24735a0

Please sign in to comment.