[Pkg-javascript-commits] [node-acorn-jsx] 225/484: Object shorthand properties; small fixes to ES6 function parameters.

Bastien Roucariès rouca at moszumanska.debian.org
Sat Aug 19 14:20:33 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 0f56e3251217760c3646f52b1cfbe14ec8fdb99b
Author: Ingvar Stepanyan <me at rreverser.com>
Date:   Fri Jul 25 02:21:07 2014 +0300

    Object shorthand properties; small fixes to ES6 function parameters.
---
 acorn.js              | 15 ++++++++++++++-
 test/tests-harmony.js | 38 +++++++++++++++++++-------------------
 2 files changed, 33 insertions(+), 20 deletions(-)

diff --git a/acorn.js b/acorn.js
index 423d2b4..dee01b4 100644
--- a/acorn.js
+++ b/acorn.js
@@ -1802,6 +1802,10 @@
         if (tokType !== _parenL) unexpected();
         var func = parseFunction(startNode(), false, options.ecmaVersion >= 6);
         prop.value = func;
+      } else if (options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") {
+        kind = prop.kind = "init";
+        prop.value = prop.key;
+        prop.shorthand = true;
       } else unexpected();
 
       addProperty(node.properties, finishNode(prop, "Property"), sawGetSet, "init");
@@ -1879,7 +1883,7 @@
     for (var i = 0, lastI = params.length - 1; i <= lastI; i++) {
       var param = params[i];
 
-      if (param.type === "AssignmentExpression") {
+      if (param.type === "AssignmentExpression" && param.operator === "=") {
         hasDefaults = true;
         params[i] = param.left;
         defaults.push(param.right);
@@ -1912,6 +1916,7 @@
         break;
       } else if (options.ecmaVersion >= 6 && eat(_ellipsis)) {
         node.rest = toAssignable(parseExprAtom());
+        checkSpreadAssign(node.rest);
         expect(_parenR);
         break;
       } else {
@@ -2088,6 +2093,7 @@
         case "SpreadElement":
           if (allowSpread) {
             toAssignable(node.argument);
+            checkSpreadAssign(node.argument);
             break;
           }
 
@@ -2098,4 +2104,11 @@
     return node;
   }
 
+  // Checks if node can be assignable spread argument.
+
+  function checkSpreadAssign(node) {
+    if (node.type !== "Identifier" && node.type !== "ArrayPattern")
+      unexpected(node.start);
+  }
+
 });
diff --git a/test/tests-harmony.js b/test/tests-harmony.js
index 75d83da..74f4593 100644
--- a/test/tests-harmony.js
+++ b/test/tests-harmony.js
@@ -11823,10 +11823,10 @@ test("({f: function({x} = {x: 10}) {}})", {
           end: {line: 1, column: 31}
         }
       }],
-      range: [1, 32],
+      range: [0, 33],
       loc: {
-        start: {line: 1, column: 1},
-        end: {line: 1, column: 32}
+        start: {line: 1, column: 0},
+        end: {line: 1, column: 33}
       }
     },
     range: [0, 33],
@@ -11955,9 +11955,9 @@ test("({f({x} = {x: 10}) {}})", {
           rest: null,
           generator: false,
           expression: false,
-          range: [19, 21],
+          range: [3, 21],
           loc: {
-            start: {line: 1, column: 19},
+            start: {line: 1, column: 3},
             end: {line: 1, column: 21}
           }
         },
@@ -12106,9 +12106,9 @@ test("(class {f({x} = {x: 10}) {}})", {
             rest: null,
             generator: false,
             expression: false,
-            range: [25, 27],
+            range: [9, 27],
             loc: {
-              start: {line: 1, column: 25},
+              start: {line: 1, column: 9},
               end: {line: 1, column: 27}
             }
           },
@@ -12245,10 +12245,10 @@ test("(({x} = {x: 10}) => {})", {
       rest: null,
       generator: false,
       expression: false,
-      range: [1, 22],
+      range: [0, 23],
       loc: {
-        start: {line: 1, column: 1},
-        end: {line: 1, column: 22}
+        start: {line: 1, column: 0},
+        end: {line: 1, column: 23}
       }
     },
     range: [0, 23],
@@ -14199,9 +14199,9 @@ test("({ x({ a: { w, x }, b: [y, z] }, ...[a, b, c]){} })", {
           },
           generator: false,
           expression: false,
-          range: [46, 48],
+          range: [4, 48],
           loc: {
-            start: {line: 1, column: 46},
+            start: {line: 1, column: 4},
             end: {line: 1, column: 48}
           }
         },
@@ -16212,19 +16212,19 @@ testFail("var a = [x if (x)]", "Unexpected token (1:19)", {ecmaVersion: 6});
 
 testFail("[for (x in [])]  // no espression", "Unexpected token (1:16)", {ecmaVersion: 6});
 
-testFail("({ \"chance\" }) = obj", "Unexpected token (1:13)", {ecmaVersion: 6});
+testFail("({ \"chance\" }) = obj", "Unexpected token (1:12)", {ecmaVersion: 6});
 
-testFail("({ 42 }) = obj", "Unexpected token (1:7)", {ecmaVersion: 6});
+testFail("({ 42 }) = obj", "Unexpected token (1:6)", {ecmaVersion: 6});
 
 testFail("function f(a, ...b, c)", "Unexpected token (1:18)", {ecmaVersion: 6});
 
 testFail("function f(a, ...b = 0)", "Unexpected token (1:19)", {ecmaVersion: 6});
 
-testFail("function x(...{ a }){}", "Unexpected token (1:15)", {ecmaVersion: 6});
+testFail("function x(...{ a }){}", "Unexpected token (1:14)", {ecmaVersion: 6});
 
-testFail("\"use strict\"; function x(a, { a }){}", "Unexpected token (1:37)", {ecmaVersion: 6});
+testFail("\"use strict\"; function x(a, { a }){}", "Argument name clash in strict mode (1:30)", {ecmaVersion: 6});
 
-testFail("\"use strict\"; function x({ b: { a } }, [{ b: { a } }]){}", "Unexpected token (1:57)", {ecmaVersion: 6});
+testFail("\"use strict\"; function x({ b: { a } }, [{ b: { a } }]){}", "Argument name clash in strict mode (1:47)", {ecmaVersion: 6});
 
 testFail("\"use strict\"; function x(a, ...[a]){}", "Argument name clash in strict mode (1:32)", {ecmaVersion: 6});
 
@@ -16232,11 +16232,11 @@ testFail("(...a, b) => {}", "Unexpected token (1:1)", {ecmaVersion: 6});
 
 testFail("([ 5 ]) => {}", "Unexpected token (1:3)", {ecmaVersion: 6});
 
-testFail("({ 5 }) => {}", "Unexpected token (1:6)", {ecmaVersion: 6});
+testFail("({ 5 }) => {}", "Unexpected token (1:5)", {ecmaVersion: 6});
 
 testFail("(...[ 5 ]) => {}", "Unexpected token (1:6)", {ecmaVersion: 6});
 
-testFail("[...{ a }] = b", "Unexpected token (1:11)", {ecmaVersion: 6});
+testFail("[...{ a }] = b", "Unexpected token (1:4)", {ecmaVersion: 6});
 
 testFail("[...a, b] = c", "Unexpected token (1:1)", {ecmaVersion: 6});
 

-- 
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