| Index: sdk/lib/_internal/compiler/implementation/scanner/byte_strings.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/scanner/byte_strings.dart b/sdk/lib/_internal/compiler/implementation/scanner/byte_strings.dart
|
| index f6c220f4aa42daaf52449659506f19fedcc1ea11..4d7989872f37d7e18d02f132b8ee51a5da32b0ed 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/scanner/byte_strings.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/scanner/byte_strings.dart
|
| @@ -5,7 +5,7 @@
|
| /**
|
| * An abstract string representation.
|
| */
|
| -class ByteString implements SourceString {
|
| +abstract class ByteString extends Iterable<int> implements SourceString {
|
| final List<int> bytes;
|
| final int offset;
|
| final int length;
|
| @@ -24,7 +24,7 @@ class ByteString implements SourceString {
|
| throw "should be overridden in subclass";
|
| }
|
|
|
| - Iterator<int> iterator() => new Utf8Decoder(bytes, offset, length);
|
| + Iterator<int> get iterator => new Utf8Decoder(bytes, offset, length);
|
|
|
| int get hashCode {
|
| if (_hashCode == null) {
|
| @@ -66,7 +66,7 @@ class AsciiString extends ByteString {
|
| return string;
|
| }
|
|
|
| - Iterator<int> iterator() => new AsciiStringIterator(bytes);
|
| + Iterator<int> get iterator => new AsciiStringIterator(bytes);
|
|
|
| SourceString copyWithoutQuotes(int initial, int terminal) {
|
| return new AsciiString(bytes, offset + initial,
|
| @@ -85,12 +85,22 @@ class AsciiStringIterator implements Iterator<int> {
|
| final List<int> bytes;
|
| int offset;
|
| final int end;
|
| + int _current;
|
| +
|
| AsciiStringIterator(List<int> bytes)
|
| : this.bytes = bytes, offset = 0, end = bytes.length;
|
| AsciiStringIterator.range(List<int> bytes, int from, int length)
|
| : this.bytes = bytes, offset = from, end = from + length;
|
| - bool get hasNext => offset < end;
|
| - int next() => bytes[offset++];
|
| +
|
| + int get current => _current;
|
| + bool moveNext() {
|
| + if (offset < end) {
|
| + _current = bytes[offset++];
|
| + return true;
|
| + }
|
| + _current = null;
|
| + return false;
|
| + }
|
| }
|
|
|
|
|
| @@ -111,7 +121,7 @@ class Utf8String extends ByteString {
|
| throw "not implemented yet";
|
| }
|
|
|
| - Iterator<int> iterator() => new Utf8Decoder(bytes, 0, length);
|
| + Iterator<int> get iterator => new Utf8Decoder(bytes, 0, length);
|
|
|
| SourceString copyWithoutQuotes(int initial, int terminal) {
|
| assert((){
|
|
|