| Index: runtime/lib/growable_array.dart
|
| diff --git a/runtime/lib/growable_array.dart b/runtime/lib/growable_array.dart
|
| index ad4765b65ce1f5a8722d84a250fb6ccdd58e47b7..e332dd1aac8a6489cba621ecf7c86850832f32c5 100644
|
| --- a/runtime/lib/growable_array.dart
|
| +++ b/runtime/lib/growable_array.dart
|
| @@ -166,9 +166,9 @@ class _GrowableObjectArray<T> implements List<T> {
|
| _setData(new_data);
|
| }
|
|
|
| - // Collection interface.
|
| -
|
| - bool contains(T element) => Collections.contains(this, element);
|
| + /**
|
| + * Collection interface.
|
| + */
|
|
|
| void forEach(f(T element)) {
|
| // TODO(srdjan): Use Collections.forEach(this, f);
|
| @@ -216,6 +216,28 @@ class _GrowableObjectArray<T> implements List<T> {
|
| }
|
|
|
| Iterator<T> iterator() {
|
| - return new SequenceIterator<T>(this);
|
| + return new VariableSizeArrayIterator<T>(this);
|
| + }
|
| +}
|
| +
|
| +
|
| +// Iterator for arrays with variable size.
|
| +class VariableSizeArrayIterator<T> implements Iterator<T> {
|
| + VariableSizeArrayIterator(_GrowableObjectArray<T> array)
|
| + : _array = array, _pos = 0 {
|
| }
|
| +
|
| + bool hasNext() {
|
| + return _array.length > _pos;
|
| + }
|
| +
|
| + T next() {
|
| + if (!hasNext()) {
|
| + throw const NoMoreElementsException();
|
| + }
|
| + return _array[_pos++];
|
| + }
|
| +
|
| + final _GrowableObjectArray<T> _array;
|
| + int _pos;
|
| }
|
|
|