| 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 inferrer_visitor; | 5 library locals_handler; |
| 6 | 6 |
| 7 import 'dart:collection' show IterableMixin; | 7 import 'dart:collection' show IterableMixin; |
| 8 | 8 |
| 9 import '../common.dart'; | |
| 10 import '../options.dart' show CompilerOptions; | 9 import '../options.dart' show CompilerOptions; |
| 11 import '../compiler.dart' show Compiler; | |
| 12 import '../constants/constant_system.dart'; | |
| 13 import '../constants/expressions.dart'; | |
| 14 import '../elements/resolution_types.dart'; | |
| 15 import '../elements/elements.dart'; | 10 import '../elements/elements.dart'; |
| 16 import '../resolution/operators.dart'; | |
| 17 import '../resolution/semantic_visitor.dart'; | |
| 18 import '../resolution/tree_elements.dart' show TreeElements; | |
| 19 import '../tree/tree.dart'; | 11 import '../tree/tree.dart'; |
| 20 import '../types/constants.dart' show computeTypeMask; | |
| 21 import '../types/types.dart' show TypeMask; | |
| 22 import '../universe/call_structure.dart' show CallStructure; | |
| 23 import '../universe/selector.dart' show Selector; | |
| 24 import '../util/util.dart'; | 12 import '../util/util.dart'; |
| 25 import '../world.dart' show ClosedWorld; | |
| 26 import 'inferrer_engine.dart'; | 13 import 'inferrer_engine.dart'; |
| 27 import 'type_graph_nodes.dart'; | 14 import 'type_graph_nodes.dart'; |
| 28 import 'type_system.dart'; | 15 import 'type_system.dart'; |
| 29 | 16 |
| 30 /** | 17 /** |
| 31 * A variable scope holds types for variables. It has a link to a | 18 * A variable scope holds types for variables. It has a link to a |
| 32 * parent scope, but never changes the types in that parent. Instead, | 19 * parent scope, but never changes the types in that parent. Instead, |
| 33 * updates to locals of a parent scope are put in the current scope. | 20 * updates to locals of a parent scope are put in the current scope. |
| 34 * The inferrer makes sure updates get merged into the parent scope, | 21 * The inferrer makes sure updates get merged into the parent scope, |
| 35 * once the control flow block has been visited. | 22 * once the control flow block has been visited. |
| (...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 if (newType != type) { | 531 if (newType != type) { |
| 545 locals[variable] = newType; | 532 locals[variable] = newType; |
| 546 } | 533 } |
| 547 }); | 534 }); |
| 548 } | 535 } |
| 549 | 536 |
| 550 void updateField(Element element, TypeInformation type) { | 537 void updateField(Element element, TypeInformation type) { |
| 551 fieldScope.updateField(element, type); | 538 fieldScope.updateField(element, type); |
| 552 } | 539 } |
| 553 } | 540 } |
| OLD | NEW |