From 9ec556bb14f4c43a28d1461e4b9e7d7800e494ea Mon Sep 17 00:00:00 2001 From: Bruce Weirdan Date: Wed, 31 Jan 2024 21:59:40 +0100 Subject: [PATCH] Allow inline comments in typedef shapes Fixes vimeo/psalm#10492 --- .../Reflector/ClassLikeNodeScanner.php | 7 +------ tests/TypeAnnotationTest.php | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Psalm/Internal/PhpVisitor/Reflector/ClassLikeNodeScanner.php b/src/Psalm/Internal/PhpVisitor/Reflector/ClassLikeNodeScanner.php index 87da361b2e1..7589c018f98 100644 --- a/src/Psalm/Internal/PhpVisitor/Reflector/ClassLikeNodeScanner.php +++ b/src/Psalm/Internal/PhpVisitor/Reflector/ClassLikeNodeScanner.php @@ -81,7 +81,6 @@ use function preg_match; use function preg_replace; use function preg_split; -use function str_replace; use function strtolower; use function trim; use function usort; @@ -1913,10 +1912,6 @@ private static function getTypeAliasesFromCommentLines( continue; } - $var_line = preg_replace('/[ \t]+/', ' ', preg_replace('@^[ \t]*\*@m', '', $var_line)); - $var_line = preg_replace('/,\n\s+\}/', '}', $var_line); - $var_line = str_replace("\n", '', $var_line); - $var_line_parts = preg_split('/( |=)/', $var_line, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); if (!$var_line_parts) { @@ -1949,7 +1944,7 @@ private static function getTypeAliasesFromCommentLines( array_shift($var_line_parts); } - $type_string = str_replace("\n", '', implode('', $var_line_parts)); + $type_string = implode('', $var_line_parts); try { $type_string = CommentAnalyzer::splitDocLine($type_string)[0]; } catch (DocblockParseException $e) { diff --git a/tests/TypeAnnotationTest.php b/tests/TypeAnnotationTest.php index dbcbf0b987d..ea4d4be65b7 100644 --- a/tests/TypeAnnotationTest.php +++ b/tests/TypeAnnotationTest.php @@ -884,6 +884,23 @@ public function f(array $foo): void { 'ignored_issues' => [], 'php_version' => '8.1', ], + 'inlineComments' => [ + 'code' => <<<'PHP' +