[Pkg-javascript-commits] [node-acorn-jsx] 305/484: Remove property name clash check in ES6 as per Draft Rev 26.

Bastien Roucariès rouca at moszumanska.debian.org
Sat Aug 19 14:20:47 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 f26b656ea5440ec54cf79a4a48f1a579b45b0fd8
Author: Ingvar Stepanyan <me at rreverser.com>
Date:   Sun Oct 26 16:53:41 2014 +0200

    Remove property name clash check in ES6 as per Draft Rev 26.
    
    See https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-06/jun-6.md#conclusionresolution-3 for details.
    
    Conflicts:
    	test/tests-harmony.js
---
 acorn.js              |   5 +-
 test/tests-harmony.js | 161 ++++++++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 152 insertions(+), 14 deletions(-)

diff --git a/acorn.js b/acorn.js
index a244d10..8013c92 100644
--- a/acorn.js
+++ b/acorn.js
@@ -1433,7 +1433,7 @@
   // strict mode, init properties are also not allowed to be repeated.
 
   function checkPropClash(prop, propHash) {
-    if (prop.computed) return;
+    if (options.ecmaVersion >= 6) return;
     var key = prop.key, name;
     switch (key.type) {
       case "Identifier": name = key.name; break;
@@ -2389,7 +2389,7 @@
     next();
     node.id = tokType === _name ? parseIdent() : isStatement ? unexpected() : null;
     node.superClass = eat(_extends) ? parseExpression() : null;
-    var classBody = startNode(), methodHash = {}, staticMethodHash = {};
+    var classBody = startNode();
     classBody.body = [];
     expect(_braceL);
     while (!eat(_braceR)) {
@@ -2411,7 +2411,6 @@
         method.kind = "";
       }
       method.value = parseMethod(isGenerator);
-      checkPropClash(method, method['static'] ? staticMethodHash : methodHash);
       classBody.body.push(finishNode(method, "MethodDefinition"));
       eat(_semi);
     }
diff --git a/test/tests-harmony.js b/test/tests-harmony.js
index b35c919..0f5ed54 100644
--- a/test/tests-harmony.js
+++ b/test/tests-harmony.js
@@ -9386,17 +9386,156 @@ test("class A { set foo(v) {} get foo() {} }", {
   locations: true
 });
 
-testFail("class A { get foo() {} get foo() {} }", "Redefinition of property (1:27)", {ecmaVersion: 6});
-
-testFail("class A { set foo(v) {} set foo(v) {} }", "Redefinition of property (1:28)", {ecmaVersion: 6});
-
-testFail("class A { get foo() {} foo() {} }", "Redefinition of property (1:23)", {ecmaVersion: 6});
-
-testFail("class A { foo() {} get foo() {} }", "Redefinition of property (1:23)", {ecmaVersion: 6});
-
-testFail("class A { set foo(v) {} foo() {} }", "Redefinition of property (1:24)", {ecmaVersion: 6});
-
-testFail("class A { foo() {} set foo(v) {} }", "Redefinition of property (1:23)", {ecmaVersion: 6});
+test("class A { foo() {} get foo() {} }",{
+  type: "Program",
+  start: 0,
+  end: 33,
+  loc: {
+    start: {line: 1, column: 0},
+    end: {line: 1, column: 33}
+  },
+  range: [0, 33],
+  body: [{
+    type: "ClassDeclaration",
+    start: 0,
+    end: 33,
+    loc: {
+      start: {line: 1, column: 0},
+      end: {line: 1, column: 33}
+    },
+    range: [0, 33],
+    id: {
+      type: "Identifier",
+      start: 6,
+      end: 7,
+      loc: {
+        start: {line: 1, column: 6},
+        end: {line: 1, column: 7}
+      },
+      range: [6, 7],
+      name: "A"
+    },
+    superClass: null,
+    body: {
+      type: "ClassBody",
+      start: 8,
+      end: 33,
+      loc: {
+        start: {line: 1, column: 8},
+        end: {line: 1, column: 33}
+      },
+      range: [8, 33],
+      body: [
+        {
+          type: "MethodDefinition",
+          start: 10,
+          end: 18,
+          loc: {
+            start: {line: 1, column: 10},
+            end: {line: 1, column: 18}
+          },
+          range: [10, 18],
+          static: false,
+          computed: false,
+          key: {
+            type: "Identifier",
+            start: 10,
+            end: 13,
+            loc: {
+              start: {line: 1, column: 10},
+              end: {line: 1, column: 13}
+            },
+            range: [10, 13],
+            name: "foo"
+          },
+          kind: "",
+          value: {
+            type: "FunctionExpression",
+            start: 13,
+            end: 18,
+            loc: {
+              start: {line: 1, column: 13},
+              end: {line: 1, column: 18}
+            },
+            range: [13, 18],
+            id: null,
+            params: [],
+            defaults: [],
+            rest: null,
+            generator: false,
+            body: {
+              type: "BlockStatement",
+              start: 16,
+              end: 18,
+              loc: {
+                start: {line: 1, column: 16},
+                end: {line: 1, column: 18}
+              },
+              range: [16, 18],
+              body: []
+            },
+            expression: false
+          }
+        },
+        {
+          type: "MethodDefinition",
+          start: 19,
+          end: 31,
+          loc: {
+            start: {line: 1, column: 19},
+            end: {line: 1, column: 31}
+          },
+          range: [19, 31],
+          static: false,
+          computed: false,
+          key: {
+            type: "Identifier",
+            start: 23,
+            end: 26,
+            loc: {
+              start: {line: 1, column: 23},
+              end: {line: 1, column: 26}
+            },
+            range: [23, 26],
+            name: "foo"
+          },
+          kind: "get",
+          value: {
+            type: "FunctionExpression",
+            start: 26,
+            end: 31,
+            loc: {
+              start: {line: 1, column: 26},
+              end: {line: 1, column: 31}
+            },
+            range: [26, 31],
+            id: null,
+            params: [],
+            defaults: [],
+            rest: null,
+            generator: false,
+            body: {
+              type: "BlockStatement",
+              start: 29,
+              end: 31,
+              loc: {
+                start: {line: 1, column: 29},
+                end: {line: 1, column: 31}
+              },
+              range: [29, 31],
+              body: []
+            },
+            expression: false
+          }
+        }
+      ]
+    }
+  }]
+},{
+  ecmaVersion: 6,
+  ranges: true,
+  locations: true
+});
 
 // ES6: Computed Properties
 

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