| 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 |