Skip to content

parser: redeclare catch parameter with function declaration in non-strict mode should throw a SyntaxError #10056

@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-try-statement-static-semantics-early-errors
description: >
  Redeclaration of CatchParameter with directly nested FunctionDeclaration in function context.
info: |
  13.15.1 Static Semantics: Early Errors

  It is a Syntax Error if any element of the BoundNames of CatchParameter also
  occurs in the LexicallyDeclaredNames of Block.
negative:
  phase: parse
  type: SyntaxError
---*/

$DONOTEVALUATE();

function f() {
  try {
  } catch (e) {
    function e() { }
  }
}

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