Skip to content

feat(lint): add noUnreadableForOfExpression - #12308

Merged
dyc3 merged 1 commit into
mainfrom
dyc3/port-unicorn-no-unreadable-for-of-expression-thr_uik72sm9x8
Oct 22, 2026
Merged

dyc3 merged 1 commit into
mainfrom
dyc3/port-unicorn-no-unreadable-for-of-expression-thr_uik72sm9x8

Conversation

@dyc3

@dyc3 dyc3 commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Summary

This adds noUnreadableForOfExpression, which is a port of https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unreadable-for-of-expression.md

implemented by Opus 5.5

Test Plan

snapshots

Docs

@changeset-bot

changeset-bot Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

ðŸĶ‹ Changeset detected

Latest commit: af8916d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 16 packages
Name Type
@biomejs/biome Patch
@biomejs/cli-android-arm64 Patch
@biomejs/cli-android-x64 Patch
@biomejs/cli-darwin-arm64 Patch
@biomejs/cli-darwin-x64 Patch
@biomejs/cli-linux-arm64-musl Patch
@biomejs/cli-linux-arm64 Patch
@biomejs/cli-linux-x64-musl Patch
@biomejs/cli-linux-x64 Patch
@biomejs/cli-win32-arm64 Patch
@biomejs/cli-win32-x64 Patch
@biomejs/runtime Patch
@biomejs/wasm-bundler Patch
@biomejs/wasm-nodejs Patch
@biomejs/wasm-web Patch
@biomejs/backend-jsonrpc Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions Bot added A-CLI Area: CLI A-Project Area: project A-Linter Area: linter L-JavaScript Language: JavaScript and super languages A-Diagnostic Area: diagnostocis labels Oct 13, 2026
@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

â„đïļ Recent review info
⚙ïļ Run configuration
  • Configuration used: Repository: biomejs/biome/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: f2d24acf-4c0d-4675-b04d-ccc866682075
ðŸ“Ĩ Commits

Reviewing files that changed from the base of the PR and between 0d22df4 and af8916d.

⛔ Files ignored due to path filters: 11
  • crates/biome_cli/src/execute/migrate/eslint_any_rule_to_biome.rs is excluded by !**/migrate/eslint_any_rule_to_biome.rs and included by **
  • crates/biome_configuration/src/analyzer/linter/rules.rs is excluded by !**/rules.rs and included by **
  • crates/biome_configuration/src/generated/linter_options_check.rs is excluded by !**/generated/**, !**/generated/** and included by **
  • crates/biome_diagnostics_categories/src/categories.rs is excluded by !**/categories.rs and included by **
  • crates/biome_js_analyze/tests/specs/nursery/noUnreadableForOfExpression/invalid.js.snap is excluded by !**/*.snap and included by **
  • crates/biome_js_analyze/tests/specs/nursery/noUnreadableForOfExpression/invalid.ts.snap is excluded by !**/*.snap and included by **
  • crates/biome_js_analyze/tests/specs/nursery/noUnreadableForOfExpression/valid.js.snap is excluded by !**/*.snap and included by **
  • crates/biome_js_analyze/tests/specs/nursery/noUnreadableForOfExpression/valid.ts.snap is excluded by !**/*.snap and included by **
  • crates/biome_js_analyze/tests/suppression/nursery/noUnreadableForOfExpression/validSuppressed.js.snap is excluded by !**/*.snap and included by **
  • packages/@biomejs/backend-jsonrpc/src/workspace.ts is excluded by !**/backend-jsonrpc/src/workspace.ts and included by **
  • packages/@biomejs/biome/configuration_schema.json is excluded by !**/configuration_schema.json and included by **
📒 Files selected for processing: 1
  • crates/biome_rule_options/src/lib.rs

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.

Walkthrough

Adds the noUnreadableForOfExpression nursery rule and its public options module. The rule checks for...of and for await...of inputs, classifies simple iterable expressions, and recognises selected iterator-producing calls and generator functions. JavaScript and TypeScript fixtures cover reported expressions, accepted cases, and suppressions.

Suggested reviewers: ematipico, netail

Priority: ⮇ïļ Low

Change: Feature

Merge Risk: ⚩ Minimal · up to af891

No actionable merge-blocking risk is identified in this PR.

Pre-merge checks: Passed 4
Check name Status Explanation
Description check Passed The description clearly states that the pull request adds the noUnreadableForOfExpression lint rule and identifies its source. It also mentions the snapshot test plan.
Title check Passed The title clearly and concisely identifies the main change: adding the noUnreadableForOfExpression lint rule.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
âœĻ Finishing Touches
🧊 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

âĪïļ Share

Comment @coderabbitai help to get the list of available commands.

@codspeed

codspeed Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

1 warning

⚠ïļ 6 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

✅ 107 untouched benchmarks
âĐ 314 skipped benchmarks1


Comparing dyc3/port-unicorn-no-unreadable-for-of-expression-thr_uik72sm9x8 (af8916d) with main (e12ad78)

Open in CodSpeed

Footnotes

  1. 314 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. â†Đ

@dyc3
dyc3 force-pushed the dyc3/port-unicorn-no-unreadable-for-of-expression-thr_uik72sm9x8 branch from 0d22df4 to af8916d Compare October 21, 2026 14:12
@dyc3
dyc3 merged commit 372af2a into main Oct 22, 2026
36 checks passed
@dyc3
dyc3 deleted the dyc3/port-unicorn-no-unreadable-for-of-expression-thr_uik72sm9x8 branch October 22, 2026 10:50
@github-actions github-actions Bot mentioned this pull request Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CLI Area: CLI A-Diagnostic Area: diagnostocis A-Linter Area: linter A-Project Area: project L-JavaScript Language: JavaScript and super languages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant