in src/FileParser.hack [71:98]
private static function getScopeContext(
string $file,
HHAST\Node $ast,
): ScannedScope::TContext {
$suffix = C\first($ast->getDescendantsOfType(HHAST\MarkupSuffix::class));
$name = $suffix?->getName()?->getText();
if ($name === 'php' || $name === '' || $name === null) {
$type = SourceType::PHP;
} else if ($name === 'hh') {
$mode = nullthrows($suffix)->getLastTokenx()->getTrailing()->getCode()
|> Str\trim($$) // '// strict' or //strict'
|> Str\strip_prefix($$, '//')
|> Str\trim($$);
if ($mode === 'strict') {
$type = SourceType::HACK_STRICT;
} else if ($mode === 'decl') {
$type = SourceType::HACK_DECL;
} else {
$type = SourceType::HACK_PARTIAL;
}
} else {
$type = SourceType::UNKNOWN;
}
return shape(
'filename' => $file,
'sourceType' => $type,
);
}