From 4879af22d1e88f6b1b0ffd17bbff23a17038ff92 Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Sun, 26 Oct 2014 23:32:35 +0200 Subject: [PATCH] Loose: Added support for assignment patterns to expression and variables. --- acorn_loose.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/acorn_loose.js b/acorn_loose.js index 87cdbd552c..f3523b8829 100644 --- a/acorn_loose.js +++ b/acorn_loose.js @@ -498,13 +498,12 @@ function parseVar(node, noIn) { node.declarations = []; node.kind = "var"; - while (token.type === tt.name) { + do { var decl = startNode(); - decl.id = parseIdent(); + decl.id = options.ecmaVersion >= 6 ? toAssignable(parseExprAtom()) : parseIdent(); decl.init = eat(tt.eq) ? parseExpression(true, noIn) : null; node.declarations.push(finishNode(decl, "VariableDeclarator")); - if (!eat(tt.comma)) break; - } + } while (eat(tt.comma)); if (!node.declarations.length) { var decl = startNode(); decl.id = dummyIdent(); @@ -541,7 +540,7 @@ if (token.type.isAssign) { var node = startNodeAt(start); node.operator = token.value; - node.left = checkLVal(left); + node.left = token.type === tt.eq ? toAssignable(left) : checkLVal(left); next(); node.right = parseMaybeAssign(noIn); return finishNode(node, "AssignmentExpression"); @@ -821,7 +820,7 @@ break; } } - return node; + return checkLVal(node); } function parseFunctionParams(node) {