facebook / facebook/hermes

Bug: hermes-eslint: no-unused-vars crashes in Flow libdefs with class declarations

Open
#1,516 0 comments 3 reactions 0 assignees View on GitHub
bug
Dominant language
JavaScript
Stars
11.3k
Forks
859
Avg merge
1h 30m
Merged PRs (30d)
3

Description

### Environment

Node version: v20.13.0
npm version: v10.5.2
Local ESLint version: v9.10.0 (Currently used)
Operating System: linux 5.15.0-119-generic
hermes-eslint version: v0.23.1

### What did you do?

See minimal example at https://github.com/reosarevok/eslint-no-unused-vars-bug

### What did you expect to happen?

Trying eslint 9 (while upgrading from 8) on our flow-typed codebase (using `hermes-eslint`), I was expecting no new issues.

### What actually happened?

```
Oops! Something went wrong! :(

ESLint: 9.10.0

TypeError: Cannot read properties of undefined (reading 'some')
Occurred while linting /home/reosarevok/musicbrainz-server/flow-typed/npm/jed_v1.x.x.js:1
Rule: "no-unused-vars"
at collectUnusedVariables (/home/reosarevok/musicbrainz-server/node_modules/eslint/lib/rules/no-unused-vars.js:751:71)
at collectUnusedVariables (/home/reosarevok/musicbrainz-server/node_modules/eslint/lib/rules/no-unused-vars.js:829:17)
at Program:exit (/home/reosarevok/musicbrainz-server/node_modules/eslint/lib/rules/no-unused-vars.js:841:36)
at ruleErrorHandler (/home/reosarevok/musicbrainz-server/node_modules/eslint/lib/linter/linter.js:1083:48)
at /home/reosarevok/musicbrainz-server/node_modules/eslint/lib/linter/safe-emitter.js:45:58
at Array.forEach ()
at Object.emit (/home/reosarevok/musicbrainz-server/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
at NodeEventGenerator.applySelector (/home/reosarevok/musicbrainz-server/node_modules/eslint/lib/linter/node-event-generator.js:297:26)
at NodeEventGenerator.applySelectors (/home/reosarevok/musicbrainz-server/node_modules/eslint/lib/linter/node-event-generator.js:326:22)
at NodeEventGenerator.leaveNode (/home/reosarevok/musicbrainz-server/node_modules/eslint/lib/linter/node-event-generator.js:348:14)

```

The issue was apparently added with https://github.com/eslint/eslint/commit/1c173dc1f3d36a28cb2543e93675c2fbdb6fa9f1 in `eslint`, but I reported it there (as https://github.com/eslint/eslint/issues/18876) and they think it might be effectively an issue in the parser (https://github.com/eslint/eslint/issues/18876#issuecomment-2346695626) so reporting it here too.

### Link to Minimal Reproducible Example

https://github.com/reosarevok/eslint-no-unused-vars-bug

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.