Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(763)

Side by Side Diff: pkg/front_end/lib/src/fasta/util/link.dart

Issue 2675603002: Reduce strong mode errors and warnings (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library fasta.util.link; 5 library fasta.util.link;
6 6
7 import 'link_implementation.dart' show 7 import 'link_implementation.dart' show
8 LinkBuilderImplementation, 8 LinkBuilderImplementation,
9 LinkEntry, 9 LinkEntry,
10 LinkIterator, 10 LinkIterator,
(...skipping 22 matching lines...) Expand all
33 result.length = slowLength(); 33 result.length = slowLength();
34 } 34 }
35 int i = 0; 35 int i = 0;
36 for (Link<T> link = this; !link.isEmpty; link = link.tail) { 36 for (Link<T> link = this; !link.isEmpty; link = link.tail) {
37 result[i++] = link.head; 37 result[i++] = link.head;
38 } 38 }
39 return result; 39 return result;
40 } 40 }
41 41
42 /// Lazily maps over this linked list, returning an [Iterable]. 42 /// Lazily maps over this linked list, returning an [Iterable].
43 Iterable map(dynamic fn(T item)) { 43 Iterable<K> map<K>(K fn(T item)) {
44 return new MappedLinkIterable<T, dynamic>(this, fn); 44 return new MappedLinkIterable<T, K>(this, fn);
45 } 45 }
46 46
47 /// Invokes `fn` for every item in the linked list and returns the results 47 /// Invokes `fn` for every item in the linked list and returns the results
48 /// in a [List]. 48 /// in a [List].
49 List mapToList(dynamic fn(T item), {bool growable: true}) { 49 List mapToList(dynamic fn(T item), {bool growable: true}) {
50 List result; 50 List result;
51 if (!growable) { 51 if (!growable) {
52 result = new List(slowLength()); 52 result = new List(slowLength());
53 } else { 53 } else {
54 result = new List(); 54 result = new List();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 87
88 String toString() => "[]"; 88 String toString() => "[]";
89 89
90 get length { 90 get length {
91 throw new UnsupportedError('get:length'); 91 throw new UnsupportedError('get:length');
92 } 92 }
93 93
94 int slowLength() => 0; 94 int slowLength() => 0;
95 95
96 // TODO(ahe): Remove this method? 96 // TODO(ahe): Remove this method?
97 bool contains(T element) { 97 bool contains(Object element) {
98 for (Link<T> link = this; !link.isEmpty; link = link.tail) { 98 for (Link<T> link = this; !link.isEmpty; link = link.tail) {
99 if (link.head == element) return true; 99 if (link.head == element) return true;
100 } 100 }
101 return false; 101 return false;
102 } 102 }
103 103
104 // TODO(ahe): Remove this method? 104 // TODO(ahe): Remove this method?
105 T get single { 105 T get single {
106 if (isEmpty) throw new StateError('No elements'); 106 if (isEmpty) throw new StateError('No elements');
107 if (!tail.isEmpty) throw new StateError('More than one element'); 107 if (!tail.isEmpty) throw new StateError('More than one element');
(...skipping 16 matching lines...) Expand all
124 return true; 124 return true;
125 } 125 }
126 126
127 Link copyWithout(e) => this; 127 Link copyWithout(e) => this;
128 128
129 // 129 //
130 // Unsupported Iterable<T> methods. 130 // Unsupported Iterable<T> methods.
131 // 131 //
132 bool any(bool f(T e)) => _unsupported('any'); 132 bool any(bool f(T e)) => _unsupported('any');
133 T elementAt(int i) => _unsupported('elementAt'); 133 T elementAt(int i) => _unsupported('elementAt');
134 Iterable expand(Iterable f(T e)) => _unsupported('expand'); 134 Iterable<K> expand<K>(Iterable<K> f(T e)) => _unsupported('expand');
135 T firstWhere(bool f(T e), {T orElse()}) => _unsupported('firstWhere'); 135 T firstWhere(bool f(T e), {T orElse()}) => _unsupported('firstWhere');
136 fold(initialValue, combine(value, T element)) => _unsupported('fold'); 136 K fold<K>(K initialValue, K combine(K value, T element)) => _unsupported('fold ');
137 T get last => _unsupported('get:last'); 137 T get last => _unsupported('get:last');
138 T lastWhere(bool f(T e), {T orElse()}) => _unsupported('lastWhere'); 138 T lastWhere(bool f(T e), {T orElse()}) => _unsupported('lastWhere');
139 String join([separator = '']) => _unsupported('join'); 139 String join([separator = '']) => _unsupported('join');
140 T reduce(T combine(T a, T b)) => _unsupported('reduce'); 140 T reduce(T combine(T a, T b)) => _unsupported('reduce');
141 T singleWhere(bool f(T e)) => _unsupported('singleWhere'); 141 T singleWhere(bool f(T e)) => _unsupported('singleWhere');
142 Iterable<T> skipWhile(bool f(T e)) => _unsupported('skipWhile'); 142 Iterable<T> skipWhile(bool f(T e)) => _unsupported('skipWhile');
143 Iterable<T> take(int n) => _unsupported('take'); 143 Iterable<T> take(int n) => _unsupported('take');
144 Iterable<T> takeWhile(bool f(T e)) => _unsupported('takeWhile'); 144 Iterable<T> takeWhile(bool f(T e)) => _unsupported('takeWhile');
145 Set<T> toSet() => _unsupported('toSet'); 145 Set<T> toSet() => _unsupported('toSet');
146 Iterable<T> where(bool f(T e)) => _unsupported('where'); 146 Iterable<T> where(bool f(T e)) => _unsupported('where');
147 147
148 _unsupported(String method) => throw new UnsupportedError(method); 148 _unsupported(String method) => throw new UnsupportedError(method);
149 } 149 }
150 150
151 /// Builder object for creating linked lists using [Link] or fixed-length [List] 151 /// Builder object for creating linked lists using [Link] or fixed-length [List]
152 /// objects. 152 /// objects.
153 abstract class LinkBuilder<T> { 153 abstract class LinkBuilder<T> {
154 factory LinkBuilder() = LinkBuilderImplementation; 154 factory LinkBuilder() = LinkBuilderImplementation<T>;
155 155
156 /// Prepends all elements added to the builder to [tail]. The resulting list 156 /// Prepends all elements added to the builder to [tail]. The resulting list
157 /// is returned and the builder is cleared. 157 /// is returned and the builder is cleared.
158 Link<T> toLink([Link<T> tail = const Link()]); 158 Link<T> toLink([Link<T> tail = const Link()]);
159 159
160 /// Creates a new fixed length containing all added elements. The 160 /// Creates a new fixed length containing all added elements. The
161 /// resulting list is returned and the builder is cleared. 161 /// resulting list is returned and the builder is cleared.
162 List<T> toList(); 162 List<T> toList();
163 163
164 /// Adds the element [t] to the end of the list being built. 164 /// Adds the element [t] to the end of the list being built.
165 Link<T> addLast(T t); 165 Link<T> addLast(T t);
166 166
167 /// Returns the first element in the list being built. 167 /// Returns the first element in the list being built.
168 T get first; 168 T get first;
169 169
170 /// Returns the number of elements in the list being built. 170 /// Returns the number of elements in the list being built.
171 final int length; 171 final int length;
172 172
173 /// Returns `true` if the list being built is empty. 173 /// Returns `true` if the list being built is empty.
174 final bool isEmpty; 174 final bool isEmpty;
175 175
176 /// Removes all added elements and resets the builder. 176 /// Removes all added elements and resets the builder.
177 void clear(); 177 void clear();
178 } 178 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698