Index: lib/src/js/nodes.dart |
diff --git a/lib/src/js/nodes.dart b/lib/src/js/nodes.dart |
index 0ba181426578b19f97656189834b4847ce9d161d..5d0b3d172e7b5d96ae1e9cc0ee01b9290037217d 100644 |
--- a/lib/src/js/nodes.dart |
+++ b/lib/src/js/nodes.dart |
@@ -92,6 +92,7 @@ abstract class NodeVisitor<T> { |
T visitArrayBindingPattern(ArrayBindingPattern node); |
T visitObjectBindingPattern(ObjectBindingPattern node); |
T visitDestructuredVariable(DestructuredVariable node); |
+ T visitSimpleBindingPattern(SimpleBindingPattern node); |
} |
class BaseVisitor<T> implements NodeVisitor<T> { |
@@ -221,6 +222,7 @@ class BaseVisitor<T> implements NodeVisitor<T> { |
T visitObjectBindingPattern(ObjectBindingPattern node) |
=> visitBindingPattern(node); |
T visitDestructuredVariable(DestructuredVariable node) => visitNode(node); |
+ T visitSimpleBindingPattern(SimpleBindingPattern node) => visitNode(node); |
} |
abstract class Node { |
@@ -777,7 +779,8 @@ abstract class VariableBinding extends Expression { |
} |
class DestructuredVariable extends Expression implements Parameter { |
- final Identifier name; |
+ /// [LiteralString] or [Identifier]. |
+ final Expression name; |
final BindingPattern structure; |
final Expression defaultValue; |
DestructuredVariable({this.name, this.structure, this.defaultValue}) { |
@@ -807,6 +810,17 @@ abstract class BindingPattern extends Expression implements VariableBinding { |
} |
} |
+class SimpleBindingPattern extends BindingPattern { |
+ final Identifier name; |
+ SimpleBindingPattern(Identifier name) |
+ : super([new DestructuredVariable(name: name)]), this.name = name; |
+ accept(NodeVisitor visitor) => visitor.visitSimpleBindingPattern(this); |
+ |
+ /// Avoid parenthesis when pretty-printing. |
+ @override int get precedenceLevel => PRIMARY; |
+ @override Node _clone() => new SimpleBindingPattern(name); |
+} |
+ |
class ObjectBindingPattern extends BindingPattern { |
ObjectBindingPattern(List<DestructuredVariable> variables) |
: super(variables); |