| OLD | NEW |
| (Empty) |
| 1 part of dart.core; | |
| 2 @SupportJsExtensionMethod() @JsPeerInterface(name: 'Array') abstract class List
<E> implements Iterable<E>, EfficientLength {external factory List([int length])
; | |
| 3 external factory List.filled(int length, E fill); | |
| 4 external factory List.from(Iterable elements, { | |
| 5 bool growable : true} | |
| 6 ); | |
| 7 factory List.generate(int length, E generator(int index), { | |
| 8 bool growable : true} | |
| 9 ) { | |
| 10 List<E> result; | |
| 11 if (growable) { | |
| 12 result = <E> []..length = length; | |
| 13 } | |
| 14 else { | |
| 15 result = new List<E>(length); | |
| 16 } | |
| 17 for (int i = 0; i < length; i++) { | |
| 18 result[i] = generator(i); | |
| 19 } | |
| 20 return result; | |
| 21 } | |
| 22 checkMutable(reason) { | |
| 23 } | |
| 24 checkGrowable(reason) { | |
| 25 } | |
| 26 Iterable<E> where(bool f(E element)) { | |
| 27 return new IterableMixinWorkaround<E>().where(this, f); | |
| 28 } | |
| 29 Iterable expand(Iterable f(E element)) { | |
| 30 return IterableMixinWorkaround.expand(this, f); | |
| 31 } | |
| 32 void forEach(void f(E element)) { | |
| 33 int length = this.length; | |
| 34 for (int i = 0; i < length; i++) { | |
| 35 f(((__x8) => DEVC$RT.cast(__x8, dynamic, E, "CompositeCast", """line 153, co
lumn 9 of dart:core/list.dart: """, __x8 is E, false))(JS('', '#[#]', this, i)))
; | |
| 36 if (length != this.length) { | |
| 37 throw new ConcurrentModificationError(this); | |
| 38 } | |
| 39 } | |
| 40 } | |
| 41 Iterable map(f(E element)) { | |
| 42 return IterableMixinWorkaround.mapList(this, f); | |
| 43 } | |
| 44 String join([String separator = ""]) { | |
| 45 var list = new List(this.length); | |
| 46 for (int i = 0; i < this.length; i++) { | |
| 47 list[i] = "${this[i]}"; | |
| 48 } | |
| 49 return ((__x9) => DEVC$RT.cast(__x9, dynamic, String, "DynamicCast", """line
169, column 12 of dart:core/list.dart: """, __x9 is String, true))(JS('String',
"#.join(#)", list, separator)); | |
| 50 } | |
| 51 Iterable<E> take(int n) { | |
| 52 return new IterableMixinWorkaround<E>().takeList(this, n); | |
| 53 } | |
| 54 Iterable<E> takeWhile(bool test(E value)) { | |
| 55 return new IterableMixinWorkaround<E>().takeWhile(this, test); | |
| 56 } | |
| 57 Iterable<E> skip(int n) { | |
| 58 return new IterableMixinWorkaround<E>().skipList(this, n); | |
| 59 } | |
| 60 Iterable<E> skipWhile(bool test(E value)) { | |
| 61 return new IterableMixinWorkaround<E>().skipWhile(this, test); | |
| 62 } | |
| 63 E reduce(E combine(E value, E element)) { | |
| 64 return ((__x10) => DEVC$RT.cast(__x10, dynamic, E, "CompositeCast", """line 18
9, column 12 of dart:core/list.dart: """, __x10 is E, false))(IterableMixinWorka
round.reduce(this, combine)); | |
| 65 } | |
| 66 fold(initialValue, combine(previousValue, E element)) { | |
| 67 return IterableMixinWorkaround.fold(this, initialValue, combine); | |
| 68 } | |
| 69 E firstWhere(bool test(E value), { | |
| 70 E orElse()} | |
| 71 ) { | |
| 72 return ((__x11) => DEVC$RT.cast(__x11, dynamic, E, "CompositeCast", """line 19
7, column 12 of dart:core/list.dart: """, __x11 is E, false))(IterableMixinWorka
round.firstWhere(this, test, orElse)); | |
| 73 } | |
| 74 E lastWhere(bool test(E value), { | |
| 75 E orElse()} | |
| 76 ) { | |
| 77 return ((__x12) => DEVC$RT.cast(__x12, dynamic, E, "CompositeCast", """line 20
1, column 12 of dart:core/list.dart: """, __x12 is E, false))(IterableMixinWorka
round.lastWhereList(this, test, orElse)); | |
| 78 } | |
| 79 E singleWhere(bool test(E value)) { | |
| 80 return ((__x13) => DEVC$RT.cast(__x13, dynamic, E, "CompositeCast", """line 20
5, column 12 of dart:core/list.dart: """, __x13 is E, false))(IterableMixinWorka
round.singleWhere(this, test)); | |
| 81 } | |
| 82 E elementAt(int index) { | |
| 83 return this[index]; | |
| 84 } | |
| 85 E get first { | |
| 86 if (length > 0) return this[0]; | |
| 87 throw new StateError("No elements"); | |
| 88 } | |
| 89 E get last { | |
| 90 if (length > 0) return this[length - 1]; | |
| 91 throw new StateError("No elements"); | |
| 92 } | |
| 93 E get single { | |
| 94 if (length == 1) return this[0]; | |
| 95 if (length == 0) throw new StateError("No elements"); | |
| 96 throw new StateError("More than one element"); | |
| 97 } | |
| 98 bool any(bool f(E element)) => IterableMixinWorkaround.any(this, f); | |
| 99 bool every(bool f(E element)) => IterableMixinWorkaround.every(this, f); | |
| 100 bool contains(Object other) { | |
| 101 for (int i = 0; i < length; i++) { | |
| 102 if (this[i] == other) return true; | |
| 103 } | |
| 104 return false; | |
| 105 } | |
| 106 bool get isEmpty => length == 0; | |
| 107 bool get isNotEmpty => !isEmpty; | |
| 108 String toString() => ListBase.listToString(this); | |
| 109 List<E> toList({ | |
| 110 bool growable : true} | |
| 111 ) { | |
| 112 return ((__x14) => DEVC$RT.cast(__x14, dynamic, DEVC$RT.type((List<E> _) { | |
| 113 } | |
| 114 ), "CompositeCast", """line 248, column 12 of dart:core/list.dart: """, __x14
is List<E>, false))(JS('', 'dart.setType(#.slice(), core.List\$(#))', this, E)); | |
| 115 } | |
| 116 Set<E> toSet() => new Set<E>.from(this); | |
| 117 Iterator<E> get iterator => new ListIterator<E>(this); | |
| 118 int get hashCode => ((__x15) => DEVC$RT.cast(__x15, dynamic, int, "DynamicCast"
, """line 255, column 23 of dart:core/list.dart: """, __x15 is int, true))(Primi
tives.objectHashCode(this)); | |
| 119 E operator [](int index) { | |
| 120 if (index is! int) throw new ArgumentError(index); | |
| 121 if (index >= length || index < 0) throw new RangeError.value(index); | |
| 122 return ((__x16) => DEVC$RT.cast(__x16, dynamic, E, "CompositeCast", """line 2
66, column 12 of dart:core/list.dart: """, __x16 is E, false))(JS('var', '#[#]',
this, index)); | |
| 123 } | |
| 124 void operator []=(int index, E value) { | |
| 125 checkMutable('indexed set'); | |
| 126 if (index is! int) throw new ArgumentError(index); | |
| 127 if (index >= length || index < 0) throw new RangeError.value(index); | |
| 128 JS('void', r'#[#] = #', this, index, value); | |
| 129 } | |
| 130 int get length => ((__x17) => DEVC$RT.cast(__x17, dynamic, int, "DynamicCast",
"""line 285, column 21 of dart:core/list.dart: """, __x17 is int, true))(JS('JSU
Int32', r'#.length', this)); | |
| 131 void set length(int newLength) { | |
| 132 if (newLength is! int) throw new ArgumentError(newLength); | |
| 133 if (newLength < 0) throw new RangeError.value(newLength); | |
| 134 checkGrowable('set length'); | |
| 135 JS('void', r'#.length = #', this, newLength); | |
| 136 } | |
| 137 void add(E value) { | |
| 138 checkGrowable('add'); | |
| 139 JS('void', r'#.push(#)', this, value); | |
| 140 } | |
| 141 void addAll(Iterable<E> iterable) { | |
| 142 for (E e in iterable) { | |
| 143 this.add(e); | |
| 144 } | |
| 145 } | |
| 146 Iterable<E> get reversed => new IterableMixinWorkaround<E>().reversedList(this)
; | |
| 147 void sort([int compare(E a, E b)]) { | |
| 148 checkMutable('sort'); | |
| 149 IterableMixinWorkaround.sortList(this, compare); | |
| 150 } | |
| 151 void shuffle([Random random]) { | |
| 152 IterableMixinWorkaround.shuffleList(this, random); | |
| 153 } | |
| 154 int indexOf(E element, [int start = 0]) { | |
| 155 return IterableMixinWorkaround.indexOfList(this, element, start); | |
| 156 } | |
| 157 int lastIndexOf(E element, [int start]) { | |
| 158 return IterableMixinWorkaround.lastIndexOfList(this, element, start); | |
| 159 } | |
| 160 void clear() { | |
| 161 length = 0; | |
| 162 } | |
| 163 void insert(int index, E element) { | |
| 164 if (index is! int) throw new ArgumentError(index); | |
| 165 if (index < 0 || index > length) { | |
| 166 throw new RangeError.value(index); | |
| 167 } | |
| 168 checkGrowable('insert'); | |
| 169 JS('void', r'#.splice(#, 0, #)', this, index, element); | |
| 170 } | |
| 171 void insertAll(int index, Iterable<E> iterable) { | |
| 172 checkGrowable('insertAll'); | |
| 173 IterableMixinWorkaround.insertAllList(this, index, iterable); | |
| 174 } | |
| 175 void setAll(int index, Iterable<E> iterable) { | |
| 176 checkMutable('setAll'); | |
| 177 IterableMixinWorkaround.setAllList(this, index, iterable); | |
| 178 } | |
| 179 bool remove(Object element) { | |
| 180 checkGrowable('remove'); | |
| 181 for (int i = 0; i < this.length; i++) { | |
| 182 if (this[i] == value) { | |
| 183 JS('var', r'#.splice(#, 1)', this, i); | |
| 184 return true; | |
| 185 } | |
| 186 } | |
| 187 return false; | |
| 188 } | |
| 189 E removeAt(int index) { | |
| 190 if (index is! int) throw new ArgumentError(index); | |
| 191 if (index < 0 || index >= length) { | |
| 192 throw new RangeError.value(index); | |
| 193 } | |
| 194 checkGrowable('removeAt'); | |
| 195 return ((__x18) => DEVC$RT.cast(__x18, dynamic, E, "CompositeCast", """line 5
17, column 12 of dart:core/list.dart: """, __x18 is E, false))(JS('var', r'#.spl
ice(#, 1)[0]', this, index)); | |
| 196 } | |
| 197 E removeLast() { | |
| 198 checkGrowable('removeLast'); | |
| 199 if (length == 0) throw new RangeError.value(-1); | |
| 200 return ((__x19) => DEVC$RT.cast(__x19, dynamic, E, "CompositeCast", """line 5
28, column 12 of dart:core/list.dart: """, __x19 is E, false))(JS('var', r'#.pop
()', this)); | |
| 201 } | |
| 202 void removeWhere(bool test(E element)) { | |
| 203 IterableMixinWorkaround.removeWhereList(this, test); | |
| 204 } | |
| 205 void retainWhere(bool test(E element)) { | |
| 206 IterableMixinWorkaround.removeWhereList(this, (E element) => !test(element)); | |
| 207 } | |
| 208 List<E> sublist(int start, [int end]) { | |
| 209 checkNull(start); | |
| 210 if (start is! int) throw new ArgumentError(start); | |
| 211 if (start < 0 || start > length) { | |
| 212 throw new RangeError.range(start, 0, length); | |
| 213 } | |
| 214 if (end == null) { | |
| 215 end = length; | |
| 216 } | |
| 217 else { | |
| 218 if (end is! int) throw new ArgumentError(end); | |
| 219 if (end < start || end > length) { | |
| 220 throw new RangeError.range(end, start, length); | |
| 221 } | |
| 222 } | |
| 223 if (start == end) return <E> []; | |
| 224 return new JSArray<E>.markGrowable(JS('', r'#.slice(#, #)', this, start, end)
); | |
| 225 } | |
| 226 Iterable<E> getRange(int start, int end) { | |
| 227 return new IterableMixinWorkaround<E>().getRangeList(this, start, end); | |
| 228 } | |
| 229 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { | |
| 230 checkMutable('set range'); | |
| 231 IterableMixinWorkaround.setRangeList(this, start, end, iterable, skipCount); | |
| 232 } | |
| 233 void removeRange(int start, int end) { | |
| 234 checkGrowable('removeRange'); | |
| 235 int receiverLength = this.length; | |
| 236 if (start < 0 || start > receiverLength) { | |
| 237 throw new RangeError.range(start, 0, receiverLength); | |
| 238 } | |
| 239 if (end < start || end > receiverLength) { | |
| 240 throw new RangeError.range(end, start, receiverLength); | |
| 241 } | |
| 242 Lists.copy(this, end, this, start, receiverLength - end); | |
| 243 this.length = receiverLength - (end - start); | |
| 244 } | |
| 245 void fillRange(int start, int end, [E fillValue]) { | |
| 246 checkMutable('fill range'); | |
| 247 IterableMixinWorkaround.fillRangeList(this, start, end, fillValue); | |
| 248 } | |
| 249 void replaceRange(int start, int end, Iterable<E> replacement) { | |
| 250 checkGrowable('removeRange'); | |
| 251 IterableMixinWorkaround.replaceRangeList(this, start, end, replacement); | |
| 252 } | |
| 253 Map<int, E> asMap() { | |
| 254 return new IterableMixinWorkaround<E>().asMapList(this); | |
| 255 } | |
| 256 } | |
| OLD | NEW |