| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 part of js_ast; | 5 part of js_ast; |
| 6 | 6 |
| 7 | 7 |
| 8 class JavaScriptPrintingOptions { | 8 class JavaScriptPrintingOptions { |
| 9 final bool shouldCompressOutput; | 9 final bool shouldCompressOutput; |
| 10 final bool minifyLocalVariables; | 10 final bool minifyLocalVariables; |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 588 } | 588 } |
| 589 | 589 |
| 590 visitVariableDeclarationList(VariableDeclarationList list) { | 590 visitVariableDeclarationList(VariableDeclarationList list) { |
| 591 outClosureAnnotation(list); | 591 outClosureAnnotation(list); |
| 592 out(list.keyword); | 592 out(list.keyword); |
| 593 out(" "); | 593 out(" "); |
| 594 visitCommaSeparated(list.declarations, ASSIGNMENT, | 594 visitCommaSeparated(list.declarations, ASSIGNMENT, |
| 595 newInForInit: inForInit, newAtStatementBegin: false); | 595 newInForInit: inForInit, newAtStatementBegin: false); |
| 596 } | 596 } |
| 597 | 597 |
| 598 visitArrayBindingPattern(ArrayBindingPattern node) { |
| 599 out("["); |
| 600 visitCommaSeparated(node.variables, EXPRESSION, |
| 601 newInForInit: false, newAtStatementBegin: false); |
| 602 out("]"); |
| 603 } |
| 604 visitObjectBindingPattern(ObjectBindingPattern node) { |
| 605 out("{"); |
| 606 visitCommaSeparated(node.variables, EXPRESSION, |
| 607 newInForInit: false, newAtStatementBegin: false); |
| 608 out("}"); |
| 609 } |
| 610 |
| 611 visitDestructuredVariable(DestructuredVariable node) { |
| 612 var hasName = node.name != null; |
| 613 if (hasName) visit(node.name); |
| 614 if (node.structure != null) { |
| 615 if (hasName) { |
| 616 out(":"); |
| 617 spaceOut(); |
| 618 } |
| 619 visit(node.structure); |
| 620 } |
| 621 if (node.defaultValue != null) { |
| 622 spaceOut(); |
| 623 out("="); |
| 624 spaceOut(); |
| 625 visitNestedExpression(node.defaultValue, EXPRESSION, |
| 626 newInForInit: false, newAtStatementBegin: false); |
| 627 } |
| 628 } |
| 629 |
| 598 visitAssignment(Assignment assignment) { | 630 visitAssignment(Assignment assignment) { |
| 599 visitNestedExpression(assignment.leftHandSide, LEFT_HAND_SIDE, | 631 visitNestedExpression(assignment.leftHandSide, LEFT_HAND_SIDE, |
| 600 newInForInit: inForInit, | 632 newInForInit: inForInit, |
| 601 newAtStatementBegin: atStatementBegin); | 633 newAtStatementBegin: atStatementBegin); |
| 602 if (assignment.value != null) { | 634 if (assignment.value != null) { |
| 603 spaceOut(); | 635 spaceOut(); |
| 604 String op = assignment.op; | 636 String op = assignment.op; |
| 605 if (op != null) out(op); | 637 if (op != null) out(op); |
| 606 out("="); | 638 out("="); |
| 607 spaceOut(); | 639 spaceOut(); |
| (...skipping 927 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1535 return newName; | 1567 return newName; |
| 1536 } | 1568 } |
| 1537 } | 1569 } |
| 1538 | 1570 |
| 1539 /// Like [BaseVisitor], but calls [declare] for [Identifier] declarations, and | 1571 /// Like [BaseVisitor], but calls [declare] for [Identifier] declarations, and |
| 1540 /// [visitIdentifier] otherwise. | 1572 /// [visitIdentifier] otherwise. |
| 1541 abstract class VariableDeclarationVisitor<T> extends BaseVisitor<T> { | 1573 abstract class VariableDeclarationVisitor<T> extends BaseVisitor<T> { |
| 1542 declare(Identifier node); | 1574 declare(Identifier node); |
| 1543 | 1575 |
| 1544 visitFunctionExpression(FunctionExpression node) { | 1576 visitFunctionExpression(FunctionExpression node) { |
| 1545 for (var p in node.params) { | 1577 node.params.forEach(_scanVariableBinding); |
| 1546 declare(p is RestParameter ? p.parameter : p); | |
| 1547 } | |
| 1548 node.body.accept(this); | 1578 node.body.accept(this); |
| 1549 } | 1579 } |
| 1550 | 1580 |
| 1581 _scanVariableBinding(VariableBinding d) { |
| 1582 if (d is Identifier) declare(d); |
| 1583 if (d is RestParameter) _scanVariableBinding(d.parameter); |
| 1584 else if (d is BindingPattern) { |
| 1585 for (var v in d.variables) { |
| 1586 if (v.name != null) declare(v.name); |
| 1587 if (v.structure != null) _scanVariableBinding(v.structure); |
| 1588 } |
| 1589 } |
| 1590 } |
| 1591 |
| 1551 visitVariableInitialization(VariableInitialization node) { | 1592 visitVariableInitialization(VariableInitialization node) { |
| 1552 declare(node.declaration); | 1593 _scanVariableBinding(node.declaration); |
| 1553 if (node.value != null) node.value.accept(this); | 1594 if (node.value != null) node.value.accept(this); |
| 1554 } | 1595 } |
| 1555 | 1596 |
| 1556 visitCatch(Catch node) { | 1597 visitCatch(Catch node) { |
| 1557 declare(node.declaration); | 1598 declare(node.declaration); |
| 1558 node.body.accept(this); | 1599 node.body.accept(this); |
| 1559 } | 1600 } |
| 1560 | 1601 |
| 1561 visitFunctionDeclaration(FunctionDeclaration node) { | 1602 visitFunctionDeclaration(FunctionDeclaration node) { |
| 1562 declare(node.name); | 1603 declare(node.name); |
| 1563 node.function.accept(this); | 1604 node.function.accept(this); |
| 1564 } | 1605 } |
| 1565 | 1606 |
| 1566 visitNamedFunction(NamedFunction node) { | 1607 visitNamedFunction(NamedFunction node) { |
| 1567 declare(node.name); | 1608 declare(node.name); |
| 1568 node.function.accept(this); | 1609 node.function.accept(this); |
| 1569 } | 1610 } |
| 1570 | 1611 |
| 1571 visitClassExpression(ClassExpression node) { | 1612 visitClassExpression(ClassExpression node) { |
| 1572 declare(node.name); | 1613 declare(node.name); |
| 1573 if (node.heritage != null) node.heritage.accept(this); | 1614 if (node.heritage != null) node.heritage.accept(this); |
| 1574 for (Method element in node.methods) element.accept(this); | 1615 for (Method element in node.methods) element.accept(this); |
| 1575 } | 1616 } |
| 1576 } | 1617 } |
| OLD | NEW |