[Pkg-javascript-commits] [node-acorn-jsx] 289/484: Fixes #129 and spaces in template quasi literals.
Bastien Roucariès
rouca at moszumanska.debian.org
Sat Aug 19 14:20:44 UTC 2017
This is an automated email from the git hooks/post-receive script.
rouca pushed a commit to branch master
in repository node-acorn-jsx.
commit daedc6fcb323cd6e205a87d1d8e5b78d1fbca090
Author: Ingvar Stepanyan <me at rreverser.com>
Date: Wed Sep 24 14:07:24 2014 +0300
Fixes #129 and spaces in template quasi literals.
* Added hack to correctly handle skipped spaces after= template expressions.
* Added `null` default values for regular functions.
* Added regression tests for both.
---
acorn.js | 14 +++--
test/tests-harmony.js | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 153 insertions(+), 4 deletions(-)
diff --git a/acorn.js b/acorn.js
index 22a9ca1..aafc34d 100644
--- a/acorn.js
+++ b/acorn.js
@@ -2115,6 +2115,8 @@
expect(_dollarBraceL);
node.expressions.push(parseExpression());
inTemplate = true;
+ // hack to include previously skipped space
+ tokPos = tokEnd;
expect(_braceR);
}
inTemplate = false;
@@ -2270,13 +2272,17 @@
node.rest = toAssignable(parseExprAtom(), false, true);
checkSpreadAssign(node.rest);
expect(_parenR);
+ defaults.push(null);
break;
} else {
node.params.push(options.ecmaVersion >= 6 ? toAssignable(parseExprAtom(), false, true) : parseIdent());
- if (options.ecmaVersion >= 6 && tokType === _eq) {
- next();
- hasDefaults = true;
- defaults.push(parseExpression(true));
+ if (options.ecmaVersion >= 6) {
+ if (eat(_eq)) {
+ hasDefaults = true;
+ defaults.push(parseExpression(true));
+ } else {
+ defaults.push(null);
+ }
}
if (!eat(_comma)) {
expect(_parenR);
diff --git a/test/tests-harmony.js b/test/tests-harmony.js
index 5bfba14..e0d3666 100644
--- a/test/tests-harmony.js
+++ b/test/tests-harmony.js
@@ -15246,3 +15246,146 @@ testFail("\"use strict\"; (eval) => 42", "Defining 'eval' in strict mode (1:15)"
testFail("(eval) => { \"use strict\"; 42 }", "Defining 'eval' in strict mode (1:1)", {ecmaVersion: 6});
testFail("({ get test() { } }) => 42", "Unexpected token (1:7)", {ecmaVersion: 6});
+
+/* Regression tests */
+
+// # https://github.com/marijnh/acorn/issues/127
+test('doSmth(`${x} + ${y} = ${x + y}`)', {
+ type: "Program",
+ start: 0,
+ end: 32,
+ body: [{
+ type: "ExpressionStatement",
+ start: 0,
+ end: 32,
+ expression: {
+ type: "CallExpression",
+ start: 0,
+ end: 32,
+ callee: {
+ type: "Identifier",
+ start: 0,
+ end: 6,
+ name: "doSmth"
+ },
+ arguments: [{
+ type: "TemplateLiteral",
+ start: 7,
+ end: 31,
+ expressions: [
+ {
+ type: "Identifier",
+ start: 10,
+ end: 11,
+ name: "x"
+ },
+ {
+ type: "Identifier",
+ start: 17,
+ end: 18,
+ name: "y"
+ },
+ {
+ type: "BinaryExpression",
+ start: 24,
+ end: 29,
+ left: {
+ type: "Identifier",
+ start: 24,
+ end: 25,
+ name: "x"
+ },
+ operator: "+",
+ right: {
+ type: "Identifier",
+ start: 28,
+ end: 29,
+ name: "y"
+ }
+ }
+ ],
+ quasis: [
+ {
+ type: "TemplateElement",
+ start: 8,
+ end: 8,
+ value: {cooked: "", raw: ""},
+ tail: false
+ },
+ {
+ type: "TemplateElement",
+ start: 12,
+ end: 15,
+ value: {cooked: " + ", raw: " + "},
+ tail: false
+ },
+ {
+ type: "TemplateElement",
+ start: 19,
+ end: 22,
+ value: {cooked: " = ", raw: " = "},
+ tail: false
+ },
+ {
+ type: "TemplateElement",
+ start: 30,
+ end: 30,
+ value: {cooked: "", raw: ""},
+ tail: true
+ }
+ ]
+ }]
+ }
+ }]
+}, {ecmaVersion: 6});
+
+// # https://github.com/marijnh/acorn/issues/129
+test('function normal(x, y = 10) {}', {
+ type: "Program",
+ start: 0,
+ end: 29,
+ body: [{
+ type: "FunctionDeclaration",
+ start: 0,
+ end: 29,
+ id: {
+ type: "Identifier",
+ start: 9,
+ end: 15,
+ name: "normal"
+ },
+ params: [
+ {
+ type: "Identifier",
+ start: 16,
+ end: 17,
+ name: "x"
+ },
+ {
+ type: "Identifier",
+ start: 19,
+ end: 20,
+ name: "y"
+ }
+ ],
+ defaults: [
+ null,
+ {
+ type: "Literal",
+ start: 23,
+ end: 25,
+ value: 10,
+ raw: "10"
+ }
+ ],
+ rest: null,
+ generator: false,
+ body: {
+ type: "BlockStatement",
+ start: 27,
+ end: 29,
+ body: []
+ },
+ expression: false
+ }]
+}, {ecmaVersion: 6});
\ No newline at end of file
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-acorn-jsx.git
More information about the Pkg-javascript-commits
mailing list