From 8bb564d5fec68c92974b342961e7df3928aeb55d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Paris?= Date: Tue, 15 Jun 2021 19:46:35 +0200 Subject: [PATCH] Limit template annotations to Psalm Phpstan requires that the template can be resolved in all cases, while Psalm seems to tolerate this ambiguous situation. See https://github.com/phpstan/phpstan/issues/5175#issuecomment-861437050 --- lib/Doctrine/ORM/EntityManagerInterface.php | 4 ++- .../Doctrine/StaticAnalysis/get-metadata.php | 35 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 tests/Doctrine/StaticAnalysis/get-metadata.php diff --git a/lib/Doctrine/ORM/EntityManagerInterface.php b/lib/Doctrine/ORM/EntityManagerInterface.php index e1d30b64696..fafa33abaf3 100644 --- a/lib/Doctrine/ORM/EntityManagerInterface.php +++ b/lib/Doctrine/ORM/EntityManagerInterface.php @@ -321,11 +321,13 @@ public function hasFilters(); * {@inheritDoc} * * @psalm-param string|class-string $className + * @phpstan-param string $className * * @return Mapping\ClassMetadata * @psalm-return Mapping\ClassMetadata + * @phpstan-return Mapping\ClassMetadata * - * @template T of object + * @psalm-template T of object */ public function getClassMetadata($className); } diff --git a/tests/Doctrine/StaticAnalysis/get-metadata.php b/tests/Doctrine/StaticAnalysis/get-metadata.php new file mode 100644 index 00000000000..f7b05906528 --- /dev/null +++ b/tests/Doctrine/StaticAnalysis/get-metadata.php @@ -0,0 +1,35 @@ + $class + * @phpstan-param class-string $class + * + * @psalm-return ClassMetadata + * @phpstan-return ClassMetadata + * + * @psalm-template TObject of object + */ + public function __invoke(string $class): ClassMetadata + { + return $this->getEntityManager($class)->getClassMetadata($class); + } +}