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 399b972928ecda0a83224c962eb0ffe009b31ef2..3fa61dd22b4d1e5d8f4f58f26164fa4398048d87 100644 |
--- a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart |
+++ b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart |
@@ -491,6 +491,21 @@ class StatementRewriter extends Transformer implements Pass { |
return node; |
} |
+ Expression visitApplyBuiltinMethod(ApplyBuiltinMethod node) { |
+ if (node.receiverIsNotNull) { |
+ _rewriteList(node.arguments); |
+ node.receiver = visitExpression(node.receiver); |
+ } else { |
+ // Impure expressions cannot be propagated across the method lookup, |
+ // because it throws when the receiver is null. |
+ inEmptyEnvironment(() { |
+ _rewriteList(node.arguments); |
+ }); |
+ node.receiver = visitExpression(node.receiver); |
+ } |
+ return node; |
+ } |
+ |
Expression visitInvokeMethodDirectly(InvokeMethodDirectly node) { |
_rewriteList(node.arguments); |
node.receiver = visitExpression(node.receiver); |