Skip to content

linter: eslint/no-dupe-keys add __proto__ cases #19759

@eryue0220

Description

@eryue0220

What happen

This rule ignore __proto__ key.

For example, var x = { get __proto__() {}, __proto__: null }; this statement is valid in eslint, but it will throw an error in oxlint, and the error is above:

var x = { get __proto__() {}, __proto__: null };
      Diagnostic:

        ⚠ eslint(no-dupe-keys): Duplicate key '__proto__'
         ╭─[no_dupe_keys.tsx:1:15]
       1 │ var x = { get __proto__() {}, __proto__: null };
         ·               ────┬────       ────┬────
         ·                   │               ╰── and duplicated here
         ·                   ╰── Key is first defined here
         ╰────

Expect

Align with eslint

Test Cases

Valid

var x = { __proto__: null, ['__proto__']: null };
var x = { ['__proto__']: null, __proto__: null };
var x = { '__proto__': null, ['__proto__']: null };
var x = { ['__proto__']: null, '__proto__': null };
var x = { __proto__: null, __proto__ };
var x = { __proto__, __proto__: null };
var x = { __proto__: null, __proto__() {} };
var x = { __proto__() {}, __proto__: null };
var x = { __proto__: null, get __proto__() {} };
var x = { get __proto__() {}, __proto__: null };
var x = { __proto__: null, set __proto__(value) {} };
var x = { set __proto__(value) {}, __proto__: null };

Invalid

var x = { ['__proto__']: null, ['__proto__']: null };
var x = { ['__proto__']: null, __proto__ };
var x = { ['__proto__']: null, __proto__() {} };
var x = { ['__proto__']: null, get __proto__() {} };
var x = { ['__proto__']: null, set __proto__(value) {} };
var x = { __proto__: null, a: 5, a: 6 };

Metadata

Metadata

Assignees

Labels

A-linterArea - LinterC-bugCategory - Bug

Type

Priority

None yet

Effort

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions