Skip to content

fix(linter/eslint/no-unused-vars): respect rest params after-used option - #26579

Merged
camc314 merged 2 commits into
oxc-project:mainfrom
Bartok9:fix/linter-no-unused-vars-after-used-rest
Sep 14, 2026
Merged

camc314 merged 2 commits into
oxc-project:mainfrom
Bartok9:fix/linter-no-unused-vars-after-used-rest

Conversation

@Bartok9

@Bartok9 Bartok9 commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Fix: no-unused-vars with args: after-used incorrectly flagged normal parameters preceding a used rest parameter as unused. Rest params are stored in FormalParameters.rest (not items), so the last-param check and the following-params scan both missed them.

Closes #26562

AI-assisted; human-reviewed. Agent-Owner:sera

Params before a rest parameter were incorrectly reported as unused
under args: 'after-used' because the check only looked at
params.items and ignored params.rest (rest params are stored
separately in FormalParameters.rest).

Closes oxc-project#26562

Signed-off-by: Bartok9 <259807879+Bartok9@users.noreply.github.com>
@Bartok9
Bartok9 requested a review from camc314 as a code owner September 12, 2026 12:16
@codspeed

codspeed Bot commented Sep 12, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 5 untouched benchmarks
⏩ 76 skipped benchmarks1


Comparing Bartok9:fix/linter-no-unused-vars-after-used-rest (b4fbe1b) with main (c1470a2)

Open in CodSpeed

Footnotes

  1. 76 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@camc314 camc314 changed the title fix(linter): respect rest params in no-unused-vars after-used option fix(linter/eslint/no-unused-vars): respect rest params after-used option Sep 13, 2026
@camc314

camc314 commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

@codex review

@camc314 camc314 self-assigned this Sep 13, 2026
@camc314 camc314 added the A-linter Area - Linter label Sep 13, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 13, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-14T05:44:29.723423Z b4fbe1b New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 60c50c77aa

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/oxc_linter/src/rules/eslint/no_unused_vars/allowed.rs Outdated
@camc314
camc314 merged commit a5bba6d into oxc-project:main Sep 14, 2026
33 checks passed
graphite-app Bot pushed a commit that referenced this pull request Sep 14, 2026
# Oxlint
### 🚀 Features

