From 0b59fc198baf2cd970091ee96fe5dd0f90034692 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Tue, 30 Dec 2014 12:53:58 +0100 Subject: [PATCH] Require superclass expressions to be lvals And remove a test that violates this. Closes #185 --- acorn.js | 1 + test/tests-harmony.js | 66 ------------------------------------------- 2 files changed, 1 insertion(+), 66 deletions(-) diff --git a/acorn.js b/acorn.js index 1208b8775d..1d33a45194 100644 --- a/acorn.js +++ b/acorn.js @@ -2406,6 +2406,7 @@ next(); node.id = tokType === _name ? parseIdent() : isStatement ? unexpected() : null; node.superClass = eat(_extends) ? parseExpression() : null; + if (node.superClass) checkLVal(node.superClass); var classBody = startNode(); classBody.body = []; expect(_braceL); diff --git a/test/tests-harmony.js b/test/tests-harmony.js index 1dbbefff68..c7cd8ea072 100644 --- a/test/tests-harmony.js +++ b/test/tests-harmony.js @@ -6465,72 +6465,6 @@ test("var A = class extends B {}", { locations: true }); -test("class A extends class B extends C {} {}", { - type: "Program", - body: [{ - type: "ClassDeclaration", - id: { - type: "Identifier", - name: "A", - loc: { - start: {line: 1, column: 6}, - end: {line: 1, column: 7} - } - }, - superClass: { - type: "ClassExpression", - id: { - type: "Identifier", - name: "B", - loc: { - start: {line: 1, column: 22}, - end: {line: 1, column: 23} - } - }, - superClass: { - type: "Identifier", - name: "C", - loc: { - start: {line: 1, column: 32}, - end: {line: 1, column: 33} - } - }, - body: { - type: "ClassBody", - body: [], - loc: { - start: {line: 1, column: 34}, - end: {line: 1, column: 36} - } - }, - loc: { - start: {line: 1, column: 16}, - end: {line: 1, column: 36} - } - }, - body: { - type: "ClassBody", - body: [], - loc: { - start: {line: 1, column: 37}, - end: {line: 1, column: 39} - } - }, - loc: { - start: {line: 1, column: 0}, - end: {line: 1, column: 39} - } - }], - loc: { - start: {line: 1, column: 0}, - end: {line: 1, column: 39} - } -}, { - ecmaVersion: 6, - ranges: true, - locations: true -}); - test("class A {get() {}}", { type: "Program", body: [{