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: [{