| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'optimization.dart' show Pass; | 5 import 'optimization.dart' show Pass; |
| 6 import '../tree_ir_nodes.dart'; | 6 import '../tree_ir_nodes.dart'; |
| 7 | 7 |
| 8 /// Pulls assignment expressions to the top of the function body so they can be | 8 /// Pulls assignment expressions to the top of the function body so they can be |
| 9 /// translated into declaration-site variable initializaters. | 9 /// translated into declaration-site variable initializaters. |
| 10 /// | 10 /// |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 entry.key = visitExpression(entry.key); | 240 entry.key = visitExpression(entry.key); |
| 241 if (seenImpure) return node; | 241 if (seenImpure) return node; |
| 242 entry.value = visitExpression(entry.value); | 242 entry.value = visitExpression(entry.value); |
| 243 if (seenImpure) return node; | 243 if (seenImpure) return node; |
| 244 } | 244 } |
| 245 if (node.type != null) seenImpure = true; // Type casts can throw. | 245 if (node.type != null) seenImpure = true; // Type casts can throw. |
| 246 return node; | 246 return node; |
| 247 } | 247 } |
| 248 | 248 |
| 249 Expression visitTypeOperator(TypeOperator node) { | 249 Expression visitTypeOperator(TypeOperator node) { |
| 250 node.value = visitExpression(node.value); | 250 node.receiver = visitExpression(node.receiver); |
| 251 if (seenImpure) return node; | |
| 252 rewriteList(node.typeArguments); | |
| 253 if (!node.isTypeTest) seenImpure = true; // Type cast can throw. | 251 if (!node.isTypeTest) seenImpure = true; // Type cast can throw. |
| 254 return node; | 252 return node; |
| 255 } | 253 } |
| 256 | 254 |
| 257 void visitInnerFunction(FunctionDefinition node) { | 255 void visitInnerFunction(FunctionDefinition node) { |
| 258 node.body = new BodyRewriter().rewriteBody(node.parameters, node.body); | 256 node.body = new BodyRewriter().rewriteBody(node.parameters, node.body); |
| 259 } | 257 } |
| 260 | 258 |
| 261 Expression visitFunctionExpression(FunctionExpression node) { | 259 Expression visitFunctionExpression(FunctionExpression node) { |
| 262 visitInnerFunction(node.definition); | 260 visitInnerFunction(node.definition); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 | 324 |
| 327 Expression visitVariableUse(VariableUse node) { | 325 Expression visitVariableUse(VariableUse node) { |
| 328 return node; | 326 return node; |
| 329 } | 327 } |
| 330 | 328 |
| 331 Expression visitCreateInvocationMirror(CreateInvocationMirror node) { | 329 Expression visitCreateInvocationMirror(CreateInvocationMirror node) { |
| 332 rewriteList(node.arguments); | 330 rewriteList(node.arguments); |
| 333 return node; | 331 return node; |
| 334 } | 332 } |
| 335 } | 333 } |
| OLD | NEW |