OLD | NEW |
| (Empty) |
1 dart_library.library('dart/_internal', null, /* Imports */[ | |
2 'dart/_runtime', | |
3 'dart/core', | |
4 'dart/collection' | |
5 ], /* Lazy imports */[ | |
6 'dart/math', | |
7 'dart/_interceptors', | |
8 'dart/_js_primitives' | |
9 ], function(exports, dart, core, collection, math, _interceptors, _js_primitives
) { | |
10 'use strict'; | |
11 let dartx = dart.dartx; | |
12 class EfficientLength extends core.Object {} | |
13 const ListIterable$ = dart.generic(function(E) { | |
14 class ListIterable extends collection.IterableBase$(E) { | |
15 ListIterable() { | |
16 super.IterableBase(); | |
17 } | |
18 get iterator() { | |
19 return new (ListIterator$(E))(this); | |
20 } | |
21 forEach(action) { | |
22 dart.as(action, dart.functionType(dart.void, [E])); | |
23 let length = this.length; | |
24 for (let i = 0; i < dart.notNull(length); i++) { | |
25 action(this.elementAt(i)); | |
26 if (length != this.length) { | |
27 dart.throw(new core.ConcurrentModificationError(this)); | |
28 } | |
29 } | |
30 } | |
31 get isEmpty() { | |
32 return this.length == 0; | |
33 } | |
34 get first() { | |
35 if (this.length == 0) dart.throw(IterableElementError.noElement()); | |
36 return this.elementAt(0); | |
37 } | |
38 get last() { | |
39 if (this.length == 0) dart.throw(IterableElementError.noElement()); | |
40 return this.elementAt(dart.notNull(this.length) - 1); | |
41 } | |
42 get single() { | |
43 if (this.length == 0) dart.throw(IterableElementError.noElement()); | |
44 if (dart.notNull(this.length) > 1) dart.throw(IterableElementError.tooMa
ny()); | |
45 return this.elementAt(0); | |
46 } | |
47 contains(element) { | |
48 let length = this.length; | |
49 for (let i = 0; i < dart.notNull(length); i++) { | |
50 if (dart.equals(this.elementAt(i), element)) return true; | |
51 if (length != this.length) { | |
52 dart.throw(new core.ConcurrentModificationError(this)); | |
53 } | |
54 } | |
55 return false; | |
56 } | |
57 every(test) { | |
58 dart.as(test, dart.functionType(core.bool, [E])); | |
59 let length = this.length; | |
60 for (let i = 0; i < dart.notNull(length); i++) { | |
61 if (!dart.notNull(test(this.elementAt(i)))) return false; | |
62 if (length != this.length) { | |
63 dart.throw(new core.ConcurrentModificationError(this)); | |
64 } | |
65 } | |
66 return true; | |
67 } | |
68 any(test) { | |
69 dart.as(test, dart.functionType(core.bool, [E])); | |
70 let length = this.length; | |
71 for (let i = 0; i < dart.notNull(length); i++) { | |
72 if (dart.notNull(test(this.elementAt(i)))) return true; | |
73 if (length != this.length) { | |
74 dart.throw(new core.ConcurrentModificationError(this)); | |
75 } | |
76 } | |
77 return false; | |
78 } | |
79 firstWhere(test, opts) { | |
80 dart.as(test, dart.functionType(core.bool, [E])); | |
81 let orElse = opts && 'orElse' in opts ? opts.orElse : null; | |
82 dart.as(orElse, dart.functionType(E, [])); | |
83 let length = this.length; | |
84 for (let i = 0; i < dart.notNull(length); i++) { | |
85 let element = this.elementAt(i); | |
86 if (dart.notNull(test(element))) return element; | |
87 if (length != this.length) { | |
88 dart.throw(new core.ConcurrentModificationError(this)); | |
89 } | |
90 } | |
91 if (orElse != null) return orElse(); | |
92 dart.throw(IterableElementError.noElement()); | |
93 } | |
94 lastWhere(test, opts) { | |
95 dart.as(test, dart.functionType(core.bool, [E])); | |
96 let orElse = opts && 'orElse' in opts ? opts.orElse : null; | |
97 dart.as(orElse, dart.functionType(E, [])); | |
98 let length = this.length; | |
99 for (let i = dart.notNull(length) - 1; i >= 0; i--) { | |
100 let element = this.elementAt(i); | |
101 if (dart.notNull(test(element))) return element; | |
102 if (length != this.length) { | |
103 dart.throw(new core.ConcurrentModificationError(this)); | |
104 } | |
105 } | |
106 if (orElse != null) return orElse(); | |
107 dart.throw(IterableElementError.noElement()); | |
108 } | |
109 singleWhere(test) { | |
110 dart.as(test, dart.functionType(core.bool, [E])); | |
111 let length = this.length; | |
112 let match = null; | |
113 let matchFound = false; | |
114 for (let i = 0; i < dart.notNull(length); i++) { | |
115 let element = this.elementAt(i); | |
116 if (dart.notNull(test(element))) { | |
117 if (matchFound) { | |
118 dart.throw(IterableElementError.tooMany()); | |
119 } | |
120 matchFound = true; | |
121 match = element; | |
122 } | |
123 if (length != this.length) { | |
124 dart.throw(new core.ConcurrentModificationError(this)); | |
125 } | |
126 } | |
127 if (matchFound) return match; | |
128 dart.throw(IterableElementError.noElement()); | |
129 } | |
130 join(separator) { | |
131 if (separator === void 0) separator = ""; | |
132 let length = this.length; | |
133 if (!dart.notNull(separator[dartx.isEmpty])) { | |
134 if (length == 0) return ""; | |
135 let first = `${this.elementAt(0)}`; | |
136 if (length != this.length) { | |
137 dart.throw(new core.ConcurrentModificationError(this)); | |
138 } | |
139 let buffer = new core.StringBuffer(first); | |
140 for (let i = 1; i < dart.notNull(length); i++) { | |
141 buffer.write(separator); | |
142 buffer.write(this.elementAt(i)); | |
143 if (length != this.length) { | |
144 dart.throw(new core.ConcurrentModificationError(this)); | |
145 } | |
146 } | |
147 return buffer.toString(); | |
148 } else { | |
149 let buffer = new core.StringBuffer(); | |
150 for (let i = 0; i < dart.notNull(length); i++) { | |
151 buffer.write(this.elementAt(i)); | |
152 if (length != this.length) { | |
153 dart.throw(new core.ConcurrentModificationError(this)); | |
154 } | |
155 } | |
156 return buffer.toString(); | |
157 } | |
158 } | |
159 where(test) { | |
160 dart.as(test, dart.functionType(core.bool, [E])); | |
161 return super.where(test); | |
162 } | |
163 map(f) { | |
164 dart.as(f, dart.functionType(dart.dynamic, [E])); | |
165 return new (MappedListIterable$(E, dart.dynamic))(this, f); | |
166 } | |
167 reduce(combine) { | |
168 dart.as(combine, dart.functionType(E, [dart.dynamic, E])); | |
169 let length = this.length; | |
170 if (length == 0) dart.throw(IterableElementError.noElement()); | |
171 let value = this.elementAt(0); | |
172 for (let i = 1; i < dart.notNull(length); i++) { | |
173 value = dart.dcall(combine, value, this.elementAt(i)); | |
174 if (length != this.length) { | |
175 dart.throw(new core.ConcurrentModificationError(this)); | |
176 } | |
177 } | |
178 return value; | |
179 } | |
180 fold(initialValue, combine) { | |
181 dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E])); | |
182 let value = initialValue; | |
183 let length = this.length; | |
184 for (let i = 0; i < dart.notNull(length); i++) { | |
185 value = combine(value, this.elementAt(i)); | |
186 if (length != this.length) { | |
187 dart.throw(new core.ConcurrentModificationError(this)); | |
188 } | |
189 } | |
190 return value; | |
191 } | |
192 skip(count) { | |
193 return new (SubListIterable$(E))(this, count, null); | |
194 } | |
195 skipWhile(test) { | |
196 dart.as(test, dart.functionType(core.bool, [E])); | |
197 return super.skipWhile(test); | |
198 } | |
199 take(count) { | |
200 return new (SubListIterable$(E))(this, 0, count); | |
201 } | |
202 takeWhile(test) { | |
203 dart.as(test, dart.functionType(core.bool, [E])); | |
204 return super.takeWhile(test); | |
205 } | |
206 toList(opts) { | |
207 let growable = opts && 'growable' in opts ? opts.growable : true; | |
208 let result = null; | |
209 if (dart.notNull(growable)) { | |
210 result = core.List$(E).new(); | |
211 result[dartx.length] = this.length; | |
212 } else { | |
213 result = core.List$(E).new(this.length); | |
214 } | |
215 for (let i = 0; i < dart.notNull(this.length); i++) { | |
216 result[dartx.set](i, this.elementAt(i)); | |
217 } | |
218 return result; | |
219 } | |
220 toSet() { | |
221 let result = core.Set$(E).new(); | |
222 for (let i = 0; i < dart.notNull(this.length); i++) { | |
223 result.add(this.elementAt(i)); | |
224 } | |
225 return result; | |
226 } | |
227 } | |
228 ListIterable[dart.implements] = () => [EfficientLength]; | |
229 dart.setSignature(ListIterable, { | |
230 constructors: () => ({ListIterable: [ListIterable$(E), []]}), | |
231 methods: () => ({ | |
232 forEach: [dart.void, [dart.functionType(dart.void, [E])]], | |
233 every: [core.bool, [dart.functionType(core.bool, [E])]], | |
234 any: [core.bool, [dart.functionType(core.bool, [E])]], | |
235 firstWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.funct
ionType(E, [])}], | |
236 lastWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functi
onType(E, [])}], | |
237 singleWhere: [E, [dart.functionType(core.bool, [E])]], | |
238 where: [core.Iterable$(E), [dart.functionType(core.bool, [E])]], | |
239 map: [core.Iterable, [dart.functionType(dart.dynamic, [E])]], | |
240 reduce: [E, [dart.functionType(E, [dart.dynamic, E])]], | |
241 fold: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynamic, [dar
t.dynamic, E])]], | |
242 skip: [core.Iterable$(E), [core.int]], | |
243 skipWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]], | |
244 take: [core.Iterable$(E), [core.int]], | |
245 takeWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]], | |
246 toList: [core.List$(E), [], {growable: core.bool}], | |
247 toSet: [core.Set$(E), []] | |
248 }) | |
249 }); | |
250 dart.defineExtensionMembers(ListIterable, [ | |
251 'forEach', | |
252 'contains', | |
253 'every', | |
254 'any', | |
255 'firstWhere', | |
256 'lastWhere', | |
257 'singleWhere', | |
258 'join', | |
259 'where', | |
260 'map', | |
261 'reduce', | |
262 'fold', | |
263 'skip', | |
264 'skipWhile', | |
265 'take', | |
266 'takeWhile', | |
267 'toList', | |
268 'toSet', | |
269 'iterator', | |
270 'isEmpty', | |
271 'first', | |
272 'last', | |
273 'single' | |
274 ]); | |
275 return ListIterable; | |
276 }); | |
277 let ListIterable = ListIterable$(); | |
278 const _iterable = dart.JsSymbol('_iterable'); | |
279 const _start = dart.JsSymbol('_start'); | |
280 const _endOrLength = dart.JsSymbol('_endOrLength'); | |
281 const _endIndex = dart.JsSymbol('_endIndex'); | |
282 const _startIndex = dart.JsSymbol('_startIndex'); | |
283 const SubListIterable$ = dart.generic(function(E) { | |
284 class SubListIterable extends ListIterable$(E) { | |
285 SubListIterable(iterable, start, endOrLength) { | |
286 this[_iterable] = iterable; | |
287 this[_start] = start; | |
288 this[_endOrLength] = endOrLength; | |
289 super.ListIterable(); | |
290 core.RangeError.checkNotNegative(this[_start], "start"); | |
291 if (this[_endOrLength] != null) { | |
292 core.RangeError.checkNotNegative(this[_endOrLength], "end"); | |
293 if (dart.notNull(this[_start]) > dart.notNull(this[_endOrLength])) { | |
294 dart.throw(new core.RangeError.range(this[_start], 0, this[_endOrLen
gth], "start")); | |
295 } | |
296 } | |
297 } | |
298 get [_endIndex]() { | |
299 let length = this[_iterable][dartx.length]; | |
300 if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) > dar
t.notNull(length)) return length; | |
301 return this[_endOrLength]; | |
302 } | |
303 get [_startIndex]() { | |
304 let length = this[_iterable][dartx.length]; | |
305 if (dart.notNull(this[_start]) > dart.notNull(length)) return length; | |
306 return this[_start]; | |
307 } | |
308 get length() { | |
309 let length = this[_iterable][dartx.length]; | |
310 if (dart.notNull(this[_start]) >= dart.notNull(length)) return 0; | |
311 if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) >= da
rt.notNull(length)) { | |
312 return dart.notNull(length) - dart.notNull(this[_start]); | |
313 } | |
314 return dart.notNull(this[_endOrLength]) - dart.notNull(this[_start]); | |
315 } | |
316 elementAt(index) { | |
317 let realIndex = dart.notNull(this[_startIndex]) + dart.notNull(index); | |
318 if (dart.notNull(index) < 0 || realIndex >= dart.notNull(this[_endIndex]
)) { | |
319 dart.throw(core.RangeError.index(index, this, "index")); | |
320 } | |
321 return this[_iterable][dartx.elementAt](realIndex); | |
322 } | |
323 skip(count) { | |
324 core.RangeError.checkNotNegative(count, "count"); | |
325 let newStart = dart.notNull(this[_start]) + dart.notNull(count); | |
326 if (this[_endOrLength] != null && newStart >= dart.notNull(this[_endOrLe
ngth])) { | |
327 return new (EmptyIterable$(E))(); | |
328 } | |
329 return new (SubListIterable$(E))(this[_iterable], newStart, this[_endOrL
ength]); | |
330 } | |
331 take(count) { | |
332 core.RangeError.checkNotNegative(count, "count"); | |
333 if (this[_endOrLength] == null) { | |
334 return new (SubListIterable$(E))(this[_iterable], this[_start], dart.n
otNull(this[_start]) + dart.notNull(count)); | |
335 } else { | |
336 let newEnd = dart.notNull(this[_start]) + dart.notNull(count); | |
337 if (dart.notNull(this[_endOrLength]) < newEnd) return this; | |
338 return new (SubListIterable$(E))(this[_iterable], this[_start], newEnd
); | |
339 } | |
340 } | |
341 toList(opts) { | |
342 let growable = opts && 'growable' in opts ? opts.growable : true; | |
343 let start = this[_start]; | |
344 let end = this[_iterable][dartx.length]; | |
345 if (this[_endOrLength] != null && dart.notNull(this[_endOrLength]) < dar
t.notNull(end)) end = this[_endOrLength]; | |
346 let length = dart.notNull(end) - dart.notNull(start); | |
347 if (length < 0) length = 0; | |
348 let result = dart.notNull(growable) ? (() => { | |
349 let _ = core.List$(E).new(); | |
350 _[dartx.length] = length; | |
351 return _; | |
352 })() : core.List$(E).new(length); | |
353 for (let i = 0; i < length; i++) { | |
354 result[dartx.set](i, this[_iterable][dartx.elementAt](dart.notNull(sta
rt) + i)); | |
355 if (dart.notNull(this[_iterable][dartx.length]) < dart.notNull(end)) d
art.throw(new core.ConcurrentModificationError(this)); | |
356 } | |
357 return dart.as(result, core.List$(E)); | |
358 } | |
359 } | |
360 dart.setSignature(SubListIterable, { | |
361 constructors: () => ({SubListIterable: [SubListIterable$(E), [core.Iterabl
e$(E), core.int, core.int]]}), | |
362 methods: () => ({ | |
363 elementAt: [E, [core.int]], | |
364 skip: [core.Iterable$(E), [core.int]], | |
365 take: [core.Iterable$(E), [core.int]], | |
366 toList: [core.List$(E), [], {growable: core.bool}] | |
367 }) | |
368 }); | |
369 dart.defineExtensionMembers(SubListIterable, [ | |
370 'elementAt', | |
371 'skip', | |
372 'take', | |
373 'toList', | |
374 'length' | |
375 ]); | |
376 return SubListIterable; | |
377 }); | |
378 let SubListIterable = SubListIterable$(); | |
379 const _length = dart.JsSymbol('_length'); | |
380 const _index = dart.JsSymbol('_index'); | |
381 const _current = dart.JsSymbol('_current'); | |
382 const ListIterator$ = dart.generic(function(E) { | |
383 class ListIterator extends core.Object { | |
384 ListIterator(iterable) { | |
385 this[_iterable] = iterable; | |
386 this[_length] = iterable[dartx.length]; | |
387 this[_index] = 0; | |
388 this[_current] = null; | |
389 } | |
390 get current() { | |
391 return this[_current]; | |
392 } | |
393 moveNext() { | |
394 let length = this[_iterable][dartx.length]; | |
395 if (this[_length] != length) { | |
396 dart.throw(new core.ConcurrentModificationError(this[_iterable])); | |
397 } | |
398 if (dart.notNull(this[_index]) >= dart.notNull(length)) { | |
399 this[_current] = null; | |
400 return false; | |
401 } | |
402 this[_current] = this[_iterable][dartx.elementAt](this[_index]); | |
403 this[_index] = dart.notNull(this[_index]) + 1; | |
404 return true; | |
405 } | |
406 } | |
407 ListIterator[dart.implements] = () => [core.Iterator$(E)]; | |
408 dart.setSignature(ListIterator, { | |
409 constructors: () => ({ListIterator: [ListIterator$(E), [core.Iterable$(E)]
]}), | |
410 methods: () => ({moveNext: [core.bool, []]}) | |
411 }); | |
412 return ListIterator; | |
413 }); | |
414 let ListIterator = ListIterator$(); | |
415 const _Transformation$ = dart.generic(function(S, T) { | |
416 const _Transformation = dart.typedef('_Transformation', () => dart.functionT
ype(T, [S])); | |
417 return _Transformation; | |
418 }); | |
419 let _Transformation = _Transformation$(); | |
420 const _f = dart.JsSymbol('_f'); | |
421 const MappedIterable$ = dart.generic(function(S, T) { | |
422 class MappedIterable extends collection.IterableBase$(T) { | |
423 static new(iterable, func) { | |
424 if (dart.is(iterable, EfficientLength)) { | |
425 return new (EfficientLengthMappedIterable$(S, T))(iterable, func); | |
426 } | |
427 return new (MappedIterable$(S, T))._(dart.as(iterable, core.Iterable$(S)
), func); | |
428 } | |
429 _(iterable, f) { | |
430 this[_iterable] = iterable; | |
431 this[_f] = f; | |
432 super.IterableBase(); | |
433 } | |
434 get iterator() { | |
435 return new (MappedIterator$(S, T))(this[_iterable][dartx.iterator], this
[_f]); | |
436 } | |
437 get length() { | |
438 return this[_iterable][dartx.length]; | |
439 } | |
440 get isEmpty() { | |
441 return this[_iterable][dartx.isEmpty]; | |
442 } | |
443 get first() { | |
444 return this[_f](this[_iterable][dartx.first]); | |
445 } | |
446 get last() { | |
447 return this[_f](this[_iterable][dartx.last]); | |
448 } | |
449 get single() { | |
450 return this[_f](this[_iterable][dartx.single]); | |
451 } | |
452 elementAt(index) { | |
453 return this[_f](this[_iterable][dartx.elementAt](index)); | |
454 } | |
455 } | |
456 dart.defineNamedConstructor(MappedIterable, '_'); | |
457 dart.setSignature(MappedIterable, { | |
458 constructors: () => ({ | |
459 new: [MappedIterable$(S, T), [core.Iterable, dart.functionType(T, [S])]]
, | |
460 _: [MappedIterable$(S, T), [core.Iterable$(S), dart.functionType(T, [S])
]] | |
461 }), | |
462 methods: () => ({elementAt: [T, [core.int]]}) | |
463 }); | |
464 dart.defineExtensionMembers(MappedIterable, [ | |
465 'elementAt', | |
466 'iterator', | |
467 'length', | |
468 'isEmpty', | |
469 'first', | |
470 'last', | |
471 'single' | |
472 ]); | |
473 return MappedIterable; | |
474 }); | |
475 let MappedIterable = MappedIterable$(); | |
476 const EfficientLengthMappedIterable$ = dart.generic(function(S, T) { | |
477 class EfficientLengthMappedIterable extends MappedIterable$(S, T) { | |
478 EfficientLengthMappedIterable(iterable, func) { | |
479 super._(dart.as(iterable, core.Iterable$(S)), func); | |
480 } | |
481 } | |
482 EfficientLengthMappedIterable[dart.implements] = () => [EfficientLength]; | |
483 dart.setSignature(EfficientLengthMappedIterable, { | |
484 constructors: () => ({EfficientLengthMappedIterable: [EfficientLengthMappe
dIterable$(S, T), [core.Iterable, dart.functionType(T, [S])]]}) | |
485 }); | |
486 return EfficientLengthMappedIterable; | |
487 }); | |
488 let EfficientLengthMappedIterable = EfficientLengthMappedIterable$(); | |
489 const _iterator = dart.JsSymbol('_iterator'); | |
490 const MappedIterator$ = dart.generic(function(S, T) { | |
491 class MappedIterator extends core.Iterator$(T) { | |
492 MappedIterator(iterator, f) { | |
493 this[_iterator] = iterator; | |
494 this[_f] = f; | |
495 this[_current] = null; | |
496 } | |
497 moveNext() { | |
498 if (dart.notNull(this[_iterator].moveNext())) { | |
499 this[_current] = this[_f](this[_iterator].current); | |
500 return true; | |
501 } | |
502 this[_current] = null; | |
503 return false; | |
504 } | |
505 get current() { | |
506 return this[_current]; | |
507 } | |
508 } | |
509 dart.setSignature(MappedIterator, { | |
510 constructors: () => ({MappedIterator: [MappedIterator$(S, T), [core.Iterat
or$(S), dart.functionType(T, [S])]]}), | |
511 methods: () => ({moveNext: [core.bool, []]}) | |
512 }); | |
513 return MappedIterator; | |
514 }); | |
515 let MappedIterator = MappedIterator$(); | |
516 const _source = dart.JsSymbol('_source'); | |
517 const MappedListIterable$ = dart.generic(function(S, T) { | |
518 class MappedListIterable extends ListIterable$(T) { | |
519 MappedListIterable(source, f) { | |
520 this[_source] = source; | |
521 this[_f] = f; | |
522 super.ListIterable(); | |
523 } | |
524 get length() { | |
525 return this[_source][dartx.length]; | |
526 } | |
527 elementAt(index) { | |
528 return this[_f](this[_source][dartx.elementAt](index)); | |
529 } | |
530 } | |
531 MappedListIterable[dart.implements] = () => [EfficientLength]; | |
532 dart.setSignature(MappedListIterable, { | |
533 constructors: () => ({MappedListIterable: [MappedListIterable$(S, T), [cor
e.Iterable$(S), dart.functionType(T, [S])]]}), | |
534 methods: () => ({elementAt: [T, [core.int]]}) | |
535 }); | |
536 dart.defineExtensionMembers(MappedListIterable, ['elementAt', 'length']); | |
537 return MappedListIterable; | |
538 }); | |
539 let MappedListIterable = MappedListIterable$(); | |
540 const _ElementPredicate$ = dart.generic(function(E) { | |
541 const _ElementPredicate = dart.typedef('_ElementPredicate', () => dart.funct
ionType(core.bool, [E])); | |
542 return _ElementPredicate; | |
543 }); | |
544 let _ElementPredicate = _ElementPredicate$(); | |
545 const WhereIterable$ = dart.generic(function(E) { | |
546 class WhereIterable extends collection.IterableBase$(E) { | |
547 WhereIterable(iterable, f) { | |
548 this[_iterable] = iterable; | |
549 this[_f] = f; | |
550 super.IterableBase(); | |
551 } | |
552 get iterator() { | |
553 return new (WhereIterator$(E))(this[_iterable][dartx.iterator], this[_f]
); | |
554 } | |
555 } | |
556 dart.setSignature(WhereIterable, { | |
557 constructors: () => ({WhereIterable: [WhereIterable$(E), [core.Iterable$(E
), dart.functionType(core.bool, [E])]]}) | |
558 }); | |
559 dart.defineExtensionMembers(WhereIterable, ['iterator']); | |
560 return WhereIterable; | |
561 }); | |
562 let WhereIterable = WhereIterable$(); | |
563 const WhereIterator$ = dart.generic(function(E) { | |
564 class WhereIterator extends core.Iterator$(E) { | |
565 WhereIterator(iterator, f) { | |
566 this[_iterator] = iterator; | |
567 this[_f] = f; | |
568 } | |
569 moveNext() { | |
570 while (dart.notNull(this[_iterator].moveNext())) { | |
571 if (dart.notNull(this[_f](this[_iterator].current))) { | |
572 return true; | |
573 } | |
574 } | |
575 return false; | |
576 } | |
577 get current() { | |
578 return this[_iterator].current; | |
579 } | |
580 } | |
581 dart.setSignature(WhereIterator, { | |
582 constructors: () => ({WhereIterator: [WhereIterator$(E), [core.Iterator$(E
), dart.functionType(core.bool, [E])]]}), | |
583 methods: () => ({moveNext: [core.bool, []]}) | |
584 }); | |
585 return WhereIterator; | |
586 }); | |
587 let WhereIterator = WhereIterator$(); | |
588 const _ExpandFunction$ = dart.generic(function(S, T) { | |
589 const _ExpandFunction = dart.typedef('_ExpandFunction', () => dart.functionT
ype(core.Iterable$(T), [S])); | |
590 return _ExpandFunction; | |
591 }); | |
592 let _ExpandFunction = _ExpandFunction$(); | |
593 const ExpandIterable$ = dart.generic(function(S, T) { | |
594 class ExpandIterable extends collection.IterableBase$(T) { | |
595 ExpandIterable(iterable, f) { | |
596 this[_iterable] = iterable; | |
597 this[_f] = f; | |
598 super.IterableBase(); | |
599 } | |
600 get iterator() { | |
601 return new (ExpandIterator$(S, T))(this[_iterable][dartx.iterator], dart
.as(this[_f], dart.functionType(core.Iterable$(T), [S]))); | |
602 } | |
603 } | |
604 dart.setSignature(ExpandIterable, { | |
605 constructors: () => ({ExpandIterable: [ExpandIterable$(S, T), [core.Iterab
le$(S), dart.functionType(core.Iterable$(T), [S])]]}) | |
606 }); | |
607 dart.defineExtensionMembers(ExpandIterable, ['iterator']); | |
608 return ExpandIterable; | |
609 }); | |
610 let ExpandIterable = ExpandIterable$(); | |
611 const _currentExpansion = dart.JsSymbol('_currentExpansion'); | |
612 const _nextExpansion = dart.JsSymbol('_nextExpansion'); | |
613 const ExpandIterator$ = dart.generic(function(S, T) { | |
614 class ExpandIterator extends core.Object { | |
615 ExpandIterator(iterator, f) { | |
616 this[_iterator] = iterator; | |
617 this[_f] = f; | |
618 this[_currentExpansion] = dart.const(new (EmptyIterator$(T))()); | |
619 this[_current] = null; | |
620 } | |
621 [_nextExpansion]() {} | |
622 get current() { | |
623 return this[_current]; | |
624 } | |
625 moveNext() { | |
626 if (this[_currentExpansion] == null) return false; | |
627 while (!dart.notNull(this[_currentExpansion].moveNext())) { | |
628 this[_current] = null; | |
629 if (dart.notNull(this[_iterator].moveNext())) { | |
630 this[_currentExpansion] = null; | |
631 this[_currentExpansion] = dart.as(dart.dcall(this[_f], this[_iterato
r].current)[dartx.iterator], core.Iterator$(T)); | |
632 } else { | |
633 return false; | |
634 } | |
635 } | |
636 this[_current] = this[_currentExpansion].current; | |
637 return true; | |
638 } | |
639 } | |
640 ExpandIterator[dart.implements] = () => [core.Iterator$(T)]; | |
641 dart.setSignature(ExpandIterator, { | |
642 constructors: () => ({ExpandIterator: [ExpandIterator$(S, T), [core.Iterat
or$(S), dart.functionType(core.Iterable$(T), [S])]]}), | |
643 methods: () => ({ | |
644 [_nextExpansion]: [dart.void, []], | |
645 moveNext: [core.bool, []] | |
646 }) | |
647 }); | |
648 return ExpandIterator; | |
649 }); | |
650 let ExpandIterator = ExpandIterator$(); | |
651 const _takeCount = dart.JsSymbol('_takeCount'); | |
652 const TakeIterable$ = dart.generic(function(E) { | |
653 class TakeIterable extends collection.IterableBase$(E) { | |
654 static new(iterable, takeCount) { | |
655 if (!(typeof takeCount == 'number') || dart.notNull(takeCount) < 0) { | |
656 dart.throw(new core.ArgumentError(takeCount)); | |
657 } | |
658 if (dart.is(iterable, EfficientLength)) { | |
659 return new (EfficientLengthTakeIterable$(E))(iterable, takeCount); | |
660 } | |
661 return new (TakeIterable$(E))._(iterable, takeCount); | |
662 } | |
663 _(iterable, takeCount) { | |
664 this[_iterable] = iterable; | |
665 this[_takeCount] = takeCount; | |
666 super.IterableBase(); | |
667 } | |
668 get iterator() { | |
669 return new (TakeIterator$(E))(this[_iterable][dartx.iterator], this[_tak
eCount]); | |
670 } | |
671 } | |
672 dart.defineNamedConstructor(TakeIterable, '_'); | |
673 dart.setSignature(TakeIterable, { | |
674 constructors: () => ({ | |
675 new: [TakeIterable$(E), [core.Iterable$(E), core.int]], | |
676 _: [TakeIterable$(E), [core.Iterable$(E), core.int]] | |
677 }) | |
678 }); | |
679 dart.defineExtensionMembers(TakeIterable, ['iterator']); | |
680 return TakeIterable; | |
681 }); | |
682 let TakeIterable = TakeIterable$(); | |
683 const EfficientLengthTakeIterable$ = dart.generic(function(E) { | |
684 class EfficientLengthTakeIterable extends TakeIterable$(E) { | |
685 EfficientLengthTakeIterable(iterable, takeCount) { | |
686 super._(iterable, takeCount); | |
687 } | |
688 get length() { | |
689 let iterableLength = this[_iterable][dartx.length]; | |
690 if (dart.notNull(iterableLength) > dart.notNull(this[_takeCount])) retur
n this[_takeCount]; | |
691 return iterableLength; | |
692 } | |
693 } | |
694 EfficientLengthTakeIterable[dart.implements] = () => [EfficientLength]; | |
695 dart.setSignature(EfficientLengthTakeIterable, { | |
696 constructors: () => ({EfficientLengthTakeIterable: [EfficientLengthTakeIte
rable$(E), [core.Iterable$(E), core.int]]}) | |
697 }); | |
698 dart.defineExtensionMembers(EfficientLengthTakeIterable, ['length']); | |
699 return EfficientLengthTakeIterable; | |
700 }); | |
701 let EfficientLengthTakeIterable = EfficientLengthTakeIterable$(); | |
702 const _remaining = dart.JsSymbol('_remaining'); | |
703 const TakeIterator$ = dart.generic(function(E) { | |
704 class TakeIterator extends core.Iterator$(E) { | |
705 TakeIterator(iterator, remaining) { | |
706 this[_iterator] = iterator; | |
707 this[_remaining] = remaining; | |
708 dart.assert(typeof this[_remaining] == 'number' && dart.notNull(this[_re
maining]) >= 0); | |
709 } | |
710 moveNext() { | |
711 this[_remaining] = dart.notNull(this[_remaining]) - 1; | |
712 if (dart.notNull(this[_remaining]) >= 0) { | |
713 return this[_iterator].moveNext(); | |
714 } | |
715 this[_remaining] = -1; | |
716 return false; | |
717 } | |
718 get current() { | |
719 if (dart.notNull(this[_remaining]) < 0) return null; | |
720 return this[_iterator].current; | |
721 } | |
722 } | |
723 dart.setSignature(TakeIterator, { | |
724 constructors: () => ({TakeIterator: [TakeIterator$(E), [core.Iterator$(E),
core.int]]}), | |
725 methods: () => ({moveNext: [core.bool, []]}) | |
726 }); | |
727 return TakeIterator; | |
728 }); | |
729 let TakeIterator = TakeIterator$(); | |
730 const TakeWhileIterable$ = dart.generic(function(E) { | |
731 class TakeWhileIterable extends collection.IterableBase$(E) { | |
732 TakeWhileIterable(iterable, f) { | |
733 this[_iterable] = iterable; | |
734 this[_f] = f; | |
735 super.IterableBase(); | |
736 } | |
737 get iterator() { | |
738 return new (TakeWhileIterator$(E))(this[_iterable][dartx.iterator], this
[_f]); | |
739 } | |
740 } | |
741 dart.setSignature(TakeWhileIterable, { | |
742 constructors: () => ({TakeWhileIterable: [TakeWhileIterable$(E), [core.Ite
rable$(E), dart.functionType(core.bool, [E])]]}) | |
743 }); | |
744 dart.defineExtensionMembers(TakeWhileIterable, ['iterator']); | |
745 return TakeWhileIterable; | |
746 }); | |
747 let TakeWhileIterable = TakeWhileIterable$(); | |
748 const _isFinished = dart.JsSymbol('_isFinished'); | |
749 const TakeWhileIterator$ = dart.generic(function(E) { | |
750 class TakeWhileIterator extends core.Iterator$(E) { | |
751 TakeWhileIterator(iterator, f) { | |
752 this[_iterator] = iterator; | |
753 this[_f] = f; | |
754 this[_isFinished] = false; | |
755 } | |
756 moveNext() { | |
757 if (dart.notNull(this[_isFinished])) return false; | |
758 if (!dart.notNull(this[_iterator].moveNext()) || !dart.notNull(this[_f](
this[_iterator].current))) { | |
759 this[_isFinished] = true; | |
760 return false; | |
761 } | |
762 return true; | |
763 } | |
764 get current() { | |
765 if (dart.notNull(this[_isFinished])) return null; | |
766 return this[_iterator].current; | |
767 } | |
768 } | |
769 dart.setSignature(TakeWhileIterator, { | |
770 constructors: () => ({TakeWhileIterator: [TakeWhileIterator$(E), [core.Ite
rator$(E), dart.functionType(core.bool, [E])]]}), | |
771 methods: () => ({moveNext: [core.bool, []]}) | |
772 }); | |
773 return TakeWhileIterator; | |
774 }); | |
775 let TakeWhileIterator = TakeWhileIterator$(); | |
776 const _skipCount = dart.JsSymbol('_skipCount'); | |
777 const SkipIterable$ = dart.generic(function(E) { | |
778 class SkipIterable extends collection.IterableBase$(E) { | |
779 static new(iterable, count) { | |
780 if (dart.is(iterable, EfficientLength)) { | |
781 return new (EfficientLengthSkipIterable$(E))(iterable, count); | |
782 } | |
783 return new (SkipIterable$(E))._(iterable, count); | |
784 } | |
785 _(iterable, skipCount) { | |
786 this[_iterable] = iterable; | |
787 this[_skipCount] = skipCount; | |
788 super.IterableBase(); | |
789 if (!(typeof this[_skipCount] == 'number')) { | |
790 dart.throw(new core.ArgumentError.value(this[_skipCount], "count is no
t an integer")); | |
791 } | |
792 core.RangeError.checkNotNegative(this[_skipCount], "count"); | |
793 } | |
794 skip(count) { | |
795 if (!(typeof this[_skipCount] == 'number')) { | |
796 dart.throw(new core.ArgumentError.value(this[_skipCount], "count is no
t an integer")); | |
797 } | |
798 core.RangeError.checkNotNegative(this[_skipCount], "count"); | |
799 return new (SkipIterable$(E))._(this[_iterable], dart.notNull(this[_skip
Count]) + dart.notNull(count)); | |
800 } | |
801 get iterator() { | |
802 return new (SkipIterator$(E))(this[_iterable][dartx.iterator], this[_ski
pCount]); | |
803 } | |
804 } | |
805 dart.defineNamedConstructor(SkipIterable, '_'); | |
806 dart.setSignature(SkipIterable, { | |
807 constructors: () => ({ | |
808 new: [SkipIterable$(E), [core.Iterable$(E), core.int]], | |
809 _: [SkipIterable$(E), [core.Iterable$(E), core.int]] | |
810 }), | |
811 methods: () => ({skip: [core.Iterable$(E), [core.int]]}) | |
812 }); | |
813 dart.defineExtensionMembers(SkipIterable, ['skip', 'iterator']); | |
814 return SkipIterable; | |
815 }); | |
816 let SkipIterable = SkipIterable$(); | |
817 const EfficientLengthSkipIterable$ = dart.generic(function(E) { | |
818 class EfficientLengthSkipIterable extends SkipIterable$(E) { | |
819 EfficientLengthSkipIterable(iterable, skipCount) { | |
820 super._(iterable, skipCount); | |
821 } | |
822 get length() { | |
823 let length = dart.notNull(this[_iterable][dartx.length]) - dart.notNull(
this[_skipCount]); | |
824 if (length >= 0) return length; | |
825 return 0; | |
826 } | |
827 } | |
828 EfficientLengthSkipIterable[dart.implements] = () => [EfficientLength]; | |
829 dart.setSignature(EfficientLengthSkipIterable, { | |
830 constructors: () => ({EfficientLengthSkipIterable: [EfficientLengthSkipIte
rable$(E), [core.Iterable$(E), core.int]]}) | |
831 }); | |
832 dart.defineExtensionMembers(EfficientLengthSkipIterable, ['length']); | |
833 return EfficientLengthSkipIterable; | |
834 }); | |
835 let EfficientLengthSkipIterable = EfficientLengthSkipIterable$(); | |
836 const SkipIterator$ = dart.generic(function(E) { | |
837 class SkipIterator extends core.Iterator$(E) { | |
838 SkipIterator(iterator, skipCount) { | |
839 this[_iterator] = iterator; | |
840 this[_skipCount] = skipCount; | |
841 dart.assert(typeof this[_skipCount] == 'number' && dart.notNull(this[_sk
ipCount]) >= 0); | |
842 } | |
843 moveNext() { | |
844 for (let i = 0; i < dart.notNull(this[_skipCount]); i++) | |
845 this[_iterator].moveNext(); | |
846 this[_skipCount] = 0; | |
847 return this[_iterator].moveNext(); | |
848 } | |
849 get current() { | |
850 return this[_iterator].current; | |
851 } | |
852 } | |
853 dart.setSignature(SkipIterator, { | |
854 constructors: () => ({SkipIterator: [SkipIterator$(E), [core.Iterator$(E),
core.int]]}), | |
855 methods: () => ({moveNext: [core.bool, []]}) | |
856 }); | |
857 return SkipIterator; | |
858 }); | |
859 let SkipIterator = SkipIterator$(); | |
860 const SkipWhileIterable$ = dart.generic(function(E) { | |
861 class SkipWhileIterable extends collection.IterableBase$(E) { | |
862 SkipWhileIterable(iterable, f) { | |
863 this[_iterable] = iterable; | |
864 this[_f] = f; | |
865 super.IterableBase(); | |
866 } | |
867 get iterator() { | |
868 return new (SkipWhileIterator$(E))(this[_iterable][dartx.iterator], this
[_f]); | |
869 } | |
870 } | |
871 dart.setSignature(SkipWhileIterable, { | |
872 constructors: () => ({SkipWhileIterable: [SkipWhileIterable$(E), [core.Ite
rable$(E), dart.functionType(core.bool, [E])]]}) | |
873 }); | |
874 dart.defineExtensionMembers(SkipWhileIterable, ['iterator']); | |
875 return SkipWhileIterable; | |
876 }); | |
877 let SkipWhileIterable = SkipWhileIterable$(); | |
878 const _hasSkipped = dart.JsSymbol('_hasSkipped'); | |
879 const SkipWhileIterator$ = dart.generic(function(E) { | |
880 class SkipWhileIterator extends core.Iterator$(E) { | |
881 SkipWhileIterator(iterator, f) { | |
882 this[_iterator] = iterator; | |
883 this[_f] = f; | |
884 this[_hasSkipped] = false; | |
885 } | |
886 moveNext() { | |
887 if (!dart.notNull(this[_hasSkipped])) { | |
888 this[_hasSkipped] = true; | |
889 while (dart.notNull(this[_iterator].moveNext())) { | |
890 if (!dart.notNull(this[_f](this[_iterator].current))) return true; | |
891 } | |
892 } | |
893 return this[_iterator].moveNext(); | |
894 } | |
895 get current() { | |
896 return this[_iterator].current; | |
897 } | |
898 } | |
899 dart.setSignature(SkipWhileIterator, { | |
900 constructors: () => ({SkipWhileIterator: [SkipWhileIterator$(E), [core.Ite
rator$(E), dart.functionType(core.bool, [E])]]}), | |
901 methods: () => ({moveNext: [core.bool, []]}) | |
902 }); | |
903 return SkipWhileIterator; | |
904 }); | |
905 let SkipWhileIterator = SkipWhileIterator$(); | |
906 const EmptyIterable$ = dart.generic(function(E) { | |
907 class EmptyIterable extends collection.IterableBase$(E) { | |
908 EmptyIterable() { | |
909 super.IterableBase(); | |
910 } | |
911 get iterator() { | |
912 return dart.const(new (EmptyIterator$(E))()); | |
913 } | |
914 forEach(action) { | |
915 dart.as(action, dart.functionType(dart.void, [E])); | |
916 } | |
917 get isEmpty() { | |
918 return true; | |
919 } | |
920 get length() { | |
921 return 0; | |
922 } | |
923 get first() { | |
924 dart.throw(IterableElementError.noElement()); | |
925 } | |
926 get last() { | |
927 dart.throw(IterableElementError.noElement()); | |
928 } | |
929 get single() { | |
930 dart.throw(IterableElementError.noElement()); | |
931 } | |
932 elementAt(index) { | |
933 dart.throw(new core.RangeError.range(index, 0, 0, "index")); | |
934 } | |
935 contains(element) { | |
936 return false; | |
937 } | |
938 every(test) { | |
939 dart.as(test, dart.functionType(core.bool, [E])); | |
940 return true; | |
941 } | |
942 any(test) { | |
943 dart.as(test, dart.functionType(core.bool, [E])); | |
944 return false; | |
945 } | |
946 firstWhere(test, opts) { | |
947 dart.as(test, dart.functionType(core.bool, [E])); | |
948 let orElse = opts && 'orElse' in opts ? opts.orElse : null; | |
949 dart.as(orElse, dart.functionType(E, [])); | |
950 if (orElse != null) return orElse(); | |
951 dart.throw(IterableElementError.noElement()); | |
952 } | |
953 lastWhere(test, opts) { | |
954 dart.as(test, dart.functionType(core.bool, [E])); | |
955 let orElse = opts && 'orElse' in opts ? opts.orElse : null; | |
956 dart.as(orElse, dart.functionType(E, [])); | |
957 if (orElse != null) return orElse(); | |
958 dart.throw(IterableElementError.noElement()); | |
959 } | |
960 singleWhere(test, opts) { | |
961 dart.as(test, dart.functionType(core.bool, [E])); | |
962 let orElse = opts && 'orElse' in opts ? opts.orElse : null; | |
963 dart.as(orElse, dart.functionType(E, [])); | |
964 if (orElse != null) return orElse(); | |
965 dart.throw(IterableElementError.noElement()); | |
966 } | |
967 join(separator) { | |
968 if (separator === void 0) separator = ""; | |
969 return ""; | |
970 } | |
971 where(test) { | |
972 dart.as(test, dart.functionType(core.bool, [E])); | |
973 return this; | |
974 } | |
975 map(f) { | |
976 dart.as(f, dart.functionType(dart.dynamic, [E])); | |
977 return dart.const(new (EmptyIterable$())()); | |
978 } | |
979 reduce(combine) { | |
980 dart.as(combine, dart.functionType(E, [E, E])); | |
981 dart.throw(IterableElementError.noElement()); | |
982 } | |
983 fold(initialValue, combine) { | |
984 dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E])); | |
985 return initialValue; | |
986 } | |
987 skip(count) { | |
988 core.RangeError.checkNotNegative(count, "count"); | |
989 return this; | |
990 } | |
991 skipWhile(test) { | |
992 dart.as(test, dart.functionType(core.bool, [E])); | |
993 return this; | |
994 } | |
995 take(count) { | |
996 core.RangeError.checkNotNegative(count, "count"); | |
997 return this; | |
998 } | |
999 takeWhile(test) { | |
1000 dart.as(test, dart.functionType(core.bool, [E])); | |
1001 return this; | |
1002 } | |
1003 toList(opts) { | |
1004 let growable = opts && 'growable' in opts ? opts.growable : true; | |
1005 return dart.notNull(growable) ? dart.list([], E) : core.List$(E).new(0); | |
1006 } | |
1007 toSet() { | |
1008 return core.Set$(E).new(); | |
1009 } | |
1010 } | |
1011 EmptyIterable[dart.implements] = () => [EfficientLength]; | |
1012 dart.setSignature(EmptyIterable, { | |
1013 constructors: () => ({EmptyIterable: [EmptyIterable$(E), []]}), | |
1014 methods: () => ({ | |
1015 forEach: [dart.void, [dart.functionType(dart.void, [E])]], | |
1016 elementAt: [E, [core.int]], | |
1017 every: [core.bool, [dart.functionType(core.bool, [E])]], | |
1018 any: [core.bool, [dart.functionType(core.bool, [E])]], | |
1019 firstWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.funct
ionType(E, [])}], | |
1020 lastWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functi
onType(E, [])}], | |
1021 singleWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.func
tionType(E, [])}], | |
1022 where: [core.Iterable$(E), [dart.functionType(core.bool, [E])]], | |
1023 map: [core.Iterable, [dart.functionType(dart.dynamic, [E])]], | |
1024 reduce: [E, [dart.functionType(E, [E, E])]], | |
1025 fold: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynamic, [dar
t.dynamic, E])]], | |
1026 skip: [core.Iterable$(E), [core.int]], | |
1027 skipWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]], | |
1028 take: [core.Iterable$(E), [core.int]], | |
1029 takeWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]], | |
1030 toList: [core.List$(E), [], {growable: core.bool}], | |
1031 toSet: [core.Set$(E), []] | |
1032 }) | |
1033 }); | |
1034 dart.defineExtensionMembers(EmptyIterable, [ | |
1035 'forEach', | |
1036 'elementAt', | |
1037 'contains', | |
1038 'every', | |
1039 'any', | |
1040 'firstWhere', | |
1041 'lastWhere', | |
1042 'singleWhere', | |
1043 'join', | |
1044 'where', | |
1045 'map', | |
1046 'reduce', | |
1047 'fold', | |
1048 'skip', | |
1049 'skipWhile', | |
1050 'take', | |
1051 'takeWhile', | |
1052 'toList', | |
1053 'toSet', | |
1054 'iterator', | |
1055 'isEmpty', | |
1056 'length', | |
1057 'first', | |
1058 'last', | |
1059 'single' | |
1060 ]); | |
1061 return EmptyIterable; | |
1062 }); | |
1063 let EmptyIterable = EmptyIterable$(); | |
1064 const EmptyIterator$ = dart.generic(function(E) { | |
1065 class EmptyIterator extends core.Object { | |
1066 EmptyIterator() { | |
1067 } | |
1068 moveNext() { | |
1069 return false; | |
1070 } | |
1071 get current() { | |
1072 return null; | |
1073 } | |
1074 } | |
1075 EmptyIterator[dart.implements] = () => [core.Iterator$(E)]; | |
1076 dart.setSignature(EmptyIterator, { | |
1077 constructors: () => ({EmptyIterator: [EmptyIterator$(E), []]}), | |
1078 methods: () => ({moveNext: [core.bool, []]}) | |
1079 }); | |
1080 return EmptyIterator; | |
1081 }); | |
1082 let EmptyIterator = EmptyIterator$(); | |
1083 const BidirectionalIterator$ = dart.generic(function(T) { | |
1084 class BidirectionalIterator extends core.Object {} | |
1085 BidirectionalIterator[dart.implements] = () => [core.Iterator$(T)]; | |
1086 return BidirectionalIterator; | |
1087 }); | |
1088 let BidirectionalIterator = BidirectionalIterator$(); | |
1089 const IterableMixinWorkaround$ = dart.generic(function(T) { | |
1090 class IterableMixinWorkaround extends core.Object { | |
1091 static contains(iterable, element) { | |
1092 for (let e of iterable) { | |
1093 if (dart.equals(e, element)) return true; | |
1094 } | |
1095 return false; | |
1096 } | |
1097 static forEach(iterable, f) { | |
1098 for (let e of iterable) { | |
1099 f(e); | |
1100 } | |
1101 } | |
1102 static any(iterable, f) { | |
1103 for (let e of iterable) { | |
1104 if (dart.notNull(f(e))) return true; | |
1105 } | |
1106 return false; | |
1107 } | |
1108 static every(iterable, f) { | |
1109 for (let e of iterable) { | |
1110 if (!dart.notNull(f(e))) return false; | |
1111 } | |
1112 return true; | |
1113 } | |
1114 static reduce(iterable, combine) { | |
1115 let iterator = iterable[dartx.iterator]; | |
1116 if (!dart.notNull(iterator.moveNext())) dart.throw(IterableElementError.
noElement()); | |
1117 let value = iterator.current; | |
1118 while (dart.notNull(iterator.moveNext())) { | |
1119 value = combine(value, iterator.current); | |
1120 } | |
1121 return value; | |
1122 } | |
1123 static fold(iterable, initialValue, combine) { | |
1124 for (let element of iterable) { | |
1125 initialValue = combine(initialValue, element); | |
1126 } | |
1127 return initialValue; | |
1128 } | |
1129 static removeWhereList(list, test) { | |
1130 let retained = dart.list([], dart.dynamic); | |
1131 let length = list[dartx.length]; | |
1132 for (let i = 0; i < dart.notNull(length); i++) { | |
1133 let element = list[dartx.get](i); | |
1134 if (!dart.notNull(test(element))) { | |
1135 retained[dartx.add](element); | |
1136 } | |
1137 if (length != list[dartx.length]) { | |
1138 dart.throw(new core.ConcurrentModificationError(list)); | |
1139 } | |
1140 } | |
1141 if (retained[dartx.length] == length) return; | |
1142 list[dartx.length] = retained[dartx.length]; | |
1143 for (let i = 0; i < dart.notNull(retained[dartx.length]); i++) { | |
1144 list[dartx.set](i, retained[dartx.get](i)); | |
1145 } | |
1146 } | |
1147 static isEmpty(iterable) { | |
1148 return !dart.notNull(iterable[dartx.iterator].moveNext()); | |
1149 } | |
1150 static first(iterable) { | |
1151 let it = iterable[dartx.iterator]; | |
1152 if (!dart.notNull(it.moveNext())) { | |
1153 dart.throw(IterableElementError.noElement()); | |
1154 } | |
1155 return it.current; | |
1156 } | |
1157 static last(iterable) { | |
1158 let it = iterable[dartx.iterator]; | |
1159 if (!dart.notNull(it.moveNext())) { | |
1160 dart.throw(IterableElementError.noElement()); | |
1161 } | |
1162 let result = null; | |
1163 do { | |
1164 result = it.current; | |
1165 } while (dart.notNull(it.moveNext())); | |
1166 return result; | |
1167 } | |
1168 static single(iterable) { | |
1169 let it = iterable[dartx.iterator]; | |
1170 if (!dart.notNull(it.moveNext())) dart.throw(IterableElementError.noElem
ent()); | |
1171 let result = it.current; | |
1172 if (dart.notNull(it.moveNext())) dart.throw(IterableElementError.tooMany
()); | |
1173 return result; | |
1174 } | |
1175 static firstWhere(iterable, test, orElse) { | |
1176 for (let element of iterable) { | |
1177 if (dart.notNull(test(element))) return element; | |
1178 } | |
1179 if (orElse != null) return orElse(); | |
1180 dart.throw(IterableElementError.noElement()); | |
1181 } | |
1182 static lastWhere(iterable, test, orElse) { | |
1183 let result = null; | |
1184 let foundMatching = false; | |
1185 for (let element of iterable) { | |
1186 if (dart.notNull(test(element))) { | |
1187 result = element; | |
1188 foundMatching = true; | |
1189 } | |
1190 } | |
1191 if (foundMatching) return result; | |
1192 if (orElse != null) return orElse(); | |
1193 dart.throw(IterableElementError.noElement()); | |
1194 } | |
1195 static lastWhereList(list, test, orElse) { | |
1196 for (let i = dart.notNull(list[dartx.length]) - 1; i >= 0; i--) { | |
1197 let element = list[dartx.get](i); | |
1198 if (dart.notNull(test(element))) return element; | |
1199 } | |
1200 if (orElse != null) return orElse(); | |
1201 dart.throw(IterableElementError.noElement()); | |
1202 } | |
1203 static singleWhere(iterable, test) { | |
1204 let result = null; | |
1205 let foundMatching = false; | |
1206 for (let element of iterable) { | |
1207 if (dart.notNull(test(element))) { | |
1208 if (foundMatching) { | |
1209 dart.throw(IterableElementError.tooMany()); | |
1210 } | |
1211 result = element; | |
1212 foundMatching = true; | |
1213 } | |
1214 } | |
1215 if (foundMatching) return result; | |
1216 dart.throw(IterableElementError.noElement()); | |
1217 } | |
1218 static elementAt(iterable, index) { | |
1219 if (!(typeof index == 'number')) dart.throw(new core.ArgumentError.notNu
ll("index")); | |
1220 core.RangeError.checkNotNegative(index, "index"); | |
1221 let elementIndex = 0; | |
1222 for (let element of iterable) { | |
1223 if (index == elementIndex) return element; | |
1224 elementIndex++; | |
1225 } | |
1226 dart.throw(core.RangeError.index(index, iterable, "index", null, element
Index)); | |
1227 } | |
1228 static join(iterable, separator) { | |
1229 if (separator === void 0) separator = null; | |
1230 let buffer = new core.StringBuffer(); | |
1231 buffer.writeAll(iterable, separator); | |
1232 return buffer.toString(); | |
1233 } | |
1234 static joinList(list, separator) { | |
1235 if (separator === void 0) separator = null; | |
1236 if (dart.notNull(list[dartx.isEmpty])) return ""; | |
1237 if (list[dartx.length] == 1) return `${list[dartx.get](0)}`; | |
1238 let buffer = new core.StringBuffer(); | |
1239 if (dart.notNull(separator[dartx.isEmpty])) { | |
1240 for (let i = 0; i < dart.notNull(list[dartx.length]); i++) { | |
1241 buffer.write(list[dartx.get](i)); | |
1242 } | |
1243 } else { | |
1244 buffer.write(list[dartx.get](0)); | |
1245 for (let i = 1; i < dart.notNull(list[dartx.length]); i++) { | |
1246 buffer.write(separator); | |
1247 buffer.write(list[dartx.get](i)); | |
1248 } | |
1249 } | |
1250 return buffer.toString(); | |
1251 } | |
1252 where(iterable, f) { | |
1253 dart.as(iterable, core.Iterable$(T)); | |
1254 dart.as(f, dart.functionType(core.bool, [T])); | |
1255 return new (WhereIterable$(T))(iterable, f); | |
1256 } | |
1257 static map(iterable, f) { | |
1258 return MappedIterable.new(iterable, f); | |
1259 } | |
1260 static mapList(list, f) { | |
1261 return new MappedListIterable(list, f); | |
1262 } | |
1263 static expand(iterable, f) { | |
1264 return new ExpandIterable(iterable, f); | |
1265 } | |
1266 takeList(list, n) { | |
1267 return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), 0, n)
; | |
1268 } | |
1269 takeWhile(iterable, test) { | |
1270 dart.as(test, dart.functionType(core.bool, [dart.dynamic])); | |
1271 return new (TakeWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)),
dart.as(test, dart.functionType(core.bool, [T]))); | |
1272 } | |
1273 skipList(list, n) { | |
1274 return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), n, nu
ll); | |
1275 } | |
1276 skipWhile(iterable, test) { | |
1277 dart.as(test, dart.functionType(core.bool, [dart.dynamic])); | |
1278 return new (SkipWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)),
dart.as(test, dart.functionType(core.bool, [T]))); | |
1279 } | |
1280 reversedList(list) { | |
1281 return new (ReversedListIterable$(T))(dart.as(list, core.Iterable$(T))); | |
1282 } | |
1283 static sortList(list, compare) { | |
1284 if (compare == null) compare = core.Comparable.compare; | |
1285 Sort.sort(list, compare); | |
1286 } | |
1287 static shuffleList(list, random) { | |
1288 if (random == null) random = math.Random.new(); | |
1289 let length = list[dartx.length]; | |
1290 while (dart.notNull(length) > 1) { | |
1291 let pos = random.nextInt(length); | |
1292 length = dart.notNull(length) - 1; | |
1293 let tmp = list[dartx.get](length); | |
1294 list[dartx.set](length, list[dartx.get](pos)); | |
1295 list[dartx.set](pos, tmp); | |
1296 } | |
1297 } | |
1298 static indexOfList(list, element, start) { | |
1299 return Lists.indexOf(list, element, start, list[dartx.length]); | |
1300 } | |
1301 static lastIndexOfList(list, element, start) { | |
1302 if (start == null) start = dart.notNull(list[dartx.length]) - 1; | |
1303 return Lists.lastIndexOf(list, element, start); | |
1304 } | |
1305 static _rangeCheck(list, start, end) { | |
1306 core.RangeError.checkValidRange(start, end, list[dartx.length]); | |
1307 } | |
1308 getRangeList(list, start, end) { | |
1309 IterableMixinWorkaround$()._rangeCheck(list, start, end); | |
1310 return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), start
, end); | |
1311 } | |
1312 static setRangeList(list, start, end, from, skipCount) { | |
1313 IterableMixinWorkaround$()._rangeCheck(list, start, end); | |
1314 let length = dart.notNull(end) - dart.notNull(start); | |
1315 if (length == 0) return; | |
1316 if (dart.notNull(skipCount) < 0) dart.throw(new core.ArgumentError(skipC
ount)); | |
1317 let otherList = null; | |
1318 let otherStart = null; | |
1319 if (dart.is(from, core.List)) { | |
1320 otherList = from; | |
1321 otherStart = skipCount; | |
1322 } else { | |
1323 otherList = from[dartx.skip](skipCount)[dartx.toList]({growable: false
}); | |
1324 otherStart = 0; | |
1325 } | |
1326 if (dart.notNull(otherStart) + length > dart.notNull(otherList[dartx.len
gth])) { | |
1327 dart.throw(IterableElementError.tooFew()); | |
1328 } | |
1329 Lists.copy(otherList, otherStart, list, start, length); | |
1330 } | |
1331 static replaceRangeList(list, start, end, iterable) { | |
1332 IterableMixinWorkaround$()._rangeCheck(list, start, end); | |
1333 if (!dart.is(iterable, EfficientLength)) { | |
1334 iterable = iterable[dartx.toList](); | |
1335 } | |
1336 let removeLength = dart.notNull(end) - dart.notNull(start); | |
1337 let insertLength = iterable[dartx.length]; | |
1338 if (removeLength >= dart.notNull(insertLength)) { | |
1339 let delta = removeLength - dart.notNull(insertLength); | |
1340 let insertEnd = dart.notNull(start) + dart.notNull(insertLength); | |
1341 let newEnd = dart.notNull(list[dartx.length]) - delta; | |
1342 list[dartx.setRange](start, insertEnd, iterable); | |
1343 if (delta != 0) { | |
1344 list[dartx.setRange](insertEnd, newEnd, list, end); | |
1345 list[dartx.length] = newEnd; | |
1346 } | |
1347 } else { | |
1348 let delta = dart.notNull(insertLength) - removeLength; | |
1349 let newLength = dart.notNull(list[dartx.length]) + delta; | |
1350 let insertEnd = dart.notNull(start) + dart.notNull(insertLength); | |
1351 list[dartx.length] = newLength; | |
1352 list[dartx.setRange](insertEnd, newLength, list, end); | |
1353 list[dartx.setRange](start, insertEnd, iterable); | |
1354 } | |
1355 } | |
1356 static fillRangeList(list, start, end, fillValue) { | |
1357 IterableMixinWorkaround$()._rangeCheck(list, start, end); | |
1358 for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNul
l(i) + 1) { | |
1359 list[dartx.set](i, fillValue); | |
1360 } | |
1361 } | |
1362 static insertAllList(list, index, iterable) { | |
1363 core.RangeError.checkValueInInterval(index, 0, list[dartx.length], "inde
x"); | |
1364 if (!dart.is(iterable, EfficientLength)) { | |
1365 iterable = iterable[dartx.toList]({growable: false}); | |
1366 } | |
1367 let insertionLength = iterable[dartx.length]; | |
1368 list[dartx.length] = dart.notNull(list[dartx.length]) + dart.notNull(ins
ertionLength); | |
1369 list[dartx.setRange](dart.notNull(index) + dart.notNull(insertionLength)
, list[dartx.length], list, index); | |
1370 for (let element of iterable) { | |
1371 list[dartx.set]((() => { | |
1372 let x = index; | |
1373 index = dart.notNull(x) + 1; | |
1374 return x; | |
1375 })(), element); | |
1376 } | |
1377 } | |
1378 static setAllList(list, index, iterable) { | |
1379 core.RangeError.checkValueInInterval(index, 0, list[dartx.length], "inde
x"); | |
1380 for (let element of iterable) { | |
1381 list[dartx.set]((() => { | |
1382 let x = index; | |
1383 index = dart.notNull(x) + 1; | |
1384 return x; | |
1385 })(), element); | |
1386 } | |
1387 } | |
1388 asMapList(l) { | |
1389 return new (ListMapView$(T))(dart.as(l, core.List$(T))); | |
1390 } | |
1391 static setContainsAll(set, other) { | |
1392 for (let element of other) { | |
1393 if (!dart.notNull(set.contains(element))) return false; | |
1394 } | |
1395 return true; | |
1396 } | |
1397 static setIntersection(set, other, result) { | |
1398 let smaller = null; | |
1399 let larger = null; | |
1400 if (dart.notNull(set.length) < dart.notNull(other.length)) { | |
1401 smaller = set; | |
1402 larger = other; | |
1403 } else { | |
1404 smaller = other; | |
1405 larger = set; | |
1406 } | |
1407 for (let element of smaller) { | |
1408 if (dart.notNull(larger.contains(element))) { | |
1409 result.add(element); | |
1410 } | |
1411 } | |
1412 return result; | |
1413 } | |
1414 static setUnion(set, other, result) { | |
1415 result.addAll(set); | |
1416 result.addAll(other); | |
1417 return result; | |
1418 } | |
1419 static setDifference(set, other, result) { | |
1420 for (let element of set) { | |
1421 if (!dart.notNull(other.contains(element))) { | |
1422 result.add(element); | |
1423 } | |
1424 } | |
1425 return result; | |
1426 } | |
1427 } | |
1428 dart.setSignature(IterableMixinWorkaround, { | |
1429 methods: () => ({ | |
1430 where: [core.Iterable$(T), [core.Iterable$(T), dart.functionType(core.bo
ol, [T])]], | |
1431 takeList: [core.Iterable$(T), [core.List, core.int]], | |
1432 takeWhile: [core.Iterable$(T), [core.Iterable, dart.functionType(core.bo
ol, [dart.dynamic])]], | |
1433 skipList: [core.Iterable$(T), [core.List, core.int]], | |
1434 skipWhile: [core.Iterable$(T), [core.Iterable, dart.functionType(core.bo
ol, [dart.dynamic])]], | |
1435 reversedList: [core.Iterable$(T), [core.List]], | |
1436 getRangeList: [core.Iterable$(T), [core.List, core.int, core.int]], | |
1437 asMapList: [core.Map$(core.int, T), [core.List]] | |
1438 }), | |
1439 statics: () => ({ | |
1440 contains: [core.bool, [core.Iterable, dart.dynamic]], | |
1441 forEach: [dart.void, [core.Iterable, dart.functionType(dart.void, [dart.
dynamic])]], | |
1442 any: [core.bool, [core.Iterable, dart.functionType(core.bool, [dart.dyna
mic])]], | |
1443 every: [core.bool, [core.Iterable, dart.functionType(core.bool, [dart.dy
namic])]], | |
1444 reduce: [dart.dynamic, [core.Iterable, dart.functionType(dart.dynamic, [
dart.dynamic, dart.dynamic])]], | |
1445 fold: [dart.dynamic, [core.Iterable, dart.dynamic, dart.functionType(dar
t.dynamic, [dart.dynamic, dart.dynamic])]], | |
1446 removeWhereList: [dart.void, [core.List, dart.functionType(core.bool, [d
art.dynamic])]], | |
1447 isEmpty: [core.bool, [core.Iterable]], | |
1448 first: [dart.dynamic, [core.Iterable]], | |
1449 last: [dart.dynamic, [core.Iterable]], | |
1450 single: [dart.dynamic, [core.Iterable]], | |
1451 firstWhere: [dart.dynamic, [core.Iterable, dart.functionType(core.bool,
[dart.dynamic]), dart.functionType(dart.dynamic, [])]], | |
1452 lastWhere: [dart.dynamic, [core.Iterable, dart.functionType(core.bool, [
dart.dynamic]), dart.functionType(dart.dynamic, [])]], | |
1453 lastWhereList: [dart.dynamic, [core.List, dart.functionType(core.bool, [
dart.dynamic]), dart.functionType(dart.dynamic, [])]], | |
1454 singleWhere: [dart.dynamic, [core.Iterable, dart.functionType(core.bool,
[dart.dynamic])]], | |
1455 elementAt: [dart.dynamic, [core.Iterable, core.int]], | |
1456 join: [core.String, [core.Iterable], [core.String]], | |
1457 joinList: [core.String, [core.List], [core.String]], | |
1458 map: [core.Iterable, [core.Iterable, dart.functionType(dart.dynamic, [da
rt.dynamic])]], | |
1459 mapList: [core.Iterable, [core.List, dart.functionType(dart.dynamic, [da
rt.dynamic])]], | |
1460 expand: [core.Iterable, [core.Iterable, dart.functionType(core.Iterable,
[dart.dynamic])]], | |
1461 sortList: [dart.void, [core.List, dart.functionType(core.int, [dart.dyna
mic, dart.dynamic])]], | |
1462 shuffleList: [dart.void, [core.List, math.Random]], | |
1463 indexOfList: [core.int, [core.List, dart.dynamic, core.int]], | |
1464 lastIndexOfList: [core.int, [core.List, dart.dynamic, core.int]], | |
1465 _rangeCheck: [dart.void, [core.List, core.int, core.int]], | |
1466 setRangeList: [dart.void, [core.List, core.int, core.int, core.Iterable,
core.int]], | |
1467 replaceRangeList: [dart.void, [core.List, core.int, core.int, core.Itera
ble]], | |
1468 fillRangeList: [dart.void, [core.List, core.int, core.int, dart.dynamic]
], | |
1469 insertAllList: [dart.void, [core.List, core.int, core.Iterable]], | |
1470 setAllList: [dart.void, [core.List, core.int, core.Iterable]], | |
1471 setContainsAll: [core.bool, [core.Set, core.Iterable]], | |
1472 setIntersection: [core.Set, [core.Set, core.Set, core.Set]], | |
1473 setUnion: [core.Set, [core.Set, core.Set, core.Set]], | |
1474 setDifference: [core.Set, [core.Set, core.Set, core.Set]] | |
1475 }), | |
1476 names: ['contains', 'forEach', 'any', 'every', 'reduce', 'fold', 'removeWh
ereList', 'isEmpty', 'first', 'last', 'single', 'firstWhere', 'lastWhere', 'last
WhereList', 'singleWhere', 'elementAt', 'join', 'joinList', 'map', 'mapList', 'e
xpand', 'sortList', 'shuffleList', 'indexOfList', 'lastIndexOfList', '_rangeChec
k', 'setRangeList', 'replaceRangeList', 'fillRangeList', 'insertAllList', 'setAl
lList', 'setContainsAll', 'setIntersection', 'setUnion', 'setDifference'] | |
1477 }); | |
1478 return IterableMixinWorkaround; | |
1479 }); | |
1480 let IterableMixinWorkaround = IterableMixinWorkaround$(); | |
1481 class IterableElementError extends core.Object { | |
1482 static noElement() { | |
1483 return new core.StateError("No element"); | |
1484 } | |
1485 static tooMany() { | |
1486 return new core.StateError("Too many elements"); | |
1487 } | |
1488 static tooFew() { | |
1489 return new core.StateError("Too few elements"); | |
1490 } | |
1491 } | |
1492 dart.setSignature(IterableElementError, { | |
1493 statics: () => ({ | |
1494 noElement: [core.StateError, []], | |
1495 tooMany: [core.StateError, []], | |
1496 tooFew: [core.StateError, []] | |
1497 }), | |
1498 names: ['noElement', 'tooMany', 'tooFew'] | |
1499 }); | |
1500 const FixedLengthListMixin$ = dart.generic(function(E) { | |
1501 dart.defineExtensionNames([ | |
1502 'length', | |
1503 'add', | |
1504 'insert', | |
1505 'insertAll', | |
1506 'addAll', | |
1507 'remove', | |
1508 'removeWhere', | |
1509 'retainWhere', | |
1510 'clear', | |
1511 'removeAt', | |
1512 'removeLast', | |
1513 'removeRange', | |
1514 'replaceRange' | |
1515 ]); | |
1516 class FixedLengthListMixin extends core.Object { | |
1517 set [dartx.length](newLength) { | |
1518 dart.throw(new core.UnsupportedError("Cannot change the length of a fixe
d-length list")); | |
1519 } | |
1520 [dartx.add](value) { | |
1521 dart.as(value, E); | |
1522 dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"
)); | |
1523 } | |
1524 [dartx.insert](index, value) { | |
1525 dart.as(value, E); | |
1526 dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"
)); | |
1527 } | |
1528 [dartx.insertAll](at, iterable) { | |
1529 dart.as(iterable, core.Iterable$(E)); | |
1530 dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"
)); | |
1531 } | |
1532 [dartx.addAll](iterable) { | |
1533 dart.as(iterable, core.Iterable$(E)); | |
1534 dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"
)); | |
1535 } | |
1536 [dartx.remove](element) { | |
1537 dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length
list")); | |
1538 } | |
1539 [dartx.removeWhere](test) { | |
1540 dart.as(test, dart.functionType(core.bool, [E])); | |
1541 dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length
list")); | |
1542 } | |
1543 [dartx.retainWhere](test) { | |
1544 dart.as(test, dart.functionType(core.bool, [E])); | |
1545 dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length
list")); | |
1546 } | |
1547 [dartx.clear]() { | |
1548 dart.throw(new core.UnsupportedError("Cannot clear a fixed-length list")
); | |
1549 } | |
1550 [dartx.removeAt](index) { | |
1551 dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length
list")); | |
1552 } | |
1553 [dartx.removeLast]() { | |
1554 dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length
list")); | |
1555 } | |
1556 [dartx.removeRange](start, end) { | |
1557 dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length
list")); | |
1558 } | |
1559 [dartx.replaceRange](start, end, iterable) { | |
1560 dart.as(iterable, core.Iterable$(E)); | |
1561 dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length
list")); | |
1562 } | |
1563 } | |
1564 dart.setSignature(FixedLengthListMixin, { | |
1565 methods: () => ({ | |
1566 [dartx.add]: [dart.void, [E]], | |
1567 [dartx.insert]: [dart.void, [core.int, E]], | |
1568 [dartx.insertAll]: [dart.void, [core.int, core.Iterable$(E)]], | |
1569 [dartx.addAll]: [dart.void, [core.Iterable$(E)]], | |
1570 [dartx.remove]: [core.bool, [core.Object]], | |
1571 [dartx.removeWhere]: [dart.void, [dart.functionType(core.bool, [E])]], | |
1572 [dartx.retainWhere]: [dart.void, [dart.functionType(core.bool, [E])]], | |
1573 [dartx.clear]: [dart.void, []], | |
1574 [dartx.removeAt]: [E, [core.int]], | |
1575 [dartx.removeLast]: [E, []], | |
1576 [dartx.removeRange]: [dart.void, [core.int, core.int]], | |
1577 [dartx.replaceRange]: [dart.void, [core.int, core.int, core.Iterable$(E)
]] | |
1578 }) | |
1579 }); | |
1580 return FixedLengthListMixin; | |
1581 }); | |
1582 let FixedLengthListMixin = FixedLengthListMixin$(); | |
1583 const UnmodifiableListMixin$ = dart.generic(function(E) { | |
1584 class UnmodifiableListMixin extends core.Object { | |
1585 set(index, value) { | |
1586 dart.as(value, E); | |
1587 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list
")); | |
1588 return value; | |
1589 } | |
1590 set length(newLength) { | |
1591 dart.throw(new core.UnsupportedError("Cannot change the length of an unm
odifiable list")); | |
1592 } | |
1593 setAll(at, iterable) { | |
1594 dart.as(iterable, core.Iterable$(E)); | |
1595 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list
")); | |
1596 } | |
1597 add(value) { | |
1598 dart.as(value, E); | |
1599 dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list
")); | |
1600 } | |
1601 insert(index, value) { | |
1602 dart.as(value, E); | |
1603 dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list
")); | |
1604 } | |
1605 insertAll(at, iterable) { | |
1606 dart.as(iterable, core.Iterable$(E)); | |
1607 dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list
")); | |
1608 } | |
1609 addAll(iterable) { | |
1610 dart.as(iterable, core.Iterable$(E)); | |
1611 dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list
")); | |
1612 } | |
1613 remove(element) { | |
1614 dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable
list")); | |
1615 } | |
1616 removeWhere(test) { | |
1617 dart.as(test, dart.functionType(core.bool, [E])); | |
1618 dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable
list")); | |
1619 } | |
1620 retainWhere(test) { | |
1621 dart.as(test, dart.functionType(core.bool, [E])); | |
1622 dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable
list")); | |
1623 } | |
1624 sort(compare) { | |
1625 if (compare === void 0) compare = null; | |
1626 dart.as(compare, core.Comparator$(E)); | |
1627 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list
")); | |
1628 } | |
1629 shuffle(random) { | |
1630 if (random === void 0) random = null; | |
1631 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list
")); | |
1632 } | |
1633 clear() { | |
1634 dart.throw(new core.UnsupportedError("Cannot clear an unmodifiable list"
)); | |
1635 } | |
1636 removeAt(index) { | |
1637 dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable
list")); | |
1638 } | |
1639 removeLast() { | |
1640 dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable
list")); | |
1641 } | |
1642 setRange(start, end, iterable, skipCount) { | |
1643 dart.as(iterable, core.Iterable$(E)); | |
1644 if (skipCount === void 0) skipCount = 0; | |
1645 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list
")); | |
1646 } | |
1647 removeRange(start, end) { | |
1648 dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable
list")); | |
1649 } | |
1650 replaceRange(start, end, iterable) { | |
1651 dart.as(iterable, core.Iterable$(E)); | |
1652 dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable
list")); | |
1653 } | |
1654 fillRange(start, end, fillValue) { | |
1655 if (fillValue === void 0) fillValue = null; | |
1656 dart.as(fillValue, E); | |
1657 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list
")); | |
1658 } | |
1659 } | |
1660 UnmodifiableListMixin[dart.implements] = () => [core.List$(E)]; | |
1661 dart.setSignature(UnmodifiableListMixin, { | |
1662 methods: () => ({ | |
1663 set: [dart.void, [core.int, E]], | |
1664 setAll: [dart.void, [core.int, core.Iterable$(E)]], | |
1665 add: [dart.void, [E]], | |
1666 insert: [E, [core.int, E]], | |
1667 insertAll: [dart.void, [core.int, core.Iterable$(E)]], | |
1668 addAll: [dart.void, [core.Iterable$(E)]], | |
1669 remove: [core.bool, [core.Object]], | |
1670 removeWhere: [dart.void, [dart.functionType(core.bool, [E])]], | |
1671 retainWhere: [dart.void, [dart.functionType(core.bool, [E])]], | |
1672 sort: [dart.void, [], [core.Comparator$(E)]], | |
1673 shuffle: [dart.void, [], [math.Random]], | |
1674 clear: [dart.void, []], | |
1675 removeAt: [E, [core.int]], | |
1676 removeLast: [E, []], | |
1677 setRange: [dart.void, [core.int, core.int, core.Iterable$(E)], [core.int
]], | |
1678 removeRange: [dart.void, [core.int, core.int]], | |
1679 replaceRange: [dart.void, [core.int, core.int, core.Iterable$(E)]], | |
1680 fillRange: [dart.void, [core.int, core.int], [E]] | |
1681 }) | |
1682 }); | |
1683 dart.defineExtensionMembers(UnmodifiableListMixin, [ | |
1684 'set', | |
1685 'setAll', | |
1686 'add', | |
1687 'insert', | |
1688 'insertAll', | |
1689 'addAll', | |
1690 'remove', | |
1691 'removeWhere', | |
1692 'retainWhere', | |
1693 'sort', | |
1694 'shuffle', | |
1695 'clear', | |
1696 'removeAt', | |
1697 'removeLast', | |
1698 'setRange', | |
1699 'removeRange', | |
1700 'replaceRange', | |
1701 'fillRange', | |
1702 'length' | |
1703 ]); | |
1704 return UnmodifiableListMixin; | |
1705 }); | |
1706 let UnmodifiableListMixin = UnmodifiableListMixin$(); | |
1707 const FixedLengthListBase$ = dart.generic(function(E) { | |
1708 class FixedLengthListBase extends dart.mixin(collection.ListBase$(E), FixedL
engthListMixin$(E)) { | |
1709 FixedLengthListBase() { | |
1710 super.ListBase(...arguments); | |
1711 } | |
1712 } | |
1713 return FixedLengthListBase; | |
1714 }); | |
1715 let FixedLengthListBase = FixedLengthListBase$(); | |
1716 const UnmodifiableListBase$ = dart.generic(function(E) { | |
1717 class UnmodifiableListBase extends dart.mixin(collection.ListBase$(E), Unmod
ifiableListMixin$(E)) { | |
1718 UnmodifiableListBase() { | |
1719 super.ListBase(...arguments); | |
1720 } | |
1721 } | |
1722 return UnmodifiableListBase; | |
1723 }); | |
1724 let UnmodifiableListBase = UnmodifiableListBase$(); | |
1725 const _backedList = dart.JsSymbol('_backedList'); | |
1726 class _ListIndicesIterable extends ListIterable$(core.int) { | |
1727 _ListIndicesIterable(backedList) { | |
1728 this[_backedList] = backedList; | |
1729 super.ListIterable(); | |
1730 } | |
1731 get length() { | |
1732 return this[_backedList][dartx.length]; | |
1733 } | |
1734 elementAt(index) { | |
1735 core.RangeError.checkValidIndex(index, this); | |
1736 return index; | |
1737 } | |
1738 } | |
1739 dart.setSignature(_ListIndicesIterable, { | |
1740 constructors: () => ({_ListIndicesIterable: [_ListIndicesIterable, [core.Lis
t]]}), | |
1741 methods: () => ({elementAt: [core.int, [core.int]]}) | |
1742 }); | |
1743 dart.defineExtensionMembers(_ListIndicesIterable, ['elementAt', 'length']); | |
1744 const _values = dart.JsSymbol('_values'); | |
1745 const ListMapView$ = dart.generic(function(E) { | |
1746 class ListMapView extends core.Object { | |
1747 ListMapView(values) { | |
1748 this[_values] = values; | |
1749 } | |
1750 get(key) { | |
1751 return dart.notNull(this.containsKey(key)) ? this[_values][dartx.get](da
rt.as(key, core.int)) : null; | |
1752 } | |
1753 get length() { | |
1754 return this[_values][dartx.length]; | |
1755 } | |
1756 get values() { | |
1757 return new (SubListIterable$(E))(this[_values], 0, null); | |
1758 } | |
1759 get keys() { | |
1760 return new _ListIndicesIterable(this[_values]); | |
1761 } | |
1762 get isEmpty() { | |
1763 return this[_values][dartx.isEmpty]; | |
1764 } | |
1765 get isNotEmpty() { | |
1766 return this[_values][dartx.isNotEmpty]; | |
1767 } | |
1768 containsValue(value) { | |
1769 return this[_values][dartx.contains](value); | |
1770 } | |
1771 containsKey(key) { | |
1772 return typeof key == 'number' && dart.notNull(key) >= 0 && dart.notNull(
key) < dart.notNull(this.length); | |
1773 } | |
1774 forEach(f) { | |
1775 dart.as(f, dart.functionType(dart.void, [core.int, E])); | |
1776 let length = this[_values][dartx.length]; | |
1777 for (let i = 0; i < dart.notNull(length); i++) { | |
1778 f(i, this[_values][dartx.get](i)); | |
1779 if (length != this[_values][dartx.length]) { | |
1780 dart.throw(new core.ConcurrentModificationError(this[_values])); | |
1781 } | |
1782 } | |
1783 } | |
1784 set(key, value) { | |
1785 dart.as(value, E); | |
1786 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"
)); | |
1787 return value; | |
1788 } | |
1789 putIfAbsent(key, ifAbsent) { | |
1790 dart.as(ifAbsent, dart.functionType(E, [])); | |
1791 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"
)); | |
1792 } | |
1793 remove(key) { | |
1794 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"
)); | |
1795 } | |
1796 clear() { | |
1797 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"
)); | |
1798 } | |
1799 addAll(other) { | |
1800 dart.as(other, core.Map$(core.int, E)); | |
1801 dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"
)); | |
1802 } | |
1803 toString() { | |
1804 return collection.Maps.mapToString(this); | |
1805 } | |
1806 } | |
1807 ListMapView[dart.implements] = () => [core.Map$(core.int, E)]; | |
1808 dart.setSignature(ListMapView, { | |
1809 constructors: () => ({ListMapView: [ListMapView$(E), [core.List$(E)]]}), | |
1810 methods: () => ({ | |
1811 get: [E, [core.Object]], | |
1812 containsValue: [core.bool, [core.Object]], | |
1813 containsKey: [core.bool, [core.Object]], | |
1814 forEach: [dart.void, [dart.functionType(dart.void, [core.int, E])]], | |
1815 set: [dart.void, [core.int, E]], | |
1816 putIfAbsent: [E, [core.int, dart.functionType(E, [])]], | |
1817 remove: [E, [core.Object]], | |
1818 clear: [dart.void, []], | |
1819 addAll: [dart.void, [core.Map$(core.int, E)]] | |
1820 }) | |
1821 }); | |
1822 dart.defineExtensionMembers(ListMapView, [ | |
1823 'get', | |
1824 'containsValue', | |
1825 'containsKey', | |
1826 'forEach', | |
1827 'set', | |
1828 'putIfAbsent', | |
1829 'remove', | |
1830 'clear', | |
1831 'addAll', | |
1832 'length', | |
1833 'values', | |
1834 'keys', | |
1835 'isEmpty', | |
1836 'isNotEmpty' | |
1837 ]); | |
1838 return ListMapView; | |
1839 }); | |
1840 let ListMapView = ListMapView$(); | |
1841 const ReversedListIterable$ = dart.generic(function(E) { | |
1842 class ReversedListIterable extends ListIterable$(E) { | |
1843 ReversedListIterable(source) { | |
1844 this[_source] = source; | |
1845 super.ListIterable(); | |
1846 } | |
1847 get length() { | |
1848 return this[_source][dartx.length]; | |
1849 } | |
1850 elementAt(index) { | |
1851 return this[_source][dartx.elementAt](dart.notNull(this[_source][dartx.l
ength]) - 1 - dart.notNull(index)); | |
1852 } | |
1853 } | |
1854 dart.setSignature(ReversedListIterable, { | |
1855 constructors: () => ({ReversedListIterable: [ReversedListIterable$(E), [co
re.Iterable$(E)]]}), | |
1856 methods: () => ({elementAt: [E, [core.int]]}) | |
1857 }); | |
1858 dart.defineExtensionMembers(ReversedListIterable, ['elementAt', 'length']); | |
1859 return ReversedListIterable; | |
1860 }); | |
1861 let ReversedListIterable = ReversedListIterable$(); | |
1862 class UnmodifiableListError extends core.Object { | |
1863 static add() { | |
1864 return new core.UnsupportedError("Cannot add to unmodifiable List"); | |
1865 } | |
1866 static change() { | |
1867 return new core.UnsupportedError("Cannot change the content of an unmodifi
able List"); | |
1868 } | |
1869 static length() { | |
1870 return new core.UnsupportedError("Cannot change length of unmodifiable Lis
t"); | |
1871 } | |
1872 static remove() { | |
1873 return new core.UnsupportedError("Cannot remove from unmodifiable List"); | |
1874 } | |
1875 } | |
1876 dart.setSignature(UnmodifiableListError, { | |
1877 statics: () => ({ | |
1878 add: [core.UnsupportedError, []], | |
1879 change: [core.UnsupportedError, []], | |
1880 length: [core.UnsupportedError, []], | |
1881 remove: [core.UnsupportedError, []] | |
1882 }), | |
1883 names: ['add', 'change', 'length', 'remove'] | |
1884 }); | |
1885 class NonGrowableListError extends core.Object { | |
1886 static add() { | |
1887 return new core.UnsupportedError("Cannot add to non-growable List"); | |
1888 } | |
1889 static length() { | |
1890 return new core.UnsupportedError("Cannot change length of non-growable Lis
t"); | |
1891 } | |
1892 static remove() { | |
1893 return new core.UnsupportedError("Cannot remove from non-growable List"); | |
1894 } | |
1895 } | |
1896 dart.setSignature(NonGrowableListError, { | |
1897 statics: () => ({ | |
1898 add: [core.UnsupportedError, []], | |
1899 length: [core.UnsupportedError, []], | |
1900 remove: [core.UnsupportedError, []] | |
1901 }), | |
1902 names: ['add', 'length', 'remove'] | |
1903 }); | |
1904 function makeListFixedLength(growableList) { | |
1905 _interceptors.JSArray.markFixedList(growableList); | |
1906 return growableList; | |
1907 } | |
1908 dart.fn(makeListFixedLength, core.List, [core.List]); | |
1909 class Lists extends core.Object { | |
1910 static copy(src, srcStart, dst, dstStart, count) { | |
1911 if (dart.notNull(srcStart) < dart.notNull(dstStart)) { | |
1912 for (let i = dart.notNull(srcStart) + dart.notNull(count) - 1, j = dart.
notNull(dstStart) + dart.notNull(count) - 1; i >= dart.notNull(srcStart); i--, j
--) { | |
1913 dst[dartx.set](j, src[dartx.get](i)); | |
1914 } | |
1915 } else { | |
1916 for (let i = srcStart, j = dstStart; dart.notNull(i) < dart.notNull(srcS
tart) + dart.notNull(count); i = dart.notNull(i) + 1, j = dart.notNull(j) + 1) { | |
1917 dst[dartx.set](j, src[dartx.get](i)); | |
1918 } | |
1919 } | |
1920 } | |
1921 static areEqual(a, b) { | |
1922 if (core.identical(a, b)) return true; | |
1923 if (!dart.is(b, core.List)) return false; | |
1924 let length = a[dartx.length]; | |
1925 if (!dart.equals(length, dart.dload(b, 'length'))) return false; | |
1926 for (let i = 0; i < dart.notNull(length); i++) { | |
1927 if (!core.identical(a[dartx.get](i), dart.dindex(b, i))) return false; | |
1928 } | |
1929 return true; | |
1930 } | |
1931 static indexOf(a, element, startIndex, endIndex) { | |
1932 if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) { | |
1933 return -1; | |
1934 } | |
1935 if (dart.notNull(startIndex) < 0) { | |
1936 startIndex = 0; | |
1937 } | |
1938 for (let i = startIndex; dart.notNull(i) < dart.notNull(endIndex); i = dar
t.notNull(i) + 1) { | |
1939 if (dart.equals(a[dartx.get](i), element)) { | |
1940 return i; | |
1941 } | |
1942 } | |
1943 return -1; | |
1944 } | |
1945 static lastIndexOf(a, element, startIndex) { | |
1946 if (dart.notNull(startIndex) < 0) { | |
1947 return -1; | |
1948 } | |
1949 if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) { | |
1950 startIndex = dart.notNull(a[dartx.length]) - 1; | |
1951 } | |
1952 for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) { | |
1953 if (dart.equals(a[dartx.get](i), element)) { | |
1954 return i; | |
1955 } | |
1956 } | |
1957 return -1; | |
1958 } | |
1959 static indicesCheck(a, start, end) { | |
1960 core.RangeError.checkValidRange(start, end, a[dartx.length]); | |
1961 } | |
1962 static rangeCheck(a, start, length) { | |
1963 core.RangeError.checkNotNegative(length); | |
1964 core.RangeError.checkNotNegative(start); | |
1965 if (dart.notNull(start) + dart.notNull(length) > dart.notNull(a[dartx.leng
th])) { | |
1966 let message = `${start} + ${length} must be in the range [0..${a[dartx.l
ength]}]`; | |
1967 dart.throw(new core.RangeError.range(length, 0, dart.notNull(a[dartx.len
gth]) - dart.notNull(start), "length", message)); | |
1968 } | |
1969 } | |
1970 } | |
1971 dart.setSignature(Lists, { | |
1972 statics: () => ({ | |
1973 copy: [dart.void, [core.List, core.int, core.List, core.int, core.int]], | |
1974 areEqual: [core.bool, [core.List, dart.dynamic]], | |
1975 indexOf: [core.int, [core.List, core.Object, core.int, core.int]], | |
1976 lastIndexOf: [core.int, [core.List, core.Object, core.int]], | |
1977 indicesCheck: [dart.void, [core.List, core.int, core.int]], | |
1978 rangeCheck: [dart.void, [core.List, core.int, core.int]] | |
1979 }), | |
1980 names: ['copy', 'areEqual', 'indexOf', 'lastIndexOf', 'indicesCheck', 'range
Check'] | |
1981 }); | |
1982 exports.printToZone = null; | |
1983 function printToConsole(line) { | |
1984 _js_primitives.printString(`${line}`); | |
1985 } | |
1986 dart.fn(printToConsole, dart.void, [core.String]); | |
1987 class Sort extends core.Object { | |
1988 static sort(a, compare) { | |
1989 Sort._doSort(a, 0, dart.notNull(a[dartx.length]) - 1, compare); | |
1990 } | |
1991 static sortRange(a, from, to, compare) { | |
1992 if (dart.notNull(from) < 0 || dart.notNull(to) > dart.notNull(a[dartx.leng
th]) || dart.notNull(to) < dart.notNull(from)) { | |
1993 dart.throw("OutOfRange"); | |
1994 } | |
1995 Sort._doSort(a, from, dart.notNull(to) - 1, compare); | |
1996 } | |
1997 static _doSort(a, left, right, compare) { | |
1998 if (dart.notNull(right) - dart.notNull(left) <= dart.notNull(Sort._INSERTI
ON_SORT_THRESHOLD)) { | |
1999 Sort._insertionSort(a, left, right, compare); | |
2000 } else { | |
2001 Sort._dualPivotQuicksort(a, left, right, compare); | |
2002 } | |
2003 } | |
2004 static _insertionSort(a, left, right, compare) { | |
2005 for (let i = dart.notNull(left) + 1; i <= dart.notNull(right); i++) { | |
2006 let el = a[dartx.get](i); | |
2007 let j = i; | |
2008 while (j > dart.notNull(left) && dart.notNull(dart.dcall(compare, a[dart
x.get](j - 1), el)) > 0) { | |
2009 a[dartx.set](j, a[dartx.get](j - 1)); | |
2010 j--; | |
2011 } | |
2012 a[dartx.set](j, el); | |
2013 } | |
2014 } | |
2015 static _dualPivotQuicksort(a, left, right, compare) { | |
2016 dart.assert(dart.notNull(right) - dart.notNull(left) > dart.notNull(Sort._
INSERTION_SORT_THRESHOLD)); | |
2017 let sixth = ((dart.notNull(right) - dart.notNull(left) + 1) / 6)[dartx.tru
ncate](); | |
2018 let index1 = dart.notNull(left) + sixth; | |
2019 let index5 = dart.notNull(right) - sixth; | |
2020 let index3 = ((dart.notNull(left) + dart.notNull(right)) / 2)[dartx.trunca
te](); | |
2021 let index2 = index3 - sixth; | |
2022 let index4 = index3 + sixth; | |
2023 let el1 = a[dartx.get](index1); | |
2024 let el2 = a[dartx.get](index2); | |
2025 let el3 = a[dartx.get](index3); | |
2026 let el4 = a[dartx.get](index4); | |
2027 let el5 = a[dartx.get](index5); | |
2028 if (dart.notNull(dart.dcall(compare, el1, el2)) > 0) { | |
2029 let t = el1; | |
2030 el1 = el2; | |
2031 el2 = t; | |
2032 } | |
2033 if (dart.notNull(dart.dcall(compare, el4, el5)) > 0) { | |
2034 let t = el4; | |
2035 el4 = el5; | |
2036 el5 = t; | |
2037 } | |
2038 if (dart.notNull(dart.dcall(compare, el1, el3)) > 0) { | |
2039 let t = el1; | |
2040 el1 = el3; | |
2041 el3 = t; | |
2042 } | |
2043 if (dart.notNull(dart.dcall(compare, el2, el3)) > 0) { | |
2044 let t = el2; | |
2045 el2 = el3; | |
2046 el3 = t; | |
2047 } | |
2048 if (dart.notNull(dart.dcall(compare, el1, el4)) > 0) { | |
2049 let t = el1; | |
2050 el1 = el4; | |
2051 el4 = t; | |
2052 } | |
2053 if (dart.notNull(dart.dcall(compare, el3, el4)) > 0) { | |
2054 let t = el3; | |
2055 el3 = el4; | |
2056 el4 = t; | |
2057 } | |
2058 if (dart.notNull(dart.dcall(compare, el2, el5)) > 0) { | |
2059 let t = el2; | |
2060 el2 = el5; | |
2061 el5 = t; | |
2062 } | |
2063 if (dart.notNull(dart.dcall(compare, el2, el3)) > 0) { | |
2064 let t = el2; | |
2065 el2 = el3; | |
2066 el3 = t; | |
2067 } | |
2068 if (dart.notNull(dart.dcall(compare, el4, el5)) > 0) { | |
2069 let t = el4; | |
2070 el4 = el5; | |
2071 el5 = t; | |
2072 } | |
2073 let pivot1 = el2; | |
2074 let pivot2 = el4; | |
2075 a[dartx.set](index1, el1); | |
2076 a[dartx.set](index3, el3); | |
2077 a[dartx.set](index5, el5); | |
2078 a[dartx.set](index2, a[dartx.get](left)); | |
2079 a[dartx.set](index4, a[dartx.get](right)); | |
2080 let less = dart.notNull(left) + 1; | |
2081 let great = dart.notNull(right) - 1; | |
2082 let pivots_are_equal = dart.dcall(compare, pivot1, pivot2) == 0; | |
2083 if (pivots_are_equal) { | |
2084 let pivot = pivot1; | |
2085 for (let k = less; k <= great; k++) { | |
2086 let ak = a[dartx.get](k); | |
2087 let comp = dart.dcall(compare, ak, pivot); | |
2088 if (comp == 0) continue; | |
2089 if (dart.notNull(comp) < 0) { | |
2090 if (k != less) { | |
2091 a[dartx.set](k, a[dartx.get](less)); | |
2092 a[dartx.set](less, ak); | |
2093 } | |
2094 less++; | |
2095 } else { | |
2096 while (true) { | |
2097 comp = dart.dcall(compare, a[dartx.get](great), pivot); | |
2098 if (dart.notNull(comp) > 0) { | |
2099 great--; | |
2100 continue; | |
2101 } else if (dart.notNull(comp) < 0) { | |
2102 a[dartx.set](k, a[dartx.get](less)); | |
2103 a[dartx.set](less++, a[dartx.get](great)); | |
2104 a[dartx.set](great--, ak); | |
2105 break; | |
2106 } else { | |
2107 a[dartx.set](k, a[dartx.get](great)); | |
2108 a[dartx.set](great--, ak); | |
2109 break; | |
2110 } | |
2111 } | |
2112 } | |
2113 } | |
2114 } else { | |
2115 for (let k = less; k <= great; k++) { | |
2116 let ak = a[dartx.get](k); | |
2117 let comp_pivot1 = dart.dcall(compare, ak, pivot1); | |
2118 if (dart.notNull(comp_pivot1) < 0) { | |
2119 if (k != less) { | |
2120 a[dartx.set](k, a[dartx.get](less)); | |
2121 a[dartx.set](less, ak); | |
2122 } | |
2123 less++; | |
2124 } else { | |
2125 let comp_pivot2 = dart.dcall(compare, ak, pivot2); | |
2126 if (dart.notNull(comp_pivot2) > 0) { | |
2127 while (true) { | |
2128 let comp = dart.dcall(compare, a[dartx.get](great), pivot2); | |
2129 if (dart.notNull(comp) > 0) { | |
2130 great--; | |
2131 if (great < k) break; | |
2132 continue; | |
2133 } else { | |
2134 comp = dart.dcall(compare, a[dartx.get](great), pivot1); | |
2135 if (dart.notNull(comp) < 0) { | |
2136 a[dartx.set](k, a[dartx.get](less)); | |
2137 a[dartx.set](less++, a[dartx.get](great)); | |
2138 a[dartx.set](great--, ak); | |
2139 } else { | |
2140 a[dartx.set](k, a[dartx.get](great)); | |
2141 a[dartx.set](great--, ak); | |
2142 } | |
2143 break; | |
2144 } | |
2145 } | |
2146 } | |
2147 } | |
2148 } | |
2149 } | |
2150 a[dartx.set](left, a[dartx.get](less - 1)); | |
2151 a[dartx.set](less - 1, pivot1); | |
2152 a[dartx.set](right, a[dartx.get](great + 1)); | |
2153 a[dartx.set](great + 1, pivot2); | |
2154 Sort._doSort(a, left, less - 2, compare); | |
2155 Sort._doSort(a, great + 2, right, compare); | |
2156 if (pivots_are_equal) { | |
2157 return; | |
2158 } | |
2159 if (less < index1 && great > index5) { | |
2160 while (dart.dcall(compare, a[dartx.get](less), pivot1) == 0) { | |
2161 less++; | |
2162 } | |
2163 while (dart.dcall(compare, a[dartx.get](great), pivot2) == 0) { | |
2164 great--; | |
2165 } | |
2166 for (let k = less; k <= great; k++) { | |
2167 let ak = a[dartx.get](k); | |
2168 let comp_pivot1 = dart.dcall(compare, ak, pivot1); | |
2169 if (comp_pivot1 == 0) { | |
2170 if (k != less) { | |
2171 a[dartx.set](k, a[dartx.get](less)); | |
2172 a[dartx.set](less, ak); | |
2173 } | |
2174 less++; | |
2175 } else { | |
2176 let comp_pivot2 = dart.dcall(compare, ak, pivot2); | |
2177 if (comp_pivot2 == 0) { | |
2178 while (true) { | |
2179 let comp = dart.dcall(compare, a[dartx.get](great), pivot2); | |
2180 if (comp == 0) { | |
2181 great--; | |
2182 if (great < k) break; | |
2183 continue; | |
2184 } else { | |
2185 comp = dart.dcall(compare, a[dartx.get](great), pivot1); | |
2186 if (dart.notNull(comp) < 0) { | |
2187 a[dartx.set](k, a[dartx.get](less)); | |
2188 a[dartx.set](less++, a[dartx.get](great)); | |
2189 a[dartx.set](great--, ak); | |
2190 } else { | |
2191 a[dartx.set](k, a[dartx.get](great)); | |
2192 a[dartx.set](great--, ak); | |
2193 } | |
2194 break; | |
2195 } | |
2196 } | |
2197 } | |
2198 } | |
2199 } | |
2200 Sort._doSort(a, less, great, compare); | |
2201 } else { | |
2202 Sort._doSort(a, less, great, compare); | |
2203 } | |
2204 } | |
2205 } | |
2206 dart.setSignature(Sort, { | |
2207 statics: () => ({ | |
2208 sort: [dart.void, [core.List, dart.functionType(core.int, [dart.dynamic, d
art.dynamic])]], | |
2209 sortRange: [dart.void, [core.List, core.int, core.int, dart.functionType(c
ore.int, [dart.dynamic, dart.dynamic])]], | |
2210 _doSort: [dart.void, [core.List, core.int, core.int, dart.functionType(cor
e.int, [dart.dynamic, dart.dynamic])]], | |
2211 _insertionSort: [dart.void, [core.List, core.int, core.int, dart.functionT
ype(core.int, [dart.dynamic, dart.dynamic])]], | |
2212 _dualPivotQuicksort: [dart.void, [core.List, core.int, core.int, dart.func
tionType(core.int, [dart.dynamic, dart.dynamic])]] | |
2213 }), | |
2214 names: ['sort', 'sortRange', '_doSort', '_insertionSort', '_dualPivotQuickso
rt'] | |
2215 }); | |
2216 Sort._INSERTION_SORT_THRESHOLD = 32; | |
2217 const _name = dart.JsSymbol('_name'); | |
2218 class Symbol extends core.Object { | |
2219 Symbol(name) { | |
2220 this[_name] = name; | |
2221 } | |
2222 unvalidated(name) { | |
2223 this[_name] = name; | |
2224 } | |
2225 validated(name) { | |
2226 this[_name] = Symbol.validatePublicSymbol(name); | |
2227 } | |
2228 ['=='](other) { | |
2229 return dart.is(other, Symbol) && this[_name] == other[_name]; | |
2230 } | |
2231 get hashCode() { | |
2232 let arbitraryPrime = 664597; | |
2233 return 536870911 & arbitraryPrime * dart.notNull(dart.hashCode(this[_name]
)); | |
2234 } | |
2235 toString() { | |
2236 return `Symbol("${this[_name]}")`; | |
2237 } | |
2238 static getName(symbol) { | |
2239 return symbol[_name]; | |
2240 } | |
2241 static validatePublicSymbol(name) { | |
2242 if (dart.notNull(name[dartx.isEmpty]) || dart.notNull(Symbol.publicSymbolP
attern.hasMatch(name))) return name; | |
2243 if (dart.notNull(name[dartx.startsWith]('_'))) { | |
2244 dart.throw(new core.ArgumentError(`"${name}" is a private identifier`)); | |
2245 } | |
2246 dart.throw(new core.ArgumentError(`"${name}" is not a valid (qualified) sy
mbol name`)); | |
2247 } | |
2248 static isValidSymbol(name) { | |
2249 return dart.notNull(name[dartx.isEmpty]) || dart.notNull(Symbol.symbolPatt
ern.hasMatch(name)); | |
2250 } | |
2251 } | |
2252 Symbol[dart.implements] = () => [core.Symbol]; | |
2253 dart.defineNamedConstructor(Symbol, 'unvalidated'); | |
2254 dart.defineNamedConstructor(Symbol, 'validated'); | |
2255 dart.setSignature(Symbol, { | |
2256 constructors: () => ({ | |
2257 Symbol: [Symbol, [core.String]], | |
2258 unvalidated: [Symbol, [core.String]], | |
2259 validated: [Symbol, [core.String]] | |
2260 }), | |
2261 methods: () => ({'==': [core.bool, [core.Object]]}), | |
2262 statics: () => ({ | |
2263 getName: [core.String, [Symbol]], | |
2264 validatePublicSymbol: [core.String, [core.String]], | |
2265 isValidSymbol: [core.bool, [core.String]] | |
2266 }), | |
2267 names: ['getName', 'validatePublicSymbol', 'isValidSymbol'] | |
2268 }); | |
2269 Symbol.reservedWordRE = '(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|
d(?:efault|o)|' + 'e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ul
l)|' + 'ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|' + 'v(?:ar|o
id)|w(?:hile|ith))'; | |
2270 Symbol.operatorRE = '(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)'; | |
2271 dart.defineLazyProperties(Symbol, { | |
2272 get publicIdentifierRE() { | |
2273 return '(?!' + `${Symbol.reservedWordRE}` + '\\b(?!\\$))[a-zA-Z$][\\w$]*'; | |
2274 }, | |
2275 get identifierRE() { | |
2276 return '(?!' + `${Symbol.reservedWordRE}` + '\\b(?!\\$))[a-zA-Z$_][\\w$]*'
; | |
2277 }, | |
2278 get publicSymbolPattern() { | |
2279 return core.RegExp.new(`^(?:${Symbol.operatorRE}\$|${Symbol.publicIdentifi
erRE}(?:=?\$|[.](?!\$)))+?\$`); | |
2280 }, | |
2281 get symbolPattern() { | |
2282 return core.RegExp.new(`^(?:${Symbol.operatorRE}\$|${Symbol.identifierRE}(
?:=?\$|[.](?!\$)))+?\$`); | |
2283 } | |
2284 }); | |
2285 dart.defineLazyProperties(exports, { | |
2286 get POWERS_OF_TEN() { | |
2287 return dart.const(dart.list([1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0,
1000000.0, 10000000.0, 100000000.0, 1000000000.0, 10000000000.0, 100000000000.0,
1000000000000.0, 10000000000000.0, 100000000000000.0, 1000000000000000.0, 10000
000000000000.0, 100000000000000000.0, 1000000000000000000.0, 1000000000000000000
0.0, 100000000000000000000.0, 1e+21, 1e+22], core.double)); | |
2288 } | |
2289 }); | |
2290 // Exports: | |
2291 exports.EfficientLength = EfficientLength; | |
2292 exports.ListIterable$ = ListIterable$; | |
2293 exports.ListIterable = ListIterable; | |
2294 exports.SubListIterable$ = SubListIterable$; | |
2295 exports.SubListIterable = SubListIterable; | |
2296 exports.ListIterator$ = ListIterator$; | |
2297 exports.ListIterator = ListIterator; | |
2298 exports.MappedIterable$ = MappedIterable$; | |
2299 exports.MappedIterable = MappedIterable; | |
2300 exports.EfficientLengthMappedIterable$ = EfficientLengthMappedIterable$; | |
2301 exports.EfficientLengthMappedIterable = EfficientLengthMappedIterable; | |
2302 exports.MappedIterator$ = MappedIterator$; | |
2303 exports.MappedIterator = MappedIterator; | |
2304 exports.MappedListIterable$ = MappedListIterable$; | |
2305 exports.MappedListIterable = MappedListIterable; | |
2306 exports.WhereIterable$ = WhereIterable$; | |
2307 exports.WhereIterable = WhereIterable; | |
2308 exports.WhereIterator$ = WhereIterator$; | |
2309 exports.WhereIterator = WhereIterator; | |
2310 exports.ExpandIterable$ = ExpandIterable$; | |
2311 exports.ExpandIterable = ExpandIterable; | |
2312 exports.ExpandIterator$ = ExpandIterator$; | |
2313 exports.ExpandIterator = ExpandIterator; | |
2314 exports.TakeIterable$ = TakeIterable$; | |
2315 exports.TakeIterable = TakeIterable; | |
2316 exports.EfficientLengthTakeIterable$ = EfficientLengthTakeIterable$; | |
2317 exports.EfficientLengthTakeIterable = EfficientLengthTakeIterable; | |
2318 exports.TakeIterator$ = TakeIterator$; | |
2319 exports.TakeIterator = TakeIterator; | |
2320 exports.TakeWhileIterable$ = TakeWhileIterable$; | |
2321 exports.TakeWhileIterable = TakeWhileIterable; | |
2322 exports.TakeWhileIterator$ = TakeWhileIterator$; | |
2323 exports.TakeWhileIterator = TakeWhileIterator; | |
2324 exports.SkipIterable$ = SkipIterable$; | |
2325 exports.SkipIterable = SkipIterable; | |
2326 exports.EfficientLengthSkipIterable$ = EfficientLengthSkipIterable$; | |
2327 exports.EfficientLengthSkipIterable = EfficientLengthSkipIterable; | |
2328 exports.SkipIterator$ = SkipIterator$; | |
2329 exports.SkipIterator = SkipIterator; | |
2330 exports.SkipWhileIterable$ = SkipWhileIterable$; | |
2331 exports.SkipWhileIterable = SkipWhileIterable; | |
2332 exports.SkipWhileIterator$ = SkipWhileIterator$; | |
2333 exports.SkipWhileIterator = SkipWhileIterator; | |
2334 exports.EmptyIterable$ = EmptyIterable$; | |
2335 exports.EmptyIterable = EmptyIterable; | |
2336 exports.EmptyIterator$ = EmptyIterator$; | |
2337 exports.EmptyIterator = EmptyIterator; | |
2338 exports.BidirectionalIterator$ = BidirectionalIterator$; | |
2339 exports.BidirectionalIterator = BidirectionalIterator; | |
2340 exports.IterableMixinWorkaround$ = IterableMixinWorkaround$; | |
2341 exports.IterableMixinWorkaround = IterableMixinWorkaround; | |
2342 exports.IterableElementError = IterableElementError; | |
2343 exports.FixedLengthListMixin$ = FixedLengthListMixin$; | |
2344 exports.FixedLengthListMixin = FixedLengthListMixin; | |
2345 exports.UnmodifiableListMixin$ = UnmodifiableListMixin$; | |
2346 exports.UnmodifiableListMixin = UnmodifiableListMixin; | |
2347 exports.FixedLengthListBase$ = FixedLengthListBase$; | |
2348 exports.FixedLengthListBase = FixedLengthListBase; | |
2349 exports.UnmodifiableListBase$ = UnmodifiableListBase$; | |
2350 exports.UnmodifiableListBase = UnmodifiableListBase; | |
2351 exports.ListMapView$ = ListMapView$; | |
2352 exports.ListMapView = ListMapView; | |
2353 exports.ReversedListIterable$ = ReversedListIterable$; | |
2354 exports.ReversedListIterable = ReversedListIterable; | |
2355 exports.UnmodifiableListError = UnmodifiableListError; | |
2356 exports.NonGrowableListError = NonGrowableListError; | |
2357 exports.makeListFixedLength = makeListFixedLength; | |
2358 exports.Lists = Lists; | |
2359 exports.printToConsole = printToConsole; | |
2360 exports.Sort = Sort; | |
2361 exports.Symbol = Symbol; | |
2362 }); | |
OLD | NEW |