| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of dart._internal; | 5 part of dart._internal; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Mixin that throws on the length changing operations of [List]. | 8 * Mixin that throws on the length changing operations of [List]. |
| 9 * | 9 * |
| 10 * Intended to mix-in on top of [ListMixin] for fixed-length lists. | 10 * Intended to mix-in on top of [ListMixin] for fixed-length lists. |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 } | 298 } |
| 299 | 299 |
| 300 class ReversedListIterable<E> extends ListIterable<E> { | 300 class ReversedListIterable<E> extends ListIterable<E> { |
| 301 Iterable<E> _source; | 301 Iterable<E> _source; |
| 302 ReversedListIterable(this._source); | 302 ReversedListIterable(this._source); |
| 303 | 303 |
| 304 int get length => _source.length; | 304 int get length => _source.length; |
| 305 | 305 |
| 306 E elementAt(int index) => _source.elementAt(_source.length - 1 - index); | 306 E elementAt(int index) => _source.elementAt(_source.length - 1 - index); |
| 307 } | 307 } |
| 308 |
| 309 /** |
| 310 * Converts a growable list to a fixed length list with the same elements. |
| 311 * |
| 312 * For internal use only. |
| 313 * Only works on growable lists as created by `[]` or `new List()`. |
| 314 * May throw on any other list. |
| 315 * |
| 316 * The operation is efficient. It doesn't copy the elements, but converts |
| 317 * the existing list directly to a fixed length list. |
| 318 * That means that it is a destructive conversion. |
| 319 * The original list should not be used afterwards. |
| 320 * |
| 321 * The returned list may be the same list as the orginal, |
| 322 * or it may be a different list (according to [identical]). |
| 323 * The original list may have changed type to be a fixed list, |
| 324 * or become empty or been otherwise modified. |
| 325 * It will still be a valid object, so references to it will not, e.g., crash |
| 326 * the runtime if accessed, but no promises are made wrt. its contents. |
| 327 * |
| 328 * This unspecified behavior is the reason the function is not exposed to |
| 329 * users. We allow the underlying implementation to make the most efficient |
| 330 * conversion, at the cost of leaving the original list in an unspecified |
| 331 * state. |
| 332 */ |
| 333 external List makeListFixedLength(List growableList); |
| OLD | NEW |