| 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 1f5fea0e4ab43f379a60c2e3fe484ec279471075..691e206adfad569c27630d3e1cb4b29f5f85bf1f 100644
|
| --- a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
|
| +++ b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
|
| @@ -347,8 +347,17 @@ class StatementRewriter extends Transformer implements Pass {
|
| }
|
|
|
| Expression visitInvokeMethod(InvokeMethod node) {
|
| - _rewriteList(node.arguments);
|
| - node.receiver = visitExpression(node.receiver);
|
| + 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;
|
| }
|
|
|
|
|