mirror of
https://github.com/danog/psalm.git
synced 2024-12-15 19:07:00 +01:00
62 lines
2.0 KiB
PHP
62 lines
2.0 KiB
PHP
<?php
|
|
namespace Psalm\Internal\Analyzer\Statements;
|
|
|
|
use PhpParser;
|
|
use Psalm\Internal\Analyzer\CommentAnalyzer;
|
|
use Psalm\Internal\Analyzer\StatementsAnalyzer;
|
|
use Psalm\CodeLocation;
|
|
use Psalm\Context;
|
|
use Psalm\Exception\DocblockParseException;
|
|
use Psalm\Issue\InvalidDocblock;
|
|
use Psalm\IssueBuffer;
|
|
|
|
class NopAnalyzer
|
|
{
|
|
public static function analyze(
|
|
StatementsAnalyzer $statements_analyzer,
|
|
PhpParser\Node\Stmt\Nop $stmt,
|
|
Context $context
|
|
) : void {
|
|
if (($doc_comment = $stmt->getDocComment()) && $parsed_docblock = $statements_analyzer->getParsedDocblock()) {
|
|
$var_comments = [];
|
|
|
|
try {
|
|
$var_comments = CommentAnalyzer::arrayToDocblocks(
|
|
$doc_comment,
|
|
$parsed_docblock,
|
|
$statements_analyzer->getSource(),
|
|
$statements_analyzer->getSource()->getAliases(),
|
|
$statements_analyzer->getSource()->getTemplateTypeMap()
|
|
);
|
|
} catch (DocblockParseException $e) {
|
|
if (IssueBuffer::accepts(
|
|
new InvalidDocblock(
|
|
(string)$e->getMessage(),
|
|
new CodeLocation($statements_analyzer->getSource(), $stmt, null, true)
|
|
)
|
|
)) {
|
|
// fall through
|
|
}
|
|
}
|
|
|
|
$codebase = $statements_analyzer->getCodebase();
|
|
|
|
foreach ($var_comments as $var_comment) {
|
|
if (!$var_comment->var_id || !$var_comment->type) {
|
|
continue;
|
|
}
|
|
|
|
$comment_type = \Psalm\Internal\Type\TypeExpander::expandUnion(
|
|
$codebase,
|
|
$var_comment->type,
|
|
$context->self,
|
|
$context->self,
|
|
$statements_analyzer->getParentFQCLN()
|
|
);
|
|
|
|
$context->vars_in_scope[$var_comment->var_id] = $comment_type;
|
|
}
|
|
}
|
|
}
|
|
}
|