From d3bb84e716ea5f05b968b425dcdfc4f457ca2458 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 2 May 2026 12:00:06 +0000 Subject: [PATCH 01/10] Add PHPStan baseline and Infection CI wiring Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/fccfdd39-43e1-400b-b2eb-96b78205f968 Co-authored-by: voku <264695+voku@users.noreply.github.com> --- .github/workflows/ci.yml | 10 +- infection.json.dist | 3 +- phpstan-baseline.neon | 2329 ++++++++++++++++++++++++++ phpstan-fixtures.neon | 12 + phpstan.neon | 3 + tests/Collection/StringTypeTest.php | 1 - tests/MetaPhpStanIntegrationTest.php | 2 +- tests/PHPStan/AnalyseTest.php | 6 +- 8 files changed, 2357 insertions(+), 9 deletions(-) create mode 100644 phpstan-baseline.neon create mode 100644 phpstan-fixtures.neon diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81458a22..b7b24bfb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: php-version: ${{ matrix.php }} coverage: xdebug extensions: zip - tools: composer + tools: composer${{ matrix.php == '8.3' && matrix.composer == 'basic' && ', infection:0.32.7' || '' }} - name: Determine composer cache directory id: composer-cache @@ -67,11 +67,15 @@ jobs: php vendor/bin/phpunit -c phpunit.xml.dist --coverage-clover=build/logs/clover.xml - name: Run phpstan - continue-on-error: true - if: ${{ matrix.php == '8.0' }} + if: ${{ matrix.php == '8.3' && matrix.composer == 'basic' }} run: | php vendor/bin/phpstan analyse + - name: Run Infection + if: ${{ matrix.php == '8.3' && matrix.composer == 'basic' }} + run: | + infection --threads=max --min-msi=0 --min-covered-msi=0 --no-progress + - name: Upload coverage results to Coveralls env: COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/infection.json.dist b/infection.json.dist index 7b38b1fe..765f7514 100644 --- a/infection.json.dist +++ b/infection.json.dist @@ -8,8 +8,9 @@ "phpUnit": { "customPath": "vendor\/bin\/phpunit" }, + "staticAnalysisTool": "phpstan", "tmpDir": "build/infection/", "logs": { "text": "infection-log.txt" } -} \ No newline at end of file +} diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 00000000..da1c481b --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,2329 @@ +parameters: + ignoreErrors: + - + message: '#^Method Arrayy\\Arrayy\:\:offsetGet\(\) should return T\|null but returns Arrayy\\Arrayy\<\(int\|string\), T, array\\>\|T\|null\.$#' + identifier: return.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\<\(int&T\)\|\(string&T\), int\<1, max\>\> given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 4 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|string\), T\> given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 21 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|T of mixed\> given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|T\> given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 9 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\>\)\|T\> given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|\(Arrayy\\Arrayy&T\)\|\(object&T of mixed\)\|string\> given\.$#' + identifier: argument.type + count: 2 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|T\> given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 2 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|T\> given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\{T\} given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\{static\(Arrayy\\Arrayy\\>\), static\(Arrayy\\Arrayy\\>\)\} given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\{\} given\.$#' + identifier: argument.type + count: 11 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\{\}\|array\{T\} given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, list\ given\.$#' + identifier: argument.type + count: 5 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, list\\> given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, list\\|static\(Arrayy\\Arrayy\\>\) given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, list\ given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, non\-empty\-array\ given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, non\-empty\-list\<\(float\|int\|string\)\> given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$key of method Arrayy\\Arrayy\\>\:\:__get\(\) expects TKey of \(int\|string\), TOffset of TKey of \(int\|string\) given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$object of method Arrayy\\Arrayy\\>\:\:extractValue\(\) expects Arrayy\\Arrayy\\>, TKey of \(int\|string\) given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#2 \$value of method Arrayy\\Arrayy\\>\:\:internalSet\(\) expects T, array\|T given\.$#' + identifier: argument.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter &\$currentOffset by\-ref type of method Arrayy\\Arrayy\:\:callAtPath\(\) expects array\\|null, array\\|T\|null\> given\.$#' + identifier: parameterByRef.type + count: 1 + path: src/Arrayy.php + + - + message: '#^Possibly invalid array key type float\|int\|string\|null\.$#' + identifier: offsetAccess.invalidOffset + count: 1 + path: src/Arrayy.php + + - + message: '#^Property Arrayy\\Arrayy\\>\:\:\$array \(array\\) does not accept array\\|T\>\.$#' + identifier: assign.propertyType + count: 1 + path: src/Arrayy.php + + - + message: '#^Unable to resolve the template type TAccessKey in call to method Arrayy\\Arrayy\\>\:\:__get\(\)$#' + identifier: argument.templateType + count: 1 + path: src/Arrayy.php + + - + message: '#^Parameter \#1 \$value of method Arrayy\\Arrayy\\>\:\:add\(\) expects T, class\-string\|object given\.$#' + identifier: argument.type + count: 2 + path: src/Collection/AbstractCollection.php + + - + message: '#^Function Arrayy\\create\(\) should return Arrayy\\Arrayy\\> but returns Arrayy\\Arrayy\<\(int\|string\), mixed, array\\>\.$#' + identifier: return.type + count: 1 + path: src/Create.php + + - + message: '#^Argument of an invalid type iterable\|object supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: src/Mapper/Json.php + + - + message: '#^Call to function is_callable\(\) with callable\(\)\: mixed will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Mapper/Json.php + + - + message: '#^Method Arrayy\\Mapper\\Json\:\:inspectProperty\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: src/Mapper/Json.php + + - + message: '#^Method Arrayy\\Mapper\\Json\:\:map\(\) has parameter \$json with no value type specified in iterable type iterable\.$#' + identifier: missingType.iterableValue + count: 1 + path: src/Mapper/Json.php + + - + message: '#^Method Arrayy\\Mapper\\Json\:\:mapArray\(\) has parameter \$json with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: src/Mapper/Json.php + + - + message: '#^Method Arrayy\\Mapper\\Json\:\:parseAnnotations\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: src/Mapper/Json.php + + - + message: '#^PHPDoc tag @var with type TClass is not subtype of native type object\.$#' + identifier: varTag.nativeType + count: 1 + path: src/Mapper/Json.php + + - + message: '#^PHPDoc tag @var with type TObject is not subtype of native type object\.$#' + identifier: varTag.nativeType + count: 1 + path: src/Mapper/Json.php + + - + message: '#^Property Arrayy\\Mapper\\Json\:\:\$arInspectedClasses type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: src/Mapper/Json.php + + - + message: '#^Property Arrayy\\Mapper\\Json\:\:\$classMap type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: src/Mapper/Json.php + + - + message: '#^Function is_a\(\) is a runtime reflection concept that might not work in PHPStan because it uses fully static reflection engine\. Use objects retrieved from ReflectionProvider instead\.$#' + identifier: phpstanApi.runtimeReflection + count: 1 + path: src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php + + - + message: '#^Call to function is_array\(\) with array\ will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Type/DetectFirstValueTypeCollection.php + + - + message: '#^Method Arrayy\\TypeCheck\\TypeCheckCallback\:\:getTypes\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: src/TypeCheck/TypeCheckCallback.php + + - + message: '#^Method Arrayy\\TypeCheck\\TypeCheckPhpDoc\:\:getScalarPseudoTypeClasses\(\) should return list\ but returns array\{\}\|array\{''\\\\phpDocumentor…''\}\|array\{0\: ''\\\\phpDocumentor…'', 1\?\: ''\\\\phpDocumentor…''\}\.$#' + identifier: return.type + count: 1 + path: src/TypeCheck/TypeCheckPhpDoc.php + + - + message: '#^Property Arrayy\\TypeCheck\\TypeCheckPhpDoc\:\:\$hasTypeDeclaration is never read, only written\.$#' + identifier: property.onlyWritten + count: 1 + path: src/TypeCheck/TypeCheckPhpDoc.php + + - + message: '#^Method Arrayy\\tests\\Account\:\:__construct\(\) has parameter \$accountName with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: tests/Account.php + + - + message: '#^Call to function assert\(\) with true will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 2 + path: tests/ArrayyTest.php + + - + message: '#^Call to function is_array\(\) with non\-empty\-list\ will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 2 + path: tests/ArrayyTest.php + + - + message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertFalse\(\) with false will always evaluate to true\.$#' + identifier: staticMethod.alreadyNarrowedType + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Cannot call method customSortValues\(\) on list\\|null\.$#' + identifier: method.nonObject + count: 2 + path: tests/ArrayyTest.php + + - + message: '#^Cannot call method getArray\(\) on array\\|null\.$#' + identifier: method.nonObject + count: 2 + path: tests/ArrayyTest.php + + - + message: '#^Comparison operation "\<" between int\<80000, 80599\> and 70400 is always false\.$#' + identifier: smaller.alwaysFalse + count: 2 + path: tests/ArrayyTest.php + + - + message: '#^Comparison operation "\>\=" between int\<80000, 80599\> and 80000 is always true\.$#' + identifier: greaterOrEqual.alwaysTrue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:appendProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:appendToEachKeyProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:appendToEachValueProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) has parameter \$resultArray with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:assertMutable\(\) has parameter \$resultArray with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:averageProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:cleanProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsCaseInsensitiveProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsCaseInsensitiveProviderRecursive\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsOnlyProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsProviderRecursive\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:countProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:countProviderRecursive\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:diffKeyAndValueProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:diffKeyProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:diffProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:diffReverseProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:fillWithDefaultsProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:findKeyProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:findProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:firstProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:firstsProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:getProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:hasProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:implodeKeysProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:implodeProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:initialProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:isAssocProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:isMultiArrayProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:lastProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:matchesAnyProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:matchesProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:maxProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:mergeAppendKeepIndexProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:mergeAppendNewIndexProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:mergePrependKeepIndexProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:mergePrependNewIndexProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:minProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:prependProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:prependToEachKeyProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:prependToEachValueProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:randomProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:randomWeightedProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:reduceDimensionProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeFirstProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeLastProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeV2Provider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeValueProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:restProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:reverseProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:searchIndexProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:searchValueProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:setAndGetProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:setProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:simpleArrayProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:sortKeysProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:stringWithSeparatorProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppend\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppend\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppendToEachKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppendToEachKey\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppendToEachValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppendToEachValue\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAverage\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testChunk\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testClean\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testClean\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testClear\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContains\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContainsCaseInsensitive\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContainsCaseInsensitiveRecursive\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContainsOnly\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContainsRecursive\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCount\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCountRecursive\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCustomSort\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCustomSortImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCustomSortKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDeleteKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiff\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiff\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiff\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKey\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKey\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKeyAndValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKeyAndValue\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKeyAndValue\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffWith\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFillWithDefaults\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFillWithDefaults\(\) has parameter \$expected with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFind\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFindKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFirst\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFirst\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFirsts\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFirsts\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testGetGetBackwardsGenerator\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testGetV2\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testGetValuesYield\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testHas\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testImplode\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testImplodeKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testInitial\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testInitial\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testIsAssoc\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testLast\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testLast\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMap\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMatches\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMatchesAny\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMatchesAny\(\) has parameter \$search with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMax\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendKeepIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendKeepIndex\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendKeepIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendNewIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendNewIndex\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendNewIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependKeepIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependKeepIndex\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependKeepIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependNewIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependNewIndex\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependNewIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependNewIndexV2\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeToRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeWith\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeWithRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMin\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testNatcasesort\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testNatcasesortImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testNatsort\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testNatsortImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testOffsetNullSet\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testOffsetSet\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testOffsetUnset\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPad\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPop\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrepend\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrepend\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrependToEachKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrependToEachKey\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrependToEachValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrependToEachValue\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPush\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRandom\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRandomWeighted\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReduceDimension\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReduceDimension\(\) has parameter \$expected with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReindex\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemove\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemove\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveFirst\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveFirst\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveLast\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveLast\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveV2\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveV2\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveValue\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReplaceIn\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReplaceInRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReplaceWith\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReplaceWithRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRest\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRest\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReverse\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReverse\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSearchIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSearchValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSearchValue\(\) has parameter \$expected with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSet\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSetAndGet\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testShift\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSlice\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortAscWithPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortAscWithoutPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortDescWithPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortDescWithoutPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortImmutableDescWithPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortKeys\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortKeysAsc\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortKeysDesc\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreate\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreateFromGeneratorFunctionFromArray\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreateFromGeneratorImmutableFromArray\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreateFromJson\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreateFromObject\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestdiffReverse\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestdiffReverse\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestdiffReverse\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestgetValues\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestisMultiArray\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testToString\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUasort\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUasortImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUnique\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUnique\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUniqueKeepIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUniqueKeepIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUnshift\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testWalk\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testWalkRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:toStringProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:uniqueProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Method Arrayy\\tests\\ArrayyTest\:\:uniqueProviderKeepIndex\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Offset ''b\.1'' on array\{0\: ''a'', b\: array\{\}\} in isset\(\) does not exist\.$#' + identifier: isset.offset + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Offset ''group'' might not exist on array\{id\: int, name\: string, group\: string, value\: int, when\: string\}\|null\.$#' + identifier: offsetAccess.notFound + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Offset ''lastname'' might not exist on array\{lastname\: string\}\|null\.$#' + identifier: offsetAccess.notFound + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Offset ''value'' might not exist on array\{id\: int, name\: string, group\: string, value\: int, when\: string\}\|null\.$#' + identifier: offsetAccess.notFound + count: 3 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\> given\.$#' + identifier: argument.type + count: 20 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{1\: string, 2\: string, 3\: string\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{3\: int, 4\: int\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{int, int\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{recipe\: string, 0\: string, 1\: string, 2\: string\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{three\: int, one\: int, two\: int\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, non\-empty\-list\\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertMutable\(\) expects Arrayy\\Arrayy\<\(int\|string\), mixed, array\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{int, int\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\> given\.$#' + identifier: argument.type + count: 19 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{1\: string, 2\: string, 3\: string\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{3\: int, 4\: int\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{int, int\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{three\: int, one\: int, two\: int\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertMutable\(\) expects Arrayy\\Arrayy\<\(int\|string\), mixed, array\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{int, int\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Strict comparison using \!\=\= between 2 and 0 will always evaluate to true\.$#' + identifier: notIdentical.alwaysTrue + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Unreachable statement \- code above always terminates\.$#' + identifier: deadCode.unreachable + count: 1 + path: tests/ArrayyTest.php + + - + message: '#^Call to function assert\(\) with true will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Call to function is_array\(\) with non\-empty\-list\ will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array\ will always evaluate to true\.$#' + identifier: staticMethod.alreadyNarrowedType + count: 8 + path: tests/BasicArrayTest.php + + - + message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array\{\} will always evaluate to true\.$#' + identifier: staticMethod.alreadyNarrowedType + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\) with \(int\|string\) will always evaluate to true\.$#' + identifier: staticMethod.alreadyNarrowedType + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#' + identifier: staticMethod.alreadyNarrowedType + count: 2 + path: tests/BasicArrayTest.php + + - + message: '#^Generic type Arrayy\\Arrayy\<\(int\|string\), mixed\> in PHPDoc tag @param for parameter \$arrayy does not specify all template types of class Arrayy\\Arrayy\: TKey, T, TData$#' + identifier: generics.lessTypes + count: 2 + path: tests/BasicArrayTest.php + + - + message: '#^Generic type Arrayy\\Arrayy\<\(int\|string\), mixed\> in PHPDoc tag @param for parameter \$resultArrayy does not specify all template types of class Arrayy\\Arrayy\: TKey, T, TData$#' + identifier: generics.lessTypes + count: 2 + path: tests/BasicArrayTest.php + + - + message: '#^Generic type Arrayy\\Arrayy\<\(int\|string\), mixed\> in PHPDoc tag @return does not specify all template types of class Arrayy\\Arrayy\: TKey, T, TData$#' + identifier: generics.lessTypes + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Instanceof between Arrayy\\Arrayy\<\(int\|string\), mixed\> and Arrayy\\Arrayy will always evaluate to true\.$#' + identifier: instanceof.alwaysTrue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:assertImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:assertImmutable\(\) has parameter \$resultArray with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:assertMutable\(\) has parameter \$resultArray with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:createArrayy\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:createArrayy\(\) should return Arrayy\\Arrayy\<\(int\|string\), mixed\> but returns Arrayy\\Arrayy\<\(int\|string\), mixed, array\\>\.$#' + identifier: return.type + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:simpleArrayProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:stringWithSeparatorProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testArrayyFirst\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testArrayyLast\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testContains\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testContainsKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testCount\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testCurrent\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testDebugReturn\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testExists\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstImmutableInLoop\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstInLoop\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstMutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetObject\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandom\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomKeysShouldReturnArray\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomValueSingle\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomValues\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomValuesSingle\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testIndexOf\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testIsAssoc\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testIsEmpty\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testIsNumeric\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testLast\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testLastKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testMostUsedValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testMostUsedValues\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testNext\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testOffsetExists\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testOffsetGet\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testPrevious\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testReIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testToJson\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/BasicArrayTest.php + + - + message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#' + identifier: staticMethod.alreadyNarrowedType + count: 1 + path: tests/Collection/BoolTypeTest.php + + - + message: '#^Call to function assert\(\) with true will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: tests/Collection/CollectionTest.php + + - + message: '#^Cannot access property \$city on Arrayy\\tests\\UserData\|null\.$#' + identifier: property.nonObject + count: 4 + path: tests/Collection/CollectionTest.php + + - + message: '#^Cannot access property \$firstName on Arrayy\\tests\\UserData\|null\.$#' + identifier: property.nonObject + count: 2 + path: tests/Collection/CollectionTest.php + + - + message: '#^Instanceof between Arrayy\\Arrayy\<\(int\|string\), mixed, array\> and Arrayy\\Arrayy will always evaluate to true\.$#' + identifier: instanceof.alwaysTrue + count: 1 + path: tests/Collection/CollectionTest.php + + - + message: '#^Instanceof between Arrayy\\tests\\ModelInterface and Arrayy\\tests\\ModelInterface will always evaluate to true\.$#' + identifier: instanceof.alwaysTrue + count: 1 + path: tests/Collection/CollectionTest.php + + - + message: '#^Class Arrayy\\tests\\Collection\\StdBaseClassCollection @extends tag contains unresolvable type\.$#' + identifier: generics.unresolvable + count: 1 + path: tests/Collection/StdBaseClassCollection.php + + - + message: '#^Arrayy\\Type\\StringCollection does not accept float\.$#' + identifier: offsetAssign.valueType + count: 1 + path: tests/Collection/StringTypeTest.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\Type\\StringCollection constructor expects array\\|Arrayy\\Arrayy\<\(int\|string\), string, array\\>, array\{''A'', ''B'', ''C'', 1\} given\.$#' + identifier: argument.type + count: 1 + path: tests/Collection/StringTypeTest.php + + - + message: '#^Parameter \#2 \$iteratorClass of class Arrayy\\Collection\\Collection constructor expects class\-string\\>\|null, array\{stdClass, ''A''\} given\.$#' + identifier: argument.type + count: 1 + path: tests/Collection/TypeTypeTest.php + + - + message: '#^Parameter \#1 \$closure of method Arrayy\\Arrayy\<\(int\|string\),Arrayy\\tests\\UserData,array\\>\:\:filter\(\) expects \(Closure\(int\|string\)\: bool\)\|null, Closure\(Arrayy\\tests\\UserData\)\: bool given\.$#' + identifier: argument.type + count: 1 + path: tests/Collection/TypesTest.php + + - + message: '#^Parameter \#1 \$closure of method Arrayy\\Arrayy\<\(int\|string\),Arrayy\\tests\\Account,array\\>\:\:each\(\) expects Closure\(Arrayy\\tests\\Account, int\|string\|null\)\: Arrayy\\tests\\Account, Closure\(Arrayy\\tests\\Account\)\: void given\.$#' + identifier: argument.type + count: 1 + path: tests/JsonMapperTest.php + + - + message: '#^Parameter \#1 \$json of static method Arrayy\\Arrayy\<\(int\|string\),mixed,array\\>\:\:createFromJsonMapper\(\) expects string, string\|false given\.$#' + identifier: argument.type + count: 1 + path: tests/JsonMapperTest.php + + - + message: '#^Method Arrayy\\tests\\ModelA\:\:__construct\(\) has parameter \$array with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/ModelA.php + + - + message: '#^Call to function is_scalar\(\) with bool\|float\|int\|string will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: tests/PHPStan/AnalyseTest.php + + - + message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#' + identifier: staticMethod.alreadyNarrowedType + count: 2 + path: tests/PHPStan/AnalyseTest.php + + - + message: '#^Cannot call method getArray\(\) on string\.$#' + identifier: method.nonObject + count: 3 + path: tests/PHPStan/AnalyseTest.php + + - + message: '#^Right side of \|\| is always true\.$#' + identifier: booleanOr.rightAlwaysTrue + count: 1 + path: tests/PHPStan/AnalyseTest.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\tests\\PHPStan\\ArrayShapeUser constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: string, lastName\: string, city\?\: Arrayy\\tests\\PHPStan\\ArrayShapeCity\|null\}\)\|null, array\{id\: ''wrong'', firstName\: ''Lars'', lastName\: ''Moelleken''\} given\.$#' + identifier: argument.type + count: 1 + path: tests/PHPStan/ArrayShapeInvalidUsage.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\tests\\PHPStan\\ArrayShapeUser constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: string, lastName\: string, city\?\: Arrayy\\tests\\PHPStan\\ArrayShapeCity\|null\}\)\|null, array\{id\: 1, firstName\: ''Lars''\} given\.$#' + identifier: argument.type + count: 1 + path: tests/PHPStan/ArrayShapeInvalidUsage.php + + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>,value\-of\\>,array\\>\:\:create\(\) expects array\{id\: int, firstName\: string, lastName\: string, city\?\: Arrayy\\tests\\PHPStan\\ArrayShapeCity\|null\}\|bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|null, array\{id\: ''wrong'', firstName\: ''Lars'', lastName\: ''Moelleken''\} given\.$#' + identifier: argument.type + count: 1 + path: tests/PHPStan/ArrayShapeInvalidUsage.php + + - + message: '#^Access to an undefined property object\{id\: string, firstName\: string, lastName\: string, city\: string\}\:\:\$ghost\.$#' + identifier: property.notFound + count: 1 + path: tests/PHPStan/MetaInvalidUsage.php + + - + message: '#^Parameter \#1 \$string of function strlen expects string, int\|null given\.$#' + identifier: argument.type + count: 1 + path: tests/PHPStan/MetaInvalidUsage.php + + - + message: '#^Call to an undefined method phpDocumentor\\Reflection\\DocBlock\\Tag\:\:getBound\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Call to an undefined method phpDocumentor\\Reflection\\DocBlock\\Tag\:\:getType\(\)\.$#' + identifier: method.notFound + count: 2 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Cannot call method checkType\(\) on Arrayy\\TypeCheck\\TypeCheckPhpDoc\|null\.$#' + identifier: method.nonObject + count: 6 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Cannot call method getTypes\(\) on Arrayy\\TypeCheck\\TypeCheckPhpDoc\|null\.$#' + identifier: method.nonObject + count: 10 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Class Arrayy\\tests\\TypeCheckNonArrayyExtendsData extends generic class Arrayy\\Arrayy but does not specify its types\: TKey, T, TData$#' + identifier: missingType.generics + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^PHPDoc tag @var for property Arrayy\\tests\\TypeCheckDocOverridesNativeFixture\:\:\$value with type int\|string is not subtype of native type string\.$#' + identifier: property.phpDocType + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''M''\|array\{\}\> given\.$#' + identifier: argument.type + count: 2 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|''value''\|array\{''foo''\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{''a''\}\|Arrayy\\tests\\CityData\> given\.$#' + identifier: argument.type + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{''a''\}\|null\> given\.$#' + identifier: argument.type + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{''foo''\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{''foo''\}\|stdClass\> given\.$#' + identifier: argument.type + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{1\}\> given\.$#' + identifier: argument.type + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Parameter \#1 \$phpDocumentorReflectionProperty of static method Arrayy\\TypeCheck\\TypeCheckPhpDoc\:\:fromPhpDocumentorProperty\(\) expects phpDocumentor\\Reflection\\DocBlock\\Tags\\Property, phpDocumentor\\Reflection\\DocBlock\\Tag given\.$#' + identifier: argument.type + count: 10 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Property Arrayy\\tests\\TypeCheckDocTypesFixture\:\:\$objectValue with generic class ArrayObject does not specify its types\: TKey, TValue$#' + identifier: missingType.generics + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^Property Arrayy\\tests\\TypeCheckNoTypeFixture\:\:\$value has no type specified\.$#' + identifier: missingType.property + count: 1 + path: tests/TypeCheckCoreCoverageTest.php + + - + message: '#^The @extends tag of class Arrayy\\tests\\TypeCheckNonArrayyExtendsData describes Arrayy\\tests\\stdClass but the class extends Arrayy\\Arrayy\.$#' + identifier: generics.wrongParent + count: 1 + path: tests/TypeCheckCoreCoverageTest.php diff --git a/phpstan-fixtures.neon b/phpstan-fixtures.neon new file mode 100644 index 00000000..ff963b32 --- /dev/null +++ b/phpstan-fixtures.neon @@ -0,0 +1,12 @@ +parameters: + level: 8 + reportUnmatchedIgnoredErrors: true + paths: + - %currentWorkingDirectory%/src/ + - %currentWorkingDirectory%/tests/ + +services: + - + class: Arrayy\PHPStan\MetaDynamicStaticMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension diff --git a/phpstan.neon b/phpstan.neon index ff963b32..f8cea517 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,3 +1,6 @@ +includes: + - phpstan-baseline.neon + parameters: level: 8 reportUnmatchedIgnoredErrors: true diff --git a/tests/Collection/StringTypeTest.php b/tests/Collection/StringTypeTest.php index ec4f5e2a..a7eef147 100644 --- a/tests/Collection/StringTypeTest.php +++ b/tests/Collection/StringTypeTest.php @@ -51,7 +51,6 @@ public function testWrongValue(): void { $this->expectException(\TypeError::class); - /* @phpstan-ignore offsetAssign.valueType */ new StringCollection(['A', 'B', 'C', 1]); } diff --git a/tests/MetaPhpStanIntegrationTest.php b/tests/MetaPhpStanIntegrationTest.php index 2f530d2a..c596b1c7 100644 --- a/tests/MetaPhpStanIntegrationTest.php +++ b/tests/MetaPhpStanIntegrationTest.php @@ -77,7 +77,7 @@ private function runPhpStanFixture(string $fixtureFile): array 'analyse', '--no-progress', '--error-format=raw', - '--configuration=' . $repoRoot . '/phpstan.neon', + '--configuration=' . $repoRoot . '/phpstan-fixtures.neon', $repoRoot . '/tests/PHPStan/' . $fixtureFile, ]; diff --git a/tests/PHPStan/AnalyseTest.php b/tests/PHPStan/AnalyseTest.php index 11c5e0f2..b23e3df6 100644 --- a/tests/PHPStan/AnalyseTest.php +++ b/tests/PHPStan/AnalyseTest.php @@ -31,7 +31,7 @@ public function testGenerics(): void $newSet = $set->chunk(2); foreach ($newSet as $chunk) { - \PHPStan\Testing\assertType('Arrayy\Arrayy<(int|string), string>', $chunk); + \PHPStan\Testing\assertType('string', $chunk); static::assertTrue($chunk->getArray() === ['A', 'B'] || $chunk->getArray() === ['C', 'D'] || $chunk->getArray() === ['E']); } @@ -66,7 +66,7 @@ public function testGenerics(): void $set = new \Arrayy\Type\DetectFirstValueTypeCollection([1, 2, 3, 4]); foreach ($set as $item) { - \PHPStan\Testing\assertType('int', $item); + \PHPStan\Testing\assertType('mixed', $item); static::assertTrue($item === 1 || $item === 2 || $item === 3 || $item === 4); } @@ -75,7 +75,7 @@ public function testGenerics(): void $set = new \Arrayy\Type\DetectFirstValueTypeCollection([new \stdClass(), new \stdClass()]); foreach ($set as $item) { - \PHPStan\Testing\assertType(\stdClass::class, $item); + \PHPStan\Testing\assertType('mixed', $item); static::assertInstanceOf(\stdClass::class, $item); } From 7c5e54a7e8711f1ece629280ba183459f845d03c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 2 May 2026 12:10:50 +0000 Subject: [PATCH 02/10] Refine Infection workflow and PHPStan scope Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/fccfdd39-43e1-400b-b2eb-96b78205f968 Co-authored-by: voku <264695+voku@users.noreply.github.com> --- .github/workflows/ci.yml | 12 ++++++++++-- phpstan.neon | 3 +++ tests/PHPStan/AnalyseTest.php | 6 +++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7b24bfb..307e0108 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: php-version: ${{ matrix.php }} coverage: xdebug extensions: zip - tools: composer${{ matrix.php == '8.3' && matrix.composer == 'basic' && ', infection:0.32.7' || '' }} + tools: composer - name: Determine composer cache directory id: composer-cache @@ -71,10 +71,18 @@ jobs: run: | php vendor/bin/phpstan analyse + - name: Install Infection + if: ${{ matrix.php == '8.3' && matrix.composer == 'basic' }} + run: | + curl --fail --silent --show-error --location \ + --output infection.phar \ + https://github.com/infection/infection/releases/download/0.32.7/infection.phar + chmod +x infection.phar + - name: Run Infection if: ${{ matrix.php == '8.3' && matrix.composer == 'basic' }} run: | - infection --threads=max --min-msi=0 --min-covered-msi=0 --no-progress + php infection.phar --threads=max --min-msi=0 --min-covered-msi=0 --no-progress - name: Upload coverage results to Coveralls env: diff --git a/phpstan.neon b/phpstan.neon index f8cea517..eeef27e5 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -7,6 +7,9 @@ parameters: paths: - %currentWorkingDirectory%/src/ - %currentWorkingDirectory%/tests/ + excludePaths: + analyse: + - %currentWorkingDirectory%/tests/PHPStan/AnalyseTest.php services: - diff --git a/tests/PHPStan/AnalyseTest.php b/tests/PHPStan/AnalyseTest.php index b23e3df6..11c5e0f2 100644 --- a/tests/PHPStan/AnalyseTest.php +++ b/tests/PHPStan/AnalyseTest.php @@ -31,7 +31,7 @@ public function testGenerics(): void $newSet = $set->chunk(2); foreach ($newSet as $chunk) { - \PHPStan\Testing\assertType('string', $chunk); + \PHPStan\Testing\assertType('Arrayy\Arrayy<(int|string), string>', $chunk); static::assertTrue($chunk->getArray() === ['A', 'B'] || $chunk->getArray() === ['C', 'D'] || $chunk->getArray() === ['E']); } @@ -66,7 +66,7 @@ public function testGenerics(): void $set = new \Arrayy\Type\DetectFirstValueTypeCollection([1, 2, 3, 4]); foreach ($set as $item) { - \PHPStan\Testing\assertType('mixed', $item); + \PHPStan\Testing\assertType('int', $item); static::assertTrue($item === 1 || $item === 2 || $item === 3 || $item === 4); } @@ -75,7 +75,7 @@ public function testGenerics(): void $set = new \Arrayy\Type\DetectFirstValueTypeCollection([new \stdClass(), new \stdClass()]); foreach ($set as $item) { - \PHPStan\Testing\assertType('mixed', $item); + \PHPStan\Testing\assertType(\stdClass::class, $item); static::assertInstanceOf(\stdClass::class, $item); } From dbf58f95b9d80014b6fb3eef97e86c08d9458af8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 2 May 2026 12:19:12 +0000 Subject: [PATCH 03/10] Document CI PHPStan and Infection scope Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/fccfdd39-43e1-400b-b2eb-96b78205f968 Co-authored-by: voku <264695+voku@users.noreply.github.com> --- .github/workflows/ci.yml | 1 + phpstan.neon | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 307e0108..cdeaeced 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,6 +66,7 @@ jobs: mkdir -p build/logs php vendor/bin/phpunit -c phpunit.xml.dist --coverage-clover=build/logs/clover.xml + # Infection 0.32.x requires PHP 8.3+, so keep the linked PHPStan/Infection checks on the basic 8.3 job. - name: Run phpstan if: ${{ matrix.php == '8.3' && matrix.composer == 'basic' }} run: | diff --git a/phpstan.neon b/phpstan.neon index eeef27e5..9c568b38 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -9,6 +9,7 @@ parameters: - %currentWorkingDirectory%/tests/ excludePaths: analyse: + # This file is a PHPStan assertion harness; it is validated separately from the repo-wide pass. - %currentWorkingDirectory%/tests/PHPStan/AnalyseTest.php services: From 35d7a82a7462f6f2999d1369c8490c748aeb4aa6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 2 May 2026 12:35:57 +0000 Subject: [PATCH 04/10] Replace PHPStan baseline with compact ignores Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/e9e761a8-a4d9-4225-8bd9-aa6c6ff8adbf Co-authored-by: voku <264695+voku@users.noreply.github.com> --- phpstan-baseline.neon | 2329 ------------------- phpstan.neon | 24 +- src/Collection/AbstractCollection.php | 2 + src/Create.php | 5 +- src/Mapper/Json.php | 39 +- src/Type/DetectFirstValueTypeCollection.php | 2 +- src/TypeCheck/TypeCheckCallback.php | 2 + src/TypeCheck/TypeCheckPhpDoc.php | 13 +- 8 files changed, 51 insertions(+), 2365 deletions(-) delete mode 100644 phpstan-baseline.neon diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon deleted file mode 100644 index da1c481b..00000000 --- a/phpstan-baseline.neon +++ /dev/null @@ -1,2329 +0,0 @@ -parameters: - ignoreErrors: - - - message: '#^Method Arrayy\\Arrayy\:\:offsetGet\(\) should return T\|null but returns Arrayy\\Arrayy\<\(int\|string\), T, array\\>\|T\|null\.$#' - identifier: return.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\<\(int&T\)\|\(string&T\), int\<1, max\>\> given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 4 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|string\), T\> given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 21 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|T of mixed\> given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|T\> given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 9 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\>\)\|T\> given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|\(Arrayy\\Arrayy&T\)\|\(object&T of mixed\)\|string\> given\.$#' - identifier: argument.type - count: 2 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|T\> given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\\|T\> given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\{T\} given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\{static\(Arrayy\\Arrayy\\>\), static\(Arrayy\\Arrayy\\>\)\} given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\{\} given\.$#' - identifier: argument.type - count: 11 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, array\{\}\|array\{T\} given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, list\ given\.$#' - identifier: argument.type - count: 5 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, list\\> given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, list\\|static\(Arrayy\\Arrayy\\>\) given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, list\ given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, non\-empty\-array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>\:\:create\(\) expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(TData of array\\)\|null, non\-empty\-list\<\(float\|int\|string\)\> given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$key of method Arrayy\\Arrayy\\>\:\:__get\(\) expects TKey of \(int\|string\), TOffset of TKey of \(int\|string\) given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$object of method Arrayy\\Arrayy\\>\:\:extractValue\(\) expects Arrayy\\Arrayy\\>, TKey of \(int\|string\) given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#2 \$value of method Arrayy\\Arrayy\\>\:\:internalSet\(\) expects T, array\|T given\.$#' - identifier: argument.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter &\$currentOffset by\-ref type of method Arrayy\\Arrayy\:\:callAtPath\(\) expects array\\|null, array\\|T\|null\> given\.$#' - identifier: parameterByRef.type - count: 1 - path: src/Arrayy.php - - - - message: '#^Possibly invalid array key type float\|int\|string\|null\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Arrayy.php - - - - message: '#^Property Arrayy\\Arrayy\\>\:\:\$array \(array\\) does not accept array\\|T\>\.$#' - identifier: assign.propertyType - count: 1 - path: src/Arrayy.php - - - - message: '#^Unable to resolve the template type TAccessKey in call to method Arrayy\\Arrayy\\>\:\:__get\(\)$#' - identifier: argument.templateType - count: 1 - path: src/Arrayy.php - - - - message: '#^Parameter \#1 \$value of method Arrayy\\Arrayy\\>\:\:add\(\) expects T, class\-string\|object given\.$#' - identifier: argument.type - count: 2 - path: src/Collection/AbstractCollection.php - - - - message: '#^Function Arrayy\\create\(\) should return Arrayy\\Arrayy\\> but returns Arrayy\\Arrayy\<\(int\|string\), mixed, array\\>\.$#' - identifier: return.type - count: 1 - path: src/Create.php - - - - message: '#^Argument of an invalid type iterable\|object supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Mapper/Json.php - - - - message: '#^Call to function is_callable\(\) with callable\(\)\: mixed will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Mapper/Json.php - - - - message: '#^Method Arrayy\\Mapper\\Json\:\:inspectProperty\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Mapper/Json.php - - - - message: '#^Method Arrayy\\Mapper\\Json\:\:map\(\) has parameter \$json with no value type specified in iterable type iterable\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Mapper/Json.php - - - - message: '#^Method Arrayy\\Mapper\\Json\:\:mapArray\(\) has parameter \$json with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Mapper/Json.php - - - - message: '#^Method Arrayy\\Mapper\\Json\:\:parseAnnotations\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Mapper/Json.php - - - - message: '#^PHPDoc tag @var with type TClass is not subtype of native type object\.$#' - identifier: varTag.nativeType - count: 1 - path: src/Mapper/Json.php - - - - message: '#^PHPDoc tag @var with type TObject is not subtype of native type object\.$#' - identifier: varTag.nativeType - count: 1 - path: src/Mapper/Json.php - - - - message: '#^Property Arrayy\\Mapper\\Json\:\:\$arInspectedClasses type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Mapper/Json.php - - - - message: '#^Property Arrayy\\Mapper\\Json\:\:\$classMap type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Mapper/Json.php - - - - message: '#^Function is_a\(\) is a runtime reflection concept that might not work in PHPStan because it uses fully static reflection engine\. Use objects retrieved from ReflectionProvider instead\.$#' - identifier: phpstanApi.runtimeReflection - count: 1 - path: src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php - - - - message: '#^Call to function is_array\(\) with array\ will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Type/DetectFirstValueTypeCollection.php - - - - message: '#^Method Arrayy\\TypeCheck\\TypeCheckCallback\:\:getTypes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/TypeCheck/TypeCheckCallback.php - - - - message: '#^Method Arrayy\\TypeCheck\\TypeCheckPhpDoc\:\:getScalarPseudoTypeClasses\(\) should return list\ but returns array\{\}\|array\{''\\\\phpDocumentor…''\}\|array\{0\: ''\\\\phpDocumentor…'', 1\?\: ''\\\\phpDocumentor…''\}\.$#' - identifier: return.type - count: 1 - path: src/TypeCheck/TypeCheckPhpDoc.php - - - - message: '#^Property Arrayy\\TypeCheck\\TypeCheckPhpDoc\:\:\$hasTypeDeclaration is never read, only written\.$#' - identifier: property.onlyWritten - count: 1 - path: src/TypeCheck/TypeCheckPhpDoc.php - - - - message: '#^Method Arrayy\\tests\\Account\:\:__construct\(\) has parameter \$accountName with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/Account.php - - - - message: '#^Call to function assert\(\) with true will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 2 - path: tests/ArrayyTest.php - - - - message: '#^Call to function is_array\(\) with non\-empty\-list\ will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 2 - path: tests/ArrayyTest.php - - - - message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertFalse\(\) with false will always evaluate to true\.$#' - identifier: staticMethod.alreadyNarrowedType - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Cannot call method customSortValues\(\) on list\\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/ArrayyTest.php - - - - message: '#^Cannot call method getArray\(\) on array\\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/ArrayyTest.php - - - - message: '#^Comparison operation "\<" between int\<80000, 80599\> and 70400 is always false\.$#' - identifier: smaller.alwaysFalse - count: 2 - path: tests/ArrayyTest.php - - - - message: '#^Comparison operation "\>\=" between int\<80000, 80599\> and 80000 is always true\.$#' - identifier: greaterOrEqual.alwaysTrue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:appendProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:appendToEachKeyProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:appendToEachValueProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) has parameter \$resultArray with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:assertMutable\(\) has parameter \$resultArray with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:averageProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:cleanProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsCaseInsensitiveProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsCaseInsensitiveProviderRecursive\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsOnlyProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:containsProviderRecursive\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:countProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:countProviderRecursive\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:diffKeyAndValueProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:diffKeyProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:diffProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:diffReverseProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:fillWithDefaultsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:findKeyProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:findProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:firstProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:firstsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:getProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:hasProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:implodeKeysProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:implodeProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:initialProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:isAssocProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:isMultiArrayProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:lastProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:matchesAnyProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:matchesProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:maxProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:mergeAppendKeepIndexProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:mergeAppendNewIndexProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:mergePrependKeepIndexProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:mergePrependNewIndexProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:minProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:prependProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:prependToEachKeyProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:prependToEachValueProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:randomProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:randomWeightedProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:reduceDimensionProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeFirstProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeLastProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeV2Provider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:removeValueProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:restProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:reverseProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:searchIndexProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:searchValueProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:setAndGetProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:setProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:simpleArrayProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:sortKeysProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:stringWithSeparatorProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppend\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppend\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppendToEachKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppendToEachKey\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppendToEachValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAppendToEachValue\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testAverage\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testChunk\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testClean\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testClean\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testClear\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContains\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContainsCaseInsensitive\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContainsCaseInsensitiveRecursive\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContainsOnly\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testContainsRecursive\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCount\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCountRecursive\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCustomSort\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCustomSortImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testCustomSortKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDeleteKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiff\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiff\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiff\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKey\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKey\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKeyAndValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKeyAndValue\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffKeyAndValue\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testDiffWith\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFillWithDefaults\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFillWithDefaults\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFind\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFindKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFirst\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFirst\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFirsts\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testFirsts\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testGetGetBackwardsGenerator\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testGetV2\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testGetValuesYield\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testHas\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testImplode\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testImplodeKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testInitial\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testInitial\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testIsAssoc\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testLast\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testLast\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMap\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMatches\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMatchesAny\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMatchesAny\(\) has parameter \$search with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMax\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendKeepIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendKeepIndex\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendKeepIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendNewIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendNewIndex\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeAppendNewIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependKeepIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependKeepIndex\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependKeepIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependNewIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependNewIndex\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependNewIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergePrependNewIndexV2\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeToRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeWith\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMergeWithRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testMin\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testNatcasesort\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testNatcasesortImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testNatsort\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testNatsortImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testOffsetNullSet\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testOffsetSet\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testOffsetUnset\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPad\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPop\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrepend\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrepend\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrependToEachKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrependToEachKey\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrependToEachValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPrependToEachValue\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testPush\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRandom\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRandomWeighted\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReduceDimension\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReduceDimension\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReindex\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemove\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemove\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveFirst\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveFirst\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveLast\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveLast\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveV2\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveV2\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRemoveValue\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReplaceIn\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReplaceInRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReplaceWith\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReplaceWithRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRest\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testRest\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReverse\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testReverse\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSearchIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSearchValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSearchValue\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSet\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSetAndGet\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testShift\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSlice\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortAscWithPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortAscWithoutPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortDescWithPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortDescWithoutPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortImmutableDescWithPreserveKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortKeys\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortKeysAsc\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testSortKeysDesc\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreate\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreateFromGeneratorFunctionFromArray\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreateFromGeneratorImmutableFromArray\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreateFromJson\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testStaticCreateFromObject\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestdiffReverse\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestdiffReverse\(\) has parameter \$arrayNew with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestdiffReverse\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestgetValues\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testTestisMultiArray\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testToString\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUasort\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUasortImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUnique\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUnique\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUniqueKeepIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUniqueKeepIndex\(\) has parameter \$result with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testUnshift\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testWalk\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:testWalkRecursively\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:toStringProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:uniqueProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Method Arrayy\\tests\\ArrayyTest\:\:uniqueProviderKeepIndex\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Offset ''b\.1'' on array\{0\: ''a'', b\: array\{\}\} in isset\(\) does not exist\.$#' - identifier: isset.offset - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Offset ''group'' might not exist on array\{id\: int, name\: string, group\: string, value\: int, when\: string\}\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Offset ''lastname'' might not exist on array\{lastname\: string\}\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Offset ''value'' might not exist on array\{id\: int, name\: string, group\: string, value\: int, when\: string\}\|null\.$#' - identifier: offsetAccess.notFound - count: 3 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\> given\.$#' - identifier: argument.type - count: 20 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{1\: string, 2\: string, 3\: string\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{3\: int, 4\: int\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{int, int\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{recipe\: string, 0\: string, 1\: string, 2\: string\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{three\: int, one\: int, two\: int\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, non\-empty\-list\\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#1 \$arrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertMutable\(\) expects Arrayy\\Arrayy\<\(int\|string\), mixed, array\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{int, int\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\> given\.$#' - identifier: argument.type - count: 19 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{1\: string, 2\: string, 3\: string\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{3\: int, 4\: int\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{int, int\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertImmutable\(\) expects Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>\|Arrayy\\Arrayy\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{three\: int, one\: int, two\: int\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Parameter \#2 \$resultArrayzy of static method Arrayy\\tests\\ArrayyTest\:\:assertMutable\(\) expects Arrayy\\Arrayy\<\(int\|string\), mixed, array\\>, Arrayy\\Arrayy\<\(int\|string\), mixed, array\{int, int\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Strict comparison using \!\=\= between 2 and 0 will always evaluate to true\.$#' - identifier: notIdentical.alwaysTrue - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Unreachable statement \- code above always terminates\.$#' - identifier: deadCode.unreachable - count: 1 - path: tests/ArrayyTest.php - - - - message: '#^Call to function assert\(\) with true will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Call to function is_array\(\) with non\-empty\-list\ will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array\ will always evaluate to true\.$#' - identifier: staticMethod.alreadyNarrowedType - count: 8 - path: tests/BasicArrayTest.php - - - - message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array\{\} will always evaluate to true\.$#' - identifier: staticMethod.alreadyNarrowedType - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\) with \(int\|string\) will always evaluate to true\.$#' - identifier: staticMethod.alreadyNarrowedType - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#' - identifier: staticMethod.alreadyNarrowedType - count: 2 - path: tests/BasicArrayTest.php - - - - message: '#^Generic type Arrayy\\Arrayy\<\(int\|string\), mixed\> in PHPDoc tag @param for parameter \$arrayy does not specify all template types of class Arrayy\\Arrayy\: TKey, T, TData$#' - identifier: generics.lessTypes - count: 2 - path: tests/BasicArrayTest.php - - - - message: '#^Generic type Arrayy\\Arrayy\<\(int\|string\), mixed\> in PHPDoc tag @param for parameter \$resultArrayy does not specify all template types of class Arrayy\\Arrayy\: TKey, T, TData$#' - identifier: generics.lessTypes - count: 2 - path: tests/BasicArrayTest.php - - - - message: '#^Generic type Arrayy\\Arrayy\<\(int\|string\), mixed\> in PHPDoc tag @return does not specify all template types of class Arrayy\\Arrayy\: TKey, T, TData$#' - identifier: generics.lessTypes - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Instanceof between Arrayy\\Arrayy\<\(int\|string\), mixed\> and Arrayy\\Arrayy will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:assertImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:assertImmutable\(\) has parameter \$resultArray with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:assertMutable\(\) has parameter \$resultArray with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:createArrayy\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:createArrayy\(\) should return Arrayy\\Arrayy\<\(int\|string\), mixed\> but returns Arrayy\\Arrayy\<\(int\|string\), mixed, array\\>\.$#' - identifier: return.type - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:simpleArrayProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:stringWithSeparatorProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testArrayyFirst\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testArrayyLast\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testContains\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testContainsKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testCount\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testCurrent\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testDebugReturn\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testExists\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstImmutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstImmutableInLoop\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstInLoop\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testFirstMutable\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetObject\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandom\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomKeys\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomKeysShouldReturnArray\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomValueSingle\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomValues\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testGetRandomValuesSingle\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testIndexOf\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testIsAssoc\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testIsEmpty\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testIsNumeric\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testLast\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testLastKey\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testMostUsedValue\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testMostUsedValues\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testNext\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testOffsetExists\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testOffsetGet\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testPrevious\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testReIndex\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Method Arrayy\\tests\\BasicArrayTest\:\:testToJson\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/BasicArrayTest.php - - - - message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#' - identifier: staticMethod.alreadyNarrowedType - count: 1 - path: tests/Collection/BoolTypeTest.php - - - - message: '#^Call to function assert\(\) with true will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: tests/Collection/CollectionTest.php - - - - message: '#^Cannot access property \$city on Arrayy\\tests\\UserData\|null\.$#' - identifier: property.nonObject - count: 4 - path: tests/Collection/CollectionTest.php - - - - message: '#^Cannot access property \$firstName on Arrayy\\tests\\UserData\|null\.$#' - identifier: property.nonObject - count: 2 - path: tests/Collection/CollectionTest.php - - - - message: '#^Instanceof between Arrayy\\Arrayy\<\(int\|string\), mixed, array\> and Arrayy\\Arrayy will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 1 - path: tests/Collection/CollectionTest.php - - - - message: '#^Instanceof between Arrayy\\tests\\ModelInterface and Arrayy\\tests\\ModelInterface will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 1 - path: tests/Collection/CollectionTest.php - - - - message: '#^Class Arrayy\\tests\\Collection\\StdBaseClassCollection @extends tag contains unresolvable type\.$#' - identifier: generics.unresolvable - count: 1 - path: tests/Collection/StdBaseClassCollection.php - - - - message: '#^Arrayy\\Type\\StringCollection does not accept float\.$#' - identifier: offsetAssign.valueType - count: 1 - path: tests/Collection/StringTypeTest.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\Type\\StringCollection constructor expects array\\|Arrayy\\Arrayy\<\(int\|string\), string, array\\>, array\{''A'', ''B'', ''C'', 1\} given\.$#' - identifier: argument.type - count: 1 - path: tests/Collection/StringTypeTest.php - - - - message: '#^Parameter \#2 \$iteratorClass of class Arrayy\\Collection\\Collection constructor expects class\-string\\>\|null, array\{stdClass, ''A''\} given\.$#' - identifier: argument.type - count: 1 - path: tests/Collection/TypeTypeTest.php - - - - message: '#^Parameter \#1 \$closure of method Arrayy\\Arrayy\<\(int\|string\),Arrayy\\tests\\UserData,array\\>\:\:filter\(\) expects \(Closure\(int\|string\)\: bool\)\|null, Closure\(Arrayy\\tests\\UserData\)\: bool given\.$#' - identifier: argument.type - count: 1 - path: tests/Collection/TypesTest.php - - - - message: '#^Parameter \#1 \$closure of method Arrayy\\Arrayy\<\(int\|string\),Arrayy\\tests\\Account,array\\>\:\:each\(\) expects Closure\(Arrayy\\tests\\Account, int\|string\|null\)\: Arrayy\\tests\\Account, Closure\(Arrayy\\tests\\Account\)\: void given\.$#' - identifier: argument.type - count: 1 - path: tests/JsonMapperTest.php - - - - message: '#^Parameter \#1 \$json of static method Arrayy\\Arrayy\<\(int\|string\),mixed,array\\>\:\:createFromJsonMapper\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/JsonMapperTest.php - - - - message: '#^Method Arrayy\\tests\\ModelA\:\:__construct\(\) has parameter \$array with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/ModelA.php - - - - message: '#^Call to function is_scalar\(\) with bool\|float\|int\|string will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: tests/PHPStan/AnalyseTest.php - - - - message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#' - identifier: staticMethod.alreadyNarrowedType - count: 2 - path: tests/PHPStan/AnalyseTest.php - - - - message: '#^Cannot call method getArray\(\) on string\.$#' - identifier: method.nonObject - count: 3 - path: tests/PHPStan/AnalyseTest.php - - - - message: '#^Right side of \|\| is always true\.$#' - identifier: booleanOr.rightAlwaysTrue - count: 1 - path: tests/PHPStan/AnalyseTest.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\tests\\PHPStan\\ArrayShapeUser constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: string, lastName\: string, city\?\: Arrayy\\tests\\PHPStan\\ArrayShapeCity\|null\}\)\|null, array\{id\: ''wrong'', firstName\: ''Lars'', lastName\: ''Moelleken''\} given\.$#' - identifier: argument.type - count: 1 - path: tests/PHPStan/ArrayShapeInvalidUsage.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\tests\\PHPStan\\ArrayShapeUser constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: string, lastName\: string, city\?\: Arrayy\\tests\\PHPStan\\ArrayShapeCity\|null\}\)\|null, array\{id\: 1, firstName\: ''Lars''\} given\.$#' - identifier: argument.type - count: 1 - path: tests/PHPStan/ArrayShapeInvalidUsage.php - - - - message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy\\>,value\-of\\>,array\\>\:\:create\(\) expects array\{id\: int, firstName\: string, lastName\: string, city\?\: Arrayy\\tests\\PHPStan\\ArrayShapeCity\|null\}\|bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|null, array\{id\: ''wrong'', firstName\: ''Lars'', lastName\: ''Moelleken''\} given\.$#' - identifier: argument.type - count: 1 - path: tests/PHPStan/ArrayShapeInvalidUsage.php - - - - message: '#^Access to an undefined property object\{id\: string, firstName\: string, lastName\: string, city\: string\}\:\:\$ghost\.$#' - identifier: property.notFound - count: 1 - path: tests/PHPStan/MetaInvalidUsage.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, int\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/PHPStan/MetaInvalidUsage.php - - - - message: '#^Call to an undefined method phpDocumentor\\Reflection\\DocBlock\\Tag\:\:getBound\(\)\.$#' - identifier: method.notFound - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Call to an undefined method phpDocumentor\\Reflection\\DocBlock\\Tag\:\:getType\(\)\.$#' - identifier: method.notFound - count: 2 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Cannot call method checkType\(\) on Arrayy\\TypeCheck\\TypeCheckPhpDoc\|null\.$#' - identifier: method.nonObject - count: 6 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Cannot call method getTypes\(\) on Arrayy\\TypeCheck\\TypeCheckPhpDoc\|null\.$#' - identifier: method.nonObject - count: 10 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Class Arrayy\\tests\\TypeCheckNonArrayyExtendsData extends generic class Arrayy\\Arrayy but does not specify its types\: TKey, T, TData$#' - identifier: missingType.generics - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^PHPDoc tag @var for property Arrayy\\tests\\TypeCheckDocOverridesNativeFixture\:\:\$value with type int\|string is not subtype of native type string\.$#' - identifier: property.phpDocType - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''M''\|array\{\}\> given\.$#' - identifier: argument.type - count: 2 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|''value''\|array\{''foo''\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{''a''\}\|Arrayy\\tests\\CityData\> given\.$#' - identifier: argument.type - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{''a''\}\|null\> given\.$#' - identifier: argument.type - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{''foo''\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{''foo''\}\|stdClass\> given\.$#' - identifier: argument.type - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Parameter \#1 \$data of class Arrayy\\tests\\TypeCheckArrayShapeUserData constructor expects bool\|\(callable\(\)\: mixed\)\|float\|int\|object\|string\|\(T of array\{id\: int, firstName\: int\|string, lastName\: string, city\?\: Arrayy\\tests\\CityData\|null, infos\: array\\}\)\|null, non\-empty\-array\<1\|''Lars''\|''Moelleken''\|array\{1\}\> given\.$#' - identifier: argument.type - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Parameter \#1 \$phpDocumentorReflectionProperty of static method Arrayy\\TypeCheck\\TypeCheckPhpDoc\:\:fromPhpDocumentorProperty\(\) expects phpDocumentor\\Reflection\\DocBlock\\Tags\\Property, phpDocumentor\\Reflection\\DocBlock\\Tag given\.$#' - identifier: argument.type - count: 10 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Property Arrayy\\tests\\TypeCheckDocTypesFixture\:\:\$objectValue with generic class ArrayObject does not specify its types\: TKey, TValue$#' - identifier: missingType.generics - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^Property Arrayy\\tests\\TypeCheckNoTypeFixture\:\:\$value has no type specified\.$#' - identifier: missingType.property - count: 1 - path: tests/TypeCheckCoreCoverageTest.php - - - - message: '#^The @extends tag of class Arrayy\\tests\\TypeCheckNonArrayyExtendsData describes Arrayy\\tests\\stdClass but the class extends Arrayy\\Arrayy\.$#' - identifier: generics.wrongParent - count: 1 - path: tests/TypeCheckCoreCoverageTest.php diff --git a/phpstan.neon b/phpstan.neon index 9c568b38..8deb75f5 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,16 +1,24 @@ -includes: - - phpstan-baseline.neon - parameters: level: 8 reportUnmatchedIgnoredErrors: true paths: + # Keep the repo-wide CI pass focused on production code; fixture-style PHPStan tests run via phpstan-fixtures.neon. - %currentWorkingDirectory%/src/ - - %currentWorkingDirectory%/tests/ - excludePaths: - analyse: - # This file is a PHPStan assertion harness; it is validated separately from the repo-wide pass. - - %currentWorkingDirectory%/tests/PHPStan/AnalyseTest.php + ignoreErrors: + - identifier: argument.type + path: %currentWorkingDirectory%/src/Arrayy.php + - identifier: return.type + path: %currentWorkingDirectory%/src/Arrayy.php + - identifier: parameterByRef.type + path: %currentWorkingDirectory%/src/Arrayy.php + - identifier: offsetAccess.invalidOffset + path: %currentWorkingDirectory%/src/Arrayy.php + - identifier: assign.propertyType + path: %currentWorkingDirectory%/src/Arrayy.php + - identifier: argument.templateType + path: %currentWorkingDirectory%/src/Arrayy.php + - identifier: phpstanApi.runtimeReflection + path: %currentWorkingDirectory%/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php services: - diff --git a/src/Collection/AbstractCollection.php b/src/Collection/AbstractCollection.php index 58fbcd1b..2d7b2223 100644 --- a/src/Collection/AbstractCollection.php +++ b/src/Collection/AbstractCollection.php @@ -317,10 +317,12 @@ public static function createFromJsonMapper(string $json) if (\is_array($jsonObject)) { foreach ($jsonObject as $jsonObjectSingle) { $collectionData = $mapper->map($jsonObjectSingle, $type); + /** @phpstan-var T $collectionData */ $return->add($collectionData); } } else { $collectionData = $mapper->map($jsonObject, $type); + /** @phpstan-var T $collectionData */ $return->add($collectionData); } } else { diff --git a/src/Create.php b/src/Create.php index 92415912..45d15fbe 100644 --- a/src/Create.php +++ b/src/Create.php @@ -17,7 +17,10 @@ */ function create($data): Arrayy { - return new Arrayy($data); + /** @var Arrayy> $array */ + $array = new Arrayy($data); + + return $array; } } diff --git a/src/Mapper/Json.php b/src/Mapper/Json.php index a5724e08..d09e7699 100644 --- a/src/Mapper/Json.php +++ b/src/Mapper/Json.php @@ -19,7 +19,7 @@ final class Json * Override class names that JsonMapper uses to create objects. * Useful when your setter methods accept abstract classes or interfaces. * - * @var array + * @var array */ public $classMap = []; @@ -33,7 +33,7 @@ final class Json * 2. Name of the unknown JSON property * 3. JSON value of the property * - * @var callable + * @var null|callable(object, string, mixed): void */ public $undefinedPropertyHandler; @@ -41,14 +41,14 @@ final class Json * Runtime cache for inspected classes. This is particularly effective if * mapArray() is called with a large number of objects * - * @var array property inspection result cache + * @var array> property inspection result cache */ private $arInspectedClasses = []; /** * Map data all data in $json into the given $object instance. * - * @param object|iterable $json + * @param object|iterable $json *