- afe950d linter/react: Update lint rules to accomodate changes in React 19.3 (#26571) (Connor Shea)

### 🐛 Bug Fixes

- fb87ed7 linter/unicorn/prefer-array-flat-map: Report `.filter().flatMap()` chains (#26626) (camc314)
- 336b654 linter/unicorn/prefer-at: Report single-character substring calls (#26623) (camc314)
- a5bba6d linter/eslint/no-unused-vars: Respect rest params after-used option (#26579) (Bartok)
- c1470a2 linter/eslint/no-unused-vars: Preserve ambient implicit exports (#26582) (Dex Hunter)
- 9a469d2 linter/unicorn/prefer-global-this: Preserve window event method references (#26611) (Dex Hunter)
- aaff758 linter/unicorn/prefer-default-parameters: Report violation for `??=` and `||=` (#26607) (Bartok)
- 2bed25a linter/unicorn/prefer-array-flat: Skip plain `concat` normalization (#26604) (im10furry)
- 72bc7f2 oxlint: Replace backlashes path for "no js runtime" diagnostic (#26599) (Sysix)
- 1aa5ec1 linter/typescript/prefer-for-of: Handle computed collections (#26584) (camc314)
- 1e90019 linter/typescript: Mark `no-unnecessary-type-parameters` and `prefer-find` suggestions as implemented (#26586) (Mikhail Baev)
- 4231536 linter: Compare label text in runtime optimization assertion (#26526) (camc314)
- 36d5534 linter: Include file path in diagnostic assertion (#26525) (camc314)
- 31508b1 parser: Reject return types on constructor overloads (#26523) (camc314)

### ⚡ Performance

- 1d681b0 linter/react/jsx-pascal-case: Avoid temporary name segment vector (#26531) (camc314)
- 2ad7d49 linter/promise/catch-or-return: Avoid temporary formatting vectors (#26505) (camc314)
- 203235b linter/jsx-a11y/no-static-element-interactions: Avoid role vector (#26504) (camc314)
- 2e95167 linter/jsx-a11y/anchor-is-valid: Avoid temporary attribute vector (#26501) (camc314)
- deafdba linter/react/exhaustive-deps: Avoid temporary dependency vector (#26502) (camc314)
- 4f1627f linter/oxc/branches-sharing-code: Compute deletion spans lazily (#26500) (camc314)
- c068fd2 linter/react/jsx-curly-brace-presence: Avoid newline position allocation (#26499) (camc314)
- ed4357c linter/eslint/no-restricted-properties: Skip empty configurations (#26497) (camc314)
- 92e41b7 linter/oxc/no-barrel-file: Iterate module requests directly (#26498) (camc314)
- 5255ee3 linter/unicorn/prefer-single-call: Avoid temporary argument vector (#26494) (camc314)
- 96ef365 linter/unicorn/prefer-includes: Reduce suggestion allocations (#26492) (camc314)
- a71fd7f linter/unicorn/no-new-buffer: Avoid temporary argument vector (#26491) (camc314)
- 11085e7 linter/jsdoc/require-yields: Short-circuit JSDoc checks (#26488) (camc314)
- 9b1aff8 linter/unicorn/no-useless-undefined: Skip calls without trailing undefined (#26481) (camc314)
- 1e5d5d7 linter/eslint/no-unused-vars: Skip absent global declaration checks (#26457) (camc314)
- 403f899 linter/eslint/no-undef: Check globals once per unresolved name (#26456) (camc314)
- 118adb0 linter/eslint/no-restricted-imports: Avoid redundant import scans (#26455) (camc314)
- ab848f2 linter/eslint/no-useless-assignment: Skip tracking exported symbols (#26449) (camc314)
- 1b6e409 linter/unicorn/prefer-object-from-entries: Avoid allocating configured paths (#26448) (camc314)
- 2206875 linter/eslint/new-cap: Avoid unnecessary callee name allocations (#26447) (camc314)

### 📚 Documentation

- b927e0a linter/typescript/await-thenable: Add missing lang for markdown doc comment (#26438) (Ari Perkkiö)
# Oxfmt
### 🚀 Features

- 586f27a formatter_core: Add `prefix_align` builder and `Tag::(Start|End)Prefix` (#26520) (leaysgur)
- dc45cc3 formatter_test: Test Prettier dynamic snippet tests (#26469) (leaysgur)

### 🐛 Bug Fixes

- d7e0c82 formatter: Keep an enum member's trailing suppress comment (#26549) (leaysgur)
- d2fe01e formatter: Unify suppress comment behavior (#26547) (leaysgur)
- d35d89f oxfmt: Skip shutdown delay on fixed Node 24 releases (#26518) (Pablo García)
- aef8b4a formatter_css: Handle less-test-suites failures (#26513) (leaysgur)
- 9dbddca formatter: Keep group flat for own-line comment in JSX (#26475) (leaysgur)
- d226e6f formatter_yaml: Bump oxc-yaml-parser to 0.0.6 (#26472) (leaysgur)
- 8b41fc0 formatter_yaml: Clamp `tab_width: 0` to 1 to keep semantics (#26471) (leaysgur)
- dea2ba0 formatter_core: Do not panic with align(0) (#26468) (leaysgur)
- bf1d3f6 formatter: Check `this_param` for simple parameters test (#26474) (leaysgur)
- 33cdc84 formatter: Keep cast-target assignment and commented parameter patterns (#26429) (leaysgur)
- 876fbe3 oxfmt: Expand `Fill` parts in tsx-in-vue (#26427) (leaysgur)

### 📚 Documentation

- 66fda4f formatter: Update AGENTS.md comment handling (#26551) (leaysgur)
- 41abcba formatter: Note why jsx-test-suite snippets stay off (#26515) (leaysgur)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-linter Area - Linter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

linter: no-unused-vars: args: "after-used" incorrectly reports parameters before a used rest parameter

2 participants

Sponsor
SponsoredKunjungi sekarang
Promo