From eadda16c4240d2cb93a530f07ac74caf7ff79e86 Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Thu, 24 Jul 2014 14:33:59 +0300 Subject: [PATCH] Added SpreadElement support. testFail message fixes for object methods. --- acorn.js | 12 ++++++++++++ test/tests-harmony.js | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/acorn.js b/acorn.js index 7de20be2ad..da572a8ce3 100644 --- a/acorn.js +++ b/acorn.js @@ -1734,6 +1734,9 @@ case _new: return parseNew(); + case _ellipsis: + return parseSpread(); + default: unexpected(); } @@ -1752,6 +1755,15 @@ return finishNode(node, "NewExpression"); } + // Parse spread element '...expr' + + function parseSpread() { + var node = startNode(); + next(); + node.argument = parseExpression(true); + return finishNode(node, "SpreadElement"); + } + // Parse an object literal. function parseObj() { diff --git a/test/tests-harmony.js b/test/tests-harmony.js index cbab6dc117..cc9e13d612 100644 --- a/test/tests-harmony.js +++ b/test/tests-harmony.js @@ -15773,9 +15773,9 @@ testFail("x \n isnt y", "Unexpected token (2:7)", {ecmaVersion: 6}); testFail("function default() {}", "Unexpected token (1:9)", {ecmaVersion: 6}); -testFail("function hello() {'use strict'; ({ i: 10, s(eval) { } }); }", "Unexpected token (1:45)", {ecmaVersion: 6}); +testFail("function hello() {'use strict'; ({ i: 10, s(eval) { } }); }", "Defining 'eval' in strict mode (1:44)", {ecmaVersion: 6}); -testFail("function a() { \"use strict\"; ({ b(t, t) { } }); }", "Unexpected token (1:38)", {ecmaVersion: 6}); +testFail("function a() { \"use strict\"; ({ b(t, t) { } }); }", "Argument name clash in strict mode (1:37)", {ecmaVersion: 6}); testFail("var super", "Unexpected token (1:5)", {ecmaVersion: 6});