Skip to content

Comments

fix(linter): patch @typescript-eslint/scope manager#15214

Merged
overlookmotel merged 2 commits intooxc-project:mainfrom
lilnasy:fix/linter/patch-typescript-eslint-scope-manager
Nov 17, 2025
Merged

fix(linter): patch @typescript-eslint/scope manager#15214
overlookmotel merged 2 commits intooxc-project:mainfrom
lilnasy:fix/linter/patch-typescript-eslint-scope-manager

Conversation

@lilnasy
Copy link
Contributor

@lilnasy lilnasy commented Nov 1, 2025

Copilot AI review requested due to automatic review settings November 1, 2025 21:56
@lilnasy lilnasy requested a review from camc314 as a code owner November 1, 2025 21:56
@github-actions github-actions bot added A-linter Area - Linter A-cli Area - CLI C-bug Category - Bug labels Nov 1, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds a patch for the @typescript-eslint/scope-manager package (version 8.46.2) to fix issues with implicit lib variable handling in the scope analysis system. The patch makes the isTypeVariable and isValueVariable properties mutable and ensures implicit lib variables are always resolved statically.

Key changes:

  • Configures pnpm to apply a patch to @typescript-eslint/scope-manager@8.46.2
  • Creates a patch file that modifies how implicit lib variables are handled in scope resolution
  • Updates the lock file to reference the patched version of the dependency

Reviewed Changes

Copilot reviewed 2 out of 3 changed files in this pull request and generated 1 comment.

File Description
pnpm-workspace.yaml Adds patchedDependencies configuration pointing to the scope-manager patch file
pnpm-lock.yaml Records the patch hash and path, updates dependency version references to include patch hash
apps/oxlint/patches/@typescript-eslint__scope-manager.patch Contains the actual patch that modifies ImplicitLibVariable handling in the scope-manager package
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@lilnasy lilnasy force-pushed the fix/linter/patch-typescript-eslint-scope-manager branch 2 times, most recently from 4367484 to 40b74cf Compare November 1, 2025 22:04
@overlookmotel overlookmotel added A-linter-plugins Area - Linter JS plugins and removed A-linter Area - Linter labels Nov 10, 2025
@overlookmotel overlookmotel self-assigned this Nov 10, 2025
@lilnasy lilnasy force-pushed the fix/linter/patch-typescript-eslint-scope-manager branch from 40b74cf to 16ac899 Compare November 10, 2025 08:43
@github-actions github-actions bot added the A-linter Area - Linter label Nov 10, 2025
@lilnasy lilnasy force-pushed the fix/linter/patch-typescript-eslint-scope-manager branch from 16ac899 to e13c215 Compare November 10, 2025 08:47
Copy link
Member

@overlookmotel overlookmotel left a comment

Choose a reason for hiding this comment

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

Sorry it's taken me so long to get to this. It's a bit of a head-scratcher, what with TS-ESLint's strange behavior, and the layer of changes that ESLint lays on top.

But let's merge this, and track what happens on your PR and on typescript-eslint/typescript-eslint#11762. We can amend our approach if necessary.

There's still a small incompatibility:

In ESLint, in a script (not module) containing var foo;, isGlobalReference(foo) === true, but in our impl it returns false.

But in ESLint, when sourceType is "commonjs", isGlobalReference(foo) === false.

We don't support sourceType: "commonjs" at present. Our behavior for "script" behaves more like "commonjs" in ESLint - which is probably a good thing, because that's more likely to be the type of files people will be linting with Oxlint.

@overlookmotel overlookmotel added 0-merge Merge with Graphite Merge Queue and removed 0-merge Merge with Graphite Merge Queue labels Nov 17, 2025
@graphite-app
Copy link
Contributor

graphite-app bot commented Nov 17, 2025

Merge activity

  • Nov 17, 7:19 PM UTC: @lilnasy we removed the merge queue label because we could not find a Graphite account associated with your GitHub profile.

You must have a Graphite account in order to use the merge queue. Create an account and try again using this link

@overlookmotel overlookmotel force-pushed the fix/linter/patch-typescript-eslint-scope-manager branch from e13c215 to 3cc43f2 Compare November 17, 2025 19:22
@overlookmotel overlookmotel merged commit fba31fa into oxc-project:main Nov 17, 2025
18 checks passed
graphite-app bot pushed a commit that referenced this pull request Nov 17, 2025
#15807)

#15214 added a patch to `@typescript-eslint/scope-manager` dependency.

