| 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 // TODO(jmesserly): import from its own package | 5 // TODO(jmesserly): import from its own package |
| 6 import '../js/js_ast.dart'; | 6 import '../js/js_ast.dart'; |
| 7 import '../js/precedence.dart'; | 7 import '../js/precedence.dart'; |
| 8 | 8 |
| 9 import 'js_names.dart' show TemporaryId; | 9 import 'js_names.dart' show TemporaryId; |
| 10 | 10 |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 | 267 |
| 268 var newBody = new Expression.binary([assign]..addAll(body), ','); | 268 var newBody = new Expression.binary([assign]..addAll(body), ','); |
| 269 Binary comma = new Template(null, newBody).safeCreate({name: left}); | 269 Binary comma = new Template(null, newBody).safeCreate({name: left}); |
| 270 return new MetaLet(vars, comma.commaToExpressionList(), | 270 return new MetaLet(vars, comma.commaToExpressionList(), |
| 271 statelessResult: statelessResult); | 271 statelessResult: statelessResult); |
| 272 } | 272 } |
| 273 } | 273 } |
| 274 | 274 |
| 275 class _VariableUseCounter extends BaseVisitor { | 275 class _VariableUseCounter extends BaseVisitor { |
| 276 final counts = <String, int>{}; | 276 final counts = <String, int>{}; |
| 277 @override visitInterpolatedExpression(InterpolatedExpression node) { | 277 @override |
| 278 visitInterpolatedExpression(InterpolatedExpression node) { |
| 278 int n = counts[node.nameOrPosition]; | 279 int n = counts[node.nameOrPosition]; |
| 279 counts[node.nameOrPosition] = n == null ? 1 : n + 1; | 280 counts[node.nameOrPosition] = n == null ? 1 : n + 1; |
| 280 } | 281 } |
| 281 } | 282 } |
| 282 | 283 |
| 283 class _IdentFinder extends BaseVisitor { | 284 class _IdentFinder extends BaseVisitor { |
| 284 final String name; | 285 final String name; |
| 285 bool found = false; | 286 bool found = false; |
| 286 _IdentFinder(this.name); | 287 _IdentFinder(this.name); |
| 287 | 288 |
| 288 @override visitIdentifier(Identifier node) { | 289 @override |
| 290 visitIdentifier(Identifier node) { |
| 289 if (node.name == name) found = true; | 291 if (node.name == name) found = true; |
| 290 } | 292 } |
| 291 | 293 |
| 292 @override visitNode(Node node) { | 294 @override |
| 295 visitNode(Node node) { |
| 293 if (!found) super.visitNode(node); | 296 if (!found) super.visitNode(node); |
| 294 } | 297 } |
| 295 } | 298 } |
| 296 | 299 |
| 297 class _YieldFinder extends BaseVisitor { | 300 class _YieldFinder extends BaseVisitor { |
| 298 bool hasYield = false; | 301 bool hasYield = false; |
| 299 bool hasThis = false; | 302 bool hasThis = false; |
| 300 bool _nestedFunction = false; | 303 bool _nestedFunction = false; |
| 301 @override visitThis(This node) { | 304 @override |
| 305 visitThis(This node) { |
| 302 hasThis = true; | 306 hasThis = true; |
| 303 } | 307 } |
| 304 | 308 |
| 305 @override visitFunctionExpression(FunctionExpression node) { | 309 @override |
| 310 visitFunctionExpression(FunctionExpression node) { |
| 306 var savedNested = _nestedFunction; | 311 var savedNested = _nestedFunction; |
| 307 _nestedFunction = true; | 312 _nestedFunction = true; |
| 308 super.visitFunctionExpression(node); | 313 super.visitFunctionExpression(node); |
| 309 _nestedFunction = savedNested; | 314 _nestedFunction = savedNested; |
| 310 } | 315 } |
| 311 | 316 |
| 312 @override visitYield(Yield node) { | 317 @override |
| 318 visitYield(Yield node) { |
| 313 if (!_nestedFunction) hasYield = true; | 319 if (!_nestedFunction) hasYield = true; |
| 314 } | 320 } |
| 315 | 321 |
| 316 @override visitNode(Node node) { | 322 @override |
| 323 visitNode(Node node) { |
| 317 if (!hasYield) super.visitNode(node); | 324 if (!hasYield) super.visitNode(node); |
| 318 } | 325 } |
| 319 } | 326 } |
| OLD | NEW |