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

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

Issue 14246008: Allow Object when doing lookups. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Forgot to upload before committing Created 7 years, 6 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
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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.dev; 5 part of dart._collection.dev;
6 6
7 /** 7 /**
8 * An [Iterable] for classes that have efficient [length] and [elementAt]. 8 * An [Iterable] for classes that have efficient [length] and [elementAt].
9 * 9 *
10 * All other methods are implemented in terms of [length] and [elementAt], 10 * All other methods are implemented in terms of [length] and [elementAt],
(...skipping 28 matching lines...) Expand all
39 if (length == 0) throw new StateError("No elements"); 39 if (length == 0) throw new StateError("No elements");
40 return elementAt(length - 1); 40 return elementAt(length - 1);
41 } 41 }
42 42
43 E get single { 43 E get single {
44 if (length == 0) throw new StateError("No elements"); 44 if (length == 0) throw new StateError("No elements");
45 if (length > 1) throw new StateError("Too many elements"); 45 if (length > 1) throw new StateError("Too many elements");
46 return elementAt(0); 46 return elementAt(0);
47 } 47 }
48 48
49 bool contains(E element) { 49 bool contains(Object element) {
50 int length = this.length; 50 int length = this.length;
51 for (int i = 0; i < length; i++) { 51 for (int i = 0; i < length; i++) {
52 if (elementAt(i) == element) return true; 52 if (elementAt(i) == element) return true;
53 if (length != this.length) { 53 if (length != this.length) {
54 throw new ConcurrentModificationError(this); 54 throw new ConcurrentModificationError(this);
55 } 55 }
56 } 56 }
57 return false; 57 return false;
58 } 58 }
59 59
(...skipping 12 matching lines...) Expand all
72 int length = this.length; 72 int length = this.length;
73 for (int i = 0; i < length; i++) { 73 for (int i = 0; i < length; i++) {
74 if (test(elementAt(i))) return true; 74 if (test(elementAt(i))) return true;
75 if (length != this.length) { 75 if (length != this.length) {
76 throw new ConcurrentModificationError(this); 76 throw new ConcurrentModificationError(this);
77 } 77 }
78 } 78 }
79 return false; 79 return false;
80 } 80 }
81 81
82 E firstWhere(bool test(E element), { E orElse() }) { 82 dynamic firstWhere(bool test(E element), { Object orElse() }) {
83 int length = this.length; 83 int length = this.length;
84 for (int i = 0; i < length; i++) { 84 for (int i = 0; i < length; i++) {
85 E element = elementAt(i); 85 E element = elementAt(i);
86 if (test(element)) return element; 86 if (test(element)) return element;
87 if (length != this.length) { 87 if (length != this.length) {
88 throw new ConcurrentModificationError(this); 88 throw new ConcurrentModificationError(this);
89 } 89 }
90 } 90 }
91 if (orElse != null) return orElse(); 91 if (orElse != null) return orElse();
92 throw new StateError("No matching element"); 92 throw new StateError("No matching element");
93 } 93 }
94 94
95 E lastWhere(bool test(E element), { E orElse() }) { 95 dynamic lastWhere(bool test(E element), { Object orElse() }) {
96 int length = this.length; 96 int length = this.length;
97 for (int i = length - 1; i >= 0; i--) { 97 for (int i = length - 1; i >= 0; i--) {
98 E element = elementAt(i); 98 E element = elementAt(i);
99 if (test(element)) return element; 99 if (test(element)) return element;
100 if (length != this.length) { 100 if (length != this.length) {
101 throw new ConcurrentModificationError(this); 101 throw new ConcurrentModificationError(this);
102 } 102 }
103 } 103 }
104 if (orElse != null) return orElse(); 104 if (orElse != null) return orElse();
105 throw new StateError("No matching element"); 105 throw new StateError("No matching element");
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 int get length => 0; 613 int get length => 0;
614 614
615 E get first { throw new StateError("No elements"); } 615 E get first { throw new StateError("No elements"); }
616 616
617 E get last { throw new StateError("No elements"); } 617 E get last { throw new StateError("No elements"); }
618 618
619 E get single { throw new StateError("No elements"); } 619 E get single { throw new StateError("No elements"); }
620 620
621 E elementAt(int index) { throw new RangeError.value(index); } 621 E elementAt(int index) { throw new RangeError.value(index); }
622 622
623 bool contains(E element) => false; 623 bool contains(Object element) => false;
624 624
625 bool every(bool test(E element)) => true; 625 bool every(bool test(E element)) => true;
626 626
627 bool any(bool test(E element)) => false; 627 bool any(bool test(E element)) => false;
628 628
629 E firstWhere(bool test(E element), { E orElse() }) { 629 E firstWhere(bool test(E element), { E orElse() }) {
630 if (orElse != null) return orElse(); 630 if (orElse != null) return orElse();
631 throw new StateError("No matching element"); 631 throw new StateError("No matching element");
632 } 632 }
633 633
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 791
792 static dynamic single(Iterable iterable) { 792 static dynamic single(Iterable iterable) {
793 Iterator it = iterable.iterator; 793 Iterator it = iterable.iterator;
794 if (!it.moveNext()) throw new StateError("No elements"); 794 if (!it.moveNext()) throw new StateError("No elements");
795 dynamic result = it.current; 795 dynamic result = it.current;
796 if (it.moveNext()) throw new StateError("More than one element"); 796 if (it.moveNext()) throw new StateError("More than one element");
797 return result; 797 return result;
798 } 798 }
799 799
800 static dynamic firstWhere(Iterable iterable, 800 static dynamic firstWhere(Iterable iterable,
801 bool test(dynamic value), 801 bool test(dynamic value),
802 dynamic orElse()) { 802 dynamic orElse()) {
803 for (dynamic element in iterable) { 803 for (dynamic element in iterable) {
804 if (test(element)) return element; 804 if (test(element)) return element;
805 } 805 }
806 if (orElse != null) return orElse(); 806 if (orElse != null) return orElse();
807 throw new StateError("No matching element"); 807 throw new StateError("No matching element");
808 } 808 }
809 809
810 static dynamic lastWhere(Iterable iterable, 810 static dynamic lastWhere(Iterable iterable,
811 bool test(dynamic value), 811 bool test(dynamic value),
812 dynamic orElse()) { 812 dynamic orElse()) {
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 1054
1055 static Set setDifference(Set set, Set other, Set result) { 1055 static Set setDifference(Set set, Set other, Set result) {
1056 for (var element in set) { 1056 for (var element in set) {
1057 if (!other.contains(element)) { 1057 if (!other.contains(element)) {
1058 result.add(element); 1058 result.add(element);
1059 } 1059 }
1060 } 1060 }
1061 return result; 1061 return result;
1062 } 1062 }
1063 } 1063 }
OLDNEW
« no previous file with comments | « samples/swarm/swarm_ui_lib/observable/observable.dart ('k') | sdk/lib/_collection_dev/list.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698