Pin that dependency, so the patch continues to work.
graphite-app bot pushed a commit that referenced this pull request Nov 17, 2025
Follow-on after #15214. Pure refactor of tests. Just simplify the plugin used in the test fixture, to make it easier to read, and remove dead code.
graphite-app bot pushed a commit that referenced this pull request Nov 17, 2025
Follow-on after #15214. Add a test fixture for scope manager running on a CommonJS file.
@lilnasy lilnasy deleted the fix/linter/patch-typescript-eslint-scope-manager branch November 21, 2025 04:28
overlookmotel added a commit that referenced this pull request Nov 24, 2025
# Oxlint
### 💥 BREAKING CHANGES

- cbb27fd ast: [**BREAKING**] Add `TSGlobalDeclaration` type (#15712)
(overlookmotel)

### 🚀 Features

- 72660f7 linter: Support auto generate config document for tuple lint
option (#15904) (Duc Nghiem Xuan)
- 0c1f82b linter/plugins: Add `tokens` property to `Program` (#16020)
(overlookmotel)
- 9e61beb linter/plugins: Implement `SourceCode#getFirstToken()`
(#16002) (Arsh)
- 9a548dd linter/plugins: Implement `SourceCode#getLastTokens()`
(#16000) (Arsh)
- 0b6cb11 linter/plugins: Implement `SourceCode#getFirstTokens()`
(#15976) (Arsh)
- 166781e linter/plugins: Implement `SourceCode#getTokenAfter()`
(#15973) (Arsh)
- 6ae232b linter: Expose type errors via tsgolint (#15917) (camc314)
- 2bfdd26 linter/plugins: Implement `SourceCode#getTokensAfter()`
(#15971) (Arsh)
- 45fffc1 linter/plugins: Implement `SourceCode#getTokenBefore()`
(#15956) (Arsh)
- 776e473 linter/plugins: Implement `SourceCode#getTokensBefore()`
(#15955) (Arsh)
- 595867a oxlint: Generate markdownDescription fields for oxlint JSON
schema. (#15959) (connorshea)
- 5569317 vscode: Add quick actions to status bar tooltip (#15962)
(Sysix)
- 986cac1 linter/plugins: Token-related `SourceCode` APIs (TS ESLint
implementation) (#15861) (Arsh)
- a21f9e4 linter: Implement unicorn/prefer-bigint-literals rule (#15923)
(Michiel Vrins)
- 4b9d8d2 linter/type-aware: Include range with tsconfig diagnostics
(#15916) (camc314)
- 220d01e editor: Improve the status bar item for the VS Code extension
by adding a tooltip. (#15819) (connorshea)

### 🐛 Bug Fixes

- 2bd3cb6 apps, editors, napi: Fix `oxlint-disable` comments (#16014)
(overlookmotel)
- 81f5360 linter/prefer-number-properties: Get fixer to replace entire
call expr (#15979) (camc314)
- e4ba07f language_server: Always write to memory file system (#15975)
(Sysix)
- a8a2032 linter: Support missing `range` for internal diagnostics
(#15964) (camc314)
- 619a226 oxlint/lsp: Don't register `textDocument/formatting`
capability (#15882) (Sysix)
- 6ab1a20 linter: Fix no_useless_spread producing invalid syntax when
removing empty object spreads (#15905) (camc314)
- be4b6df linter: Unicorn/prefer-string-replace-all incorrectly escapes
backslashes (#15901) (camc314)
- 9fa9ef2 linter: Gracefully fail when using import plugin, large file
counf and JS plugins (#15864) (camc314)
- c027398 linter/plugins: Correct bindings package names glob in TSDown
config (#15871) (overlookmotel)
- b622ef8 linter: Fix `oxc/bad_array_method_on_arguments` rule behavior.
(#15854) (connorshea)
- aa06c3f linter: Recognize NewExpression as value context in
no-unused-private-class-members (#15843) (camc314)
- e89c5ba typescript/prefer-namespace-keyword: Skip nested
`TSModuleDeclaration`s (#15806) (overlookmotel)
- 646d020 linter/exhaustive-dependencies: Prevent is_callee_of_call_expr
flag from leaking into nested expressions (#15832) (camc314)
- 46bd6bd linter/plugins: Pin `@typescript-eslint/scope-manager`
dependency (#15807) (overlookmotel)
- fba31fa linter: Patch `@typescript-eslint/scope manager` (#15214)
(Arsh)
- 50307c1 linter/jest: Ignore `expect` identifier in argument position
(#15785) (camc314)

### ⚡ Performance

- 024b48a linter/plugins: Lazy-load tokens parsing code (#16011)
(overlookmotel)
- 15365c9 linter/plugins: Reduce var assignments (#15953)
(overlookmotel)
- 84d1f4f linter/plugins: Downgrade some checks to debug-only (#15922)
(overlookmotel)
- a49f704 linter/typescript: Avoid searching source text unless required
(#15805) (overlookmotel)

### 📚 Documentation

- ceffa5a linter: Add config option docs for various rules. (#16024)
(connorshea)
- 9a0ed13 linter: Fix config option docs for eslint/operator-assignment
rule. (#16030) (connorshea)
- 0b18005 linter: Add config docs generation for rules with Regex
arguments (#15978) (connorshea)
- 48d18e0 linter: Improve diagnostic message for promise/catch-or-return
rule (#15980) (connorshea)
- 6c72e84 linter: Use backticks for code elements across more rule
diagnostics (#15958) (connorshea)
- a63dad7 linter/plugins: Add comment (#15952) (overlookmotel)
- 81ea642 vscode: Use markdownDescription for better formatting in
VSCode Settings (#15889) (connorshea)
- db6a110 linter/plugins: Fix JSDoc comment (#15884) (overlookmotel)
- 1487271 linter: Add config option docs for `jsdoc/require-param` and
`jsdoc/require-returns` rules (#15857) (connorshea)
- fbf0fd4 linter/plugins: Add JSDoc comments to `Plugin` and `Rule`
types (#15815) (overlookmotel)
- ac5e4b5 linter/plugins: Add JSDoc comments and improve comments
(#15814) (overlookmotel)
- 9b7b083 linter: Fix error in `curly` `"all"` example (#15801)
(camc314)
- 65a3520 linter: Improve diagnostic for consistent-type-definitions
rule. (#15752) (connorshea)

### 🛡️ Security

- f9b9276 deps: Update dependency rolldown to v1.0.0-beta.51 (#15856)
(renovate[bot])
# Oxfmt
### 💥 BREAKING CHANGES

- a937890 formatter: [**BREAKING**] Default to `lineWidth: 100` (#15933)
(leaysgur)
- 03d5f5a formatter/sort-imports: [**BREAKING**] Change default order to
`natural` with `natord` crate (#15828) (leaysgur)
- cbb27fd ast: [**BREAKING**] Add `TSGlobalDeclaration` type (#15712)
(overlookmotel)

### 🚀 Features

- 7818e22 formatter/sort-imports: Support `options.groups` (#15831)
(leaysgur)
- f9a502c oxfmt: `oxfmt --lsp` support (#15765) (leaysgur)

### 🐛 Bug Fixes

- 4817486 formatter: Revert `FormatElement::BestFitting` printing logic
(#16028) (Dunqing)
- 5562dd6 formatter: Incorrect formatting method chain with trailing
comments (#16027) (Dunqing)
- 6d14c8b formatter: Comments in export class decorators are printing
incorrectly (#15897) (Dunqing)
- 683c764 formatter: Correct a few minor mismatched typescript tests
(#15894) (Dunqing)
- c11cc07 formatter: Improve formatting for default type on type
parameters (#15893) (Dunqing)
- 0bff596 formatter: Handle JSX expresssion dangling comment (#15890)
(leaysgur)
- 16a9dc8 formatter: Inconsistent printing of class extends and
interface extends (#15892) (Dunqing)
- 300b496 formatter: Inconsistent CallExpression and NewExpression
around member chain and logical expression (#15858) (Dunqing)

### ⚡ Performance

- 65174cc formatter: Reduce the size of `TextWidth` to 4 byte (#15827)
(Dunqing)
- 4fe3aac formatter: Use `ArenaVec` and `ArenaBox` (#15420) (Dunqing)

Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com>
taearls pushed a commit to taearls/oxc that referenced this pull request Dec 11, 2025
)

- Part of oxc-project#14827
- Fixes the bug noticed in a review in
oxc-project#14890 (comment)
- Originally reported as
typescript-eslint/typescript-eslint#11714
- Originally fixed in
typescript-eslint/typescript-eslint#11715
- Patching in oxlint because neither the bug nor the fix has been
reviewed in the `typescript-eslint` org.
taearls pushed a commit to taearls/oxc that referenced this pull request Dec 11, 2025
oxc-project#15807)

oxc-project#15214 added a patch to `@typescript-eslint/scope-manager` dependency.

Pin that dependency, so the patch continues to work.
taearls pushed a commit to taearls/oxc that referenced this pull request Dec 11, 2025
Follow-on after oxc-project#15214. Pure refactor of tests. Just simplify the plugin used in the test fixture, to make it easier to read, and remove dead code.
taearls pushed a commit to taearls/oxc that referenced this pull request Dec 11, 2025
…#15809)

Follow-on after oxc-project#15214. Add a test fixture for scope manager running on a CommonJS file.
taearls pushed a commit to taearls/oxc that referenced this pull request Dec 11, 2025
# Oxlint
### 💥 BREAKING CHANGES

- cbb27fd ast: [**BREAKING**] Add `TSGlobalDeclaration` type (oxc-project#15712)
(overlookmotel)

### 🚀 Features

- 72660f7 linter: Support auto generate config document for tuple lint
option (oxc-project#15904) (Duc Nghiem Xuan)
- 0c1f82b linter/plugins: Add `tokens` property to `Program` (oxc-project#16020)
(overlookmotel)
- 9e61beb linter/plugins: Implement `SourceCode#getFirstToken()`
(oxc-project#16002) (Arsh)
- 9a548dd linter/plugins: Implement `SourceCode#getLastTokens()`
(oxc-project#16000) (Arsh)
- 0b6cb11 linter/plugins: Implement `SourceCode#getFirstTokens()`
(oxc-project#15976) (Arsh)
- 166781e linter/plugins: Implement `SourceCode#getTokenAfter()`
(oxc-project#15973) (Arsh)
- 6ae232b linter: Expose type errors via tsgolint (oxc-project#15917) (camc314)
- 2bfdd26 linter/plugins: Implement `SourceCode#getTokensAfter()`
(oxc-project#15971) (Arsh)
- 45fffc1 linter/plugins: Implement `SourceCode#getTokenBefore()`
(oxc-project#15956) (Arsh)
- 776e473 linter/plugins: Implement `SourceCode#getTokensBefore()`
(oxc-project#15955) (Arsh)
- 595867a oxlint: Generate markdownDescription fields for oxlint JSON
schema. (oxc-project#15959) (connorshea)
- 5569317 vscode: Add quick actions to status bar tooltip (oxc-project#15962)
(Sysix)
- 986cac1 linter/plugins: Token-related `SourceCode` APIs (TS ESLint
implementation) (oxc-project#15861) (Arsh)
- a21f9e4 linter: Implement unicorn/prefer-bigint-literals rule (oxc-project#15923)
(Michiel Vrins)
- 4b9d8d2 linter/type-aware: Include range with tsconfig diagnostics
(oxc-project#15916) (camc314)
- 220d01e editor: Improve the status bar item for the VS Code extension
by adding a tooltip. (oxc-project#15819) (connorshea)

### 🐛 Bug Fixes

- 2bd3cb6 apps, editors, napi: Fix `oxlint-disable` comments (oxc-project#16014)
(overlookmotel)
- 81f5360 linter/prefer-number-properties: Get fixer to replace entire
call expr (oxc-project#15979) (camc314)
- e4ba07f language_server: Always write to memory file system (oxc-project#15975)
(Sysix)
- a8a2032 linter: Support missing `range` for internal diagnostics
(oxc-project#15964) (camc314)
- 619a226 oxlint/lsp: Don't register `textDocument/formatting`
capability (oxc-project#15882) (Sysix)
- 6ab1a20 linter: Fix no_useless_spread producing invalid syntax when
removing empty object spreads (oxc-project#15905) (camc314)
- be4b6df linter: Unicorn/prefer-string-replace-all incorrectly escapes
backslashes (oxc-project#15901) (camc314)
- 9fa9ef2 linter: Gracefully fail when using import plugin, large file
counf and JS plugins (oxc-project#15864) (camc314)
- c027398 linter/plugins: Correct bindings package names glob in TSDown
config (oxc-project#15871) (overlookmotel)
- b622ef8 linter: Fix `oxc/bad_array_method_on_arguments` rule behavior.
(oxc-project#15854) (connorshea)
- aa06c3f linter: Recognize NewExpression as value context in
no-unused-private-class-members (oxc-project#15843) (camc314)
- e89c5ba typescript/prefer-namespace-keyword: Skip nested
`TSModuleDeclaration`s (oxc-project#15806) (overlookmotel)
- 646d020 linter/exhaustive-dependencies: Prevent is_callee_of_call_expr
flag from leaking into nested expressions (oxc-project#15832) (camc314)
- 46bd6bd linter/plugins: Pin `@typescript-eslint/scope-manager`
dependency (oxc-project#15807) (overlookmotel)
- fba31fa linter: Patch `@typescript-eslint/scope manager` (oxc-project#15214)
(Arsh)
- 50307c1 linter/jest: Ignore `expect` identifier in argument position
(oxc-project#15785) (camc314)

### ⚡ Performance

- 024b48a linter/plugins: Lazy-load tokens parsing code (oxc-project#16011)
(overlookmotel)
- 15365c9 linter/plugins: Reduce var assignments (oxc-project#15953)
(overlookmotel)
- 84d1f4f linter/plugins: Downgrade some checks to debug-only (oxc-project#15922)
(overlookmotel)
- a49f704 linter/typescript: Avoid searching source text unless required
(oxc-project#15805) (overlookmotel)

### 📚 Documentation

- ceffa5a linter: Add config option docs for various rules. (oxc-project#16024)
(connorshea)
- 9a0ed13 linter: Fix config option docs for eslint/operator-assignment
rule. (oxc-project#16030) (connorshea)
- 0b18005 linter: Add config docs generation for rules with Regex
arguments (oxc-project#15978) (connorshea)
- 48d18e0 linter: Improve diagnostic message for promise/catch-or-return
rule (oxc-project#15980) (connorshea)
- 6c72e84 linter: Use backticks for code elements across more rule
diagnostics (oxc-project#15958) (connorshea)
- a63dad7 linter/plugins: Add comment (oxc-project#15952) (overlookmotel)
- 81ea642 vscode: Use markdownDescription for better formatting in
VSCode Settings (oxc-project#15889) (connorshea)
- db6a110 linter/plugins: Fix JSDoc comment (oxc-project#15884) (overlookmotel)
- 1487271 linter: Add config option docs for `jsdoc/require-param` and
`jsdoc/require-returns` rules (oxc-project#15857) (connorshea)
- fbf0fd4 linter/plugins: Add JSDoc comments to `Plugin` and `Rule`
types (oxc-project#15815) (overlookmotel)
- ac5e4b5 linter/plugins: Add JSDoc comments and improve comments
(oxc-project#15814) (overlookmotel)
- 9b7b083 linter: Fix error in `curly` `"all"` example (oxc-project#15801)
(camc314)
- 65a3520 linter: Improve diagnostic for consistent-type-definitions
rule. (oxc-project#15752) (connorshea)

### 🛡️ Security

- f9b9276 deps: Update dependency rolldown to v1.0.0-beta.51 (oxc-project#15856)
(renovate[bot])
# Oxfmt
### 💥 BREAKING CHANGES

- a937890 formatter: [**BREAKING**] Default to `lineWidth: 100` (oxc-project#15933)
(leaysgur)
- 03d5f5a formatter/sort-imports: [**BREAKING**] Change default order to
`natural` with `natord` crate (oxc-project#15828) (leaysgur)
- cbb27fd ast: [**BREAKING**] Add `TSGlobalDeclaration` type (oxc-project#15712)
(overlookmotel)

### 🚀 Features

- 7818e22 formatter/sort-imports: Support `options.groups` (oxc-project#15831)
(leaysgur)
- f9a502c oxfmt: `oxfmt --lsp` support (oxc-project#15765) (leaysgur)

### 🐛 Bug Fixes

- 4817486 formatter: Revert `FormatElement::BestFitting` printing logic
(oxc-project#16028) (Dunqing)
- 5562dd6 formatter: Incorrect formatting method chain with trailing
comments (oxc-project#16027) (Dunqing)
- 6d14c8b formatter: Comments in export class decorators are printing
incorrectly (oxc-project#15897) (Dunqing)
- 683c764 formatter: Correct a few minor mismatched typescript tests
(oxc-project#15894) (Dunqing)
- c11cc07 formatter: Improve formatting for default type on type
parameters (oxc-project#15893) (Dunqing)
- 0bff596 formatter: Handle JSX expresssion dangling comment (oxc-project#15890)
(leaysgur)
- 16a9dc8 formatter: Inconsistent printing of class extends and
interface extends (oxc-project#15892) (Dunqing)
- 300b496 formatter: Inconsistent CallExpression and NewExpression
around member chain and logical expression (oxc-project#15858) (Dunqing)

### ⚡ Performance

- 65174cc formatter: Reduce the size of `TextWidth` to 4 byte (oxc-project#15827)
(Dunqing)
- 4fe3aac formatter: Use `ArenaVec` and `ArenaBox` (oxc-project#15420) (Dunqing)

Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-cli Area - CLI A-linter Area - Linter A-linter-plugins Area - Linter JS plugins C-bug Category - Bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants