Skip to content

Fix subtype check for identical late-resolvable conditional types (bug #10942) #24181

Fix subtype check for identical late-resolvable conditional types (bug #10942)

Fix subtype check for identical late-resolvable conditional types (bug #10942) #24181

Triggered via pull request November 27, 2025 15:27
Status Failure
Total duration 5m 35s
Artifacts

static-analysis.yml

on: pull_request
Generate baseline
1m 58s
Generate baseline
Generate PHP baseline
1m 58s
Generate PHP baseline
Matrix: PHPStan with result cache
Matrix: PHPStan
Fit to window
Zoom out
Zoom in

Annotations

77 errors
Generate baseline
Process completed with exit code 1.
PHPStan with result cache (8.2)
Process completed with exit code 2.
PHPStan with result cache (8.2): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan with result cache (8.2): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.4, ubuntu-latest)
Process completed with exit code 2.
PHPStan (8.4, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.4, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.5, ubuntu-latest)
Process completed with exit code 2.
PHPStan (8.5, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.5, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.3, ubuntu-latest)
Process completed with exit code 2.
PHPStan (8.3, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.3, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan with result cache (8.3)
Process completed with exit code 2.
PHPStan with result cache (8.3): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan with result cache (8.3): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan with result cache (8.5)
Process completed with exit code 2.
PHPStan with result cache (8.5): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan with result cache (8.5): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.2, ubuntu-latest)
Process completed with exit code 2.
PHPStan (8.2, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.2, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan with result cache (8.4)
Process completed with exit code 2.
PHPStan with result cache (8.4): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan with result cache (8.4): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.0, ubuntu-latest)
Process completed with exit code 2.
PHPStan (8.0, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L78
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.0, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.0, ubuntu-latest): tests/PHPStan/Rules/Properties/MissingReadOnlyPropertyAssignRuleWithoutNarrowMethodScopeTest.php#L56
Strict comparison using === between class-string and 'MissingReadOnlyPropertyAssign\\Entity' will always evaluate to false.
PHPStan (8.0, ubuntu-latest): src/Analyser/Generator/RunInFiberResult.php#L18
Template type T is declared as covariant, but occurs in invariant position in property PHPStan\Analyser\Generator\RunInFiberResult::$value.
PHPStan (8.0, ubuntu-latest): src/Analyser/Generator/RunInFiberRequest.php#L25
Template type T is declared as covariant, but occurs in invariant position in property PHPStan\Analyser\Generator\RunInFiberRequest::$callback.
PHPStan (8.1, ubuntu-latest)
Process completed with exit code 2.
PHPStan (8.1, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L78
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.1, ubuntu-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L936
Asserted type PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum for $this->reflection with type ReflectionClass can never happen.
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L715
Method PHPStan\Reflection\ClassReflection::findConstructor() should return PHPStan\BetterReflection\Reflection\Adapter\ReflectionMethod|null but returns ReflectionMethod.
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L708
Method PHPStan\Reflection\ClassReflection::findConstructor() should return PHPStan\BetterReflection\Reflection\Adapter\ReflectionMethod|null but returns ReflectionMethod.
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L492
Call to an undefined method ReflectionClass::getAttributes().
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L234
Method PHPStan\Reflection\ClassReflection::getNativeReflection() should return PHPStan\BetterReflection\Reflection\Adapter\ReflectionClass|PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum but returns ReflectionClass.
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L232
Method PHPStan\Reflection\ClassReflection::getNativeReflection() never returns PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum so it can be removed from the return type.
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L206
PHPDoc tag `@param` for parameter $reflection with type PHPStan\BetterReflection\Reflection\Adapter\ReflectionClass|PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum is not subtype of native type ReflectionClass.
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L206
Method PHPStan\Reflection\ClassReflection::__construct() has parameter $reflection with generic class ReflectionClass but does not specify its types: T
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L97
Property PHPStan\Reflection\ClassReflection::$reflection with generic class ReflectionClass does not specify its types: T
PHPStan (7.4, ubuntu-latest): src/Reflection/ClassReflection.php#L97
PHPDoc tag `@var` for property PHPStan\Reflection\ClassReflection::$reflection with type PHPStan\BetterReflection\Reflection\Adapter\ReflectionClass|PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum is not subtype of native type ReflectionClass.
PHPStan (8.4, windows-latest)
Process completed with exit code 1.
PHPStan (8.4, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.4, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.5, windows-latest)
Process completed with exit code 1.
PHPStan (8.5, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.5, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.3, windows-latest)
Process completed with exit code 1.
PHPStan (8.3, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.3, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.2, windows-latest)
Process completed with exit code 1.
PHPStan (8.2, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L74
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.2, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.1, windows-latest)
Process completed with exit code 1.
PHPStan (8.1, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L78
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.1, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.0, windows-latest)
Process completed with exit code 1.
PHPStan (8.0, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L78
Call to an undefined method PHPStan\Type\Type::isSubTypeOf().
PHPStan (8.0, windows-latest): tests/PHPStan/Type/LateResolvableTypeTraitTest.php#L50
Method PHPStan\Type\LateResolvableTypeTraitTest::provideCases() should return list<array{PHPStan\Type\Type, PHPStan\Type\Type, PHPStan\TrinaryLogic}> but returns array{'conditional vs same conditional': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\ConditionalTypeForParameter, PHPStan\TrinaryLogic}, 'conditional vs union containing it': array{PHPStan\Type\ConditionalTypeForParameter, PHPStan\Type\UnionType, PHPStan\TrinaryLogic}}.
PHPStan (8.0, windows-latest): tests/PHPStan/Rules/Properties/MissingReadOnlyPropertyAssignRuleWithoutNarrowMethodScopeTest.php#L56
Strict comparison using === between class-string and 'MissingReadOnlyPropertyAssign\\Entity' will always evaluate to false.
PHPStan (8.0, windows-latest): src/Analyser/Generator/RunInFiberResult.php#L18
Template type T is declared as covariant, but occurs in invariant position in property PHPStan\Analyser\Generator\RunInFiberResult::$value.
PHPStan (8.0, windows-latest): src/Analyser/Generator/RunInFiberRequest.php#L25
Template type T is declared as covariant, but occurs in invariant position in property PHPStan\Analyser\Generator\RunInFiberRequest::$callback.
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L936
Asserted type PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum for $this->reflection with type ReflectionClass can never happen.
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L715
Method PHPStan\Reflection\ClassReflection::findConstructor() should return PHPStan\BetterReflection\Reflection\Adapter\ReflectionMethod|null but returns ReflectionMethod.
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L708
Method PHPStan\Reflection\ClassReflection::findConstructor() should return PHPStan\BetterReflection\Reflection\Adapter\ReflectionMethod|null but returns ReflectionMethod.
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L492
Call to an undefined method ReflectionClass::getAttributes().
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L234
Method PHPStan\Reflection\ClassReflection::getNativeReflection() should return PHPStan\BetterReflection\Reflection\Adapter\ReflectionClass|PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum but returns ReflectionClass.
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L232
Method PHPStan\Reflection\ClassReflection::getNativeReflection() never returns PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum so it can be removed from the return type.
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L206
PHPDoc tag `@param` for parameter $reflection with type PHPStan\BetterReflection\Reflection\Adapter\ReflectionClass|PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum is not subtype of native type ReflectionClass.
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L206
Method PHPStan\Reflection\ClassReflection::__construct() has parameter $reflection with generic class ReflectionClass but does not specify its types: T
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L97
Property PHPStan\Reflection\ClassReflection::$reflection with generic class ReflectionClass does not specify its types: T
PHPStan (7.4, windows-latest): src/Reflection/ClassReflection.php#L97
PHPDoc tag `@var` for property PHPStan\Reflection\ClassReflection::$reflection with type PHPStan\BetterReflection\Reflection\Adapter\ReflectionClass|PHPStan\BetterReflection\Reflection\Adapter\ReflectionEnum is not subtype of native type ReflectionClass.