| Index: sdk/lib/internal/iterable.dart
|
| diff --git a/sdk/lib/internal/iterable.dart b/sdk/lib/internal/iterable.dart
|
| index 73b3669f5fc84facba92303c9b344cafd9a58313..0e7b171e26002c4aa73f57516a1b7246196dee82 100644
|
| --- a/sdk/lib/internal/iterable.dart
|
| +++ b/sdk/lib/internal/iterable.dart
|
| @@ -8,8 +8,7 @@ part of dart._internal;
|
| * Marker interface for [Iterable] subclasses that have an efficient
|
| * [length] implementation.
|
| */
|
| -abstract class EfficientLengthIterable<T> extends Iterable<T> {
|
| - const EfficientLengthIterable();
|
| +abstract class EfficientLength {
|
| /**
|
| * Returns the number of elements in the iterable.
|
| *
|
| @@ -25,7 +24,8 @@ abstract class EfficientLengthIterable<T> extends Iterable<T> {
|
| * All other methods are implemented in terms of [length] and [elementAt],
|
| * including [iterator].
|
| */
|
| -abstract class ListIterable<E> extends EfficientLengthIterable<E> {
|
| +abstract class ListIterable<E> extends Iterable<E>
|
| + implements EfficientLength {
|
| int get length;
|
| E elementAt(int i);
|
|
|
| @@ -354,7 +354,7 @@ class MappedIterable<S, T> extends Iterable<T> {
|
| final _Transformation<S, T> _f;
|
|
|
| factory MappedIterable(Iterable<S> iterable, T function(S value)) {
|
| - if (iterable is EfficientLengthIterable) {
|
| + if (iterable is EfficientLength) {
|
| return new EfficientLengthMappedIterable<S, T>(iterable, function);
|
| }
|
| return new MappedIterable<S, T>._(iterable, function);
|
| @@ -376,7 +376,7 @@ class MappedIterable<S, T> extends Iterable<T> {
|
| }
|
|
|
| class EfficientLengthMappedIterable<S, T> extends MappedIterable<S, T>
|
| - implements EfficientLengthIterable<T> {
|
| + implements EfficientLength {
|
| EfficientLengthMappedIterable(Iterable<S> iterable, T function(S value))
|
| : super._(iterable, function);
|
| }
|
| @@ -406,7 +406,7 @@ class MappedIterator<S, T> extends Iterator<T> {
|
| * Expects efficient `length` and `elementAt` on the source iterable.
|
| */
|
| class MappedListIterable<S, T> extends ListIterable<T>
|
| - implements EfficientLengthIterable<T> {
|
| + implements EfficientLength {
|
| final Iterable<S> _source;
|
| final _Transformation<S, T> _f;
|
|
|
| @@ -427,7 +427,7 @@ class WhereIterable<E> extends Iterable<E> {
|
|
|
| Iterator<E> get iterator => new WhereIterator<E>(_iterable.iterator, _f);
|
|
|
| - // Specialization of [Iterable.map] to non-EfficientLengthIterable.
|
| + // Specialization of [Iterable.map] to non-EfficientLength.
|
| Iterable/*<T>*/ map/*<T>*/(/*=T*/ f(E element)) =>
|
| new MappedIterable<E, dynamic/*=T*/>._(this, f);
|
| }
|
| @@ -500,7 +500,7 @@ class TakeIterable<E> extends Iterable<E> {
|
| if (takeCount is! int || takeCount < 0) {
|
| throw new ArgumentError(takeCount);
|
| }
|
| - if (iterable is EfficientLengthIterable) {
|
| + if (iterable is EfficientLength) {
|
| return new EfficientLengthTakeIterable<E>(iterable, takeCount);
|
| }
|
| return new TakeIterable<E>._(iterable, takeCount);
|
| @@ -514,7 +514,7 @@ class TakeIterable<E> extends Iterable<E> {
|
| }
|
|
|
| class EfficientLengthTakeIterable<E> extends TakeIterable<E>
|
| - implements EfficientLengthIterable<E> {
|
| + implements EfficientLength {
|
| EfficientLengthTakeIterable(Iterable<E> iterable, int takeCount)
|
| : super._(iterable, takeCount);
|
|
|
| @@ -587,7 +587,7 @@ class SkipIterable<E> extends Iterable<E> {
|
| final int _skipCount;
|
|
|
| factory SkipIterable(Iterable<E> iterable, int count) {
|
| - if (iterable is EfficientLengthIterable) {
|
| + if (iterable is EfficientLength) {
|
| return new EfficientLengthSkipIterable<E>(iterable, count);
|
| }
|
| return new SkipIterable<E>._(iterable, count);
|
| @@ -614,7 +614,7 @@ class SkipIterable<E> extends Iterable<E> {
|
| }
|
|
|
| class EfficientLengthSkipIterable<E> extends SkipIterable<E>
|
| - implements EfficientLengthIterable<E> {
|
| + implements EfficientLength {
|
| EfficientLengthSkipIterable(Iterable<E> iterable, int skipCount)
|
| : super._(iterable, skipCount);
|
|
|
| @@ -676,7 +676,7 @@ class SkipWhileIterator<E> extends Iterator<E> {
|
| /**
|
| * The always empty [Iterable].
|
| */
|
| -class EmptyIterable<E> extends EfficientLengthIterable<E> {
|
| +class EmptyIterable<E> extends Iterable<E> implements EfficientLength {
|
| const EmptyIterable();
|
|
|
| Iterator<E> get iterator => const EmptyIterator();
|
|
|