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

Side by Side Diff: sdk/lib/collection/list.dart

Issue 2529393002: Make core libraries use generic method syntax. (Closed)
Patch Set: Update status files. Created 3 years, 11 months 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 unified diff | Download patch
« no previous file with comments | « sdk/lib/collection/iterable.dart ('k') | sdk/lib/collection/queue.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.collection; 5 part of dart.collection;
6 6
7 /** 7 /**
8 * Abstract implementation of a list. 8 * Abstract implementation of a list.
9 * 9 *
10 * `ListBase` can be used as a base class for implementing the `List` interface. 10 * `ListBase` can be used as a base class for implementing the `List` interface.
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 } 168 }
169 169
170 String join([String separator = ""]) { 170 String join([String separator = ""]) {
171 if (length == 0) return ""; 171 if (length == 0) return "";
172 StringBuffer buffer = new StringBuffer()..writeAll(this, separator); 172 StringBuffer buffer = new StringBuffer()..writeAll(this, separator);
173 return buffer.toString(); 173 return buffer.toString();
174 } 174 }
175 175
176 Iterable<E> where(bool test(E element)) => new WhereIterable<E>(this, test); 176 Iterable<E> where(bool test(E element)) => new WhereIterable<E>(this, test);
177 177
178 Iterable/*<T>*/ map/*<T>*/(/*=T*/ f(E element)) => 178 Iterable<T> map<T>(T f(E element)) =>
179 new MappedListIterable/*<E, T>*/(this, f); 179 new MappedListIterable<E, T>(this, f);
180 180
181 Iterable/*<T>*/ expand/*<T>*/(Iterable/*<T>*/ f(E element)) => 181 Iterable<T> expand<T>(Iterable<T> f(E element)) =>
182 new ExpandIterable<E, dynamic/*=T*/>(this, f); 182 new ExpandIterable<E, T>(this, f);
183 183
184 E reduce(E combine(E previousValue, E element)) { 184 E reduce(E combine(E previousValue, E element)) {
185 int length = this.length; 185 int length = this.length;
186 if (length == 0) throw IterableElementError.noElement(); 186 if (length == 0) throw IterableElementError.noElement();
187 E value = this[0]; 187 E value = this[0];
188 for (int i = 1; i < length; i++) { 188 for (int i = 1; i < length; i++) {
189 value = combine(value, this[i]); 189 value = combine(value, this[i]);
190 if (length != this.length) { 190 if (length != this.length) {
191 throw new ConcurrentModificationError(this); 191 throw new ConcurrentModificationError(this);
192 } 192 }
193 } 193 }
194 return value; 194 return value;
195 } 195 }
196 196
197 dynamic/*=T*/ fold/*<T>*/(var/*=T*/ initialValue, 197 T fold<T>(T initialValue,
198 dynamic/*=T*/ combine(var/*=T*/ previousValue, E element)) { 198 T combine(T previousValue, E element)) {
199 var value = initialValue; 199 var value = initialValue;
200 int length = this.length; 200 int length = this.length;
201 for (int i = 0; i < length; i++) { 201 for (int i = 0; i < length; i++) {
202 value = combine(value, this[i]); 202 value = combine(value, this[i]);
203 if (length != this.length) { 203 if (length != this.length) {
204 throw new ConcurrentModificationError(this); 204 throw new ConcurrentModificationError(this);
205 } 205 }
206 } 206 }
207 return value; 207 return value;
208 } 208 }
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 364
365 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { 365 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
366 RangeError.checkValidRange(start, end, this.length); 366 RangeError.checkValidRange(start, end, this.length);
367 int length = end - start; 367 int length = end - start;
368 if (length == 0) return; 368 if (length == 0) return;
369 RangeError.checkNotNegative(skipCount, "skipCount"); 369 RangeError.checkNotNegative(skipCount, "skipCount");
370 370
371 List<E> otherList; 371 List<E> otherList;
372 int otherStart; 372 int otherStart;
373 // TODO(floitsch): Make this accept more. 373 // TODO(floitsch): Make this accept more.
374 if (iterable is List/*<E>*/) { 374 if (iterable is List<E>) {
375 otherList = iterable; 375 otherList = iterable;
376 otherStart = skipCount; 376 otherStart = skipCount;
377 } else { 377 } else {
378 otherList = iterable.skip(skipCount).toList(growable: false); 378 otherList = iterable.skip(skipCount).toList(growable: false);
379 otherStart = 0; 379 otherStart = 0;
380 } 380 }
381 if (otherStart + length > otherList.length) { 381 if (otherStart + length > otherList.length) {
382 throw IterableElementError.tooFew(); 382 throw IterableElementError.tooFew();
383 } 383 }
384 if (otherStart < start) { 384 if (otherStart < start) {
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 for (E element in iterable) { 507 for (E element in iterable) {
508 this[index++] = element; 508 this[index++] = element;
509 } 509 }
510 } 510 }
511 } 511 }
512 512
513 Iterable<E> get reversed => new ReversedListIterable<E>(this); 513 Iterable<E> get reversed => new ReversedListIterable<E>(this);
514 514
515 String toString() => IterableBase.iterableToFullString(this, '[', ']'); 515 String toString() => IterableBase.iterableToFullString(this, '[', ']');
516 } 516 }
OLDNEW
« no previous file with comments | « sdk/lib/collection/iterable.dart ('k') | sdk/lib/collection/queue.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698