Chromium Code Reviews| Index: pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart |
| diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart |
| index 9ad19f0ca69c684832b87e506b750b77f62b5028..f4a26712472ae3c2705cbdeb887d45db32f7ca60 100644 |
| --- a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart |
| +++ b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart |
| @@ -12,6 +12,7 @@ import '../dart2jslib.dart' as dart2js show invariant; |
| import '../elements/elements.dart'; |
| import '../universe/universe.dart' show Selector, SelectorKind; |
| import '../dart_types.dart' show DartType, GenericType; |
| +import 'package:compiler/src/js_backend/codegen/unsugar.dart'; |
|
sigurdm
2014/11/20 12:47:28
Package import
|
| abstract class Node { |
| static int hashCount = 0; |
| @@ -580,6 +581,8 @@ List<Reference<Primitive>> _referenceList(Iterable<Primitive> definitions) { |
| } |
| abstract class Visitor<T> { |
| + const Visitor(); |
| + |
| T visit(Node node) => node.accept(this); |
| // Abstract classes. |
| T visitNode(Node node) => null; |
| @@ -618,11 +621,16 @@ abstract class Visitor<T> { |
| // Conditions. |
| T visitIsTrue(IsTrue node) => visitCondition(node); |
| + |
| + // JavaScript specific nodes. |
| + T visitBoolify(Boolify node) => visitIsTrue(node); |
| } |
| /// Recursively visits the entire CPS term, and calls abstract `process*` |
| /// (i.e. `processLetPrim`) functions in pre-order. |
| abstract class RecursiveVisitor extends Visitor { |
|
sigurdm
2014/11/20 12:47:28
Should implement
T visitBoolify(Boolify node) =>
|
| + const RecursiveVisitor(); |
| + |
| // Ensures that RecursiveVisitor contains overrides for all relevant nodes. |
| // As a rule of thumb, nodes with structure to traverse should be overridden |
| // with the appropriate visits in this class (for example, visitLetCont), |