| Index: pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
|
| diff --git a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
|
| index 643aeb23c285b5a6e919b9dc0ff315188abad885..7b79cfd67b77b7e0adf254554efaefb6ae54b21d 100644
|
| --- a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
|
| +++ b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
|
| @@ -343,41 +343,38 @@ class StatementRewriter extends Transformer implements Pass {
|
| return node;
|
| }
|
|
|
| - Expression visitInvokeStatic(InvokeStatic node) {
|
| - // Process arguments right-to-left, the opposite of evaluation order.
|
| - for (int i = node.arguments.length - 1; i >= 0; --i) {
|
| - node.arguments[i] = visitExpression(node.arguments[i]);
|
| + /// Process nodes right-to-left, the opposite of evaluation order in the case
|
| + /// of argument lists..
|
| + void _rewriteList(List<Node> nodes) {
|
| + for (int i = nodes.length - 1; i >= 0; --i) {
|
| + nodes[i] = visitExpression(nodes[i]);
|
| }
|
| + }
|
| +
|
| + Expression visitInvokeStatic(InvokeStatic node) {
|
| + _rewriteList(node.arguments);
|
| return node;
|
| }
|
|
|
| Expression visitInvokeMethod(InvokeMethod node) {
|
| - for (int i = node.arguments.length - 1; i >= 0; --i) {
|
| - node.arguments[i] = visitExpression(node.arguments[i]);
|
| - }
|
| + _rewriteList(node.arguments);
|
| node.receiver = visitExpression(node.receiver);
|
| return node;
|
| }
|
|
|
| Expression visitInvokeMethodDirectly(InvokeMethodDirectly node) {
|
| - for (int i = node.arguments.length - 1; i >= 0; --i) {
|
| - node.arguments[i] = visitExpression(node.arguments[i]);
|
| - }
|
| + _rewriteList(node.arguments);
|
| node.receiver = visitExpression(node.receiver);
|
| return node;
|
| }
|
|
|
| Expression visitInvokeConstructor(InvokeConstructor node) {
|
| - for (int i = node.arguments.length - 1; i >= 0; --i) {
|
| - node.arguments[i] = visitExpression(node.arguments[i]);
|
| - }
|
| + _rewriteList(node.arguments);
|
| return node;
|
| }
|
|
|
| Expression visitConcatenateStrings(ConcatenateStrings node) {
|
| - for (int i = node.arguments.length - 1; i >= 0; --i) {
|
| - node.arguments[i] = visitExpression(node.arguments[i]);
|
| - }
|
| + _rewriteList(node.arguments);
|
| return node;
|
| }
|
|
|
| @@ -561,10 +558,7 @@ class StatementRewriter extends Transformer implements Pass {
|
| }
|
|
|
| Expression visitLiteralList(LiteralList node) {
|
| - // Process values right-to-left, the opposite of evaluation order.
|
| - for (int i = node.values.length - 1; i >= 0; --i) {
|
| - node.values[i] = visitExpression(node.values[i]);
|
| - }
|
| + _rewriteList(node.values);
|
| return node;
|
| }
|
|
|
| @@ -607,9 +601,7 @@ class StatementRewriter extends Transformer implements Pass {
|
| }
|
|
|
| Expression visitCreateInstance(CreateInstance node) {
|
| - for (int i = node.arguments.length - 1; i >= 0; --i) {
|
| - node.arguments[i] = visitExpression(node.arguments[i]);
|
| - }
|
| + _rewriteList(node.arguments);
|
| return node;
|
| }
|
|
|
| @@ -624,16 +616,12 @@ class StatementRewriter extends Transformer implements Pass {
|
| }
|
|
|
| Expression visitTypeExpression(TypeExpression node) {
|
| - for (int i = node.arguments.length - 1; i >= 0; --i) {
|
| - node.arguments[i] = visitExpression(node.arguments[i]);
|
| - }
|
| + _rewriteList(node.arguments);
|
| return node;
|
| }
|
|
|
| Expression visitCreateInvocationMirror(CreateInvocationMirror node) {
|
| - for (int i = node.arguments.length - 1; i >= 0; --i) {
|
| - node.arguments[i] = visitExpression(node.arguments[i]);
|
| - }
|
| + _rewriteList(node.arguments);
|
| return node;
|
| }
|
|
|
|
|