| Index: sdk/lib/_internal/compiler/implementation/tree/dartstring.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/tree/dartstring.dart b/sdk/lib/_internal/compiler/implementation/tree/dartstring.dart
|
| deleted file mode 100644
|
| index 72d0b0c060ca0dd37ae01b62ea91cf78bdc36486..0000000000000000000000000000000000000000
|
| --- a/sdk/lib/_internal/compiler/implementation/tree/dartstring.dart
|
| +++ /dev/null
|
| @@ -1,251 +0,0 @@
|
| -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -part of tree;
|
| -
|
| -/**
|
| - * The [DartString] type represents a Dart string value as a sequence of Unicode
|
| - * Scalar Values.
|
| - * After parsing, any valid [LiteralString] will contain a [DartString]
|
| - * representing its content after removing quotes and resolving escapes in
|
| - * its source.
|
| - */
|
| -abstract class DartString extends IterableBase<int> {
|
| - factory DartString.empty() => const LiteralDartString("");
|
| - // This is a convenience constructor. If you need a const literal DartString,
|
| - // use [const LiteralDartString(string)] directly.
|
| - factory DartString.literal(String string) => new LiteralDartString(string);
|
| - factory DartString.rawString(String source, int length) =>
|
| - new RawSourceDartString(source, length);
|
| - factory DartString.escapedString(String source, int length) =>
|
| - new EscapedSourceDartString(source, length);
|
| - factory DartString.concat(DartString first, DartString second) {
|
| - if (first.isEmpty) return second;
|
| - if (second.isEmpty) return first;
|
| - return new ConsDartString(first, second);
|
| - }
|
| - const DartString();
|
| -
|
| - /**
|
| - * The length of this [DartString], which is the string length after
|
| - * escapes have been resolved.
|
| - */
|
| - int get length;
|
| - bool get isEmpty => length == 0;
|
| -
|
| - Iterator<int> get iterator;
|
| -
|
| - /**
|
| - * The string represented by this [DartString].
|
| - */
|
| - String slowToString();
|
| -
|
| - bool operator ==(var other) {
|
| - if (other is !DartString) return false;
|
| - DartString otherString = other;
|
| - if (length != otherString.length) return false;
|
| - Iterator it1 = iterator;
|
| - Iterator it2 = otherString.iterator;
|
| - while (it1.moveNext()) {
|
| - if (!it2.moveNext()) return false;
|
| - if (it1.current != it2.current) return false;
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - int get hashCode => throw new UnsupportedError('DartString.hashCode');
|
| -
|
| - /**
|
| - * A textual representation of this [DartString] with some debugging
|
| - * information.
|
| - */
|
| - String toString() => "DartString#${length}:${slowToString()}";
|
| -}
|
| -
|
| -
|
| -/**
|
| - * A [DartString] where the content is represented by an actual [String].
|
| - */
|
| -class LiteralDartString extends DartString {
|
| - final String string;
|
| - const LiteralDartString(this.string);
|
| - int get length => string.length;
|
| - Iterator<int> get iterator => string.codeUnits.iterator;
|
| - String slowToString() => string;
|
| -}
|
| -
|
| -/**
|
| - * A [DartString] whereSource the content comes from a slice of the program
|
| - * source.
|
| - */
|
| -abstract class SourceBasedDartString extends DartString {
|
| - /**
|
| - * The source string containing explicit escapes from which this [DartString]
|
| - * is built.
|
| - */
|
| - final String source;
|
| - final int length;
|
| - SourceBasedDartString(this.source, this.length);
|
| - Iterator<int> get iterator;
|
| -}
|
| -
|
| -/**
|
| - * Special case of a [SourceBasedDartString] where we know the source doesn't
|
| - * contain any escapes.
|
| - */
|
| -class RawSourceDartString extends SourceBasedDartString {
|
| - RawSourceDartString(source, length) : super(source, length);
|
| - Iterator<int> get iterator => source.codeUnits.iterator;
|
| - String slowToString() => source;
|
| -}
|
| -
|
| -/**
|
| - * General case of a [SourceBasedDartString] where the source might contain
|
| - * escapes.
|
| - */
|
| -class EscapedSourceDartString extends SourceBasedDartString {
|
| - String toStringCache;
|
| - EscapedSourceDartString(source, length) : super(source, length);
|
| - Iterator<int> get iterator {
|
| - if (toStringCache != null) return toStringCache.codeUnits.iterator;
|
| - return new StringEscapeIterator(source);
|
| - }
|
| - String slowToString() {
|
| - if (toStringCache != null) return toStringCache;
|
| - StringBuffer buffer = new StringBuffer();
|
| - StringEscapeIterator it = new StringEscapeIterator(source);
|
| - while (it.moveNext()) {
|
| - buffer.writeCharCode(it.current);
|
| - }
|
| - toStringCache = buffer.toString();
|
| - return toStringCache;
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * The concatenation of two [DartString]s.
|
| - */
|
| -class ConsDartString extends DartString {
|
| - final DartString left;
|
| - final DartString right;
|
| - final int length;
|
| - String toStringCache;
|
| - ConsDartString(DartString left, DartString right)
|
| - : this.left = left,
|
| - this.right = right,
|
| - length = left.length + right.length;
|
| -
|
| - Iterator<int> get iterator => new ConsDartStringIterator(this);
|
| -
|
| - String slowToString() {
|
| - if (toStringCache != null) return toStringCache;
|
| - toStringCache = left.slowToString() + right.slowToString();
|
| - return toStringCache;
|
| - }
|
| - String get source => slowToString();
|
| -}
|
| -
|
| -class ConsDartStringIterator implements Iterator<int> {
|
| - HasNextIterator<int> currentIterator;
|
| - DartString right;
|
| - bool hasNextLookAhead;
|
| - int _current = null;
|
| -
|
| - ConsDartStringIterator(ConsDartString cons)
|
| - : currentIterator = new HasNextIterator<int>(cons.left.iterator),
|
| - right = cons.right {
|
| - hasNextLookAhead = currentIterator.hasNext;
|
| - if (!hasNextLookAhead) {
|
| - nextPart();
|
| - }
|
| - }
|
| -
|
| - int get current => _current;
|
| -
|
| - bool moveNext() {
|
| - if (!hasNextLookAhead) {
|
| - _current = null;
|
| - return false;
|
| - }
|
| - _current = currentIterator.next();
|
| - hasNextLookAhead = currentIterator.hasNext;
|
| - if (!hasNextLookAhead) {
|
| - nextPart();
|
| - }
|
| - return true;
|
| - }
|
| - void nextPart() {
|
| - if (right != null) {
|
| - currentIterator = new HasNextIterator<int>(right.iterator);
|
| - right = null;
|
| - hasNextLookAhead = currentIterator.hasNext;
|
| - }
|
| - }
|
| -}
|
| -
|
| -/**
|
| - *Iterator that returns the actual string contents of a string with escapes.
|
| - */
|
| -class StringEscapeIterator implements Iterator<int>{
|
| - final Iterator<int> source;
|
| - int _current = null;
|
| -
|
| - StringEscapeIterator(String source) : this.source = source.codeUnits.iterator;
|
| -
|
| - int get current => _current;
|
| -
|
| - bool moveNext() {
|
| - if (!source.moveNext()) {
|
| - _current = null;
|
| - return false;
|
| - }
|
| - int code = source.current;
|
| - if (code != $BACKSLASH) {
|
| - _current = code;
|
| - return true;
|
| - }
|
| - source.moveNext();
|
| - code = source.current;
|
| - switch (code) {
|
| - case $n: _current = $LF; break;
|
| - case $r: _current = $CR; break;
|
| - case $t: _current = $TAB; break;
|
| - case $b: _current = $BS; break;
|
| - case $f: _current = $FF; break;
|
| - case $v: _current = $VTAB; break;
|
| - case $x:
|
| - source.moveNext();
|
| - int value = hexDigitValue(source.current);
|
| - source.moveNext();
|
| - value = value * 16 + hexDigitValue(source.current);
|
| - _current = value;
|
| - break;
|
| - case $u:
|
| - int value = 0;
|
| - source.moveNext();
|
| - code = source.current;
|
| - if (code == $OPEN_CURLY_BRACKET) {
|
| - source.moveNext();
|
| - while (source.current != $CLOSE_CURLY_BRACKET) {
|
| - value = value * 16 + hexDigitValue(source.current);
|
| - source.moveNext();
|
| - }
|
| - _current = value;
|
| - break;
|
| - }
|
| - // Four digit hex value.
|
| - value = hexDigitValue(code);
|
| - for (int i = 0; i < 3; i++) {
|
| - source.moveNext();
|
| - value = value * 16 + hexDigitValue(source.current);
|
| - }
|
| - _current = value;
|
| - break;
|
| - default:
|
| - _current = code;
|
| - }
|
| - return true;
|
| - }
|
| -}
|
| -
|
|
|