generatedRangeArrayAdd function

Implementation

void generatedRangeArrayAdd(
  List<GeneratedTreeSitterChangedRange> ranges,
  GeneratedChangedRangeLength start,
  GeneratedChangedRangeLength end, {
  GeneratedChangedRangeTrace? trace,
}) {
  if (ranges.isNotEmpty && start.byte <= ranges.last.endByte) {
    final last = ranges.removeLast();
    ranges.add(
      GeneratedTreeSitterChangedRange(
        startByte: last.startByte,
        endByte: end.byte,
        startPoint: last.startPoint,
        endPoint: end.point,
      ),
    );
  } else if (start.byte < end.byte) {
    ranges.add(
      GeneratedTreeSitterChangedRange(
        startByte: start.byte,
        endByte: end.byte,
        startPoint: start.point,
        endPoint: end.point,
      ),
    );
  }
  trace?.record('ts_range_array_add', (start.byte, end.byte));
}