parseUtf8Bytes method

GeneratedTreeSitterTree parseUtf8Bytes(
  1. Uint8List bytes, {
  2. GeneratedTreeSitterTree? oldTree,
  3. Iterable<TreeSitterInputEdit> edits = const [],
  4. List<TreeSitterTableRange> includedRanges = const [],
  5. TreeSitterParserRuntimeHooks? runtimeHooks,
})

Parses an exact UTF-8 byte buffer without first round-tripping it through a Dart String. Native Tree-sitter's parser input is byte-oriented, and malformed UTF-8 must retain its physical byte offsets for recovery.

Implementation

GeneratedTreeSitterTree parseUtf8Bytes(
  Uint8List bytes, {
  GeneratedTreeSitterTree? oldTree,
  Iterable<TreeSitterInputEdit> edits = const [],
  List<TreeSitterTableRange> includedRanges = const [],
  TreeSitterParserRuntimeHooks? runtimeHooks,
}) {
  final resuming = _activeParseSession != null;
  _runtimeHooks = runtimeHooks;
  _parseClock = runtimeHooks != null && runtimeHooks.timeout > Duration.zero
      ? (Stopwatch()..start())
      : null;
  _progressOperationCount = 0;
  _activeIncludedRanges = includedRanges;
  if (!resuming) {
    _initializeNewParse(oldTree, edits, includedRanges);
  }
  var halted = false;
  try {
    final source = utf8.decode(bytes, allowMalformed: true);
    return _parseWithRecovery(source, Uint8List.fromList(bytes));
  } on GeneratedTreeSitterParseHalted {
    halted = true;
    rethrow;
  } finally {
    if (!halted) reset();
    _runtimeHooks = null;
    _parseClock = null;
  }
}