| 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 2868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2879 | 2879 |
| 2880 if (node.expression.isThis()) { | 2880 if (node.expression.isThis()) { |
| 2881 // Any reasonable implementation of an iterator would expose | 2881 // Any reasonable implementation of an iterator would expose |
| 2882 // this, so we play it safe and assume it will. | 2882 // this, so we play it safe and assume it will. |
| 2883 isThisExposed = true; | 2883 isThisExposed = true; |
| 2884 } | 2884 } |
| 2885 | 2885 |
| 2886 ast.Node identifier = node.declaredIdentifier; | 2886 ast.Node identifier = node.declaredIdentifier; |
| 2887 Element element = elements.getForInVariable(node); | 2887 Element element = elements.getForInVariable(node); |
| 2888 Selector selector = elements.getSelector(identifier); | 2888 Selector selector = elements.getSelector(identifier); |
| 2889 TypeMask mask = inTreeData.typeOfSend(identifier); | 2889 TypeMask mask = inTreeData.typeOfSend(identifier.asSend()); |
| 2890 | 2890 |
| 2891 TypeInformation receiverType; | 2891 TypeInformation receiverType; |
| 2892 if (element != null && element.isInstanceMember) { | 2892 if (element != null && element.isInstanceMember) { |
| 2893 receiverType = thisType; | 2893 receiverType = thisType; |
| 2894 } else { | 2894 } else { |
| 2895 receiverType = types.dynamicType; | 2895 receiverType = types.dynamicType; |
| 2896 } | 2896 } |
| 2897 | 2897 |
| 2898 handlePlainAssignment(identifier, element, selector, mask, receiverType, | 2898 handlePlainAssignment(identifier, element, selector, mask, receiverType, |
| 2899 currentType, node.expression); | 2899 currentType, node.expression); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2930 Selector moveNextSelector = Selectors.moveNext; | 2930 Selector moveNextSelector = Selectors.moveNext; |
| 2931 TypeMask moveNextMask = inTreeData.typeOfIteratorMoveNext(node); | 2931 TypeMask moveNextMask = inTreeData.typeOfIteratorMoveNext(node); |
| 2932 | 2932 |
| 2933 TypeInformation iteratorType = handleDynamicSend(node, iteratorSelector, | 2933 TypeInformation iteratorType = handleDynamicSend(node, iteratorSelector, |
| 2934 iteratorMask, expressionType, new ArgumentsTypes.empty()); | 2934 iteratorMask, expressionType, new ArgumentsTypes.empty()); |
| 2935 | 2935 |
| 2936 return handleForInLoop(node, iteratorType, currentSelector, currentMask, | 2936 return handleForInLoop(node, iteratorType, currentSelector, currentMask, |
| 2937 moveNextSelector, moveNextMask); | 2937 moveNextSelector, moveNextMask); |
| 2938 } | 2938 } |
| 2939 } | 2939 } |
| OLD | NEW |