| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 simple_types_inferrer; | 5 library simple_types_inferrer; |
| 6 | 6 |
| 7 import '../closure.dart' show ClosureClassMap; | 7 import '../closure.dart' show ClosureClassMap; |
| 8 import '../common.dart'; | 8 import '../common.dart'; |
| 9 import '../common/names.dart' show Identifiers, Selectors; | 9 import '../common/names.dart' show Identifiers, Selectors; |
| 10 import '../compiler.dart' show Compiler; | 10 import '../compiler.dart' show Compiler; |
| (...skipping 2271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2282 } | 2282 } |
| 2283 } | 2283 } |
| 2284 return null; | 2284 return null; |
| 2285 } | 2285 } |
| 2286 | 2286 |
| 2287 TypeInformation visitAwait(ast.Await node) { | 2287 TypeInformation visitAwait(ast.Await node) { |
| 2288 TypeInformation futureType = node.expression.accept(this); | 2288 TypeInformation futureType = node.expression.accept(this); |
| 2289 return inferrer.registerAwait(node, futureType); | 2289 return inferrer.registerAwait(node, futureType); |
| 2290 } | 2290 } |
| 2291 | 2291 |
| 2292 TypeInformation visitYield(ast.Yield node) { |
| 2293 TypeInformation operandType = node.expression.accept(this); |
| 2294 return inferrer.registerYield(node, operandType); |
| 2295 } |
| 2296 |
| 2292 TypeInformation handleTypeLiteralInvoke(ast.NodeList arguments) { | 2297 TypeInformation handleTypeLiteralInvoke(ast.NodeList arguments) { |
| 2293 // This is reached when users forget to put a `new` in front of a type | 2298 // This is reached when users forget to put a `new` in front of a type |
| 2294 // literal. The emitter will generate an actual call (even though it is | 2299 // literal. The emitter will generate an actual call (even though it is |
| 2295 // likely invalid), and for that it needs to have the arguments processed | 2300 // likely invalid), and for that it needs to have the arguments processed |
| 2296 // as well. | 2301 // as well. |
| 2297 analyzeArguments(arguments.nodes); | 2302 analyzeArguments(arguments.nodes); |
| 2298 return types.dynamicType; | 2303 return types.dynamicType; |
| 2299 } | 2304 } |
| 2300 | 2305 |
| 2301 /// Handle constructor invocation of [constructor]. | 2306 /// Handle constructor invocation of [constructor]. |
| (...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2942 Selector moveNextSelector = Selectors.moveNext; | 2947 Selector moveNextSelector = Selectors.moveNext; |
| 2943 TypeMask moveNextMask = inTreeData.typeOfIteratorMoveNext(node); | 2948 TypeMask moveNextMask = inTreeData.typeOfIteratorMoveNext(node); |
| 2944 | 2949 |
| 2945 TypeInformation iteratorType = handleDynamicSend(node, iteratorSelector, | 2950 TypeInformation iteratorType = handleDynamicSend(node, iteratorSelector, |
| 2946 iteratorMask, expressionType, new ArgumentsTypes.empty()); | 2951 iteratorMask, expressionType, new ArgumentsTypes.empty()); |
| 2947 | 2952 |
| 2948 return handleForInLoop(node, iteratorType, currentSelector, currentMask, | 2953 return handleForInLoop(node, iteratorType, currentSelector, currentMask, |
| 2949 moveNextSelector, moveNextMask); | 2954 moveNextSelector, moveNextMask); |
| 2950 } | 2955 } |
| 2951 } | 2956 } |
| OLD | NEW |