| Index: dart/lib/compiler/implementation/tree/nodes.dart
|
| diff --git a/dart/lib/compiler/implementation/tree/nodes.dart b/dart/lib/compiler/implementation/tree/nodes.dart
|
| index fff93e450b05f3ac76f218898bbfbd2c97a66121..f9524106f89e5f18d08156f95b65f91b23766122 100644
|
| --- a/dart/lib/compiler/implementation/tree/nodes.dart
|
| +++ b/dart/lib/compiler/implementation/tree/nodes.dart
|
| @@ -3,56 +3,72 @@
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| abstract class Visitor<R> {
|
| - R visitBlock(Block node);
|
| - R visitBreakStatement(BreakStatement node);
|
| - R visitCascade(Cascade node);
|
| - R visitCascadeReceiver(CascadeReceiver node);
|
| - R visitCaseMatch(CaseMatch node);
|
| - R visitCatchBlock(CatchBlock node);
|
| - R visitClassNode(ClassNode node);
|
| - R visitConditional(Conditional node);
|
| - R visitContinueStatement(ContinueStatement node);
|
| - R visitDoWhile(DoWhile node);
|
| - R visitEmptyStatement(EmptyStatement node);
|
| - R visitExpressionStatement(ExpressionStatement node);
|
| - R visitFor(For node);
|
| - R visitForIn(ForIn node);
|
| - R visitFunctionDeclaration(FunctionDeclaration node);
|
| - R visitFunctionExpression(FunctionExpression node);
|
| - R visitIdentifier(Identifier node);
|
| - R visitIf(If node);
|
| - R visitLabel(Label node);
|
| - R visitLabeledStatement(LabeledStatement node);
|
| - R visitLiteralBool(LiteralBool node);
|
| - R visitLiteralDouble(LiteralDouble node);
|
| - R visitLiteralInt(LiteralInt node);
|
| - R visitLiteralList(LiteralList node);
|
| - R visitLiteralMap(LiteralMap node);
|
| - R visitLiteralMapEntry(LiteralMapEntry node);
|
| - R visitLiteralNull(LiteralNull node);
|
| - R visitLiteralString(LiteralString node);
|
| - R visitModifiers(Modifiers node);
|
| - R visitNamedArgument(NamedArgument node);
|
| - R visitNewExpression(NewExpression node);
|
| - R visitNodeList(NodeList node);
|
| - R visitOperator(Operator node);
|
| - R visitParenthesizedExpression(ParenthesizedExpression node);
|
| - R visitReturn(Return node);
|
| - R visitScriptTag(ScriptTag node);
|
| - R visitSend(Send node);
|
| - R visitSendSet(SendSet node);
|
| - R visitStringInterpolation(StringInterpolation node);
|
| - R visitStringInterpolationPart(StringInterpolationPart node);
|
| - R visitStringJuxtaposition(StringJuxtaposition node);
|
| - R visitSwitchCase(SwitchCase node);
|
| - R visitSwitchStatement(SwitchStatement node);
|
| - R visitThrow(Throw node);
|
| - R visitTryStatement(TryStatement node);
|
| - R visitTypeAnnotation(TypeAnnotation node);
|
| - R visitTypedef(Typedef node);
|
| - R visitTypeVariable(TypeVariable node);
|
| - R visitVariableDefinitions(VariableDefinitions node);
|
| - R visitWhile(While node);
|
| + const Visitor();
|
| +
|
| + abstract R visitNode(Node node);
|
| +
|
| + R visitBlock(Block node) => visitStatement(node);
|
| + R visitBreakStatement(BreakStatement node) => visitGotoStatement(node);
|
| + R visitCascade(Cascade node) => visitExpression(node);
|
| + R visitCascadeReceiver(CascadeReceiver node) => visitExpression(node);
|
| + R visitCaseMatch(CaseMatch node) => visitNode(node);
|
| + R visitCatchBlock(CatchBlock node) => visitNode(node);
|
| + R visitClassNode(ClassNode node) => visitNode(node);
|
| + R visitConditional(Conditional node) => visitExpression(node);
|
| + R visitContinueStatement(ContinueStatement node) => visitGotoStatement(node);
|
| + R visitDoWhile(DoWhile node) => visitLoop(node);
|
| + R visitEmptyStatement(EmptyStatement node) => visitStatement(node);
|
| + R visitExpression(Expression node) => visitNode(node);
|
| + R visitExpressionStatement(ExpressionStatement node) => visitStatement(node);
|
| + R visitFor(For node) => visitLoop(node);
|
| + R visitForIn(ForIn node) => visitLoop(node);
|
| + R visitFunctionDeclaration(FunctionDeclaration node) => visitStatement(node);
|
| + R visitFunctionExpression(FunctionExpression node) => visitExpression(node);
|
| + R visitGotoStatement(GotoStatement node) => visitStatement(node);
|
| + R visitIdentifier(Identifier node) => visitExpression(node);
|
| + R visitIf(If node) => visitStatement(node);
|
| + R visitLabel(Label node) => visitNode(node);
|
| + R visitLabeledStatement(LabeledStatement node) => visitStatement(node);
|
| + R visitLiteral(Literal node) => visitExpression(node);
|
| + R visitLiteralBool(LiteralBool node) => visitLiteral(node);
|
| + R visitLiteralDouble(LiteralDouble node) => visitLiteral(node);
|
| + R visitLiteralInt(LiteralInt node) => visitLiteral(node);
|
| + R visitLiteralList(LiteralList node) => visitExpression(node);
|
| + R visitLiteralMap(LiteralMap node) => visitExpression(node);
|
| + R visitLiteralMapEntry(LiteralMapEntry node) => visitNode(node);
|
| + R visitLiteralNull(LiteralNull node) => visitLiteral(node);
|
| + R visitLiteralString(LiteralString node) => visitStringNode(node);
|
| + R visitStringJuxtaposition(StringJuxtaposition node) => visitStringNode(node);
|
| + R visitLoop(Loop node) => visitStatement(node);
|
| + R visitModifiers(Modifiers node) => visitNode(node);
|
| + R visitNamedArgument(NamedArgument node) => visitExpression(node);
|
| + R visitNewExpression(NewExpression node) => visitExpression(node);
|
| + R visitNodeList(NodeList node) => visitNode(node);
|
| + R visitOperator(Operator node) => visitIdentifier(node);
|
| + R visitParenthesizedExpression(ParenthesizedExpression node) {
|
| + return visitExpression(node);
|
| + }
|
| + R visitPostfix(Postfix node) => visitNodeList(node);
|
| + R visitPrefix(Prefix node) => visitNodeList(node);
|
| + R visitReturn(Return node) => visitStatement(node);
|
| + R visitScriptTag(ScriptTag node) => visitNode(node);
|
| + R visitSend(Send node) => visitExpression(node);
|
| + R visitSendSet(SendSet node) => visitSend(node);
|
| + R visitStatement(Statement node) => visitNode(node);
|
| + R visitStringNode(StringNode node) => visitExpression(node);
|
| + R visitStringInterpolation(StringInterpolation node) => visitStringNode(node);
|
| + R visitStringInterpolationPart(StringInterpolationPart node) {
|
| + return visitNode(node);
|
| + }
|
| + R visitSwitchCase(SwitchCase node) => visitNode(node);
|
| + R visitSwitchStatement(SwitchStatement node) => visitStatement(node);
|
| + R visitThrow(Throw node) => visitStatement(node);
|
| + R visitTryStatement(TryStatement node) => visitStatement(node);
|
| + R visitTypeAnnotation(TypeAnnotation node) => visitNode(node);
|
| + R visitTypedef(Typedef node) => visitNode(node);
|
| + R visitTypeVariable(TypeVariable node) => visitNode(node);
|
| + R visitVariableDefinitions(VariableDefinitions node) => visitStatement(node);
|
| + R visitWhile(While node) => visitLoop(node);
|
| }
|
|
|
| Token firstBeginToken(Node first, Node second) {
|
| @@ -1872,7 +1888,7 @@ class Initializers {
|
| }
|
| }
|
|
|
| -class GetDartStringVisitor extends AbstractVisitor<DartString> {
|
| +class GetDartStringVisitor extends Visitor<DartString> {
|
| const GetDartStringVisitor();
|
| DartString visitNode(Node node) => null;
|
| DartString visitStringJuxtaposition(StringJuxtaposition node)
|
| @@ -1880,7 +1896,7 @@ class GetDartStringVisitor extends AbstractVisitor<DartString> {
|
| DartString visitLiteralString(LiteralString node) => node.dartString;
|
| }
|
|
|
| -class IsInterpolationVisitor extends AbstractVisitor<bool> {
|
| +class IsInterpolationVisitor extends Visitor<bool> {
|
| const IsInterpolationVisitor();
|
| bool visitNode(Node node) => false;
|
| bool visitStringInterpolation(StringInterpolation node) => true;
|
|
|