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 import '../common_elements.dart' show CommonElements; | 5 import '../common_elements.dart' show CommonElements; |
6 import '../elements/elements.dart'; | 6 import '../elements/elements.dart'; |
7 import '../elements/entities.dart'; | 7 import '../elements/entities.dart'; |
8 import '../native/native.dart' as native; | 8 import '../native/native.dart' as native; |
9 import '../types/types.dart'; | 9 import '../types/types.dart'; |
10 import '../universe/selector.dart' show Selector; | 10 import '../universe/selector.dart' show Selector; |
11 import '../world.dart' show ClosedWorld; | 11 import '../world.dart' show ClosedWorld; |
12 | 12 |
13 class TypeMaskFactory { | 13 class TypeMaskFactory { |
14 static TypeMask inferredReturnTypeForElement( | 14 static TypeMask inferredReturnTypeForElement( |
15 MethodElement element, GlobalTypeInferenceResults results) { | 15 MethodElement element, GlobalTypeInferenceResults results) { |
16 return results.resultOfMember(element).returnType ?? | 16 return results.resultOfMember(element).returnType ?? |
17 results.closedWorld.commonMasks.dynamicType; | 17 results.closedWorld.commonMasks.dynamicType; |
18 } | 18 } |
19 | 19 |
20 static TypeMask inferredTypeForMember( | 20 static TypeMask inferredTypeForMember( |
21 MemberEntity element, GlobalTypeInferenceResults results) { | 21 MemberEntity element, GlobalTypeInferenceResults results) { |
22 // TODO(johnniwinther): Support inferred types for member entities. | 22 // TODO(redemption): Support inferred types for member entities. |
23 if (element is! MemberElement) { | 23 if (element is! MemberElement) { |
24 return results.closedWorld.commonMasks.dynamicType; | 24 return results.closedWorld.commonMasks.dynamicType; |
25 } | 25 } |
26 return results.resultOfMember(element).type ?? | 26 return results.resultOfMember(element).type ?? |
27 results.closedWorld.commonMasks.dynamicType; | 27 results.closedWorld.commonMasks.dynamicType; |
28 } | 28 } |
29 | 29 |
30 static TypeMask inferredTypeForParameter( | 30 static TypeMask inferredTypeForParameter( |
31 ParameterElement element, GlobalTypeInferenceResults results) { | 31 ParameterElement element, GlobalTypeInferenceResults results) { |
32 return results.resultOfParameter(element).type ?? | 32 return results.resultOfParameter(element).type ?? |
(...skipping 28 matching lines...) Expand all Loading... |
61 return new TypeMask.nonNullSubtype(type.element, closedWorld); | 61 return new TypeMask.nonNullSubtype(type.element, closedWorld); |
62 } | 62 } |
63 | 63 |
64 TypeMask result = typesReturned | 64 TypeMask result = typesReturned |
65 .map(fromNativeType) | 65 .map(fromNativeType) |
66 .reduce((t1, t2) => t1.union(t2, closedWorld)); | 66 .reduce((t1, t2) => t1.union(t2, closedWorld)); |
67 assert(!result.isEmpty); | 67 assert(!result.isEmpty); |
68 return result; | 68 return result; |
69 } | 69 } |
70 } | 70 } |
OLD | NEW |