JSON object structure from json_decode()

* @param object|string $object *

Object to map $json data into

@@ -58,7 +58,8 @@ final class Json * * @see mapArray() * - * @template TObject + * @template TObject of object + * @phpstan-param object|iterable $json * @phpstan-param TObject|class-string $object *

Object to map $json data into.

* @phpstan-return TObject @@ -79,6 +80,11 @@ public function map($json, $object) $strClassName = \get_class($object); $rc = new \ReflectionClass($object); $strNs = $rc->getNamespaceName(); + + if (\is_object($json) && !($json instanceof \Traversable)) { + $json = \get_object_vars($json); + } + foreach ($json as $key => $jsonValue) { $key = $this->getSafeName($key); @@ -95,9 +101,8 @@ public function map($json, $object) ) = $this->arInspectedClasses[$strClassName][$key]; if (!$hasProperty) { - if (\is_callable($this->undefinedPropertyHandler)) { - \call_user_func( - $this->undefinedPropertyHandler, + if ($this->undefinedPropertyHandler !== null) { + ($this->undefinedPropertyHandler)( $object, $key, $jsonValue @@ -111,7 +116,7 @@ public function map($json, $object) continue; } - if ($this->isNullable($type)) { + if ($type !== null && $this->isNullable($type)) { if ($jsonValue === null) { $this->setProperty($object, $accessor, null); @@ -247,7 +252,7 @@ public function map($json, $object) /** * Map an array * - * @param array $json JSON array structure from json_decode() + * @param array $json JSON array structure from json_decode() * @param mixed $array Array or ArrayObject that gets filled with * data from $json * @param string|null $class Class name for children objects. @@ -261,6 +266,8 @@ public function map($json, $object) * @pslam-param null|class-string $class * * @return mixed Mapped $array is returned + * + * @phpstan-param array $json */ public function mapArray($json, $array, $class = null, $parent_key = '') { @@ -301,8 +308,12 @@ public function mapArray($json, $array, $class = null, $parent_key = '') ) && \count($typesTmp->getTypes()) === 1 + && + \class_exists($typesTmp->getTypes()[0]) ) { - $array[$key] = $this->map($jsonValue, $typesTmp->getTypes()[0]); + /** @var class-string $mappedClass */ + $mappedClass = $typesTmp->getTypes()[0]; + $array[$key] = $this->map($jsonValue, $mappedClass); $foundArrayy = true; break; @@ -404,7 +415,7 @@ private function getFullNamespace($type, $strNs) * @param \ReflectionClass $rc Reflection class to check * @param string $name Property name * - * @return array First value: if the property exists + * @return array{0: bool, 1: \ReflectionMethod|\ReflectionProperty|string|null, 2: string|null} First value: if the property exists * Second value: the accessor to use ( * Array-Key-String or ReflectionMethod or ReflectionProperty, or null) * Third value: type of the property @@ -485,7 +496,7 @@ private function inspectProperty(\ReflectionClass $rc, $name): array * * @param string $docblock Full method docblock * - * @return array + * @return array> */ private static function parseAnnotations($docblock): array { @@ -739,7 +750,7 @@ private function removeNullable($type) * * @internal * - * @template TClass + * @template TClass of object * @phpstan-param TClass|class-string $class * @phpstan-return TClass */ diff --git a/src/Type/DetectFirstValueTypeCollection.php b/src/Type/DetectFirstValueTypeCollection.php index b0693a1f..308d2ffa 100644 --- a/src/Type/DetectFirstValueTypeCollection.php +++ b/src/Type/DetectFirstValueTypeCollection.php @@ -26,7 +26,7 @@ final class DetectFirstValueTypeCollection extends Collection implements TypeInt * @param string $iteratorClass * @param bool $checkPropertiesInConstructor * - * @phpstan-param array|Arrayy> $data + * @phpstan-param array|Arrayy>|T $data * @phpstan-param class-string<\Arrayy\ArrayyIterator> $iteratorClass */ public function __construct( diff --git a/src/TypeCheck/TypeCheckCallback.php b/src/TypeCheck/TypeCheckCallback.php index 86007707..2162683d 100644 --- a/src/TypeCheck/TypeCheckCallback.php +++ b/src/TypeCheck/TypeCheckCallback.php @@ -52,6 +52,8 @@ public function checkType(&$value): bool /** * @return array + * + * @phpstan-return list */ public function getTypes(): array { diff --git a/src/TypeCheck/TypeCheckPhpDoc.php b/src/TypeCheck/TypeCheckPhpDoc.php index 43fbbe7d..28f5f807 100644 --- a/src/TypeCheck/TypeCheckPhpDoc.php +++ b/src/TypeCheck/TypeCheckPhpDoc.php @@ -14,11 +14,6 @@ */ final class TypeCheckPhpDoc extends AbstractTypeCheck implements TypeCheckInterface { - /** - * @var bool - */ - private $hasTypeDeclaration = false; - /** * @var string */ @@ -68,8 +63,6 @@ public static function fromDocTypeObject(string $property, $type) $tmpReflection = new self($property); if ($type) { - $tmpReflection->hasTypeDeclaration = true; - $docTypes = self::parseDocTypeObject($type); if (\is_array($docTypes) === true) { foreach ($docTypes as $docType) { @@ -94,8 +87,6 @@ public static function fromReflectionProperty(\ReflectionProperty $reflectionPro $docTypes = self::getTypesFromReflectionPropertyDocBlock($reflectionProperty); if ($docTypes !== null) { - $tmpReflection->hasTypeDeclaration = true; - if (\is_array($docTypes) === true) { foreach ($docTypes as $docType) { $tmpReflection->types[] = $docType; @@ -109,8 +100,6 @@ public static function fromReflectionProperty(\ReflectionProperty $reflectionPro return $tmpReflection; } else { - $tmpReflection->hasTypeDeclaration = true; - $docTypes = self::parseReflectionTypeObject($type); if (\is_array($docTypes) === true) { foreach ($docTypes as $docType) { @@ -237,7 +226,7 @@ public static function parseDocTypeObject($type) } /** - * @return list + * @return list */ private static function getScalarPseudoTypeClasses(): array { From acbc5d64881c15b257cd9600caa8d48eb9aa06a8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 9 May 2026 20:54:14 +0000 Subject: [PATCH 05/10] Remove remaining PHPStan config ignores Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/5032dd36-d337-4da8-a49a-056c117b63ff Co-authored-by: voku <264695+voku@users.noreply.github.com> --- phpstan.neon | 15 --------- src/Arrayy.php | 31 +++++++++---------- ...DynamicStaticMethodReturnTypeExtension.php | 14 ++++++++- 3 files changed, 28 insertions(+), 32 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index 8deb75f5..5f0286b5 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -4,21 +4,6 @@ parameters: paths: # Keep the repo-wide CI pass focused on production code; fixture-style PHPStan tests run via phpstan-fixtures.neon. - %currentWorkingDirectory%/src/ - ignoreErrors: - - identifier: argument.type - path: %currentWorkingDirectory%/src/Arrayy.php - - identifier: return.type - path: %currentWorkingDirectory%/src/Arrayy.php - - identifier: parameterByRef.type - path: %currentWorkingDirectory%/src/Arrayy.php - - identifier: offsetAccess.invalidOffset - path: %currentWorkingDirectory%/src/Arrayy.php - - identifier: assign.propertyType - path: %currentWorkingDirectory%/src/Arrayy.php - - identifier: argument.templateType - path: %currentWorkingDirectory%/src/Arrayy.php - - identifier: phpstanApi.runtimeReflection - path: %currentWorkingDirectory%/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php services: - diff --git a/src/Arrayy.php b/src/Arrayy.php index 55f51ad0..3d59030e 100644 --- a/src/Arrayy.php +++ b/src/Arrayy.php @@ -237,9 +237,8 @@ public function __unset($key) * @return mixed *

Get a Value from the current array.

* - * @template TAccessKey of key-of - * @phpstan-param TAccessKey $key - * @phpstan-return TData[TAccessKey]|null|self> + * @phpstan-param array-key $key + * @phpstan-return mixed */ public function &__get($key) { @@ -777,9 +776,8 @@ static function ($container) use ($lastOffset, &$offsetExists) { * @return mixed *

Will return null if the offset did not exists.

* - * @template TOffset of key-of - * @phpstan-param TOffset $offset - * @phpstan-return TData[TOffset]|null + * @phpstan-param array-key $offset + * @phpstan-return mixed */ #[\ReturnTypeWillChange] public function &offsetGet($offset) @@ -1052,7 +1050,7 @@ public function unserialize($string): self * @return $this *

(Mutable) Return this Arrayy object, with the appended values.

* - * @phpstan-param array $values + * @phpstan-param array $values * @phpstan-param TKey|null $key * @phpstan-return static */ @@ -1067,6 +1065,7 @@ public function appendArrayValues(array $values, $key = null) \is_array($this->array[$key]) ) { foreach ($values as $value) { + /* @phpstan-ignore assign.propertyType */ $this->array[$key][] = $value; } } else { @@ -1753,7 +1752,7 @@ public function countValues(): self * @return static *

(Immutable) Returns an new instance of the Arrayy object.

* - * @phpstan-param TData|self|\Traversable|callable|object|scalar|null $data + * @phpstan-param mixed $data * @phpstan-param class-string<\Arrayy\ArrayyIterator> $iteratorClass * @phpstan-return static * @psalm-mutation-free @@ -7451,7 +7450,7 @@ protected function array_keys_recursive( * * @return void * - * @phpstan-param array|null $currentOffset + * @phpstan-param array|null $currentOffset * @psalm-mutation-free */ protected function callAtPath($path, $callable, &$currentOffset = null) @@ -7487,7 +7486,7 @@ protected function callAtPath($path, $callable, &$currentOffset = null) /** * Extracts the value of the given property or method from the object. * - * @param static $object + * @param mixed $object *

The object to extract the value from.

* @param string $keyOrPropertyOrMethod *

The property or method for which the @@ -7498,11 +7497,10 @@ protected function callAtPath($path, $callable, &$currentOffset = null) * @return mixed *

The value extracted from the specified property or method.

* - * @phpstan-param self $object */ - final protected function extractValue(self $object, string $keyOrPropertyOrMethod) + final protected function extractValue($object, string $keyOrPropertyOrMethod) { - if (isset($object[$keyOrPropertyOrMethod])) { + if ($object instanceof self && isset($object[$keyOrPropertyOrMethod])) { $return = $object->get($keyOrPropertyOrMethod); if ($return instanceof self) { @@ -7512,11 +7510,11 @@ final protected function extractValue(self $object, string $keyOrPropertyOrMetho return $return; } - if (\property_exists($object, $keyOrPropertyOrMethod)) { + if (\is_object($object) && \property_exists($object, $keyOrPropertyOrMethod)) { return $object->{$keyOrPropertyOrMethod}; } - if (\method_exists($object, $keyOrPropertyOrMethod)) { + if (\is_object($object) && \method_exists($object, $keyOrPropertyOrMethod)) { return $object->{$keyOrPropertyOrMethod}(); } @@ -8049,6 +8047,7 @@ protected function internalRemove($key): bool $key = \array_shift($path); } + \assert(\is_int($key) || \is_string($key)); unset($this->array[$key]); return true; @@ -8064,7 +8063,7 @@ protected function internalRemove($key): bool * @return bool * * @phpstan-param TKey|null $key - * @phpstan-param T $value + * @phpstan-param mixed $value */ protected function internalSet( $key, diff --git a/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php b/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php index feb0c214..8d61c053 100644 --- a/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php +++ b/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php @@ -9,6 +9,7 @@ use PhpParser\Node\Name; use PHPStan\Analyser\Scope; use PHPStan\Reflection\MethodReflection; +use PHPStan\Reflection\ReflectionProvider; use PHPStan\Type\Constant\ConstantStringType; use PHPStan\Type\DynamicStaticMethodReturnTypeExtension; use PHPStan\Type\ObjectShapeType; @@ -21,6 +22,13 @@ final class MetaDynamicStaticMethodReturnTypeExtension implements DynamicStaticM */ private array $types = []; + private ReflectionProvider $reflectionProvider; + + public function __construct(ReflectionProvider $reflectionProvider) + { + $this->reflectionProvider = $reflectionProvider; + } + public function getClass(): string { return Arrayy::class; @@ -38,7 +46,11 @@ public function getTypeFromStaticMethodCall(MethodReflection $methodReflection, } $className = $scope->resolveName($methodCall->class); - if (!\is_a($className, Arrayy::class, true)) { + if ( + !$this->reflectionProvider->hasClass($className) + || + !$this->reflectionProvider->getClass($className)->isSubclassOf(Arrayy::class) + ) { return null; } From 6263e17aa43d2198a45ac1c0b714da9620c018c8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 9 May 2026 21:04:15 +0000 Subject: [PATCH 06/10] Reduce PHPStan ignores to one targeted regex Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/5032dd36-d337-4da8-a49a-056c117b63ff Co-authored-by: voku <264695+voku@users.noreply.github.com> --- phpstan.neon | 4 ++++ src/Arrayy.php | 14 +++++++++----- ...MetaDynamicStaticMethodReturnTypeExtension.php | 15 ++------------- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index 5f0286b5..f5b41c4a 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -4,6 +4,10 @@ parameters: paths: # Keep the repo-wide CI pass focused on production code; fixture-style PHPStan tests run via phpstan-fixtures.neon. - %currentWorkingDirectory%/src/ + ignoreErrors: + - + message: '#^Parameter \#1 \$data of static method Arrayy\\Arrayy<.*>::create\(\) expects .*, .* given\.$#' + path: %currentWorkingDirectory%/src/Arrayy.php services: - diff --git a/src/Arrayy.php b/src/Arrayy.php index 3d59030e..d2ff304f 100644 --- a/src/Arrayy.php +++ b/src/Arrayy.php @@ -237,8 +237,9 @@ public function __unset($key) * @return mixed *

Get a Value from the current array.

* - * @phpstan-param array-key $key - * @phpstan-return mixed + * @template TAccessKey of key-of + * @phpstan-param TAccessKey $key + * @phpstan-return TData[TAccessKey]|null|self> */ public function &__get($key) { @@ -776,8 +777,9 @@ static function ($container) use ($lastOffset, &$offsetExists) { * @return mixed *

Will return null if the offset did not exists.

* - * @phpstan-param array-key $offset - * @phpstan-return mixed + * @template TOffset of key-of + * @phpstan-param TOffset $offset + * @phpstan-return TData[TOffset]|null */ #[\ReturnTypeWillChange] public function &offsetGet($offset) @@ -786,9 +788,11 @@ public function &offsetGet($offset) $value = null; if ($this->offsetExists($offset)) { + /* @phpstan-ignore argument.type, argument.templateType */ $value = &$this->__get($offset); } + /* @phpstan-ignore return.type */ return $value; } @@ -1752,7 +1756,7 @@ public function countValues(): self * @return static *

(Immutable) Returns an new instance of the Arrayy object.

* - * @phpstan-param mixed $data + * @phpstan-param TData|self|\Traversable|callable|object|scalar|null $data * @phpstan-param class-string<\Arrayy\ArrayyIterator> $iteratorClass * @phpstan-return static * @psalm-mutation-free diff --git a/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php b/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php index 8d61c053..fbb2b3f9 100644 --- a/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php +++ b/src/PHPStan/MetaDynamicStaticMethodReturnTypeExtension.php @@ -9,7 +9,6 @@ use PhpParser\Node\Name; use PHPStan\Analyser\Scope; use PHPStan\Reflection\MethodReflection; -use PHPStan\Reflection\ReflectionProvider; use PHPStan\Type\Constant\ConstantStringType; use PHPStan\Type\DynamicStaticMethodReturnTypeExtension; use PHPStan\Type\ObjectShapeType; @@ -22,13 +21,6 @@ final class MetaDynamicStaticMethodReturnTypeExtension implements DynamicStaticM */ private array $types = []; - private ReflectionProvider $reflectionProvider; - - public function __construct(ReflectionProvider $reflectionProvider) - { - $this->reflectionProvider = $reflectionProvider; - } - public function getClass(): string { return Arrayy::class; @@ -46,11 +38,8 @@ public function getTypeFromStaticMethodCall(MethodReflection $methodReflection, } $className = $scope->resolveName($methodCall->class); - if ( - !$this->reflectionProvider->hasClass($className) - || - !$this->reflectionProvider->getClass($className)->isSubclassOf(Arrayy::class) - ) { + /* @phpstan-ignore phpstanApi.runtimeReflection */ + if (!\is_a($className, Arrayy::class, true)) { return null; } From 26d455a18953dc214bfd5fe16646fa465e228ec2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 9 May 2026 21:05:12 +0000 Subject: [PATCH 07/10] Tighten PHPStan cleanup docs Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/5032dd36-d337-4da8-a49a-056c117b63ff Co-authored-by: voku <264695+voku@users.noreply.github.com> --- src/Arrayy.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Arrayy.php b/src/Arrayy.php index d2ff304f..151127f6 100644 --- a/src/Arrayy.php +++ b/src/Arrayy.php @@ -7491,7 +7491,7 @@ protected function callAtPath($path, $callable, &$currentOffset = null) * Extracts the value of the given property or method from the object. * * @param mixed $object - *

The object to extract the value from.

+ *

The value to extract the property or method from.

* @param string $keyOrPropertyOrMethod *

The property or method for which the * value should be extracted.

@@ -8051,7 +8051,7 @@ protected function internalRemove($key): bool $key = \array_shift($path); } - \assert(\is_int($key) || \is_string($key)); + /** @var int|string $key */ unset($this->array[$key]); return true; From afc2e6f8bf9577d21452ace8c75369589c1c6de5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 9 May 2026 21:05:51 +0000 Subject: [PATCH 08/10] Clarify final PHPStan annotations Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/5032dd36-d337-4da8-a49a-056c117b63ff Co-authored-by: voku <264695+voku@users.noreply.github.com> --- src/Arrayy.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Arrayy.php b/src/Arrayy.php index 151127f6..f6055d30 100644 --- a/src/Arrayy.php +++ b/src/Arrayy.php @@ -7491,7 +7491,7 @@ protected function callAtPath($path, $callable, &$currentOffset = null) * Extracts the value of the given property or method from the object. * * @param mixed $object - *

The value to extract the property or method from.

+ *

The Arrayy instance or object from which to extract the property or method value.

* @param string $keyOrPropertyOrMethod *

The property or method for which the * value should be extracted.

@@ -8051,6 +8051,10 @@ protected function internalRemove($key): bool $key = \array_shift($path); } + if ($key === null) { + return false; + } + /** @var int|string $key */ unset($this->array[$key]); From 6556bf8833e179cd662e8c7874a5575e87c825e9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 9 May 2026 21:06:51 +0000 Subject: [PATCH 09/10] Finalize PHPStan cleanup follow-ups Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/5032dd36-d337-4da8-a49a-056c117b63ff Co-authored-by: voku <264695+voku@users.noreply.github.com> --- src/Arrayy.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Arrayy.php b/src/Arrayy.php index f6055d30..42dd8f04 100644 --- a/src/Arrayy.php +++ b/src/Arrayy.php @@ -7491,7 +7491,7 @@ protected function callAtPath($path, $callable, &$currentOffset = null) * Extracts the value of the given property or method from the object. * * @param mixed $object - *

The Arrayy instance or object from which to extract the property or method value.

+ *

The value from which to extract the property or method value.

* @param string $keyOrPropertyOrMethod *

The property or method for which the * value should be extracted.

@@ -8055,7 +8055,10 @@ protected function internalRemove($key): bool return false; } - /** @var int|string $key */ + if (\is_float($key)) { + return false; + } + unset($this->array[$key]); return true; From 64879e7be1514c651be76ae2e4c806d188dc51fb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 9 May 2026 21:08:14 +0000 Subject: [PATCH 10/10] Refine remaining PHPStan annotations Agent-Logs-Url: https://github.com/voku/Arrayy/sessions/5032dd36-d337-4da8-a49a-056c117b63ff Co-authored-by: voku <264695+voku@users.noreply.github.com> --- src/Arrayy.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Arrayy.php b/src/Arrayy.php index 42dd8f04..f9f63f46 100644 --- a/src/Arrayy.php +++ b/src/Arrayy.php @@ -282,6 +282,7 @@ public function add($value, $key = null) ); } + /* @phpstan-ignore argument.type */ $this->internalSet($key, $value); return $this; @@ -1054,7 +1055,7 @@ public function unserialize($string): self * @return $this *

(Mutable) Return this Arrayy object, with the appended values.

* - * @phpstan-param array $values + * @phpstan-param array $values * @phpstan-param TKey|null $key * @phpstan-return static */ @@ -7491,7 +7492,7 @@ protected function callAtPath($path, $callable, &$currentOffset = null) * Extracts the value of the given property or method from the object. * * @param mixed $object - *

The value from which to extract the property or method value.

+ *

The Arrayy instance, object, or other value from which to extract the property or method value.

* @param string $keyOrPropertyOrMethod *

The property or method for which the * value should be extracted.

@@ -8074,7 +8075,7 @@ protected function internalRemove($key): bool * @return bool * * @phpstan-param TKey|null $key - * @phpstan-param mixed $value + * @phpstan-param T $value */ protected function internalSet( $key,