Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1729)

Unified Diff: sdk/lib/_internal/compiler/implementation/lib/js_array.dart

Issue 11280034: Move more methods to the new interceptor scheme (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/implementation/lib/js_array.dart
===================================================================
--- sdk/lib/_internal/compiler/implementation/lib/js_array.dart (revision 15076)
+++ sdk/lib/_internal/compiler/implementation/lib/js_array.dart (working copy)
@@ -80,4 +80,84 @@
if (length < 0) throw new ArgumentError(length);
return JS('List', r'#.slice(#, #)', this, start, end);
}
+
+ void insertRange(int start, int length, [E initialValue]) {
+ return listInsertRange(this, start, length, initialValue);
+ }
+
+ E get last => this[length - 1];
+
+ E get first => this[0];
+
+ void removeRange(int start, int length) {
+ 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);
+ }
+ if (start + length > receiverLength) {
+ throw new RangeError.value(start + length);
+ }
+ Arrays.copy(this,
+ start + length,
+ this,
+ start,
+ receiverLength - length - start);
+ this.length = receiverLength - length;
+ }
+
+ void setRange(int start, int length, List<E> from, [int startFrom = 0]) {
+ checkMutable(this, '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 > this.length) {
+ throw new RangeError.value(start + length);
+ }
+
+ Arrays.copy(from, startFrom, this, start, length);
+ }
+
+ bool some(bool f(E element)) => Collections.some(this, f);
+
+ bool every(bool f(E element)) => Collections.every(this, f);
+
+ void sort([Comparator<E> compare = Comparable.compare]) {
+ checkMutable(this, 'sort');
+ coreSort(this, compare);
+ }
+
+ int indexOf(E element, [int start = 0]) {
+ if (start is !int) throw new ArgumentError(start);
+ return Arrays.indexOf(this, element, start, length);
+ }
+
+ int lastIndexOf(E element, [int start]) {
+ if (start == null) start = this.length - 1;
+ return Arrays.lastIndexOf(this, element, start);
+ }
+
+ bool contains(E other) {
+ for (int i = 0; i < length; i++) {
+ if (other == this[i]) return true;
+ }
+ return false;
+ }
+
+ bool get isEmpty => length == 0;
}

Powered by Google App Engine
This is Rietveld 408576698