| Index: sdk/lib/_internal/compiler/implementation/lib/js_array.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/lib/js_array.dart b/sdk/lib/_internal/compiler/implementation/lib/js_array.dart
|
| index 22f50182b060b21e4d162ad47d3f818b340c3dd4..b82e58afaeda320e485a2d4a031feac6468f326a 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/lib/js_array.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/lib/js_array.dart
|
| @@ -160,34 +160,6 @@ class JSArray<E> extends Interceptor implements List<E>, JSIndexable {
|
| return IterableMixinWorkaround.getRangeList(this, start, end);
|
| }
|
|
|
| - void insertRange(int start, int length, [E initialValue]) {
|
| - checkGrowable(this, 'insertRange');
|
| - if (length == 0) {
|
| - return;
|
| - }
|
| - if (length is !int) throw new ArgumentError(length);
|
| - if (length < 0) throw new ArgumentError(length);
|
| - if (start is !int) throw new ArgumentError(start);
|
| -
|
| - var receiver = this;
|
| - var receiverLength = receiver.length;
|
| - if (start < 0 || start > receiverLength) {
|
| - throw new RangeError.value(start);
|
| - }
|
| - receiver.length = receiverLength + length;
|
| - Arrays.copy(receiver,
|
| - start,
|
| - receiver,
|
| - start + length,
|
| - receiverLength - start);
|
| - if (initialValue != null) {
|
| - for (int i = start; i < start + length; i++) {
|
| - receiver[i] = initialValue;
|
| - }
|
| - }
|
| - receiver.length = receiverLength + length;
|
| - }
|
| -
|
| E get first {
|
| if (length > 0) return this[0];
|
| throw new StateError("No elements");
|
| @@ -204,29 +176,21 @@ class JSArray<E> extends Interceptor implements List<E>, JSIndexable {
|
| throw new StateError("More than one element");
|
| }
|
|
|
| - void removeRange(int start, int length) {
|
| + void removeRange(int start, int end) {
|
| checkGrowable(this, 'removeRange');
|
| - if (length == 0) {
|
| - return;
|
| - }
|
| - checkNull(start); // TODO(ahe): This is not specified but co19 tests it.
|
| - checkNull(length); // TODO(ahe): This is not specified but co19 tests it.
|
| - if (start is !int) throw new ArgumentError(start);
|
| - if (length is !int) throw new ArgumentError(length);
|
| - if (length < 0) throw new ArgumentError(length);
|
| - var receiverLength = this.length;
|
| - if (start < 0 || start >= receiverLength) {
|
| - throw new RangeError.value(start);
|
| + int receiverLength = this.length;
|
| + if (start < 0 || start > receiverLength) {
|
| + throw new RangeError.range(start, 0, receiverLength);
|
| }
|
| - if (start + length > receiverLength) {
|
| - throw new RangeError.value(start + length);
|
| + if (end < start || end > receiverLength) {
|
| + throw new RangeError.range(end, start, receiverLength);
|
| }
|
| Arrays.copy(this,
|
| - start + length,
|
| + end,
|
| this,
|
| start,
|
| - receiverLength - length - start);
|
| - this.length = receiverLength - length;
|
| + receiverLength - end);
|
| + this.length = receiverLength - (end - start);
|
| }
|
|
|
| void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
|
|
|