| 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 d5d1449537422b0fbfdc0230b71f4dfb65c776d4..8f0e85666c0f69773ef1daf68001d334d27bb93c 100644
|
| --- a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
|
| +++ b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
|
| @@ -362,6 +362,26 @@ class ApplyBuiltinOperator extends Expression {
|
| }
|
| }
|
|
|
| +class ApplyBuiltinMethod extends Expression {
|
| + BuiltinMethod method;
|
| + Expression receiver;
|
| + List<Expression> arguments;
|
| +
|
| + bool receiverIsNotNull;
|
| +
|
| + ApplyBuiltinMethod(this.method,
|
| + this.receiver,
|
| + this.arguments,
|
| + {this.receiverIsNotNull: false});
|
| +
|
| + accept(ExpressionVisitor visitor) {
|
| + return visitor.visitApplyBuiltinMethod(this);
|
| + }
|
| + accept1(ExpressionVisitor1 visitor, arg) {
|
| + return visitor.visitApplyBuiltinMethod(this, arg);
|
| + }
|
| +}
|
| +
|
| /// A conditional expression.
|
| class Conditional extends Expression {
|
| Expression condition;
|
| @@ -938,6 +958,7 @@ abstract class ExpressionVisitor<E> {
|
| E visitCreateInvocationMirror(CreateInvocationMirror node);
|
| E visitInterceptor(Interceptor node);
|
| E visitApplyBuiltinOperator(ApplyBuiltinOperator node);
|
| + E visitApplyBuiltinMethod(ApplyBuiltinMethod node);
|
| E visitForeignExpression(ForeignExpression node);
|
| E visitGetLength(GetLength node);
|
| E visitGetIndex(GetIndex node);
|
| @@ -974,6 +995,7 @@ abstract class ExpressionVisitor1<E, A> {
|
| E visitCreateInvocationMirror(CreateInvocationMirror node, A arg);
|
| E visitInterceptor(Interceptor node, A arg);
|
| E visitApplyBuiltinOperator(ApplyBuiltinOperator node, A arg);
|
| + E visitApplyBuiltinMethod(ApplyBuiltinMethod node, A arg);
|
| E visitForeignExpression(ForeignExpression node, A arg);
|
| E visitGetLength(GetLength node, A arg);
|
| E visitGetIndex(GetIndex node, A arg);
|
| @@ -1187,6 +1209,11 @@ abstract class RecursiveVisitor implements StatementVisitor, ExpressionVisitor {
|
| node.arguments.forEach(visitExpression);
|
| }
|
|
|
| + visitApplyBuiltinMethod(ApplyBuiltinMethod node) {
|
| + visitExpression(node.receiver);
|
| + node.arguments.forEach(visitExpression);
|
| + }
|
| +
|
| visitInterceptor(Interceptor node) {
|
| visitExpression(node.input);
|
| }
|
| @@ -1436,6 +1463,12 @@ class RecursiveTransformer extends Transformer {
|
| return node;
|
| }
|
|
|
| + visitApplyBuiltinMethod(ApplyBuiltinMethod node) {
|
| + node.receiver = visitExpression(node.receiver);
|
| + _replaceExpressions(node.arguments);
|
| + return node;
|
| + }
|
| +
|
| visitInterceptor(Interceptor node) {
|
| node.input = visitExpression(node.input);
|
| return node;
|
|
|