Skip to content

parser: class name is a reserved keyword in non-strict mode should throw a SyntaxError #10053

@Dunqing

Description

@Dunqing

Test262 test | Babel Playground | OXC Playground

// Copyright (C) 2018 André Bargull. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-class-definitions
description: >
  `static` is not a valid class-name identifier.
info: |
  12.1.1 Static Semantics: Early Errors

  Identifier : IdentifierName but not ReservedWord

  It is a Syntax Error if this phrase is contained in strict mode code and the
  StringValue of IdentifierName is: "implements", "interface", "let", "package",
  "private", "protected", "public", "static", or "yield".

  10.2.1 Strict Mode Code

  All parts of a ClassDeclaration or a ClassExpression are strict mode code.
negative:
  phase: parse
  type: SyntaxError
---*/

$DONOTEVALUATE();

var C = class static {};

Expect

Both should throw a syntax error in non-strict mode and strict mode

Actual

Non-strict mode has no error, and strict mode has a syntax error

Metadata

Metadata

Assignees

Labels

Type

Priority

None yet

Effort

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions