Skip to content

Commit

Permalink
Merge pull request #8654 from VincentLanglet/phpstanAssert
Browse files Browse the repository at this point in the history
Add support for phpstan assertions
  • Loading branch information
orklah committed Nov 3, 2022
2 parents 85b5436 + 6382af1 commit 2b3fa46
Showing 1 changed file with 34 additions and 22 deletions.
Expand Up @@ -176,7 +176,7 @@ public static function parse(
}
}

foreach (['psalm-self-out', 'psalm-this-out'] as $alias) {
foreach (['psalm-self-out', 'psalm-this-out', 'phpstan-self-out', 'phpstan-this-out'] as $alias) {
if (isset($parsed_docblock->tags[$alias])) {
foreach ($parsed_docblock->tags[$alias] as $offset => $param) {
$line_parts = CommentAnalyzer::splitDocLine($param);
Expand Down Expand Up @@ -465,36 +465,48 @@ public static function parse(
}
}

if (isset($parsed_docblock->tags['psalm-assert'])) {
foreach ($parsed_docblock->tags['psalm-assert'] as $assertion) {
$line_parts = self::sanitizeAssertionLineParts(CommentAnalyzer::splitDocLine($assertion));
foreach (['psalm-assert', 'phpstan-assert'] as $assert) {
if (isset($parsed_docblock->tags[$assert])) {
foreach ($parsed_docblock->tags[$assert] as $assertion) {
$line_parts = self::sanitizeAssertionLineParts(CommentAnalyzer::splitDocLine($assertion));

$info->assertions[] = [
'type' => $line_parts[0],
'param_name' => $line_parts[1][0] === '$' ? substr($line_parts[1], 1) : $line_parts[1],
];
$info->assertions[] = [
'type' => $line_parts[0],
'param_name' => $line_parts[1][0] === '$' ? substr($line_parts[1], 1) : $line_parts[1],
];
}

break;
}
}

if (isset($parsed_docblock->tags['psalm-assert-if-true'])) {
foreach ($parsed_docblock->tags['psalm-assert-if-true'] as $assertion) {
$line_parts = self::sanitizeAssertionLineParts(CommentAnalyzer::splitDocLine($assertion));
foreach (['psalm-assert-if-true', 'phpstan-assert-if-true'] as $assert) {
if (isset($parsed_docblock->tags[$assert])) {
foreach ($parsed_docblock->tags[$assert] as $assertion) {
$line_parts = self::sanitizeAssertionLineParts(CommentAnalyzer::splitDocLine($assertion));

$info->if_true_assertions[] = [
'type' => $line_parts[0],
'param_name' => $line_parts[1][0] === '$' ? substr($line_parts[1], 1) : $line_parts[1],
];
$info->if_true_assertions[] = [
'type' => $line_parts[0],
'param_name' => $line_parts[1][0] === '$' ? substr($line_parts[1], 1) : $line_parts[1],
];
}

break;
}
}

if (isset($parsed_docblock->tags['psalm-assert-if-false'])) {
foreach ($parsed_docblock->tags['psalm-assert-if-false'] as $assertion) {
$line_parts = self::sanitizeAssertionLineParts(CommentAnalyzer::splitDocLine($assertion));
foreach (['psalm-assert-if-false', 'phpstan-assert-if-false'] as $assert) {
if (isset($parsed_docblock->tags[$assert])) {
foreach ($parsed_docblock->tags[$assert] as $assertion) {
$line_parts = self::sanitizeAssertionLineParts(CommentAnalyzer::splitDocLine($assertion));

$info->if_false_assertions[] = [
'type' => $line_parts[0],
'param_name' => $line_parts[1][0] === '$' ? substr($line_parts[1], 1) : $line_parts[1],
];
$info->if_false_assertions[] = [
'type' => $line_parts[0],
'param_name' => $line_parts[1][0] === '$' ? substr($line_parts[1], 1) : $line_parts[1],
];
}

break;
}
}

Expand Down

0 comments on commit 2b3fa46

Please sign in to comment.