Skip to content

Fix #11427: Wrong "dead catch" error, side effects of ArrayAccess not considered #25416

Fix #11427: Wrong "dead catch" error, side effects of ArrayAccess not considered

Fix #11427: Wrong "dead catch" error, side effects of ArrayAccess not considered #25416

Triggered via pull request February 12, 2026 21:29
Status Failure
Total duration 15m 59s
Artifacts

tests.yml

on: pull_request
Matrix: Tests PHPUnit 12.x
Determine levels tests matrix
34s
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 12 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/NodeScopeResolver.php#L3936
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($var->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if ($varType->isArray()->yes() || $isArrayAccess->no()) { + if ($varType->isArray()->yes() || !$isArrayAccess->yes()) { continue; }
Mutation Testing (8.4, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L3936
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($var->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if ($varType->isArray()->yes() || $isArrayAccess->no()) { + if (!$varType->isArray()->no() || $isArrayAccess->no()) { continue; }
Mutation Testing (8.4, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L3623
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($expr->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if (!$varType->isArray()->yes() && !$isArrayAccess->no()) { + if (!$varType->isArray()->yes() && $isArrayAccess->yes()) { $throwPoints = array_merge($throwPoints, $this->processExprNode( $stmt, new MethodCall($this->deepNodeCloner->cloneNode($expr->var), 'offsetGet'),
Mutation Testing (8.4, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L3623
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($expr->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if (!$varType->isArray()->yes() && !$isArrayAccess->no()) { + if ($varType->isArray()->no() && !$isArrayAccess->no()) { $throwPoints = array_merge($throwPoints, $this->processExprNode( $stmt, new MethodCall($this->deepNodeCloner->cloneNode($expr->var), 'offsetGet'),
Mutation Testing (8.4, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L2086
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($var->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if (!$varType->isArray()->yes() && !$isArrayAccess->no()) { + if (!$varType->isArray()->yes() && $isArrayAccess->yes()) { $throwPoints = array_merge($throwPoints, $this->processExprNode( $stmt, new MethodCall($this->deepNodeCloner->cloneNode($var->var), 'offsetUnset'),
Mutation Testing (8.4, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L2086
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($var->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if (!$varType->isArray()->yes() && !$isArrayAccess->no()) { + if ($varType->isArray()->no() && !$isArrayAccess->no()) { $throwPoints = array_merge($throwPoints, $this->processExprNode( $stmt, new MethodCall($this->deepNodeCloner->cloneNode($var->var), 'offsetUnset'),
Mutation Testing (8.3, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L3936
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($var->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if ($varType->isArray()->yes() || $isArrayAccess->no()) { + if ($varType->isArray()->yes() || !$isArrayAccess->yes()) { continue; }
Mutation Testing (8.3, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L3936
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($var->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if ($varType->isArray()->yes() || $isArrayAccess->no()) { + if (!$varType->isArray()->no() || $isArrayAccess->no()) { continue; }
Mutation Testing (8.3, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L3623
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($expr->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if (!$varType->isArray()->yes() && !$isArrayAccess->no()) { + if (!$varType->isArray()->yes() && $isArrayAccess->yes()) { $throwPoints = array_merge($throwPoints, $this->processExprNode( $stmt, new MethodCall($this->deepNodeCloner->cloneNode($expr->var), 'offsetGet'),
Mutation Testing (8.3, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L3623
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($expr->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if (!$varType->isArray()->yes() && !$isArrayAccess->no()) { + if ($varType->isArray()->no() && !$isArrayAccess->no()) { $throwPoints = array_merge($throwPoints, $this->processExprNode( $stmt, new MethodCall($this->deepNodeCloner->cloneNode($expr->var), 'offsetGet'),
Mutation Testing (8.3, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L2086
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($var->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if (!$varType->isArray()->yes() && !$isArrayAccess->no()) { + if (!$varType->isArray()->yes() && $isArrayAccess->yes()) { $throwPoints = array_merge($throwPoints, $this->processExprNode( $stmt, new MethodCall($this->deepNodeCloner->cloneNode($var->var), 'offsetUnset'),
Mutation Testing (8.3, ubuntu-latest): src/Analyser/NodeScopeResolver.php#L2086
Escaped Mutant for Mutator "PHPStan\Infection\TrinaryLogicMutator": @@ @@ $varType = $scope->getType($var->var); /** @infection-ignore-all */ $isArrayAccess = (new ObjectType(ArrayAccess::class))->isSuperTypeOf($varType); - if (!$varType->isArray()->yes() && !$isArrayAccess->no()) { + if ($varType->isArray()->no() && !$isArrayAccess->no()) { $throwPoints = array_merge($throwPoints, $this->processExprNode( $stmt, new MethodCall($this->deepNodeCloner->cloneNode($var->var), 'offsetUnset'),