testData/codeInsight/inspections/UndefinedClassTemplate.php (31 lines of code) (raw):

<?php /** * @template T of <warning descr="Undefined class 'Foo'">Foo</warning> * @template-covariant T as <warning descr="Undefined class 'Foo'">Foo</warning> * @psalm-template-covariant T as <warning descr="Undefined class 'Foo'">Foo</warning> * @template T1 * @template T2 * @template * @psalm-param T $t * @psalm-param T1 $t * @psalm-param T2 $t * @psalm-param <warning descr="Undefined class 'T3'">T3</warning> $t * @return array<<T1, <warning descr="Undefined class 'T3'">T3</warning>>, T> */ function makeArray($t) { return [$t]; } /** * @template T * @psalm-template T1 * @template-covariant T33 */ class MyContainer { /** @var T */ private $value; /** @var T33 */ private $value1; /** @param T $value */ public function __construct($value) { $this->value = $value; } /** @return T */ public function getValue() { return $this->value; } /** * @template T22 * @return T1 */ public function getValue1() { /** @var T22|<warning descr="Undefined class 'T23'">T23</warning> $value */ echo $value; return $this->value; } } /** * @template T3 */ class F { /** * @template T */ function f($param) { new class { public function ff() { /** * @template T1 * @psalm-param T $a * @psalm-param T3 $a */ $a = function ($x) { /** @psalm-param T1 $x */ $x; /** @psalm-param T $x */ $x; /** @psalm-param T3 $x */ $x; }; } }; } }