Check that a range represents a slice of an indexable object.
Throws if the range is not valid for an indexable object with the given length
. A range is valid for an indexable object with a given length
if 0 <= [start] <= [end] <= [length]
. An end
of null
is considered equivalent to length
.
The startName
and endName
defaults to "start"
and "end"
, respectively.
Returns the actual end
value, which is length
if end
is null
, and end
otherwise.
static int checkValidRange(int start, int end, int length, [String startName, String endName, String message]) { // Comparing with `0` as receiver produces better dart2js type inference. // Ditto `start > end` below. if (0 > start || start > length) { if (startName == null) startName = "start"; throw new RangeError.range(start, 0, length, startName, message); } if (end != null) { if (start > end || end > length) { if (endName == null) endName = "end"; throw new RangeError.range(end, start, length, endName, message); } return end; } return length; }
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/2.0.0/dart-core/RangeError/checkValidRange.html