setIncludedRanges method

void setIncludedRanges(
  1. Iterable<TreeSitterRange> ranges
)

Implementation

void setIncludedRanges(Iterable<TreeSitterRange> ranges) {
  _checkNotDisposed();
  final next = ranges.toList(growable: false);
  if (next.isEmpty) {
    _includedRanges = const [fullDocumentRange];
    return;
  }
  for (var index = 0; index < next.length; index++) {
    final range = next[index];
    if (range.endByte < range.startByte ||
        _comparePoints(range.endPoint, range.startPoint) < 0) {
      throw TreeSitterIncludedRangesError(
        index,
        'Included range end precedes its start.',
      );
    }
    if (index > 0) {
      final previous = next[index - 1];
      if (range.startByte < previous.endByte ||
          _comparePoints(range.startPoint, previous.endPoint) < 0) {
        throw TreeSitterIncludedRangesError(
          index,
          'Included ranges must be sorted and disjoint.',
        );
      }
    }
  }
  _includedRanges = List.unmodifiable(next);
}