Skip to content

Fix #13000: Help phpstan understand what shape array has been created when looping over an array with known shape #25628

Fix #13000: Help phpstan understand what shape array has been created when looping over an array with known shape

Fix #13000: Help phpstan understand what shape array has been created when looping over an array with known shape #25628

Triggered via pull request February 16, 2026 16:07
Status Failure
Total duration 16m 43s
Artifacts

tests.yml

on: pull_request
Matrix: Tests PHPUnit 12.x
Determine levels tests matrix
29s
Determine levels tests matrix
Matrix: Integration tests
Matrix: Tests PHPUnit 11.x
Matrix: Tests with old PHPUnit
Matrix: Mutation Testing
Matrix: Levels tests
Fit to window
Zoom out
Zoom in

Annotations

2 errors and 20 warnings
Mutation Testing (8.4, ubuntu-latest)
Process completed with exit code 1.
Mutation Testing (8.3, ubuntu-latest)
Process completed with exit code 1.
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4434
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() - || !$currentType->isSuperTypeOf($unrolledType)->yes() + || $currentType->isSuperTypeOf($unrolledType)->no() ) { continue; }
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4434
Escaped Mutant for Mutator "PHPStan\Infection\IsSuperTypeOfCalleeAndArgumentMutator": @@ @@ !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() - || !$currentType->isSuperTypeOf($unrolledType)->yes() + || !$unrolledType->isSuperTypeOf($currentType)->yes() ) { continue; }
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4433
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ if ( !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() - || !$currentType->isArray()->yes() + || $currentType->isArray()->no() || !$currentType->isSuperTypeOf($unrolledType)->yes() ) { continue;
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4432
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ if ( !$unrolledType->isConstantArray()->yes() - || !$currentType->isConstantArray()->no() + || $currentType->isConstantArray()->yes() || !$currentType->isArray()->yes() || !$currentType->isSuperTypeOf($unrolledType)->yes() ) {
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4431
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $currentType = $currentHolder->getType(); if ( - !$unrolledType->isConstantArray()->yes() + $unrolledType->isConstantArray()->no() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() || !$currentType->isSuperTypeOf($unrolledType)->yes()
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4408
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() - || !$currentType->isSuperTypeOf($unrolledType)->yes() + || $currentType->isSuperTypeOf($unrolledType)->no() ) { continue; }
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4408
Escaped Mutant for Mutator "PHPStan\Infection\IsSuperTypeOfCalleeAndArgumentMutator": @@ @@ !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() - || !$currentType->isSuperTypeOf($unrolledType)->yes() + || !$unrolledType->isSuperTypeOf($currentType)->yes() ) { continue; }
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4407
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ if ( !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() - || !$currentType->isArray()->yes() + || $currentType->isArray()->no() || !$currentType->isSuperTypeOf($unrolledType)->yes() ) { continue;
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4406
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ // Only refine if the unrolled scope has a more precise type if ( !$unrolledType->isConstantArray()->yes() - || !$currentType->isConstantArray()->no() + || $currentType->isConstantArray()->yes() || !$currentType->isArray()->yes() || !$currentType->isSuperTypeOf($unrolledType)->yes() ) {
Mutation Testing (8.4, ubuntu-latest): src/Analyser/MutatingScope.php#L4405
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ // Only refine if the unrolled scope has a more precise type if ( - !$unrolledType->isConstantArray()->yes() + $unrolledType->isConstantArray()->no() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() || !$currentType->isSuperTypeOf($unrolledType)->yes()
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4434
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() - || !$currentType->isSuperTypeOf($unrolledType)->yes() + || $currentType->isSuperTypeOf($unrolledType)->no() ) { continue; }
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4434
Escaped Mutant for Mutator "PHPStan\Infection\IsSuperTypeOfCalleeAndArgumentMutator": @@ @@ !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() - || !$currentType->isSuperTypeOf($unrolledType)->yes() + || !$unrolledType->isSuperTypeOf($currentType)->yes() ) { continue; }
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4433
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ if ( !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() - || !$currentType->isArray()->yes() + || $currentType->isArray()->no() || !$currentType->isSuperTypeOf($unrolledType)->yes() ) { continue;
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4432
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ if ( !$unrolledType->isConstantArray()->yes() - || !$currentType->isConstantArray()->no() + || $currentType->isConstantArray()->yes() || !$currentType->isArray()->yes() || !$currentType->isSuperTypeOf($unrolledType)->yes() ) {
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4431
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $currentType = $currentHolder->getType(); if ( - !$unrolledType->isConstantArray()->yes() + $unrolledType->isConstantArray()->no() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() || !$currentType->isSuperTypeOf($unrolledType)->yes()
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4408
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() - || !$currentType->isSuperTypeOf($unrolledType)->yes() + || $currentType->isSuperTypeOf($unrolledType)->no() ) { continue; }
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4408
Escaped Mutant for Mutator "PHPStan\Infection\IsSuperTypeOfCalleeAndArgumentMutator": @@ @@ !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() - || !$currentType->isSuperTypeOf($unrolledType)->yes() + || !$unrolledType->isSuperTypeOf($currentType)->yes() ) { continue; }
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4407
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ if ( !$unrolledType->isConstantArray()->yes() || !$currentType->isConstantArray()->no() - || !$currentType->isArray()->yes() + || $currentType->isArray()->no() || !$currentType->isSuperTypeOf($unrolledType)->yes() ) { continue;
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4406
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ // Only refine if the unrolled scope has a more precise type if ( !$unrolledType->isConstantArray()->yes() - || !$currentType->isConstantArray()->no() + || $currentType->isConstantArray()->yes() || !$currentType->isArray()->yes() || !$currentType->isSuperTypeOf($unrolledType)->yes() ) {
Mutation Testing (8.3, ubuntu-latest): src/Analyser/MutatingScope.php#L4405
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ // Only refine if the unrolled scope has a more precise type if ( - !$unrolledType->isConstantArray()->yes() + $unrolledType->isConstantArray()->no() || !$currentType->isConstantArray()->no() || !$currentType->isArray()->yes() || !$currentType->isSuperTypeOf($unrolledType)->yes()