| Index: pkg/compiler/lib/src/helpers/debug_collection.dart
|
| diff --git a/pkg/compiler/lib/src/helpers/debug_collection.dart b/pkg/compiler/lib/src/helpers/debug_collection.dart
|
| deleted file mode 100644
|
| index 42e28c044c5b6b5700f5ac9265e3a3f533069b3b..0000000000000000000000000000000000000000
|
| --- a/pkg/compiler/lib/src/helpers/debug_collection.dart
|
| +++ /dev/null
|
| @@ -1,329 +0,0 @@
|
| -// Copyright (c) 2014, 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 dart2js.helpers;
|
| -
|
| -typedef void DebugCallback(String methodName, var arg1, var arg2);
|
| -
|
| -class DebugMap<K, V> implements Map<K, V> {
|
| - final Map<K, V> map;
|
| - DebugCallback indexSetCallBack;
|
| - DebugCallback putIfAbsentCallBack;
|
| -
|
| - DebugMap(this.map, {DebugCallback addCallback}) {
|
| - if (addCallback != null) {
|
| - this.addCallback = addCallback;
|
| - }
|
| - }
|
| -
|
| - void set addCallback(DebugCallback value) {
|
| - indexSetCallBack = value;
|
| - putIfAbsentCallBack = value;
|
| - }
|
| -
|
| - bool containsValue(Object value) {
|
| - return map.containsValue(value);
|
| - }
|
| -
|
| - bool containsKey(Object key) => map.containsKey(key);
|
| -
|
| - V operator [](Object key) => map[key];
|
| -
|
| - void operator []=(K key, V value) {
|
| - if (indexSetCallBack != null) {
|
| - indexSetCallBack('[]=', key, value);
|
| - }
|
| - map[key] = value;
|
| - }
|
| -
|
| - V putIfAbsent(K key, V ifAbsent()) {
|
| - return map.putIfAbsent(key, () {
|
| - V v = ifAbsent();
|
| - if (putIfAbsentCallBack != null) {
|
| - putIfAbsentCallBack('putIfAbsent', key, v);
|
| - }
|
| - return v;
|
| - });
|
| - }
|
| -
|
| - void addAll(Map<K, V> other) => map.addAll(other);
|
| -
|
| - V remove(Object key) => map.remove(key);
|
| -
|
| - void clear() => map.clear();
|
| -
|
| - void forEach(void f(K key, V value)) => map.forEach(f);
|
| -
|
| - Iterable<K> get keys => map.keys;
|
| -
|
| - Iterable<V> get values => map.values;
|
| -
|
| - int get length => map.length;
|
| -
|
| - bool get isEmpty => map.isEmpty;
|
| -
|
| - bool get isNotEmpty => map.isNotEmpty;
|
| -}
|
| -
|
| -class DebugIterable<E> implements Iterable<E> {
|
| - final Iterable<E> iterable;
|
| -
|
| - DebugIterable(this.iterable);
|
| -
|
| - Iterator<E> get iterator => iterable.iterator;
|
| -
|
| - Iterable map(f(E element)) => iterable.map(f);
|
| -
|
| - Iterable<E> where(bool test(E element)) => iterable.where(test);
|
| -
|
| - Iterable expand(Iterable f(E element)) => iterable.expand(f);
|
| -
|
| - bool contains(Object element) => iterable.contains(element);
|
| -
|
| - void forEach(void f(E element)) => iterable.forEach(f);
|
| -
|
| - E reduce(E combine(E value, E element)) => iterable.reduce(combine);
|
| -
|
| - dynamic fold(var initialValue,
|
| - dynamic combine(var previousValue, E element)) {
|
| - return iterable.fold(initialValue, combine);
|
| - }
|
| -
|
| - bool every(bool test(E element)) => iterable.every(test);
|
| -
|
| - String join([String separator = ""]) => iterable.join(separator);
|
| -
|
| - bool any(bool test(E element)) => iterable.any(test);
|
| -
|
| - List<E> toList({ bool growable: true }) {
|
| - return iterable.toList(growable: growable);
|
| - }
|
| -
|
| - Set<E> toSet() => iterable.toSet();
|
| -
|
| - int get length => iterable.length;
|
| -
|
| - bool get isEmpty => iterable.isEmpty;
|
| -
|
| - bool get isNotEmpty => iterable.isNotEmpty;
|
| -
|
| - Iterable<E> take(int n) => iterable.take(n);
|
| -
|
| - Iterable<E> takeWhile(bool test(E value)) => iterable.takeWhile(test);
|
| -
|
| - Iterable<E> skip(int n) => iterable.skip(n);
|
| -
|
| - Iterable<E> skipWhile(bool test(E value)) => iterable.skipWhile(test);
|
| -
|
| - E get first => iterable.first;
|
| -
|
| - E get last => iterable.last;
|
| -
|
| - E get single => iterable.single;
|
| -
|
| - E firstWhere(bool test(E element), { E orElse() }) {
|
| - return iterable.firstWhere(test, orElse: orElse);
|
| - }
|
| -
|
| - E lastWhere(bool test(E element), {E orElse()}) {
|
| - return iterable.lastWhere(test, orElse: orElse);
|
| - }
|
| -
|
| - E singleWhere(bool test(E element)) => iterable.singleWhere(test);
|
| -
|
| - E elementAt(int index) => iterable.elementAt(index);
|
| -
|
| -}
|
| -
|
| -class DebugList<E> extends DebugIterable<E> implements List<E> {
|
| - DebugCallback addCallback;
|
| -
|
| - DebugList(List<E> list, {this.addCallback}) : super(list);
|
| -
|
| - List<E> get list => iterable;
|
| -
|
| - E operator [](int index) => list[index];
|
| -
|
| - void operator []=(int index, E value) {
|
| - list[index] = value;
|
| - }
|
| -
|
| - int get length => list.length;
|
| -
|
| - void set length(int newLength) {
|
| - list.length = newLength;
|
| - }
|
| -
|
| - void add(E value) {
|
| - if (addCallback != null) {
|
| - addCallback('add', value, null);
|
| - }
|
| - list.add(value);
|
| - }
|
| -
|
| - void addAll(Iterable<E> iterable) => list.addAll(iterable);
|
| -
|
| - Iterable<E> get reversed => list.reversed;
|
| -
|
| - void sort([int compare(E a, E b)]) => list.sort(compare);
|
| -
|
| - void shuffle([random]) => list.shuffle(random);
|
| -
|
| - int indexOf(E element, [int start = 0]) => list.indexOf(element, start);
|
| -
|
| - int lastIndexOf(E element, [int start]) => list.lastIndexOf(element, start);
|
| -
|
| - void clear() => list.clear();
|
| -
|
| - void insert(int index, E element) => list.insert(index, element);
|
| -
|
| - void insertAll(int index, Iterable<E> iterable) {
|
| - list.insertAll(index, iterable);
|
| - }
|
| -
|
| - void setAll(int index, Iterable<E> iterable) => list.setAll(index, iterable);
|
| -
|
| - bool remove(Object value) => list.remove(value);
|
| -
|
| - E removeAt(int index) => list.removeAt(index);
|
| -
|
| - E removeLast() => list.removeLast();
|
| -
|
| - void removeWhere(bool test(E element)) => list.removeWhere(test);
|
| -
|
| - void retainWhere(bool test(E element)) => list.retainWhere(test);
|
| -
|
| - List<E> sublist(int start, [int end]) => list.sublist(start, end);
|
| -
|
| - Iterable<E> getRange(int start, int end) => list.getRange(start, end);
|
| -
|
| - void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
|
| - list.setRange(start, end, iterable, skipCount);
|
| - }
|
| -
|
| - void removeRange(int start, int end) {
|
| - list.removeRange(start, end);
|
| - }
|
| -
|
| - void fillRange(int start, int end, [E fillValue]) {
|
| - list.fillRange(start, end, fillValue);
|
| - }
|
| -
|
| - void replaceRange(int start, int end, Iterable<E> replacement) {
|
| - list.replaceRange(start, end, replacement);
|
| - }
|
| -
|
| - Map<int, E> asMap() => list.asMap();
|
| -}
|
| -
|
| -class DebugSet<E> extends DebugIterable<E> implements Set<E> {
|
| - DebugCallback addCallback;
|
| -
|
| - DebugSet(Set<E> set, {this.addCallback}) : super(set);
|
| -
|
| - Set<E> get set => iterable;
|
| -
|
| - bool contains(Object value) => set.contains(value);
|
| -
|
| - bool add(E value) {
|
| - if (addCallback != null) {
|
| - addCallback('add', value, null);
|
| - }
|
| - return set.add(value);
|
| - }
|
| -
|
| - void addAll(Iterable<E> elements) => set.addAll(elements);
|
| -
|
| - bool remove(Object value) => set.remove(value);
|
| -
|
| - E lookup(Object object) => set.lookup(object);
|
| -
|
| - void removeAll(Iterable<Object> elements) => set.removeAll(elements);
|
| -
|
| - void retainAll(Iterable<Object> elements) => set.retainAll(elements);
|
| -
|
| - void removeWhere(bool test(E element)) => set.removeWhere(test);
|
| -
|
| - void retainWhere(bool test(E element)) => set.retainWhere(test);
|
| -
|
| - bool containsAll(Iterable<Object> other) => set.containsAll(other);
|
| -
|
| - Set<E> intersection(Set<Object> other) => set.intersection(other);
|
| -
|
| - Set<E> union(Set<E> other) => set.union(other);
|
| -
|
| - Set<E> difference(Set<E> other) => set.difference(other);
|
| -
|
| - void clear() => set.clear();
|
| -
|
| - Set<E> toSet() => set.toSet();
|
| -}
|
| -
|
| -/// Throws an exception if the runtime type of [object] is not in
|
| -/// [runtimeTypes].
|
| -///
|
| -/// Use this to gradually build the set of actual runtime values of [object]
|
| -/// at the call site by running test programs and adding to [runtimeTypes] when
|
| -/// new type are found.
|
| -void assertType(String name, List<String> runtimeTypes, var object,
|
| - {bool showObjects: false}) {
|
| - String runtimeType = '${object.runtimeType}';
|
| - if (runtimeTypes != null && runtimeTypes.contains(runtimeType)) return;
|
| - throw '$name: $runtimeType'
|
| - '${showObjects ? ' ($object)' : ''}';
|
| -}
|
| -
|
| -/// Callback for the [addCallback] of [DebugMap] that throws an exception if
|
| -/// the runtime type of key/value pairs are not in [runtimeTypes].
|
| -///
|
| -/// Use this to gradually build the set of actual runtime values of key/value
|
| -/// pairs of a map by running test programs and adding to [runtimeTypes] when
|
| -/// new type are found.
|
| -class MapTypeAsserter {
|
| - final String name;
|
| - final Map<String, List<String>> runtimeTypes;
|
| - final bool showObjects;
|
| -
|
| - const MapTypeAsserter(this.name, this.runtimeTypes,
|
| - {bool this.showObjects: false});
|
| -
|
| - void call(String methodName, var key, var value) {
|
| - check(key, value, '$methodName: ');
|
| - }
|
| -
|
| - void check(var key, var value, [String text = '']) {
|
| - String keyType = '${key.runtimeType}';
|
| - String valueType = '${value.runtimeType}';
|
| - List<String> valuesTypes = runtimeTypes[keyType];
|
| - if (valuesTypes != null && valuesTypes.contains(valueType)) return;
|
| - throw '$name: $text$keyType => $valueType'
|
| - '${showObjects ? ' ($key => $value)' : ''}';
|
| - }
|
| -}
|
| -
|
| -/// Callback for the [addCallback] of [DebugSet] or [DebugList] that throws an
|
| -/// exception if the runtime type of the elements are not in [runtimeTypes].
|
| -///
|
| -/// Use this to gradually build the set of actual runtime values of the elements
|
| -/// of a collection by running test programs and adding to [runtimeTypes] when
|
| -/// new type are found.
|
| -class CollectionTypeAsserter {
|
| - final String name;
|
| - final List<String> runtimeTypes;
|
| - final bool showObjects;
|
| -
|
| - const CollectionTypeAsserter(this.name, this.runtimeTypes,
|
| - {bool this.showObjects: false});
|
| -
|
| - void call(String methodName, var element, _) {
|
| - check(element, '$methodName: ');
|
| - }
|
| -
|
| - void check(var element, [String text = '']) {
|
| - String elementType = '${element.runtimeType}';
|
| - if (runtimeTypes.contains(elementType)) return;
|
| - throw '$name: $text$elementType'
|
| - '${showObjects ? ' ($element)' : ''}';
|
| - }
|
| -}
|
|
|