Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1303)

Unified Diff: pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart

Issue 763993002: Extract BuilderContext from ASTEmitter (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
index ac8e464d82c6eb6cb35e381b1f5281c11a51bc42..ca3253c994529ff788d7cd81c407b33be2b3d97e 100644
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
@@ -42,6 +42,7 @@ abstract class Node {
*/
abstract class Expression extends Node {
accept(ExpressionVisitor v);
+ accept1(ExpressionVisitor1 v, arg);
/// Temporary variable used by [StatementRewriter].
/// If set to true, this expression has already had enclosing assignments
@@ -55,6 +56,7 @@ abstract class Statement extends Node {
Statement get next;
void set next(Statement s);
accept(StatementVisitor v);
+ accept1(StatementVisitor1 v, arg);
}
/**
@@ -106,6 +108,7 @@ class Variable extends Expression {
}
accept(ExpressionVisitor visitor) => visitor.visitVariable(this);
+ accept1(ExpressionVisitor1 visitor, arg) => visitor.visitVariable(this, arg);
}
/**
@@ -129,6 +132,9 @@ class InvokeStatic extends Expression implements Invoke {
InvokeStatic(this.target, this.selector, this.arguments);
accept(ExpressionVisitor visitor) => visitor.visitInvokeStatic(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitInvokeStatic(this, arg);
+ }
}
/**
@@ -147,6 +153,9 @@ class InvokeMethod extends Expression implements Invoke {
}
accept(ExpressionVisitor visitor) => visitor.visitInvokeMethod(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitInvokeMethod(this, arg);
+ }
}
class InvokeSuperMethod extends Expression implements Invoke {
@@ -156,6 +165,9 @@ class InvokeSuperMethod extends Expression implements Invoke {
InvokeSuperMethod(this.selector, this.arguments);
accept(ExpressionVisitor visitor) => visitor.visitInvokeSuperMethod(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitInvokeSuperMethod(this, arg);
+ }
}
/**
@@ -174,6 +186,9 @@ class InvokeConstructor extends Expression implements Invoke {
ClassElement get targetClass => target.enclosingElement;
accept(ExpressionVisitor visitor) => visitor.visitInvokeConstructor(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitInvokeConstructor(this, arg);
+ }
}
/// Calls [toString] on each argument and concatenates the results.
@@ -184,6 +199,9 @@ class ConcatenateStrings extends Expression {
ConcatenateStrings(this.arguments, [this.constant]);
accept(ExpressionVisitor visitor) => visitor.visitConcatenateStrings(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitConcatenateStrings(this, arg);
+ }
}
/**
@@ -198,12 +216,14 @@ class Constant extends Expression {
: expression = new PrimitiveConstantExpression(primitiveValue);
accept(ExpressionVisitor visitor) => visitor.visitConstant(this);
+ accept1(ExpressionVisitor1 visitor, arg) => visitor.visitConstant(this, arg);
values.ConstantValue get value => expression.value;
}
class This extends Expression {
accept(ExpressionVisitor visitor) => visitor.visitThis(this);
+ accept1(ExpressionVisitor1 visitor, arg) => visitor.visitThis(this, arg);
}
class ReifyTypeVar extends Expression {
@@ -212,6 +232,9 @@ class ReifyTypeVar extends Expression {
ReifyTypeVar(this.typeVariable);
accept(ExpressionVisitor visitor) => visitor.visitReifyTypeVar(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitReifyTypeVar(this, arg);
+ }
}
class LiteralList extends Expression {
@@ -221,6 +244,9 @@ class LiteralList extends Expression {
LiteralList(this.type, this.values);
accept(ExpressionVisitor visitor) => visitor.visitLiteralList(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitLiteralList(this, arg);
+ }
}
class LiteralMapEntry {
@@ -237,6 +263,9 @@ class LiteralMap extends Expression {
LiteralMap(this.type, this.entries);
accept(ExpressionVisitor visitor) => visitor.visitLiteralMap(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitLiteralMap(this, arg);
+ }
}
class TypeOperator extends Expression {
@@ -247,6 +276,9 @@ class TypeOperator extends Expression {
TypeOperator(this.receiver, this.type, {bool this.isTypeTest});
accept(ExpressionVisitor visitor) => visitor.visitTypeOperator(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitTypeOperator(this, arg);
+ }
String get operator => isTypeTest ? 'is' : 'as';
}
@@ -260,6 +292,9 @@ class Conditional extends Expression {
Conditional(this.condition, this.thenExpression, this.elseExpression);
accept(ExpressionVisitor visitor) => visitor.visitConditional(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitConditional(this, arg);
+ }
}
/// An && or || expression. The operator is internally represented as a boolean
@@ -276,6 +311,9 @@ class LogicalOperator extends Expression {
String get operator => isAnd ? '&&' : '||';
accept(ExpressionVisitor visitor) => visitor.visitLogicalOperator(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitLogicalOperator(this, arg);
+ }
}
/// Logical negation.
@@ -285,6 +323,7 @@ class Not extends Expression {
Not(this.operand);
accept(ExpressionVisitor visitor) => visitor.visitNot(this);
+ accept1(ExpressionVisitor1 visitor, arg) => visitor.visitNot(this, arg);
}
class FunctionExpression extends Expression {
@@ -295,6 +334,9 @@ class FunctionExpression extends Expression {
}
accept(ExpressionVisitor visitor) => visitor.visitFunctionExpression(this);
+ accept1(ExpressionVisitor1 visitor, arg) {
+ return visitor.visitFunctionExpression(this, arg);
+ }
}
/// Declares a local function.
@@ -312,6 +354,9 @@ class FunctionDeclaration extends Statement {
}
accept(StatementVisitor visitor) => visitor.visitFunctionDeclaration(this);
+ accept1(StatementVisitor1 visitor, arg) {
+ return visitor.visitFunctionDeclaration(this, arg);
+ }
}
/// A [LabeledStatement] or [WhileTrue] or [WhileCondition].
@@ -335,6 +380,9 @@ class LabeledStatement extends JumpTarget {
}
accept(StatementVisitor visitor) => visitor.visitLabeledStatement(this);
+ accept1(StatementVisitor1 visitor, arg) {
+ return visitor.visitLabeledStatement(this, arg);
+ }
}
/// A [WhileTrue] or [WhileCondition] loop.
@@ -357,6 +405,7 @@ class WhileTrue extends Loop {
void set next(Statement s) => throw 'UNREACHABLE';
accept(StatementVisitor visitor) => visitor.visitWhileTrue(this);
+ accept1(StatementVisitor1 visitor, arg) => visitor.visitWhileTrue(this, arg);
}
/**
@@ -382,6 +431,9 @@ class WhileCondition extends Loop {
}
accept(StatementVisitor visitor) => visitor.visitWhileCondition(this);
+ accept1(StatementVisitor1 visitor, arg) {
+ return visitor.visitWhileCondition(this, arg);
+ }
}
/// A [Break] or [Continue] statement.
@@ -404,6 +456,7 @@ class Break extends Jump {
}
accept(StatementVisitor visitor) => visitor.visitBreak(this);
+ accept1(StatementVisitor1 visitor, arg) => visitor.visitBreak(this, arg);
}
/**
@@ -421,6 +474,7 @@ class Continue extends Jump {
}
accept(StatementVisitor visitor) => visitor.visitContinue(this);
+ accept1(StatementVisitor1 visitor, arg) => visitor.visitContinue(this, arg);
}
/**
@@ -447,6 +501,7 @@ class Assign extends Statement {
bool get hasExactlyOneUse => variable.readCount == 1;
accept(StatementVisitor visitor) => visitor.visitAssign(this);
+ accept1(StatementVisitor1 visitor, arg) => visitor.visitAssign(this, arg);
}
/**
@@ -466,6 +521,7 @@ class Return extends Statement {
Return(this.value);
accept(StatementVisitor visitor) => visitor.visitReturn(this);
+ accept1(StatementVisitor1 visitor, arg) => visitor.visitReturn(this, arg);
}
/**
@@ -482,6 +538,7 @@ class If extends Statement {
If(this.condition, this.thenStatement, this.elseStatement);
accept(StatementVisitor visitor) => visitor.visitIf(this);
+ accept1(StatementVisitor1 visitor, arg) => visitor.visitIf(this, arg);
}
class ExpressionStatement extends Statement {
@@ -491,6 +548,9 @@ class ExpressionStatement extends Statement {
ExpressionStatement(this.expression, this.next);
accept(StatementVisitor visitor) => visitor.visitExpressionStatement(this);
+ accept1(StatementVisitor1 visitor, arg) {
+ return visitor.visitExpressionStatement(this, arg);
+ }
}
abstract class ExecutableDefinition {
@@ -546,6 +606,26 @@ abstract class ExpressionVisitor<E> {
E visitFunctionExpression(FunctionExpression node);
}
+abstract class ExpressionVisitor1<E, A> {
+ E visitExpression(Expression e, A arg) => e.accept1(this, arg);
+ E visitVariable(Variable node, A arg);
+ E visitInvokeStatic(InvokeStatic node, A arg);
+ E visitInvokeMethod(InvokeMethod node, A arg);
+ E visitInvokeSuperMethod(InvokeSuperMethod node, A arg);
+ E visitInvokeConstructor(InvokeConstructor node, A arg);
+ E visitConcatenateStrings(ConcatenateStrings node, A arg);
+ E visitConstant(Constant node, A arg);
+ E visitThis(This node, A arg);
+ E visitReifyTypeVar(ReifyTypeVar node, A arg);
+ E visitConditional(Conditional node, A arg);
+ E visitLogicalOperator(LogicalOperator node, A arg);
+ E visitNot(Not node, A arg);
+ E visitLiteralList(LiteralList node, A arg);
+ E visitLiteralMap(LiteralMap node, A arg);
+ E visitTypeOperator(TypeOperator node, A arg);
+ E visitFunctionExpression(FunctionExpression node, A arg);
+}
+
abstract class StatementVisitor<S> {
S visitStatement(Statement s) => s.accept(this);
S visitLabeledStatement(LabeledStatement node);
@@ -560,12 +640,32 @@ abstract class StatementVisitor<S> {
S visitExpressionStatement(ExpressionStatement node);
}
+abstract class StatementVisitor1<S, A> {
+ S visitStatement(Statement s, A arg) => s.accept1(this, arg);
+ S visitLabeledStatement(LabeledStatement node, A arg);
+ S visitAssign(Assign node, A arg);
+ S visitReturn(Return node, A arg);
+ S visitBreak(Break node, A arg);
+ S visitContinue(Continue node, A arg);
+ S visitIf(If node, A arg);
+ S visitWhileTrue(WhileTrue node, A arg);
+ S visitWhileCondition(WhileCondition node, A arg);
+ S visitFunctionDeclaration(FunctionDeclaration node, A arg);
+ S visitExpressionStatement(ExpressionStatement node, A arg);
+}
+
abstract class Visitor<S, E> implements ExpressionVisitor<E>,
StatementVisitor<S> {
E visitExpression(Expression e) => e.accept(this);
S visitStatement(Statement s) => s.accept(this);
}
+abstract class Visitor1<S, E, A> implements ExpressionVisitor1<E, A>,
+ StatementVisitor1<S, A> {
+ E visitExpression(Expression e, A arg) => e.accept1(this, arg);
+ S visitStatement(Statement s, A arg) => s.accept1(this, arg);
+}
+
class RecursiveVisitor extends Visitor {
visitFunctionDefinition(FunctionDefinition node) {
visitStatement(node.body);
« no previous file with comments | « pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart ('k') | pkg/docgen/lib/src/models/model_helpers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698