Index: runtime/lib/array.dart |
diff --git a/runtime/lib/array.dart b/runtime/lib/array.dart |
index cf124ba6259c9e72c2f16e9a12b978e7bd910dd3..aab9f31a6c69b8d8f31b4768245e6ff22c25ee3f 100644 |
--- a/runtime/lib/array.dart |
+++ b/runtime/lib/array.dart |
@@ -60,10 +60,9 @@ class _List<E> extends FixedLengthListBase<E> { |
} |
List<E> sublist(int start, [int end]) { |
- Lists.indicesCheck(this, start, end); |
- if (end == null) end = this.length; |
+ end = RangeError.checkValidRange(start, end, this.length); |
int length = end - start; |
- if (start == end) return <E>[]; |
+ if (length == 0) return <E>[]; |
var result = new _GrowableList<E>.withData(_slice(start, length, false)); |
result._setLength(length); |
return result; |
@@ -136,8 +135,7 @@ class _ImmutableList<E> extends UnmodifiableListBase<E> { |
int get length native "List_getLength"; |
List<E> sublist(int start, [int end]) { |
- Lists.indicesCheck(this, start, end); |
- if (end == null) end = this.length; |
+ end = RangeError.checkValidRange(start, end, this.length); |
int length = end - start; |
if (length == 0) return <E>[]; |
List list = new _List(length); |