OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |