setIncludedRanges method
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);
}