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

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

Issue 2754013002: Format all dart: library files (Closed)
Patch Set: Created 3 years, 9 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
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._internal; 5 part of dart._internal;
6 6
7 /** 7 /**
8 * Mixin that throws on the length changing operations of [List]. 8 * Mixin that throws on the length changing operations of [List].
9 * 9 *
10 * Intended to mix-in on top of [ListMixin] for fixed-length lists. 10 * Intended to mix-in on top of [ListMixin] for fixed-length lists.
11 */ 11 */
12 abstract class FixedLengthListMixin<E> { 12 abstract class FixedLengthListMixin<E> {
13 /** This operation is not supported by a fixed length list. */ 13 /** This operation is not supported by a fixed length list. */
14 set length(int newLength) { 14 set length(int newLength) {
15 throw new UnsupportedError( 15 throw new UnsupportedError(
16 "Cannot change the length of a fixed-length list"); 16 "Cannot change the length of a fixed-length list");
17 } 17 }
18 18
19 /** This operation is not supported by a fixed length list. */ 19 /** This operation is not supported by a fixed length list. */
20 void add(E value) { 20 void add(E value) {
21 throw new UnsupportedError( 21 throw new UnsupportedError("Cannot add to a fixed-length list");
22 "Cannot add to a fixed-length list");
23 } 22 }
24 23
25 /** This operation is not supported by a fixed length list. */ 24 /** This operation is not supported by a fixed length list. */
26 void insert(int index, E value) { 25 void insert(int index, E value) {
27 throw new UnsupportedError( 26 throw new UnsupportedError("Cannot add to a fixed-length list");
28 "Cannot add to a fixed-length list");
29 } 27 }
30 28
31 /** This operation is not supported by a fixed length list. */ 29 /** This operation is not supported by a fixed length list. */
32 void insertAll(int at, Iterable<E> iterable) { 30 void insertAll(int at, Iterable<E> iterable) {
33 throw new UnsupportedError( 31 throw new UnsupportedError("Cannot add to a fixed-length list");
34 "Cannot add to a fixed-length list");
35 } 32 }
36 33
37 /** This operation is not supported by a fixed length list. */ 34 /** This operation is not supported by a fixed length list. */
38 void addAll(Iterable<E> iterable) { 35 void addAll(Iterable<E> iterable) {
39 throw new UnsupportedError( 36 throw new UnsupportedError("Cannot add to a fixed-length list");
40 "Cannot add to a fixed-length list");
41 } 37 }
42 38
43 /** This operation is not supported by a fixed length list. */ 39 /** This operation is not supported by a fixed length list. */
44 bool remove(Object element) { 40 bool remove(Object element) {
45 throw new UnsupportedError( 41 throw new UnsupportedError("Cannot remove from a fixed-length list");
46 "Cannot remove from a fixed-length list");
47 } 42 }
48 43
49 /** This operation is not supported by a fixed length list. */ 44 /** This operation is not supported by a fixed length list. */
50 void removeWhere(bool test(E element)) { 45 void removeWhere(bool test(E element)) {
51 throw new UnsupportedError( 46 throw new UnsupportedError("Cannot remove from a fixed-length list");
52 "Cannot remove from a fixed-length list");
53 } 47 }
54 48
55 /** This operation is not supported by a fixed length list. */ 49 /** This operation is not supported by a fixed length list. */
56 void retainWhere(bool test(E element)) { 50 void retainWhere(bool test(E element)) {
57 throw new UnsupportedError( 51 throw new UnsupportedError("Cannot remove from a fixed-length list");
58 "Cannot remove from a fixed-length list");
59 } 52 }
60 53
61 /** This operation is not supported by a fixed length list. */ 54 /** This operation is not supported by a fixed length list. */
62 void clear() { 55 void clear() {
63 throw new UnsupportedError( 56 throw new UnsupportedError("Cannot clear a fixed-length list");
64 "Cannot clear a fixed-length list");
65 } 57 }
66 58
67 /** This operation is not supported by a fixed length list. */ 59 /** This operation is not supported by a fixed length list. */
68 E removeAt(int index) { 60 E removeAt(int index) {
69 throw new UnsupportedError( 61 throw new UnsupportedError("Cannot remove from a fixed-length list");
70 "Cannot remove from a fixed-length list");
71 } 62 }
72 63
73 /** This operation is not supported by a fixed length list. */ 64 /** This operation is not supported by a fixed length list. */
74 E removeLast() { 65 E removeLast() {
75 throw new UnsupportedError( 66 throw new UnsupportedError("Cannot remove from a fixed-length list");
76 "Cannot remove from a fixed-length list");
77 } 67 }
78 68
79 /** This operation is not supported by a fixed length list. */ 69 /** This operation is not supported by a fixed length list. */
80 void removeRange(int start, int end) { 70 void removeRange(int start, int end) {
81 throw new UnsupportedError( 71 throw new UnsupportedError("Cannot remove from a fixed-length list");
82 "Cannot remove from a fixed-length list");
83 } 72 }
84 73
85 /** This operation is not supported by a fixed length list. */ 74 /** This operation is not supported by a fixed length list. */
86 void replaceRange(int start, int end, Iterable<E> iterable) { 75 void replaceRange(int start, int end, Iterable<E> iterable) {
87 throw new UnsupportedError( 76 throw new UnsupportedError("Cannot remove from a fixed-length list");
88 "Cannot remove from a fixed-length list");
89 } 77 }
90 } 78 }
91 79
92 /** 80 /**
93 * Mixin for an unmodifiable [List] class. 81 * Mixin for an unmodifiable [List] class.
94 * 82 *
95 * This overrides all mutating methods with methods that throw. 83 * This overrides all mutating methods with methods that throw.
96 * This mixin is intended to be mixed in on top of [ListMixin] on 84 * This mixin is intended to be mixed in on top of [ListMixin] on
97 * unmodifiable lists. 85 * unmodifiable lists.
98 */ 86 */
99 abstract class UnmodifiableListMixin<E> implements List<E> { 87 abstract class UnmodifiableListMixin<E> implements List<E> {
100
101 /** This operation is not supported by an unmodifiable list. */ 88 /** This operation is not supported by an unmodifiable list. */
102 void operator []=(int index, E value) { 89 void operator []=(int index, E value) {
103 throw new UnsupportedError( 90 throw new UnsupportedError("Cannot modify an unmodifiable list");
104 "Cannot modify an unmodifiable list");
105 } 91 }
106 92
107 /** This operation is not supported by an unmodifiable list. */ 93 /** This operation is not supported by an unmodifiable list. */
108 set length(int newLength) { 94 set length(int newLength) {
109 throw new UnsupportedError( 95 throw new UnsupportedError(
110 "Cannot change the length of an unmodifiable list"); 96 "Cannot change the length of an unmodifiable list");
111 } 97 }
112 98
113 /** This operation is not supported by an unmodifiable list. */ 99 /** This operation is not supported by an unmodifiable list. */
114 void setAll(int at, Iterable<E> iterable) { 100 void setAll(int at, Iterable<E> iterable) {
115 throw new UnsupportedError( 101 throw new UnsupportedError("Cannot modify an unmodifiable list");
116 "Cannot modify an unmodifiable list");
117 } 102 }
118 103
119 /** This operation is not supported by an unmodifiable list. */ 104 /** This operation is not supported by an unmodifiable list. */
120 void add(E value) { 105 void add(E value) {
121 throw new UnsupportedError( 106 throw new UnsupportedError("Cannot add to an unmodifiable list");
122 "Cannot add to an unmodifiable list");
123 } 107 }
124 108
125 /** This operation is not supported by an unmodifiable list. */ 109 /** This operation is not supported by an unmodifiable list. */
126 void insert(int index, E element) { 110 void insert(int index, E element) {
127 throw new UnsupportedError( 111 throw new UnsupportedError("Cannot add to an unmodifiable list");
128 "Cannot add to an unmodifiable list");
129 } 112 }
130 113
131 /** This operation is not supported by an unmodifiable list. */ 114 /** This operation is not supported by an unmodifiable list. */
132 void insertAll(int at, Iterable<E> iterable) { 115 void insertAll(int at, Iterable<E> iterable) {
133 throw new UnsupportedError( 116 throw new UnsupportedError("Cannot add to an unmodifiable list");
134 "Cannot add to an unmodifiable list");
135 } 117 }
136 118
137 /** This operation is not supported by an unmodifiable list. */ 119 /** This operation is not supported by an unmodifiable list. */
138 void addAll(Iterable<E> iterable) { 120 void addAll(Iterable<E> iterable) {
139 throw new UnsupportedError( 121 throw new UnsupportedError("Cannot add to an unmodifiable list");
140 "Cannot add to an unmodifiable list");
141 } 122 }
142 123
143 /** This operation is not supported by an unmodifiable list. */ 124 /** This operation is not supported by an unmodifiable list. */
144 bool remove(Object element) { 125 bool remove(Object element) {
145 throw new UnsupportedError( 126 throw new UnsupportedError("Cannot remove from an unmodifiable list");
146 "Cannot remove from an unmodifiable list");
147 } 127 }
148 128
149 /** This operation is not supported by an unmodifiable list. */ 129 /** This operation is not supported by an unmodifiable list. */
150 void removeWhere(bool test(E element)) { 130 void removeWhere(bool test(E element)) {
151 throw new UnsupportedError( 131 throw new UnsupportedError("Cannot remove from an unmodifiable list");
152 "Cannot remove from an unmodifiable list");
153 } 132 }
154 133
155 /** This operation is not supported by an unmodifiable list. */ 134 /** This operation is not supported by an unmodifiable list. */
156 void retainWhere(bool test(E element)) { 135 void retainWhere(bool test(E element)) {
157 throw new UnsupportedError( 136 throw new UnsupportedError("Cannot remove from an unmodifiable list");
158 "Cannot remove from an unmodifiable list");
159 } 137 }
160 138
161 /** This operation is not supported by an unmodifiable list. */ 139 /** This operation is not supported by an unmodifiable list. */
162 void sort([Comparator<E> compare]) { 140 void sort([Comparator<E> compare]) {
163 throw new UnsupportedError( 141 throw new UnsupportedError("Cannot modify an unmodifiable list");
164 "Cannot modify an unmodifiable list");
165 } 142 }
166 143
167 /** This operation is not supported by an unmodifiable list. */ 144 /** This operation is not supported by an unmodifiable list. */
168 void shuffle([Random random]) { 145 void shuffle([Random random]) {
169 throw new UnsupportedError( 146 throw new UnsupportedError("Cannot modify an unmodifiable list");
170 "Cannot modify an unmodifiable list");
171 } 147 }
172 148
173 /** This operation is not supported by an unmodifiable list. */ 149 /** This operation is not supported by an unmodifiable list. */
174 void clear() { 150 void clear() {
175 throw new UnsupportedError( 151 throw new UnsupportedError("Cannot clear an unmodifiable list");
176 "Cannot clear an unmodifiable list");
177 } 152 }
178 153
179 /** This operation is not supported by an unmodifiable list. */ 154 /** This operation is not supported by an unmodifiable list. */
180 E removeAt(int index) { 155 E removeAt(int index) {
181 throw new UnsupportedError( 156 throw new UnsupportedError("Cannot remove from an unmodifiable list");
182 "Cannot remove from an unmodifiable list");
183 } 157 }
184 158
185 /** This operation is not supported by an unmodifiable list. */ 159 /** This operation is not supported by an unmodifiable list. */
186 E removeLast() { 160 E removeLast() {
187 throw new UnsupportedError( 161 throw new UnsupportedError("Cannot remove from an unmodifiable list");
188 "Cannot remove from an unmodifiable list");
189 } 162 }
190 163
191 /** This operation is not supported by an unmodifiable list. */ 164 /** This operation is not supported by an unmodifiable list. */
192 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { 165 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
193 throw new UnsupportedError( 166 throw new UnsupportedError("Cannot modify an unmodifiable list");
194 "Cannot modify an unmodifiable list");
195 } 167 }
196 168
197 /** This operation is not supported by an unmodifiable list. */ 169 /** This operation is not supported by an unmodifiable list. */
198 void removeRange(int start, int end) { 170 void removeRange(int start, int end) {
199 throw new UnsupportedError( 171 throw new UnsupportedError("Cannot remove from an unmodifiable list");
200 "Cannot remove from an unmodifiable list");
201 } 172 }
202 173
203 /** This operation is not supported by an unmodifiable list. */ 174 /** This operation is not supported by an unmodifiable list. */
204 void replaceRange(int start, int end, Iterable<E> iterable) { 175 void replaceRange(int start, int end, Iterable<E> iterable) {
205 throw new UnsupportedError( 176 throw new UnsupportedError("Cannot remove from an unmodifiable list");
206 "Cannot remove from an unmodifiable list");
207 } 177 }
208 178
209 /** This operation is not supported by an unmodifiable list. */ 179 /** This operation is not supported by an unmodifiable list. */
210 void fillRange(int start, int end, [E fillValue]) { 180 void fillRange(int start, int end, [E fillValue]) {
211 throw new UnsupportedError( 181 throw new UnsupportedError("Cannot modify an unmodifiable list");
212 "Cannot modify an unmodifiable list");
213 } 182 }
214 } 183 }
215 184
216 /** 185 /**
217 * Abstract implementation of a fixed-length list. 186 * Abstract implementation of a fixed-length list.
218 * 187 *
219 * All operations are defined in terms of `length`, `operator[]` and 188 * All operations are defined in terms of `length`, `operator[]` and
220 * `operator[]=`, which need to be implemented. 189 * `operator[]=`, which need to be implemented.
221 */ 190 */
222 abstract class FixedLengthListBase<E> = 191 abstract class FixedLengthListBase<E> = ListBase<E>
223 ListBase<E> with FixedLengthListMixin<E>; 192 with FixedLengthListMixin<E>;
224 193
225 /** 194 /**
226 * Abstract implementation of an unmodifiable list. 195 * Abstract implementation of an unmodifiable list.
227 * 196 *
228 * All operations are defined in terms of `length` and `operator[]`, 197 * All operations are defined in terms of `length` and `operator[]`,
229 * which need to be implemented. 198 * which need to be implemented.
230 */ 199 */
231 abstract class UnmodifiableListBase<E> = 200 abstract class UnmodifiableListBase<E> = ListBase<E>
232 ListBase<E> with UnmodifiableListMixin<E>; 201 with UnmodifiableListMixin<E>;
233 202
234 class _ListIndicesIterable extends ListIterable<int> { 203 class _ListIndicesIterable extends ListIterable<int> {
235 List _backedList; 204 List _backedList;
236 205
237 _ListIndicesIterable(this._backedList); 206 _ListIndicesIterable(this._backedList);
238 207
239 int get length => _backedList.length; 208 int get length => _backedList.length;
240 int elementAt(int index) { 209 int elementAt(int index) {
241 RangeError.checkValidIndex(index, this); 210 RangeError.checkValidIndex(index, this);
242 return index; 211 return index;
243 } 212 }
244 } 213 }
245 214
246 class ListMapView<E> implements Map<int, E> { 215 class ListMapView<E> implements Map<int, E> {
247 List<E> _values; 216 List<E> _values;
248 217
249 ListMapView(this._values); 218 ListMapView(this._values);
250 219
251 E operator[] (Object key) => containsKey(key) ? _values[key] : null; 220 E operator [](Object key) => containsKey(key) ? _values[key] : null;
252 int get length => _values.length; 221 int get length => _values.length;
253 222
254 Iterable<E> get values => new SubListIterable<E>(_values, 0, null); 223 Iterable<E> get values => new SubListIterable<E>(_values, 0, null);
255 Iterable<int> get keys => new _ListIndicesIterable(_values); 224 Iterable<int> get keys => new _ListIndicesIterable(_values);
256 225
257 bool get isEmpty => _values.isEmpty; 226 bool get isEmpty => _values.isEmpty;
258 bool get isNotEmpty => _values.isNotEmpty; 227 bool get isNotEmpty => _values.isNotEmpty;
259 bool containsValue(Object value) => _values.contains(value); 228 bool containsValue(Object value) => _values.contains(value);
260 bool containsKey(Object key) => key is int && key >= 0 && key < length; 229 bool containsKey(Object key) => key is int && key >= 0 && key < length;
261 230
262 void forEach(void f(int key, E value)) { 231 void forEach(void f(int key, E value)) {
263 int length = _values.length; 232 int length = _values.length;
264 for (int i = 0; i < length; i++) { 233 for (int i = 0; i < length; i++) {
265 f(i, _values[i]); 234 f(i, _values[i]);
266 if (length != _values.length) { 235 if (length != _values.length) {
267 throw new ConcurrentModificationError(_values); 236 throw new ConcurrentModificationError(_values);
268 } 237 }
269 } 238 }
270 } 239 }
271 240
272 /** This operation is not supported by an unmodifiable map. */ 241 /** This operation is not supported by an unmodifiable map. */
273 void operator[]= (int key, E value) { 242 void operator []=(int key, E value) {
274 throw new UnsupportedError("Cannot modify an unmodifiable map"); 243 throw new UnsupportedError("Cannot modify an unmodifiable map");
275 } 244 }
276 245
277 /** This operation is not supported by an unmodifiable map. */ 246 /** This operation is not supported by an unmodifiable map. */
278 E putIfAbsent(int key, E ifAbsent()) { 247 E putIfAbsent(int key, E ifAbsent()) {
279 throw new UnsupportedError("Cannot modify an unmodifiable map"); 248 throw new UnsupportedError("Cannot modify an unmodifiable map");
280 } 249 }
281 250
282 /** This operation is not supported by an unmodifiable map. */ 251 /** This operation is not supported by an unmodifiable map. */
283 E remove(Object key) { 252 E remove(Object key) {
(...skipping 22 matching lines...) Expand all
306 E elementAt(int index) => _source.elementAt(_source.length - 1 - index); 275 E elementAt(int index) => _source.elementAt(_source.length - 1 - index);
307 } 276 }
308 277
309 /** 278 /**
310 * Creates errors thrown by unmodifiable lists when they are attempted modified. 279 * Creates errors thrown by unmodifiable lists when they are attempted modified.
311 * 280 *
312 * This class creates [UnsupportedError]s with specialized messages. 281 * This class creates [UnsupportedError]s with specialized messages.
313 */ 282 */
314 abstract class UnmodifiableListError { 283 abstract class UnmodifiableListError {
315 /** Error thrown when trying to add elements to an unmodifiable list. */ 284 /** Error thrown when trying to add elements to an unmodifiable list. */
316 static UnsupportedError add() 285 static UnsupportedError add() =>
317 => new UnsupportedError("Cannot add to unmodifiable List"); 286 new UnsupportedError("Cannot add to unmodifiable List");
318 287
319 /** Error thrown when trying to add elements to an unmodifiable list. */ 288 /** Error thrown when trying to add elements to an unmodifiable list. */
320 static UnsupportedError change() 289 static UnsupportedError change() =>
321 => new UnsupportedError( 290 new UnsupportedError("Cannot change the content of an unmodifiable List");
322 "Cannot change the content of an unmodifiable List");
323 291
324 /** Error thrown when trying to change the length of an unmodifiable list. */ 292 /** Error thrown when trying to change the length of an unmodifiable list. */
325 static UnsupportedError length() 293 static UnsupportedError length() =>
326 => new UnsupportedError("Cannot change length of unmodifiable List"); 294 new UnsupportedError("Cannot change length of unmodifiable List");
327 295
328 /** Error thrown when trying to remove elements from an unmodifiable list. */ 296 /** Error thrown when trying to remove elements from an unmodifiable list. */
329 static UnsupportedError remove() 297 static UnsupportedError remove() =>
330 => new UnsupportedError("Cannot remove from unmodifiable List"); 298 new UnsupportedError("Cannot remove from unmodifiable List");
331 } 299 }
332 300
333 /** 301 /**
334 * Creates errors thrown by non-growable lists when they are attempted modified. 302 * Creates errors thrown by non-growable lists when they are attempted modified.
335 * 303 *
336 * This class creates [UnsupportedError]s with specialized messages. 304 * This class creates [UnsupportedError]s with specialized messages.
337 */ 305 */
338 abstract class NonGrowableListError { 306 abstract class NonGrowableListError {
339 /** Error thrown when trying to add elements to an non-growable list. */ 307 /** Error thrown when trying to add elements to an non-growable list. */
340 static UnsupportedError add() 308 static UnsupportedError add() =>
341 => new UnsupportedError("Cannot add to non-growable List"); 309 new UnsupportedError("Cannot add to non-growable List");
342 310
343 /** Error thrown when trying to change the length of an non-growable list. */ 311 /** Error thrown when trying to change the length of an non-growable list. */
344 static UnsupportedError length() 312 static UnsupportedError length() =>
345 => new UnsupportedError("Cannot change length of non-growable List"); 313 new UnsupportedError("Cannot change length of non-growable List");
346 314
347 /** Error thrown when trying to remove elements from an non-growable list. */ 315 /** Error thrown when trying to remove elements from an non-growable list. */
348 static UnsupportedError remove() 316 static UnsupportedError remove() =>
349 => new UnsupportedError("Cannot remove from non-growable List"); 317 new UnsupportedError("Cannot remove from non-growable List");
350 } 318 }
351 319
352 /** 320 /**
353 * Converts a growable list to a fixed length list with the same elements. 321 * Converts a growable list to a fixed length list with the same elements.
354 * 322 *
355 * For internal use only. 323 * For internal use only.
356 * Only works on growable lists as created by `[]` or `new List()`. 324 * Only works on growable lists as created by `[]` or `new List()`.
357 * May throw on any other list. 325 * May throw on any other list.
358 * 326 *
359 * The operation is efficient. It doesn't copy the elements, but converts 327 * The operation is efficient. It doesn't copy the elements, but converts
(...skipping 23 matching lines...) Expand all
383 * or as returned by [makeListFixedLength]. 351 * or as returned by [makeListFixedLength].
384 * 352 *
385 * The operation is efficient. It doesn't copy the elements, but converts 353 * The operation is efficient. It doesn't copy the elements, but converts
386 * the existing list directly to a fixed length list. 354 * the existing list directly to a fixed length list.
387 * That means that it is a destructive conversion. 355 * That means that it is a destructive conversion.
388 * The original list should not be used afterwards. 356 * The original list should not be used afterwards.
389 * 357 *
390 * The unmodifiable list type is similar to the one used by const lists. 358 * The unmodifiable list type is similar to the one used by const lists.
391 */ 359 */
392 external List makeFixedListUnmodifiable(List fixedLengthList); 360 external List makeFixedListUnmodifiable(List fixedLengthList);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698