scan method

  1. @override
bool scan(
  1. JavaScriptExternalScannerState state,
  2. TreeSitterExternalLexer lexer,
  3. List<bool> validSymbols
)
override

Implementation

@override
bool scan(
  JavaScriptExternalScannerState state,
  TreeSitterExternalLexer lexer,
  List<bool> validSymbols,
) {
  bool valid(int index) => index < validSymbols.length && validSymbols[index];
  if (valid(JavaScriptExternalToken.templateChars.index)) {
    if (valid(JavaScriptExternalToken.automaticSemicolon.index)) return false;
    return _scanTemplateChars(lexer);
  }
  if ((_modernJavaScript || _typed025) && valid(7) && _scanJsxText(lexer)) {
    return true;
  }
  if (valid(JavaScriptExternalToken.automaticSemicolon.index) ||
      (_typed && valid(_functionSignatureSemicolonIndex))) {
    final result = _modernJavaScript
        ? _scanAutomaticSemicolonModern(lexer, commentCondition: !valid(4))
        : (
            accepted: _scanAutomaticSemicolon(lexer, validSymbols),
            scannedComment: false,
          );
    if (!result.accepted &&
        !result.scannedComment &&
        valid(JavaScriptExternalToken.ternaryQmark.index) &&
        lexer.lookahead == 0x3f) {
      return _scanTernaryQmark(lexer);
    }
    return result.accepted;
  }
  if (valid(JavaScriptExternalToken.ternaryQmark.index)) {
    return _scanTernaryQmark(lexer);
  }
  if ((_modernJavaScript || _typed025) &&
      valid(3) &&
      !valid(_logicalOrIndex) &&
      !valid(5) &&
      !valid(6)) {
    return _scanHtmlComment(lexer);
  }
  return false;
}