Skip to content

feat: report unsafe labeled continue in no-unsafe-finally rule - #21316

Merged
fasttime merged 1 commit into
eslint:mainfrom
electrohyun:fix/no-unsafe-finally-labeled-continue
Sep 11, 2026
Merged

fasttime merged 1 commit into
eslint:mainfrom
electrohyun:fix/no-unsafe-finally-labeled-continue

Conversation

@electrohyun

@electrohyun electrohyun commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Prerequisites checklist

AI acknowledgment

  • I did not use AI to generate this PR.
  • (If the above is not checked) I have reviewed the AI-generated content before submitting.

What is the purpose of this pull request? (put an "X" next to an item)

[ ] Documentation update
[x] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ ] Other, please explain:

What changes did you make? (Give an overview)

Fixed the no-unsafe-finally rule to report labeled continue statements that exit a finally block, and added tests.

Fixes #21314

Is there anything you'd like reviewers to focus on?

The invalid test uses the example from the comment on the earlier PR referenced in the issue #21314.


Disclosure: I'm a participant of open source contribution program OSSCA

Summary by CodeRabbit

  • Bug Fixes

    • Improved detection of labeled continue statements within finally blocks.
    • The no-unsafe-finally rule now correctly distinguishes safe labeled continues from continues that exit an outer loop, providing more accurate warnings.
  • Tests

    • Added coverage for valid nested-loop usage and invalid labeled continues that leave the enclosing loop.

@electrohyun
electrohyun requested a review from a team as a code owner September 9, 2026 13:16
@github-project-automation github-project-automation Bot moved this to Needs Triage in Triage Sep 9, 2026
@eslint-github-bot eslint-github-bot Bot added the feature This change adds a new feature to ESLint label Sep 9, 2026
@netlify

netlify Bot commented Sep 9, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for docs-eslint ready!

Name Link
🔨 Latest commit 524aeb0
🔍 Latest deploy log https://app.netlify.com/projects/docs-eslint/deploys/6aa15e1c89a120000807d430
😎 Deploy Preview https://deploy-preview-21316--docs-eslint.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions github-actions Bot added the rule Relates to ESLint's core rules label Sep 9, 2026
@coderabbitai

coderabbitai Bot commented Sep 9, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 071bef6b-020e-41dc-9ae8-b7d074b037a6

📥 Commits

Reviewing files that changed from the base of the PR and between 26d11bc and 54463e3.

📒 Files selected for processing (2)
  • lib/rules/no-unsafe-finally.js
  • tests/lib/rules/no-unsafe-finally.js

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The no-unsafe-finally rule now detects labeled continue statements that target loops outside a finally block. Tests cover valid nested-loop continues and invalid outer-loop continues.

Changes

Unsafe finally control flow

Layer / File(s) Summary
Labeled continue detection and tests
lib/rules/no-unsafe-finally.js, tests/lib/rules/no-unsafe-finally.js
The rule routes labeled continue statements through the return/throw sentinel. Tests cover valid nested-loop behavior and report an unsafe continue targeting an outer loop.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to 524ae

The rule now reports labeled continues that escape a finally block and override pending control flow, while preserving safe nested-loop continues. No current merge-blocking risk remains.

