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, ClosureScope; | 7 import '../closure.dart' show |
8 import '../constants/values.dart' show ConstantValue, IntConstantValue; | 8 ClosureClassMap, |
9 import '../cps_ir/cps_ir_nodes.dart' as cps_ir show Node; | 9 ClosureScope; |
10 import '../dart_types.dart' | 10 import '../compiler.dart' show |
11 show DartType, InterfaceType, FunctionType, TypeKind; | 11 Compiler; |
| 12 import '../constants/values.dart' show |
| 13 ConstantValue, |
| 14 IntConstantValue; |
| 15 import '../cps_ir/cps_ir_nodes.dart' as cps_ir show |
| 16 Node; |
| 17 import '../dart_types.dart' show |
| 18 DartType, |
| 19 FunctionType, |
| 20 InterfaceType, |
| 21 TypeKind; |
| 22 import '../diagnostics/spannable.dart' show |
| 23 Spannable; |
12 import '../elements/elements.dart'; | 24 import '../elements/elements.dart'; |
13 import '../js_backend/js_backend.dart' as js; | 25 import '../js_backend/js_backend.dart' as js; |
14 import '../native/native.dart' as native; | 26 import '../native/native.dart' as native; |
15 import '../resolution/resolution.dart' show TreeElements; | 27 import '../resolution/resolution.dart' show |
| 28 TreeElements; |
16 import '../resolution/operators.dart' as op; | 29 import '../resolution/operators.dart' as op; |
17 import '../tree/tree.dart' as ast; | 30 import '../tree/tree.dart' as ast; |
18 import '../types/types.dart' | 31 import '../types/types.dart' show |
19 show TypesInferrer, FlatTypeMask, TypeMask, ContainerTypeMask, | 32 TypesInferrer, |
20 ElementTypeMask, ValueTypeMask, TypeSystem, MinimalInferrerEngine; | 33 FlatTypeMask, |
21 import '../util/util.dart' show Link, Spannable, Setlet; | 34 TypeMask, |
| 35 ContainerTypeMask, |
| 36 ElementTypeMask, |
| 37 ValueTypeMask, |
| 38 TypeSystem, |
| 39 MinimalInferrerEngine; |
| 40 import '../util/util.dart' show |
| 41 Link, |
| 42 Setlet; |
| 43 import '../universe/universe.dart' show |
| 44 CallStructure, |
| 45 Selector, |
| 46 SideEffects; |
22 import '../world.dart' show ClassWorld; | 47 import '../world.dart' show ClassWorld; |
| 48 |
23 import 'inferrer_visitor.dart'; | 49 import 'inferrer_visitor.dart'; |
24 | 50 |
25 // BUG(8802): There's a bug in the analyzer that makes the re-export | |
26 // of Selector from dart2jslib.dart fail. For now, we work around that | |
27 // by importing universe.dart explicitly and disabling the re-export. | |
28 import '../dart2jslib.dart' hide Selector, TypedSelector; | |
29 import '../universe/universe.dart' | |
30 show Selector, SideEffects, TypedSelector, CallStructure; | |
31 | |
32 /** | 51 /** |
33 * An implementation of [TypeSystem] for [TypeMask]. | 52 * An implementation of [TypeSystem] for [TypeMask]. |
34 */ | 53 */ |
35 class TypeMaskSystem implements TypeSystem<TypeMask> { | 54 class TypeMaskSystem implements TypeSystem<TypeMask> { |
36 final Compiler compiler; | 55 final Compiler compiler; |
37 final ClassWorld classWorld; | 56 final ClassWorld classWorld; |
38 TypeMaskSystem(Compiler compiler) | 57 TypeMaskSystem(Compiler compiler) |
39 : this.compiler = compiler, | 58 : this.compiler = compiler, |
40 this.classWorld = compiler.world; | 59 this.classWorld = compiler.world; |
41 | 60 |
(...skipping 2239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2281 TypeMask moveNextMask = elements.getMoveNextTypeMask(node); | 2300 TypeMask moveNextMask = elements.getMoveNextTypeMask(node); |
2282 | 2301 |
2283 T iteratorType = handleDynamicSend( | 2302 T iteratorType = handleDynamicSend( |
2284 node, iteratorSelector, iteratorMask, expressionType, | 2303 node, iteratorSelector, iteratorMask, expressionType, |
2285 new ArgumentsTypes<T>.empty()); | 2304 new ArgumentsTypes<T>.empty()); |
2286 | 2305 |
2287 return handleForInLoop(node, iteratorType, currentSelector, currentMask, | 2306 return handleForInLoop(node, iteratorType, currentSelector, currentMask, |
2288 moveNextSelector, moveNextMask); | 2307 moveNextSelector, moveNextMask); |
2289 } | 2308 } |
2290 } | 2309 } |
OLD | NEW |