private static function getScopeContext()

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,
    );
  }