diff --git a/src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php b/src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php index 2276b51..2e8e828 100644 --- a/src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php +++ b/src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php @@ -123,16 +123,10 @@ private static function getExpressionResolvers(): array { if (self::$resolvers === null) { self::$resolvers = [ - 'InstanceOf' => static function (Scope $scope, Arg $class, Arg $object): ?Instanceof_ { - $classType = $scope->getType($class->value); - $classNames = $classType->getConstantStrings(); - if (count($classNames) !== 1) { - return null; - } - + 'InstanceOf' => static function (Scope $scope, Arg $class, Arg $object): Instanceof_ { return new Instanceof_( $object->value, - new Name($classNames[0]->getValue()) + $class->value ); }, 'Same' => static function (Scope $scope, Arg $expected, Arg $actual): Identical { diff --git a/tests/Type/PHPUnit/data/assert-function.php b/tests/Type/PHPUnit/data/assert-function.php index 117179a..f3222f3 100644 --- a/tests/Type/PHPUnit/data/assert-function.php +++ b/tests/Type/PHPUnit/data/assert-function.php @@ -20,6 +20,17 @@ public function doFoo($o): void assertType(self::class, $o); } + /** + * @template T of object + * @param object $o + * @param class-string<\DateTimeInterface> $class + */ + public function assertInstanceOfWorksWithTemplate($o, $class): void + { + assertInstanceOf($class, $o); + assertType(\DateTimeInterface::class, $o); + } + public function arrayHasNumericKey(array $a): void { assertArrayHasKey(0, $a); assertType('array&hasOffset(0)', $a);