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

Side by Side Diff: runtime/lib/array.dart

Issue 262803003: Unify error messages for iterables and lists. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Capitalize messages. Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | runtime/lib/growable_array.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) 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 5
6 // TODO(srdjan): Use shared array implementation. 6 // TODO(srdjan): Use shared array implementation.
7 class _List<E> implements List<E> { 7 class _List<E> implements List<E> {
8 static final int _classId = (new _List(0))._cid; 8 static final int _classId = (new _List(0))._cid;
9 9
10 factory _List(length) native "List_allocate"; 10 factory _List(length) native "List_allocate";
11 11
12 E operator [](int index) native "List_getIndexed"; 12 E operator [](int index) native "List_getIndexed";
13 13
14 void operator []=(int index, E value) native "List_setIndexed"; 14 void operator []=(int index, E value) native "List_setIndexed";
15 15
16 String toString() { 16 String toString() {
17 return IterableMixinWorkaround.toStringIterable(this,'[' , ']'); 17 return IterableMixinWorkaround.toStringIterable(this,'[' , ']');
18 } 18 }
19 19
20 int get length native "List_getLength"; 20 int get length native "List_getLength";
21 21
22 void _copyFromObjectArray(_List src, 22 void _copyFromObjectArray(_List src,
23 int srcStart, 23 int srcStart,
24 int dstStart, 24 int dstStart,
25 int count) 25 int count)
26 native "List_copyFromObjectArray"; 26 native "List_copyFromObjectArray";
27 27
28 void insert(int index, E element) { 28 void insert(int index, E element) {
29 throw new UnsupportedError( 29 throw NonGrowableListError.add();
30 "Cannot insert into a fixed-length list");
31 } 30 }
32 31
33 void insertAll(int index, Iterable<E> iterable) { 32 void insertAll(int index, Iterable<E> iterable) {
34 throw new UnsupportedError( 33 throw NonGrowableListError.add();
35 "Cannot insert into a fixed-length list");
36 } 34 }
37 35
38 void setAll(int index, Iterable<E> iterable) { 36 void setAll(int index, Iterable<E> iterable) {
39 IterableMixinWorkaround.setAllList(this, index, iterable); 37 IterableMixinWorkaround.setAllList(this, index, iterable);
40 } 38 }
41 39
42 E removeAt(int index) { 40 E removeAt(int index) {
43 throw new UnsupportedError( 41 throw NonGrowableListError.remove();
44 "Cannot remove from a fixed-length list");
45 } 42 }
46 43
47 bool remove(Object element) { 44 bool remove(Object element) {
48 throw new UnsupportedError( 45 throw NonGrowableListError.remove();
49 "Cannot remove from a fixed-length list");
50 } 46 }
51 47
52 void removeWhere(bool test(E element)) { 48 void removeWhere(bool test(E element)) {
53 throw new UnsupportedError( 49 throw NonGrowableListError.remove();
54 "Cannot remove from a fixed-length list");
55 } 50 }
56 51
57 void retainWhere(bool test(E element)) { 52 void retainWhere(bool test(E element)) {
58 throw new UnsupportedError( 53 throw NonGrowableListError.remove();
59 "Cannot remove from a fixed-length list");
60 } 54 }
61 55
62 Iterable<E> getRange(int start, [int end]) { 56 Iterable<E> getRange(int start, [int end]) {
63 return IterableMixinWorkaround.getRangeList(this, start, end); 57 return IterableMixinWorkaround.getRangeList(this, start, end);
64 } 58 }
65 59
66 // List interface. 60 // List interface.
67 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { 61 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
68 if (start < 0 || start > this.length) { 62 if (start < 0 || start > this.length) {
69 throw new RangeError.range(start, 0, this.length); 63 throw new RangeError.range(start, 0, this.length);
(...skipping 17 matching lines...) Expand all
87 } 81 }
88 for (int i = start; i < end; i++) { 82 for (int i = start; i < end; i++) {
89 if (!it.moveNext()) return; 83 if (!it.moveNext()) return;
90 this[i] = it.current; 84 this[i] = it.current;
91 } 85 }
92 } 86 }
93 } 87 }
94 } 88 }
95 89
96 void removeRange(int start, int end) { 90 void removeRange(int start, int end) {
97 throw new UnsupportedError( 91 throw NonGrowableListError.remove();
98 "Cannot remove range from a fixed-length list");
99 } 92 }
100 93
101 void replaceRange(int start, int end, Iterable<E> iterable) { 94 void replaceRange(int start, int end, Iterable<E> iterable) {
102 throw new UnsupportedError( 95 throw NonGrowableListError.remove();
103 "Cannot remove range from a fixed-length list");
104 } 96 }
105 97
106 void fillRange(int start, int end, [E fillValue]) { 98 void fillRange(int start, int end, [E fillValue]) {
107 IterableMixinWorkaround.fillRangeList(this, start, end, fillValue); 99 IterableMixinWorkaround.fillRangeList(this, start, end, fillValue);
108 } 100 }
109 101
110 List<E> sublist(int start, [int end]) { 102 List<E> sublist(int start, [int end]) {
111 Lists.indicesCheck(this, start, end); 103 Lists.indicesCheck(this, start, end);
112 if (end == null) end = this.length; 104 if (end == null) end = this.length;
113 int length = end - start; 105 int length = end - start;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 int lastIndexOf(Object element, [int start = null]) { 207 int lastIndexOf(Object element, [int start = null]) {
216 if (start == null) start = length - 1; 208 if (start == null) start = length - 1;
217 return Lists.lastIndexOf(this, element, start); 209 return Lists.lastIndexOf(this, element, start);
218 } 210 }
219 211
220 Iterator<E> get iterator { 212 Iterator<E> get iterator {
221 return new _FixedSizeArrayIterator<E>(this); 213 return new _FixedSizeArrayIterator<E>(this);
222 } 214 }
223 215
224 void add(E element) { 216 void add(E element) {
225 throw new UnsupportedError( 217 throw NonGrowableListError.add();
226 "Cannot add to a fixed-length list");
227 } 218 }
228 219
229 void addAll(Iterable<E> iterable) { 220 void addAll(Iterable<E> iterable) {
230 throw new UnsupportedError( 221 throw NonGrowableListError.add();
231 "Cannot add to a fixed-length list");
232 } 222 }
233 223
234 void clear() { 224 void clear() {
235 throw new UnsupportedError( 225 throw NonGrowableListError.remove();
236 "Cannot clear a fixed-length list");
237 } 226 }
238 227
239 void set length(int length) { 228 void set length(int length) {
240 throw new UnsupportedError( 229 throw NonGrowableListError.length();
241 "Cannot resize a fixed-length list");
242 } 230 }
243 231
244 E removeLast() { 232 E removeLast() {
245 throw new UnsupportedError( 233 throw NonGrowableListError.remove();
246 "Cannot remove from a fixed-length list");
247 } 234 }
248 235
249 E get first { 236 E get first {
250 if (length > 0) return this[0]; 237 if (length > 0) return this[0];
251 throw new StateError("No elements"); 238 throw IterableElementError.noElement();
252 } 239 }
253 240
254 E get last { 241 E get last {
255 if (length > 0) return this[length - 1]; 242 if (length > 0) return this[length - 1];
256 throw new StateError("No elements"); 243 throw IterableElementError.noElement();
257 } 244 }
258 245
259 E get single { 246 E get single {
260 if (length == 1) return this[0]; 247 if (length == 1) return this[0];
261 if (length == 0) throw new StateError("No elements"); 248 if (length == 0) throw IterableElementError.noElement();
262 throw new StateError("More than one element"); 249 throw IterableElementError.tooMany();
263 } 250 }
264 251
265 List<E> toList({ bool growable: true}) { 252 List<E> toList({ bool growable: true}) {
266 return new List<E>.from(this, growable: growable); 253 return new List<E>.from(this, growable: growable);
267 } 254 }
268 255
269 Set<E> toSet() { 256 Set<E> toSet() {
270 return new Set<E>.from(this); 257 return new Set<E>.from(this);
271 } 258 }
272 259
(...skipping 17 matching lines...) Expand all
290 throw new UnsupportedError( 277 throw new UnsupportedError(
291 "ImmutableArray can only be allocated by the VM"); 278 "ImmutableArray can only be allocated by the VM");
292 } 279 }
293 280
294 factory _ImmutableList._from(List from, int offset, int length) 281 factory _ImmutableList._from(List from, int offset, int length)
295 native "ImmutableList_from"; 282 native "ImmutableList_from";
296 283
297 E operator [](int index) native "List_getIndexed"; 284 E operator [](int index) native "List_getIndexed";
298 285
299 void operator []=(int index, E value) { 286 void operator []=(int index, E value) {
300 throw new UnsupportedError( 287 throw UnmodifiableListError.change();
301 "Cannot modify an immutable array");
302 } 288 }
303 289
304 int get length native "List_getLength"; 290 int get length native "List_getLength";
305 291
306 void insert(int index, E element) { 292 void insert(int index, E element) {
307 throw new UnsupportedError( 293 throw UnmodifiableListError.add();
308 "Cannot add to an immutable array");
309 } 294 }
310 295
311 void insertAll(int index, Iterable<E> iterable) { 296 void insertAll(int index, Iterable<E> iterable) {
312 throw new UnsupportedError( 297 throw UnmodifiableListError.add();
313 "Cannot add to an immutable array");
314 } 298 }
315 299
316 void setAll(int index, Iterable<E> iterable) { 300 void setAll(int index, Iterable<E> iterable) {
317 throw new UnsupportedError( 301 throw UnmodifiableListError.change();
318 "Cannot modify an immutable array");
319 } 302 }
320 303
321 E removeAt(int index) { 304 E removeAt(int index) {
322 throw new UnsupportedError( 305 throw UnmodifiableListError.remove();
323 "Cannot modify an immutable array");
324 } 306 }
325 307
326 bool remove(Object element) { 308 bool remove(Object element) {
327 throw new UnsupportedError( 309 throw UnmodifiableListError.remove();
328 "Cannot modify an immutable array");
329 } 310 }
330 311
331 void removeWhere(bool test(E element)) { 312 void removeWhere(bool test(E element)) {
332 throw new UnsupportedError( 313 throw UnmodifiableListError.remove();
333 "Cannot modify an immutable array");
334 } 314 }
335 315
336 void retainWhere(bool test(E element)) { 316 void retainWhere(bool test(E element)) {
337 throw new UnsupportedError( 317 throw UnmodifiableListError.remove();
338 "Cannot modify an immutable array");
339 } 318 }
340 319
341 void copyFrom(List src, int srcStart, int dstStart, int count) { 320 void copyFrom(List src, int srcStart, int dstStart, int count) {
342 throw new UnsupportedError( 321 throw UnmodifiableListError.change();
343 "Cannot modify an immutable array");
344 } 322 }
345 323
346 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { 324 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
347 throw new UnsupportedError( 325 throw UnmodifiableListError.change();
348 "Cannot modify an immutable array");
349 } 326 }
350 327
351 void removeRange(int start, int end) { 328 void removeRange(int start, int end) {
352 throw new UnsupportedError( 329 throw UnmodifiableListError.remove();
353 "Cannot remove range of an immutable array");
354 } 330 }
355 331
356 void fillRange(int start, int end, [E fillValue]) { 332 void fillRange(int start, int end, [E fillValue]) {
357 throw new UnsupportedError( 333 throw UnmodifiableListError.change();
358 "Cannot modify an immutable array");
359 } 334 }
360 335
361 void replaceRange(int start, int end, Iterable<E> iterable) { 336 void replaceRange(int start, int end, Iterable<E> iterable) {
362 throw new UnsupportedError( 337 throw UnmodifiableListError.change();
363 "Cannot modify an immutable array");
364 } 338 }
365 339
366 List<E> sublist(int start, [int end]) { 340 List<E> sublist(int start, [int end]) {
367 Lists.indicesCheck(this, start, end); 341 Lists.indicesCheck(this, start, end);
368 if (end == null) end = this.length; 342 if (end == null) end = this.length;
369 int length = end - start; 343 int length = end - start;
370 if (start == end) return []; 344 if (start == end) return [];
371 List list = new List<E>(); 345 List list = new List<E>();
372 list.length = length; 346 list.length = length;
373 Lists.copy(this, start, list, 0, length); 347 Lists.copy(this, start, list, 0, length);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 428
455 bool get isEmpty { 429 bool get isEmpty {
456 return this.length == 0; 430 return this.length == 0;
457 } 431 }
458 432
459 bool get isNotEmpty => !isEmpty; 433 bool get isNotEmpty => !isEmpty;
460 434
461 Iterable<E> get reversed => IterableMixinWorkaround.reversedList(this); 435 Iterable<E> get reversed => IterableMixinWorkaround.reversedList(this);
462 436
463 void sort([int compare(E a, E b)]) { 437 void sort([int compare(E a, E b)]) {
464 throw new UnsupportedError( 438 throw UnmodifiableListError.change();
465 "Cannot modify an immutable array");
466 } 439 }
467 440
468 void shuffle([Random random]) { 441 void shuffle([Random random]) {
469 throw new UnsupportedError( 442 throw UnmodifiableListError.change();
470 "Cannot modify an immutable array");
471 } 443 }
472 444
473 String toString() { 445 String toString() {
474 return IterableMixinWorkaround.toStringIterable(this, '[', ']'); 446 return IterableMixinWorkaround.toStringIterable(this, '[', ']');
475 } 447 }
476 448
477 int indexOf(Object element, [int start = 0]) { 449 int indexOf(Object element, [int start = 0]) {
478 return Lists.indexOf(this, element, start, this.length); 450 return Lists.indexOf(this, element, start, this.length);
479 } 451 }
480 452
481 int lastIndexOf(Object element, [int start = null]) { 453 int lastIndexOf(Object element, [int start = null]) {
482 if (start == null) start = length - 1; 454 if (start == null) start = length - 1;
483 return Lists.lastIndexOf(this, element, start); 455 return Lists.lastIndexOf(this, element, start);
484 } 456 }
485 457
486 Iterator<E> get iterator { 458 Iterator<E> get iterator {
487 return new _FixedSizeArrayIterator<E>(this); 459 return new _FixedSizeArrayIterator<E>(this);
488 } 460 }
489 461
490 void add(E element) { 462 void add(E element) {
491 throw new UnsupportedError( 463 throw UnmodifiableListError.add();
492 "Cannot add to an immutable array");
493 } 464 }
494 465
495 void addAll(Iterable<E> elements) { 466 void addAll(Iterable<E> elements) {
496 throw new UnsupportedError( 467 throw UnmodifiableListError.add();
497 "Cannot add to an immutable array");
498 } 468 }
499 469
500 void clear() { 470 void clear() {
501 throw new UnsupportedError( 471 throw UnmodifiableListError.remove();
502 "Cannot clear an immutable array");
503 } 472 }
504 473
505 void set length(int length) { 474 void set length(int length) {
506 throw new UnsupportedError( 475 throw UnmodifiableListError.length();
507 "Cannot change the length of an immutable array");
508 } 476 }
509 477
510 E removeLast() { 478 E removeLast() {
511 throw new UnsupportedError( 479 throw UnmodifiableListError.remove();
512 "Cannot remove from a fixed-length list");
513 } 480 }
514 481
515 E get first { 482 E get first {
516 if (length > 0) return this[0]; 483 if (length > 0) return this[0];
517 throw new StateError("No elements"); 484 throw IterableElementError.noElement();
518 } 485 }
519 486
520 E get last { 487 E get last {
521 if (length > 0) return this[length - 1]; 488 if (length > 0) return this[length - 1];
522 throw new StateError("No elements"); 489 throw IterableElementError.noElement();
523 } 490 }
524 491
525 E get single { 492 E get single {
526 if (length == 1) return this[0]; 493 if (length == 1) return this[0];
527 if (length == 0) throw new StateError("No elements"); 494 if (length == 0) throw IterableElementError.noElement();
528 throw new StateError("More than one element"); 495 throw IterableElementError.tooMany();
529 } 496 }
530 497
531 List<E> toList({ bool growable: true }) { 498 List<E> toList({ bool growable: true }) {
532 return new List<E>.from(this, growable: growable); 499 return new List<E>.from(this, growable: growable);
533 } 500 }
534 501
535 Set<E> toSet() { 502 Set<E> toSet() {
536 return new Set<E>.from(this); 503 return new Set<E>.from(this);
537 } 504 }
538 505
(...skipping 24 matching lines...) Expand all
563 } 530 }
564 _position = _length; 531 _position = _length;
565 _current = null; 532 _current = null;
566 return false; 533 return false;
567 } 534 }
568 535
569 E get current { 536 E get current {
570 return _current; 537 return _current;
571 } 538 }
572 } 539 }
OLDNEW
« no previous file with comments | « no previous file | runtime/lib/growable_array.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698