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

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

Issue 745573002: Create generic check methods for RangeError causing checks. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Typo and trailing whitespace. Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 * This [Iterable] mixin implements all [Iterable] members except `iterator`. 8 * This [Iterable] mixin implements all [Iterable] members except `iterator`.
9 * 9 *
10 * All other methods are implemented in terms of `iterator`. 10 * All other methods are implemented in terms of `iterator`.
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 } 179 }
180 result = element; 180 result = element;
181 foundMatching = true; 181 foundMatching = true;
182 } 182 }
183 } 183 }
184 if (foundMatching) return result; 184 if (foundMatching) return result;
185 throw IterableElementError.noElement(); 185 throw IterableElementError.noElement();
186 } 186 }
187 187
188 E elementAt(int index) { 188 E elementAt(int index) {
189 if (index is! int || index < 0) throw new RangeError.value(index); 189 if (index is! int) throw new ArgumentError.notNull("index");
190 int remaining = index; 190 RangeError.checkNotNegative(index, "index");
191 int elementIndex = 0;
191 for (E element in this) { 192 for (E element in this) {
192 if (remaining == 0) return element; 193 if (index == elementIndex) return element;
193 remaining--; 194 elementIndex++;
194 } 195 }
195 throw new RangeError.value(index); 196 throw new RangeError.index(index, this, "index", null, elementIndex);
196 } 197 }
197 198
199
198 String toString() => IterableBase.iterableToShortString(this, '(', ')'); 200 String toString() => IterableBase.iterableToShortString(this, '(', ')');
199 } 201 }
200 202
201 /** 203 /**
202 * Base class for implementing [Iterable]. 204 * Base class for implementing [Iterable].
203 * 205 *
204 * This class implements all methods of [Iterable] except [Iterable.iterator] 206 * This class implements all methods of [Iterable] except [Iterable.iterator]
205 * in terms of `iterator`. 207 * in terms of `iterator`.
206 */ 208 */
207 abstract class IterableBase<E> implements Iterable<E> { 209 abstract class IterableBase<E> implements Iterable<E> {
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 } 375 }
374 result = element; 376 result = element;
375 foundMatching = true; 377 foundMatching = true;
376 } 378 }
377 } 379 }
378 if (foundMatching) return result; 380 if (foundMatching) return result;
379 throw IterableElementError.noElement(); 381 throw IterableElementError.noElement();
380 } 382 }
381 383
382 E elementAt(int index) { 384 E elementAt(int index) {
383 if (index is! int || index < 0) throw new RangeError.value(index); 385 if (index is! int) throw new ArgumentError.notNull("index");
384 int remaining = index; 386 RangeError.checkNotNegative(index, "index");
387 int elementIndex = 0;
385 for (E element in this) { 388 for (E element in this) {
386 if (remaining == 0) return element; 389 if (index == elementIndex) return element;
387 remaining--; 390 elementIndex++;
388 } 391 }
389 throw new RangeError.value(index); 392 throw new RangeError.index(index, this, "index", null, elementIndex);
390 } 393 }
391 394
392 /** 395 /**
393 * Returns a string representation of (some of) the elements of `this`. 396 * Returns a string representation of (some of) the elements of `this`.
394 * 397 *
395 * Elements are represented by their own `toString` results. 398 * Elements are represented by their own `toString` results.
396 * 399 *
397 * The representation always contains the first three elements. 400 * The representation always contains the first three elements.
398 * If there are less than a hundred elements in the iterable, it also 401 * If there are less than a hundred elements in the iterable, it also
399 * contains the last two elements. 402 * contains the last two elements.
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 length += ELLIPSIS_SIZE + OVERHEAD; 591 length += ELLIPSIS_SIZE + OVERHEAD;
589 } 592 }
590 } 593 }
591 if (elision != null) { 594 if (elision != null) {
592 parts.add(elision); 595 parts.add(elision);
593 } 596 }
594 parts.add(penultimateString); 597 parts.add(penultimateString);
595 parts.add(ultimateString); 598 parts.add(ultimateString);
596 } 599 }
597 } 600 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698