| Index: sdk/lib/_internal/compiler/implementation/lib/interceptors.dart
|
| ===================================================================
|
| --- sdk/lib/_internal/compiler/implementation/lib/interceptors.dart (revision 15076)
|
| +++ sdk/lib/_internal/compiler/implementation/lib/interceptors.dart (working copy)
|
| @@ -49,6 +49,13 @@
|
| return newLength;
|
| }
|
|
|
| +iterator(receiver) {
|
| + if (isJsArray(receiver)) {
|
| + return new ListIterator(receiver);
|
| + }
|
| + return UNINTERCEPTED(receiver.iterator());
|
| +}
|
| +
|
| toString(var value) {
|
| if (JS('bool', r'typeof # == "object" && # != null', value, value)) {
|
| if (isJsArray(value)) {
|
| @@ -67,13 +74,6 @@
|
| return JS('String', r'String(#)', value);
|
| }
|
|
|
| -get$isEmpty(receiver) {
|
| - if (receiver is String || isJsArray(receiver)) {
|
| - return JS('bool', r'#.length === 0', receiver);
|
| - }
|
| - return UNINTERCEPTED(receiver.isEmpty);
|
| -}
|
| -
|
| compareTo(a, b) {
|
| if (checkNumbers(a, b)) {
|
| if (a < b) {
|
| @@ -106,188 +106,6 @@
|
| }
|
| }
|
|
|
| -iterator(receiver) {
|
| - if (isJsArray(receiver)) {
|
| - return new ListIterator(receiver);
|
| - }
|
| - return UNINTERCEPTED(receiver.iterator());
|
| -}
|
| -
|
| -indexOf$1(receiver, element) {
|
| - if (isJsArray(receiver)) {
|
| - var length = JS('num', r'#.length', receiver);
|
| - return Arrays.indexOf(receiver, element, 0, length);
|
| - } else if (receiver is String) {
|
| - checkNull(element);
|
| - if (element is !String) throw new ArgumentError(element);
|
| - return JS('int', r'#.indexOf(#)', receiver, element);
|
| - }
|
| - return UNINTERCEPTED(receiver.indexOf(element));
|
| -}
|
| -
|
| -indexOf$2(receiver, element, start) {
|
| - if (isJsArray(receiver)) {
|
| - if (start is !int) throw new ArgumentError(start);
|
| - var length = JS('num', r'#.length', receiver);
|
| - return Arrays.indexOf(receiver, element, start, length);
|
| - } else if (receiver is String) {
|
| - checkNull(element);
|
| - if (start is !int) throw new ArgumentError(start);
|
| - if (element is !String) throw new ArgumentError(element);
|
| - if (start < 0) return -1; // TODO(ahe): Is this correct?
|
| - return JS('int', r'#.indexOf(#, #)', receiver, element, start);
|
| - }
|
| - return UNINTERCEPTED(receiver.indexOf(element, start));
|
| -}
|
| -
|
| -insertRange$2(receiver, start, length) {
|
| - if (isJsArray(receiver)) {
|
| - return insertRange$3(receiver, start, length, null);
|
| - }
|
| - return UNINTERCEPTED(receiver.insertRange(start, length));
|
| -}
|
| -
|
| -insertRange$3(receiver, start, length, initialValue) {
|
| - if (!isJsArray(receiver)) {
|
| - return UNINTERCEPTED(receiver.insertRange(start, length, initialValue));
|
| - }
|
| - return listInsertRange(receiver, start, length, initialValue);
|
| -}
|
| -
|
| -get$first(receiver) {
|
| - if (!isJsArray(receiver)) {
|
| - return UNINTERCEPTED(receiver.first);
|
| - }
|
| - return receiver[0];
|
| -}
|
| -
|
| -get$last(receiver) {
|
| - if (!isJsArray(receiver)) {
|
| - return UNINTERCEPTED(receiver.last);
|
| - }
|
| - return receiver[receiver.length - 1];
|
| -}
|
| -
|
| -lastIndexOf$1(receiver, element) {
|
| - if (isJsArray(receiver)) {
|
| - var start = JS('num', r'#.length', receiver);
|
| - return Arrays.lastIndexOf(receiver, element, start);
|
| - } else if (receiver is String) {
|
| - checkNull(element);
|
| - if (element is !String) throw new ArgumentError(element);
|
| - return JS('int', r'#.lastIndexOf(#)', receiver, element);
|
| - }
|
| - return UNINTERCEPTED(receiver.lastIndexOf(element));
|
| -}
|
| -
|
| -lastIndexOf$2(receiver, element, start) {
|
| - if (isJsArray(receiver)) {
|
| - return Arrays.lastIndexOf(receiver, element, start);
|
| - } else if (receiver is String) {
|
| - checkNull(element);
|
| - if (element is !String) throw new ArgumentError(element);
|
| - if (start != null) {
|
| - if (start is !num) throw new ArgumentError(start);
|
| - if (start < 0) return -1;
|
| - if (start >= receiver.length) {
|
| - if (element == "") return receiver.length;
|
| - start = receiver.length - 1;
|
| - }
|
| - }
|
| - return stringLastIndexOfUnchecked(receiver, element, start);
|
| - }
|
| - return UNINTERCEPTED(receiver.lastIndexOf(element, start));
|
| -}
|
| -
|
| -removeRange(receiver, start, length) {
|
| - if (!isJsArray(receiver)) {
|
| - return UNINTERCEPTED(receiver.removeRange(start, length));
|
| - }
|
| - checkGrowable(receiver, '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 = JS('num', r'#.length', receiver);
|
| - if (start < 0 || start >= receiverLength) {
|
| - throw new RangeError.value(start);
|
| - }
|
| - if (start + length > receiverLength) {
|
| - throw new RangeError.value(start + length);
|
| - }
|
| - Arrays.copy(receiver,
|
| - start + length,
|
| - receiver,
|
| - start,
|
| - receiverLength - length - start);
|
| - receiver.length = receiverLength - length;
|
| -}
|
| -
|
| -setRange$3(receiver, start, length, from) {
|
| - if (isJsArray(receiver)) {
|
| - return setRange$4(receiver, start, length, from, 0);
|
| - }
|
| - return UNINTERCEPTED(receiver.setRange(start, length, from));
|
| -}
|
| -
|
| -setRange$4(receiver, start, length, from, startFrom) {
|
| - if (!isJsArray(receiver)) {
|
| - return UNINTERCEPTED(receiver.setRange(start, length, from, startFrom));
|
| - }
|
| -
|
| - checkMutable(receiver, 'indexed set');
|
| - 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.
|
| - checkNull(from); // TODO(ahe): This is not specified but co19 tests it.
|
| - checkNull(startFrom); // 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 (startFrom is !int) throw new ArgumentError(startFrom);
|
| - if (length < 0) throw new ArgumentError(length);
|
| - if (start < 0) throw new RangeError.value(start);
|
| - if (start + length > receiver.length) {
|
| - throw new RangeError.value(start + length);
|
| - }
|
| -
|
| - Arrays.copy(from, startFrom, receiver, start, length);
|
| -}
|
| -
|
| -some(receiver, f) {
|
| - if (!isJsArray(receiver)) {
|
| - return UNINTERCEPTED(receiver.some(f));
|
| - } else {
|
| - return Collections.some(receiver, f);
|
| - }
|
| -}
|
| -
|
| -every(receiver, f) {
|
| - if (!isJsArray(receiver)) {
|
| - return UNINTERCEPTED(receiver.every(f));
|
| - } else {
|
| - return Collections.every(receiver, f);
|
| - }
|
| -}
|
| -
|
| -// TODO(ngeoffray): Make it possible to have just one "sort" function ends
|
| -// an optional parameter.
|
| -
|
| -sort$0(receiver) {
|
| - if (!isJsArray(receiver)) return UNINTERCEPTED(receiver.sort());
|
| - checkMutable(receiver, 'sort');
|
| - coreSort(receiver, Comparable.compare);
|
| -}
|
| -
|
| -sort$1(receiver, compare) {
|
| - if (!isJsArray(receiver)) return UNINTERCEPTED(receiver.sort(compare));
|
| - checkMutable(receiver, 'sort');
|
| - coreSort(receiver, compare);
|
| -}
|
| -
|
| get$isNegative(receiver) {
|
| if (receiver is num) {
|
| return (receiver == 0) ? (1 / receiver) < 0 : receiver < 0;
|
| @@ -417,26 +235,6 @@
|
| return JS('String', r'#.toString(#)', receiver, radix);
|
| }
|
|
|
| -contains$1(receiver, other) {
|
| - if (receiver is String) {
|
| - return contains$2(receiver, other, 0);
|
| - } else if (isJsArray(receiver)) {
|
| - for (int i = 0; i < receiver.length; i++) {
|
| - if (other == receiver[i]) return true;
|
| - }
|
| - return false;
|
| - }
|
| - return UNINTERCEPTED(receiver.contains(other));
|
| -}
|
| -
|
| -contains$2(receiver, other, startIndex) {
|
| - if (receiver is !String) {
|
| - return UNINTERCEPTED(receiver.contains(other, startIndex));
|
| - }
|
| - checkNull(other);
|
| - return stringContainsUnchecked(receiver, other, startIndex);
|
| -}
|
| -
|
| /**
|
| * This is the [Jenkins hash function][1] but using masking to keep
|
| * values in SMI range.
|
|
|