From 045d8c02f5f5be5d1796edd4b00de80baa0ef945 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Sun, 4 Jan 2015 22:28:16 +0100 Subject: [PATCH] Revert "Require superclass expressions to be lvals" This reverts commit 0b59fc198baf2cd970091ee96fe5dd0f90034692. Issue #187 --- acorn.js | 1 - test/tests-harmony.js | 66 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/acorn.js b/acorn.js index 1fec39199f..4212ac3d7e 100644 --- a/acorn.js +++ b/acorn.js @@ -2413,7 +2413,6 @@ 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 f59838c0d3..74a927f0d0 100644 --- a/test/tests-harmony.js +++ b/test/tests-harmony.js @@ -6465,6 +6465,72 @@ 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: [{