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

Side by Side Diff: lib/compiler/implementation/types/concrete_types_inferrer.dart

Issue 11230011: Make hasNext a getter instead of a method. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Remove unused variable. Created 8 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 class CancelTypeInferenceException { 5 class CancelTypeInferenceException {
6 final Node node; 6 final Node node;
7 final String reason; 7 final String reason;
8 8
9 CancelTypeInferenceException(this.node, this.reason); 9 CancelTypeInferenceException(this.node, this.reason);
10 } 10 }
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 if (concreteTypes.isEmpty()) { 208 if (concreteTypes.isEmpty()) {
209 size = 0; 209 size = 0;
210 return; 210 return;
211 } 211 }
212 for (final e in concreteTypes.getKeys()) { 212 for (final e in concreteTypes.getKeys()) {
213 final baseTypes = concreteTypes[e].baseTypes; 213 final baseTypes = concreteTypes[e].baseTypes;
214 size *= baseTypes.length; 214 size *= baseTypes.length;
215 } 215 }
216 } 216 }
217 217
218 bool hasNext() { 218 bool get hasNext {
219 return counter < size; 219 return counter < size;
220 } 220 }
221 221
222 ConcreteTypesEnvironment takeSnapshot() { 222 ConcreteTypesEnvironment takeSnapshot() {
223 Map<Element, ConcreteType> result = new Map<Element, ConcreteType>(); 223 Map<Element, ConcreteType> result = new Map<Element, ConcreteType>();
224 nextValues.forEach((k, v) { result[k] = new ConcreteType.singleton(v); }); 224 nextValues.forEach((k, v) { result[k] = new ConcreteType.singleton(v); });
225 return new ConcreteTypesEnvironment.of(result, baseTypeOfThis); 225 return new ConcreteTypesEnvironment.of(result, baseTypeOfThis);
226 } 226 }
227 227
228 ConcreteTypesEnvironment next() { 228 ConcreteTypesEnvironment next() {
229 if (!hasNext()) throw new NoMoreElementsException(); 229 if (!hasNext) throw new NoMoreElementsException();
230 Element keyToIncrement = null; 230 Element keyToIncrement = null;
231 for (final key in concreteTypes.getKeys()) { 231 for (final key in concreteTypes.getKeys()) {
232 final iterator = state[key]; 232 final iterator = state[key];
233 if (iterator != null && iterator.hasNext()) { 233 if (iterator != null && iterator.hasNext) {
234 nextValues[key] = state[key].next(); 234 nextValues[key] = state[key].next();
235 break; 235 break;
236 } 236 }
237 Iterator newIterator = concreteTypes[key].baseTypes.iterator(); 237 Iterator newIterator = concreteTypes[key].baseTypes.iterator();
238 state[key] = newIterator; 238 state[key] = newIterator;
239 nextValues[key] = newIterator.next(); 239 nextValues[key] = newIterator.next();
240 } 240 }
241 counter++; 241 counter++;
242 return takeSnapshot(); 242 return takeSnapshot();
243 } 243 }
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 for (Link<Element> requiredParameters = signature.requiredParameters; 570 for (Link<Element> requiredParameters = signature.requiredParameters;
571 !requiredParameters.isEmpty(); 571 !requiredParameters.isEmpty();
572 requiredParameters = requiredParameters.tail) { 572 requiredParameters = requiredParameters.tail) {
573 final Element requiredParameter = requiredParameters.head; 573 final Element requiredParameter = requiredParameters.head;
574 // we know next() is defined because of the guard above 574 // we know next() is defined because of the guard above
575 result[requiredParameter] = remainingPositionalArguments.next(); 575 result[requiredParameter] = remainingPositionalArguments.next();
576 } 576 }
577 // we attach the remaining positional arguments to their corresponding 577 // we attach the remaining positional arguments to their corresponding
578 // named arguments 578 // named arguments
579 Link<Element> remainingNamedParameters = signature.optionalParameters; 579 Link<Element> remainingNamedParameters = signature.optionalParameters;
580 while (remainingPositionalArguments.hasNext()) { 580 while (remainingPositionalArguments.hasNext) {
581 final Element namedParameter = remainingNamedParameters.head; 581 final Element namedParameter = remainingNamedParameters.head;
582 result[namedParameter] = remainingPositionalArguments.next(); 582 result[namedParameter] = remainingPositionalArguments.next();
583 // we know tail is defined because of the guard above 583 // we know tail is defined because of the guard above
584 remainingNamedParameters = remainingNamedParameters.tail; 584 remainingNamedParameters = remainingNamedParameters.tail;
585 } 585 }
586 // we build a map out of the remaining named parameters 586 // we build a map out of the remaining named parameters
587 final Map<SourceString, Element> leftOverNamedParameters = 587 final Map<SourceString, Element> leftOverNamedParameters =
588 new Map<SourceString, Element>(); 588 new Map<SourceString, Element>();
589 for (; 589 for (;
590 !remainingNamedParameters.isEmpty(); 590 !remainingNamedParameters.isEmpty();
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
1245 Element element = elements[node]; 1245 Element element = elements[node];
1246 inferrer.addCaller(element, currentMethod); 1246 inferrer.addCaller(element, currentMethod);
1247 return inferrer.getSendReturnType(element, null, 1247 return inferrer.getSendReturnType(element, null,
1248 analyzeArguments(node.arguments)); 1248 analyzeArguments(node.arguments));
1249 } 1249 }
1250 1250
1251 void internalError(String reason, {Node node}) { 1251 void internalError(String reason, {Node node}) {
1252 inferrer.fail(node, reason); 1252 inferrer.fail(node, reason);
1253 } 1253 }
1254 } 1254 }
OLDNEW
« no previous file with comments | « lib/compiler/implementation/tree/dartstring.dart ('k') | lib/compiler/implementation/util/link_implementation.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698