Chromium Code Reviews| Index: lib/src/js/printer.dart |
| diff --git a/lib/src/js/printer.dart b/lib/src/js/printer.dart |
| index bd8de3b40aa49c9bae41dc8051df78f5f84e9465..22186ebb47e79fe066916eb8f1941d02c269d9c7 100644 |
| --- a/lib/src/js/printer.dart |
| +++ b/lib/src/js/printer.dart |
| @@ -621,8 +621,17 @@ class Printer implements NodeVisitor { |
| } |
| visitDestructuredVariable(DestructuredVariable node) { |
|
Jennifer Messerly
2016/02/09 00:33:07
this code looks a lot like propertyNameOut. Can th
ochafik
2016/02/09 01:51:20
I agree in principle, but see the other comment: I
|
| - var hasName = node.name != null; |
| - if (hasName) visit(node.name); |
| + var name = node.name; |
| + var hasName = name != null; |
| + if (hasName) { |
| + if (name is LiteralString) { |
| + out("["); |
| + out(name.value); |
| + out("]"); |
| + } else { |
| + visit(name); |
| + } |
| + } |
| if (node.structure != null) { |
| if (hasName) { |
| out(":"); |
| @@ -639,6 +648,10 @@ class Printer implements NodeVisitor { |
| } |
| } |
| + visitSimpleBindingPattern(SimpleBindingPattern node) { |
| + visit(node.name); |
| + } |
| + |
| visitAssignment(Assignment assignment) { |
| visitNestedExpression(assignment.leftHandSide, LEFT_HAND_SIDE, |
| newInForInit: inForInit, |
| @@ -1585,13 +1598,18 @@ abstract class VariableDeclarationVisitor<T> extends BaseVisitor<T> { |
| _scanVariableBinding(VariableBinding d) { |
| if (d is Identifier) declare(d); |
| - if (d is RestParameter) _scanVariableBinding(d.parameter); |
| - else if (d is BindingPattern) { |
| - for (var v in d.variables) { |
| - if (v.name != null) declare(v.name); |
| - if (v.structure != null) _scanVariableBinding(v.structure); |
| - } |
| - } |
| + else d.accept(this); |
| + } |
| + |
| + visitDestructuredVariable(DestructuredVariable node) { |
| + var name = node.name; |
| + if (name is Identifier) _scanVariableBinding(name); |
| + super.visitDestructuredVariable(node); |
| + } |
| + |
| + visitSimpleBindingPattern(SimpleBindingPattern node) { |
| + _scanVariableBinding(node.name); |
| + super.visitSimpleBindingPattern(node); |
| } |
| visitVariableInitialization(VariableInitialization node) { |