diff --git a/src/Psalm/Internal/PhpVisitor/Reflector/FunctionLikeDocblockScanner.php b/src/Psalm/Internal/PhpVisitor/Reflector/FunctionLikeDocblockScanner.php index 5452d899e6b..14eddc5d5a3 100644 --- a/src/Psalm/Internal/PhpVisitor/Reflector/FunctionLikeDocblockScanner.php +++ b/src/Psalm/Internal/PhpVisitor/Reflector/FunctionLikeDocblockScanner.php @@ -615,7 +615,8 @@ private static function getAssertionParts( true ), null, - $template_types + $template_types, + $type_aliases ); } catch (TypeParseTreeException $e) { $storage->docblock_issues[] = new InvalidDocblock( diff --git a/tests/TypeAnnotationTest.php b/tests/TypeAnnotationTest.php index ee512e26bcc..c55a5911221 100644 --- a/tests/TypeAnnotationTest.php +++ b/tests/TypeAnnotationTest.php @@ -593,6 +593,43 @@ class C extends A {} '$output' => 'string', ], ], + 'importedTypeUsedInAssertion' => [ + 'code' => 'assertFoo($input); + return $input; + } + + /** + * @param mixed $value + * @psalm-assert FooAlias $value + */ + private function assertFoo($value): void { + if(!is_string($value)) { + throw new \InvalidArgumentException(); + } + } + } + + $instance = new B(); + $output = $instance->convertToFoo("hallo"); + ', + 'assertions' => [ + '$output' => 'string', + ] + ] ]; }