Suggested reviewers: nzakas, pixel998, snitin315

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: reporting unsafe labeled continue statements in the no-unsafe-finally rule.
Linked Issues check ✅ Passed The implementation addresses [#21314] by treating labeled continue statements that exit a finally block as unsafe. The added tests cover both the valid nested-loop case and the invalid outer-loop …
Out of Scope Changes check ✅ Passed All changes are limited to the no-unsafe-finally rule and its tests. No unrelated or out-of-scope changes are present.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@electrohyun
electrohyun force-pushed the fix/no-unsafe-finally-labeled-continue branch from 54463e3 to 524aeb0 Compare September 9, 2026 13:24
@mdjermanovic mdjermanovic added accepted There is consensus among the team that this change meets the criteria for inclusion bug ESLint is working incorrectly labels Sep 9, 2026
@mdjermanovic mdjermanovic moved this from Needs Triage to Implementing in Triage Sep 9, 2026

@mdjermanovic mdjermanovic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, thanks! Sine this is tagged feat as a bug fix that can produce more linting errors, leaving it open for a second review.

@mdjermanovic mdjermanovic moved this from Implementing to Second Review Needed in Triage Sep 9, 2026

@DMartens DMartens left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Changes LGTM, thanks. Leaving open for others to review.

@DMartens DMartens moved this from Second Review Needed to Merge Candidates in Triage Sep 10, 2026

@fasttime fasttime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, thanks!

@fasttime
fasttime merged commit 397b3b8 into eslint:main Sep 11, 2026
46 checks passed
@github-project-automation github-project-automation Bot moved this from Merge Candidates to Complete in Triage Sep 11, 2026
@electrohyun

Copy link
Copy Markdown
Contributor Author

Hello. I’m sorry for adding another comment to a PR that has already been merged.

I updated the PR description to make the scope of my AI use clearer. Since this PR is part of the contributor pool review, I am also noting the update here. Previously, I disclosed AI use based on whether it had been used to generate part of the submitted work, such as code, code comments, or documentation. But I think it is better to disclose the scope of AI assistance even when its output was not included in the substantive contribution, so I have added that information to the PR description as well.

I came across the no-unsafe-finally rule while searching the repository for references to the ContinueStatement AST node type. Its implementation handled BreakStatement and ContinueStatement differently. The BreakStatement branch checked !node.label, while the ContinueStatement branch did not. I wanted to understand why, so I read the rule documentation and reviewed the file’s commit history. That led me to an earlier pull request that addressed false positives. In its review discussion, I found an invalid test case that had been requested but was not present in the test suite.

After finding the missing test case, I used AI to check my understanding of the rule’s behavior and whether the change could introduce false positives. I verified the behavior against the existing implementation and added tests covering both cases. a labeled continue targeting a loop outside the finally block and one targeting a loop inside it.

It seemed appropriate to share this update here with @fasttime and @DMartens, who took the time to review this contribution, as well as with @mdjermanovic, who reviewed it and added it to the contributor pool.

Thank you again for taking the time to review this contribution.

renovate Bot added a commit to NiGhTTraX/eslint-config that referenced this pull request Oct 6, 2026
| datasource | package | from   | to      |
| ---------- | ------- | ------ | ------- |
| npm        | eslint  | 10.9.1 | 10.11.0 |


## [v10.11.0](https://github.com/eslint/eslint/releases/tag/v10.11.0)

#### Features

- [`d136fa4`](eslint/eslint@d136fa4) feat: object-shorthand handle quoted properties for `ignoreConstructors` ([#21271](eslint/eslint#21271)) (Pavel)
- [`397b3b8`](eslint/eslint@397b3b8) feat: report unsafe labeled `continue` in `no-unsafe-finally` rule ([#21316](eslint/eslint#21316)) (electrohyun)
- [`d3dd47f`](eslint/eslint@d3dd47f) feat: only exempt `new-cap` built-ins that reference the global ([#21290](eslint/eslint#21290)) (sethamus)

#### Bug Fixes

- [`22b09f5`](eslint/eslint@22b09f5) fix: ignore `__proto__` properties in `prefer-object-spread` ([#21311](eslint/eslint#21311)) (xbinaryx)
- [`b684bb1`](eslint/eslint@b684bb1) fix: make TimePass.parse optional in types and docs ([#21313](eslint/eslint#21313)) (ntnyq)
- [`26d11bc`](eslint/eslint@26d11bc) fix: don't report `__proto__` properties in `object-shorthand` ([#21310](eslint/eslint#21310)) (xbinaryx)

#### Documentation

- [`9ecfdc5`](eslint/eslint@9ecfdc5) docs: note that --cache can serve stale results for cross-file rules ([#21312](eslint/eslint#21312)) (bytedoe)
- [`6c789ff`](eslint/eslint@6c789ff) docs: Update README (GitHub Actions Bot)
- [`5997825`](eslint/eslint@5997825) docs: clarify preserve-caught-error known limitation ([#21294](eslint/eslint#21294)) (Akinyemi Toluwalase)

#### Chores

- [`520dd77`](eslint/eslint@520dd77) perf: Implement fast paths in critical areas ([#21210](eslint/eslint#21210)) (Nicholas C. Zakas)
- [`92086c8`](eslint/eslint@92086c8) test: update `EMFILE` error generation for Node.js 26.9.0 compatibility ([#21330](eslint/eslint#21330)) (Francesco Trotta)
- [`9ac7eb6`](eslint/eslint@9ac7eb6) chore: update github/codeql-action action to v4.38.0 ([#21331](eslint/eslint#21331)) (renovate\[bot])
- [`24310e3`](eslint/eslint@24310e3) chore: update ecosystem plugins ([#21324](eslint/eslint#21324)) (ESLint Bot)
- [`45ad79e`](eslint/eslint@45ad79e) ci: bump pnpm/action-setup from 6.0.10 to 6.1.0 ([#21318](eslint/eslint#21318)) (dependabot\[bot])
- [`ac74e37`](eslint/eslint@ac74e37) chore: Add AGENTS.md with AI disclosure requirements ([#21221](eslint/eslint#21221)) (Nicholas C. Zakas)
- [`c832660`](eslint/eslint@c832660) chore: Upgrade Stylelint to the latest version in docs ([#21245](eslint/eslint#21245)) (Jung Hyeon Jun)
- [`f9f88fc`](eslint/eslint@f9f88fc) chore: update ecosystem plugins ([#21308](eslint/eslint#21308)) (ESLint Bot)
- [`fc81076`](eslint/eslint@fc81076) ci: add more types integration tests ([#20395](eslint/eslint#20395)) (Nitin Kumar)


## [v10.10.0](https://github.com/eslint/eslint/releases/tag/v10.10.0)

#### Features

- [`264b434`](eslint/eslint@264b434) feat: add `d` and `v` flags to `no-unexpected-multiline` ([#21305](eslint/eslint#21305)) (Gihyeon Jeong / 정기현)
- [`c6cc6c5`](eslint/eslint@c6cc6c5) feat: check `Object.prototype` property names in `new-cap` ([#21269](eslint/eslint#21269)) (crimsonjay0)
- [`5661fa6`](eslint/eslint@5661fa6) feat: no-extra-bind false negatives with class fields and static blocks ([#21260](eslint/eslint#21260)) (synthex-byte)

#### Bug Fixes

- [`bb47dc6`](eslint/eslint@bb47dc6) fix: update dependency file-entry-cache to v11 ([#20801](eslint/eslint#20801)) (Milos Djermanovic)
- [`427ac0a`](eslint/eslint@427ac0a) fix: use format strings in debug calls ([#21247](eslint/eslint#21247)) (Francesco Trotta)
- [`9d81532`](eslint/eslint@9d81532) fix: support `__proto__` in `/* exported */` comments ([#21261](eslint/eslint#21261)) (sethamus)
- [`87e0a08`](eslint/eslint@87e0a08) fix: prefer-object-has-own autofix breaks when Object is shadowed ([#21282](eslint/eslint#21282)) (김채영)
- [`8e2cb14`](eslint/eslint@8e2cb14) fix: `new-cap` false positive for `UTC` calls with `properties: false` ([#21275](eslint/eslint#21275)) (Pixel)
- [`9f4a364`](eslint/eslint@9f4a364) fix: Ignore static imports in no-unreachable ([#21276](eslint/eslint#21276)) (Taha Kotil)

#### Documentation

- [`2417cad`](eslint/eslint@2417cad) docs: Update README (GitHub Actions Bot)
- [`9cecb8a`](eslint/eslint@9cecb8a) docs: document `\c` control letter escapes in no-control-regex ([#21286](eslint/eslint#21286)) (한국)
- [`8724829`](eslint/eslint@8724829) docs: update compat table links ([#21263](eslint/eslint#21263)) (fnx)
- [`5634542`](eslint/eslint@5634542) docs: Clarify eqeqeq suggestion behavior ([#21256](eslint/eslint#21256)) (Müslüm Yılmaz)

#### Chores

- [`b3d876b`](eslint/eslint@b3d876b) chore: disable npm audit in ecosystem tests ([#21306](eslint/eslint#21306)) (Francesco Trotta)
- [`1696682`](eslint/eslint@1696682) ci: restore EMFILE test on Node.js 26 ([#21297](eslint/eslint#21297)) (Marry (Subin Yang))
- [`2c7f5d6`](eslint/eslint@2c7f5d6) chore: update github/codeql-action action to v4.37.9 ([#21296](eslint/eslint#21296)) (renovate\[bot])
- [`3c753f1`](eslint/eslint@3c753f1) chore: update eslint ([#21289](eslint/eslint#21289)) (renovate\[bot])
- [`1c73469`](eslint/eslint@1c73469) chore: update ecosystem plugins ([#21280](eslint/eslint#21280)) (ESLint Bot)
- [`08a02be`](eslint/eslint@08a02be) test: add error locations to `no-extra-boolean-cast` ([#21266](eslint/eslint#21266)) (lumir)
- [`77bb1db`](eslint/eslint@77bb1db) chore: update github/codeql-action action to v4.37.8 ([#21270](eslint/eslint#21270)) (renovate\[bot])
- [`007e81a`](eslint/eslint@007e81a) ci: skip EMFILE test on Node.js 26 ([#21265](eslint/eslint#21265)) (lumir)
- [`0430280`](eslint/eslint@0430280) chore: improve ecosystem tests compatibility on Windows ([#21178](eslint/eslint#21178)) (crimsonjay0)
renovate Bot added a commit to NiGhTTraX/eslint-config that referenced this pull request Oct 6, 2026
| datasource | package | from   | to      |
| ---------- | ------- | ------ | ------- |
| npm        | eslint  | 10.9.1 | 10.11.0 |


## [v10.11.0](https://github.com/eslint/eslint/releases/tag/v10.11.0)

#### Features

- [`d136fa4`](eslint/eslint@d136fa4) feat: object-shorthand handle quoted properties for `ignoreConstructors` ([#21271](eslint/eslint#21271)) (Pavel)
- [`397b3b8`](eslint/eslint@397b3b8) feat: report unsafe labeled `continue` in `no-unsafe-finally` rule ([#21316](eslint/eslint#21316)) (electrohyun)
- [`d3dd47f`](eslint/eslint@d3dd47f) feat: only exempt `new-cap` built-ins that reference the global ([#21290](eslint/eslint#21290)) (sethamus)

#### Bug Fixes

- [`22b09f5`](eslint/eslint@22b09f5) fix: ignore `__proto__` properties in `prefer-object-spread` ([#21311](eslint/eslint#21311)) (xbinaryx)
- [`b684bb1`](eslint/eslint@b684bb1) fix: make TimePass.parse optional in types and docs ([#21313](eslint/eslint#21313)) (ntnyq)
- [`26d11bc`](eslint/eslint@26d11bc) fix: don't report `__proto__` properties in `object-shorthand` ([#21310](eslint/eslint#21310)) (xbinaryx)

#### Documentation

- [`9ecfdc5`](eslint/eslint@9ecfdc5) docs: note that --cache can serve stale results for cross-file rules ([#21312](eslint/eslint#21312)) (bytedoe)
- [`6c789ff`](eslint/eslint@6c789ff) docs: Update README (GitHub Actions Bot)
- [`5997825`](eslint/eslint@5997825) docs: clarify preserve-caught-error known limitation ([#21294](eslint/eslint#21294)) (Akinyemi Toluwalase)

#### Chores

- [`520dd77`](eslint/eslint@520dd77) perf: Implement fast paths in critical areas ([#21210](eslint/eslint#21210)) (Nicholas C. Zakas)
- [`92086c8`](eslint/eslint@92086c8) test: update `EMFILE` error generation for Node.js 26.9.0 compatibility ([#21330](eslint/eslint#21330)) (Francesco Trotta)
- [`9ac7eb6`](eslint/eslint@9ac7eb6) chore: update github/codeql-action action to v4.38.0 ([#21331](eslint/eslint#21331)) (renovate\[bot])
- [`24310e3`](eslint/eslint@24310e3) chore: update ecosystem plugins ([#21324](eslint/eslint#21324)) (ESLint Bot)
- [`45ad79e`](eslint/eslint@45ad79e) ci: bump pnpm/action-setup from 6.0.10 to 6.1.0 ([#21318](eslint/eslint#21318)) (dependabot\[bot])
- [`ac74e37`](eslint/eslint@ac74e37) chore: Add AGENTS.md with AI disclosure requirements ([#21221](eslint/eslint#21221)) (Nicholas C. Zakas)
- [`c832660`](eslint/eslint@c832660) chore: Upgrade Stylelint to the latest version in docs ([#21245](eslint/eslint#21245)) (Jung Hyeon Jun)
- [`f9f88fc`](eslint/eslint@f9f88fc) chore: update ecosystem plugins ([#21308](eslint/eslint#21308)) (ESLint Bot)
- [`fc81076`](eslint/eslint@fc81076) ci: add more types integration tests ([#20395](eslint/eslint#20395)) (Nitin Kumar)


## [v10.10.0](https://github.com/eslint/eslint/releases/tag/v10.10.0)

#### Features

- [`264b434`](eslint/eslint@264b434) feat: add `d` and `v` flags to `no-unexpected-multiline` ([#21305](eslint/eslint#21305)) (Gihyeon Jeong / 정기현)
- [`c6cc6c5`](eslint/eslint@c6cc6c5) feat: check `Object.prototype` property names in `new-cap` ([#21269](eslint/eslint#21269)) (crimsonjay0)
- [`5661fa6`](eslint/eslint@5661fa6) feat: no-extra-bind false negatives with class fields and static blocks ([#21260](eslint/eslint#21260)) (synthex-byte)

#### Bug Fixes

- [`bb47dc6`](eslint/eslint@bb47dc6) fix: update dependency file-entry-cache to v11 ([#20801](eslint/eslint#20801)) (Milos Djermanovic)
- [`427ac0a`](eslint/eslint@427ac0a) fix: use format strings in debug calls ([#21247](eslint/eslint#21247)) (Francesco Trotta)
- [`9d81532`](eslint/eslint@9d81532) fix: support `__proto__` in `/* exported */` comments ([#21261](eslint/eslint#21261)) (sethamus)
- [`87e0a08`](eslint/eslint@87e0a08) fix: prefer-object-has-own autofix breaks when Object is shadowed ([#21282](eslint/eslint#21282)) (김채영)
- [`8e2cb14`](eslint/eslint@8e2cb14) fix: `new-cap` false positive for `UTC` calls with `properties: false` ([#21275](eslint/eslint#21275)) (Pixel)
- [`9f4a364`](eslint/eslint@9f4a364) fix: Ignore static imports in no-unreachable ([#21276](eslint/eslint#21276)) (Taha Kotil)

#### Documentation

- [`2417cad`](eslint/eslint@2417cad) docs: Update README (GitHub Actions Bot)
- [`9cecb8a`](eslint/eslint@9cecb8a) docs: document `\c` control letter escapes in no-control-regex ([#21286](eslint/eslint#21286)) (한국)
- [`8724829`](eslint/eslint@8724829) docs: update compat table links ([#21263](eslint/eslint#21263)) (fnx)
- [`5634542`](eslint/eslint@5634542) docs: Clarify eqeqeq suggestion behavior ([#21256](eslint/eslint#21256)) (Müslüm Yılmaz)

#### Chores

- [`b3d876b`](eslint/eslint@b3d876b) chore: disable npm audit in ecosystem tests ([#21306](eslint/eslint#21306)) (Francesco Trotta)
- [`1696682`](eslint/eslint@1696682) ci: restore EMFILE test on Node.js 26 ([#21297](eslint/eslint#21297)) (Marry (Subin Yang))
- [`2c7f5d6`](eslint/eslint@2c7f5d6) chore: update github/codeql-action action to v4.37.9 ([#21296](eslint/eslint#21296)) (renovate\[bot])
- [`3c753f1`](eslint/eslint@3c753f1) chore: update eslint ([#21289](eslint/eslint#21289)) (renovate\[bot])
- [`1c73469`](eslint/eslint@1c73469) chore: update ecosystem plugins ([#21280](eslint/eslint#21280)) (ESLint Bot)
- [`08a02be`](eslint/eslint@08a02be) test: add error locations to `no-extra-boolean-cast` ([#21266](eslint/eslint#21266)) (lumir)
- [`77bb1db`](eslint/eslint@77bb1db) chore: update github/codeql-action action to v4.37.8 ([#21270](eslint/eslint#21270)) (renovate\[bot])
- [`007e81a`](eslint/eslint@007e81a) ci: skip EMFILE test on Node.js 26 ([#21265](eslint/eslint#21265)) (lumir)
- [`0430280`](eslint/eslint@0430280) chore: improve ecosystem tests compatibility on Windows ([#21178](eslint/eslint#21178)) (crimsonjay0)
renovate Bot added a commit to NiGhTTraX/eslint-config that referenced this pull request Oct 6, 2026
| datasource | package | from   | to      |
| ---------- | ------- | ------ | ------- |
| npm        | eslint  | 10.9.1 | 10.11.0 |


## [v10.11.0](https://github.com/eslint/eslint/releases/tag/v10.11.0)

#### Features

- [`d136fa4`](eslint/eslint@d136fa4) feat: object-shorthand handle quoted properties for `ignoreConstructors` ([#21271](eslint/eslint#21271)) (Pavel)
- [`397b3b8`](eslint/eslint@397b3b8) feat: report unsafe labeled `continue` in `no-unsafe-finally` rule ([#21316](eslint/eslint#21316)) (electrohyun)
- [`d3dd47f`](eslint/eslint@d3dd47f) feat: only exempt `new-cap` built-ins that reference the global ([#21290](eslint/eslint#21290)) (sethamus)

#### Bug Fixes

- [`22b09f5`](eslint/eslint@22b09f5) fix: ignore `__proto__` properties in `prefer-object-spread` ([#21311](eslint/eslint#21311)) (xbinaryx)
- [`b684bb1`](eslint/eslint@b684bb1) fix: make TimePass.parse optional in types and docs ([#21313](eslint/eslint#21313)) (ntnyq)
- [`26d11bc`](eslint/eslint@26d11bc) fix: don't report `__proto__` properties in `object-shorthand` ([#21310](eslint/eslint#21310)) (xbinaryx)

#### Documentation

- [`9ecfdc5`](eslint/eslint@9ecfdc5) docs: note that --cache can serve stale results for cross-file rules ([#21312](eslint/eslint#21312)) (bytedoe)
- [`6c789ff`](eslint/eslint@6c789ff) docs: Update README (GitHub Actions Bot)
- [`5997825`](eslint/eslint@5997825) docs: clarify preserve-caught-error known limitation ([#21294](eslint/eslint#21294)) (Akinyemi Toluwalase)

#### Chores

- [`520dd77`](eslint/eslint@520dd77) perf: Implement fast paths in critical areas ([#21210](eslint/eslint#21210)) (Nicholas C. Zakas)
- [`92086c8`](eslint/eslint@92086c8) test: update `EMFILE` error generation for Node.js 26.9.0 compatibility ([#21330](eslint/eslint#21330)) (Francesco Trotta)
- [`9ac7eb6`](eslint/eslint@9ac7eb6) chore: update github/codeql-action action to v4.38.0 ([#21331](eslint/eslint#21331)) (renovate\[bot])
- [`24310e3`](eslint/eslint@24310e3) chore: update ecosystem plugins ([#21324](eslint/eslint#21324)) (ESLint Bot)
- [`45ad79e`](eslint/eslint@45ad79e) ci: bump pnpm/action-setup from 6.0.10 to 6.1.0 ([#21318](eslint/eslint#21318)) (dependabot\[bot])
- [`ac74e37`](eslint/eslint@ac74e37) chore: Add AGENTS.md with AI disclosure requirements ([#21221](eslint/eslint#21221)) (Nicholas C. Zakas)
- [`c832660`](eslint/eslint@c832660) chore: Upgrade Stylelint to the latest version in docs ([#21245](eslint/eslint#21245)) (Jung Hyeon Jun)
- [`f9f88fc`](eslint/eslint@f9f88fc) chore: update ecosystem plugins ([#21308](eslint/eslint#21308)) (ESLint Bot)
- [`fc81076`](eslint/eslint@fc81076) ci: add more types integration tests ([#20395](eslint/eslint#20395)) (Nitin Kumar)


## [v10.10.0](https://github.com/eslint/eslint/releases/tag/v10.10.0)

#### Features

- [`264b434`](eslint/eslint@264b434) feat: add `d` and `v` flags to `no-unexpected-multiline` ([#21305](eslint/eslint#21305)) (Gihyeon Jeong / 정기현)
- [`c6cc6c5`](eslint/eslint@c6cc6c5) feat: check `Object.prototype` property names in `new-cap` ([#21269](eslint/eslint#21269)) (crimsonjay0)
- [`5661fa6`](eslint/eslint@5661fa6) feat: no-extra-bind false negatives with class fields and static blocks ([#21260](eslint/eslint#21260)) (synthex-byte)

#### Bug Fixes

- [`bb47dc6`](eslint/eslint@bb47dc6) fix: update dependency file-entry-cache to v11 ([#20801](eslint/eslint#20801)) (Milos Djermanovic)
- [`427ac0a`](eslint/eslint@427ac0a) fix: use format strings in debug calls ([#21247](eslint/eslint#21247)) (Francesco Trotta)
- [`9d81532`](eslint/eslint@9d81532) fix: support `__proto__` in `/* exported */` comments ([#21261](eslint/eslint#21261)) (sethamus)
- [`87e0a08`](eslint/eslint@87e0a08) fix: prefer-object-has-own autofix breaks when Object is shadowed ([#21282](eslint/eslint#21282)) (김채영)
- [`8e2cb14`](eslint/eslint@8e2cb14) fix: `new-cap` false positive for `UTC` calls with `properties: false` ([#21275](eslint/eslint#21275)) (Pixel)
- [`9f4a364`](eslint/eslint@9f4a364) fix: Ignore static imports in no-unreachable ([#21276](eslint/eslint#21276)) (Taha Kotil)

#### Documentation

- [`2417cad`](eslint/eslint@2417cad) docs: Update README (GitHub Actions Bot)
- [`9cecb8a`](eslint/eslint@9cecb8a) docs: document `\c` control letter escapes in no-control-regex ([#21286](eslint/eslint#21286)) (한국)
- [`8724829`](eslint/eslint@8724829) docs: update compat table links ([#21263](eslint/eslint#21263)) (fnx)
- [`5634542`](eslint/eslint@5634542) docs: Clarify eqeqeq suggestion behavior ([#21256](eslint/eslint#21256)) (Müslüm Yılmaz)

#### Chores

- [`b3d876b`](eslint/eslint@b3d876b) chore: disable npm audit in ecosystem tests ([#21306](eslint/eslint#21306)) (Francesco Trotta)
- [`1696682`](eslint/eslint@1696682) ci: restore EMFILE test on Node.js 26 ([#21297](eslint/eslint#21297)) (Marry (Subin Yang))
- [`2c7f5d6`](eslint/eslint@2c7f5d6) chore: update github/codeql-action action to v4.37.9 ([#21296](eslint/eslint#21296)) (renovate\[bot])
- [`3c753f1`](eslint/eslint@3c753f1) chore: update eslint ([#21289](eslint/eslint#21289)) (renovate\[bot])
- [`1c73469`](eslint/eslint@1c73469) chore: update ecosystem plugins ([#21280](eslint/eslint#21280)) (ESLint Bot)
- [`08a02be`](eslint/eslint@08a02be) test: add error locations to `no-extra-boolean-cast` ([#21266](eslint/eslint#21266)) (lumir)
- [`77bb1db`](eslint/eslint@77bb1db) chore: update github/codeql-action action to v4.37.8 ([#21270](eslint/eslint#21270)) (renovate\[bot])
- [`007e81a`](eslint/eslint@007e81a) ci: skip EMFILE test on Node.js 26 ([#21265](eslint/eslint#21265)) (lumir)
- [`0430280`](eslint/eslint@0430280) chore: improve ecosystem tests compatibility on Windows ([#21178](eslint/eslint#21178)) (crimsonjay0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

accepted There is consensus among the team that this change meets the criteria for inclusion bug ESLint is working incorrectly contributor pool feature This change adds a new feature to ESLint rule Relates to ESLint's core rules

Projects

Status: Complete

Development

Successfully merging this pull request may close these issues.

Bug: no-unsafe-finally misses labeled continue targeting a loop outside finally

4 participants