Skip to content

fix(linter): treat TSGlobalDeclaration as ambient in has_ambient_typescript_ancestor#22577

Merged
graphite-app[bot] merged 1 commit into
mainfrom
codex/fix-ambient-global-declaration
May 19, 2026
Merged

fix(linter): treat TSGlobalDeclaration as ambient in has_ambient_typescript_ancestor#22577
graphite-app[bot] merged 1 commit into
mainfrom
codex/fix-ambient-global-declaration

Conversation

@camc314

@camc314 camc314 commented May 19, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #22572 to handle ambient global {} declarations without requiring an explicit declare global.

@camc314 camc314 self-assigned this May 19, 2026
@github-actions github-actions Bot added the A-linter Area - Linter label May 19, 2026
@camc314 camc314 added the 0-merge Merge with Graphite Merge Queue label May 19, 2026
@camc314 camc314 marked this pull request as ready for review May 19, 2026 10:59
Copilot AI review requested due to automatic review settings May 19, 2026 10:59

camc314 commented May 19, 2026

Copy link
Copy Markdown
Contributor Author

Merge activity

@camc314 camc314 changed the title fix(linter): treat global declarations as ambient fix(linter): treat global declarations as ambient in has_ambient_typescript_ancestor May 19, 2026
@camc314 camc314 changed the title fix(linter): treat global declarations as ambient in has_ambient_typescript_ancestor fix(linter): treat TSGlobalDeclaration as ambient in has_ambient_typescript_ancestor May 19, 2026

Copilot AI 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.

Pull request overview

Follow-up to #22572: treats any TSGlobalDeclaration as ambient regardless of the declare flag, since global {} blocks are only valid inside ambient contexts in TypeScript.

Changes:

  • has_ambient_typescript_ancestor now returns true for any TSGlobalDeclaration ancestor instead of checking its declare field.
  • Added a passing test in no_namespace for a global { namespace foo {} } case in a .d.ts file with allowDeclarations: true.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
crates/oxc_linter/src/utils/typescript.rs Treat any TSGlobalDeclaration ancestor as ambient, with explanatory comment.
crates/oxc_linter/src/rules/typescript/no_namespace.rs Adds passing test covering an implicit (no declare) global block.

…ypescript_ancestor` (#22577)

Follow-up to #22572 to handle ambient `global {}` declarations without requiring an explicit `declare global`.
@graphite-app graphite-app Bot force-pushed the codex/fix-ambient-global-declaration branch from 91beea9 to 4f33aa7 Compare May 19, 2026 11:02
@graphite-app graphite-app Bot merged commit 4f33aa7 into main May 19, 2026
29 checks passed
@graphite-app graphite-app Bot removed the 0-merge Merge with Graphite Merge Queue label May 19, 2026
@graphite-app graphite-app Bot deleted the codex/fix-ambient-global-declaration branch May 19, 2026 11:07
Dunqing added a commit that referenced this pull request May 26, 2026
# Oxlint
### 🚀 Features

- 10da26b linter: `no-misleading-character-class` add suggestions for
regex literal (#22681) (Sysix)
- b84941e linter/vue: Implement no-expose-after-await rule (#22675)
(bab)
- 98b98c1 linter/vue: Implement no-computed-properties-in-data rule
(#22674) (bab)
- 868e2e8 linter: Add suggestion for `no-misleading-character-class`
(#22631) (Sysix)
- 2d4c919 oxlint: Support `vite-plus/resolveConfig` for vite.config.ts
(#22456) (leaysgur)
- 2a60012 linter/vue: Implement require-render-return rule (#22613)
(bab)
- 9f227fd linter/vue: Implement no-deprecated-props-default-this rule
(#21892) (bab)
- 9cd28b3 linter: Add debug option to print files to be linted (#22546)
(camchenry)
- 87f065e linter/vue: Implement return-in-emits-validator rule (#21935)
(bab)
- ea0380c linter/unicorn: Implement `import-style` rule (#22173) (Hao
Chen)
- dde40fe linter/vue: Implement no-watch-after-await rule (#22006) (bab)
- a735eb0 linter/vue: Implement valid-next-tick rule (#22531) (bab)
- 6dc615d linter/vue: Implement no-shared-component-data rule (#21842)
(bab)
- a656418 linter/vue: Implement valid-define-options rule (#22107) (bab)
- bb6f1b2 linter/vue: Implement require-slots-as-functions rule (#22244)
(bab)
- 5fa4774 linter/n: Implement `callback-return` rule (#22470) (Mikhail
Baev)

### 🐛 Bug Fixes

- 52bd016 linter: Respect allow unused disable directives in LSP
(#22715) (camc314)
- fa7c463 semantic: Correct TS enum member symbol spans (#22689)
(camc314)
- ed445ba linter: Respect flags overrides for `RegExp(/regex/i, "u")`
(#22678) (Sysix)
- 26b9396 semantic: Resolve parameter decorators outside parameter scope
(#22623) (camc314)
- 203952d linter: `no-misleading-character-class` fix
`is_unicode_code_point_escape` check (#22655) (Sysix)
- 2f64d3d linter: `no-misleading-character-class` own diagnostic for
surrogate pairs without u flag (#22654) (Sysix)
- 0c6ebc2 linter/eslint/no-lone-blocks: Do not flag empty loops (#22649)
(Mikhail Baev)
- 2a7562e linter/no-focused-tests: Mark fixer as a suggestion (#22645)
(camc314)
- dbe644f linter: Respect args none for unused rest parameters (#22627)
(camc314)
- d0211b0 linter: Allow undefined in DummyRuleMap index (#22626)
(camc314)
- 36fc0ec oxlint/lsp: "ignore this" actions merge with existing
directive (#22604) (Sysix)
- f7f370e linter/vitest/prefer-expect-type-of: Recommend `toBeTypeOf`
instead of `expectTypeOf` (#22612) (Mikhail Baev)
- 77063e5 linter/consistent-indexed-object-style: Preserve interface
modifiers in fixes (#22579) (camc314)
- 4f33aa7 linter: Treat `TSGlobalDeclaration` as ambient in
`has_ambient_typescript_ancestor` (#22577) (camc314)

### ⚡ Performance

- c22938d linter/no-async-endpoint-handlers: Populate node types
(#22601) (camc314)
- 607486e linter/no-negated-condition: Populate node types (#22602)
(camc314)
- 4dcaa59 linter/consistent-type-imports: Populate node types (#22600)
(camc314)
- 5bd3b25 linter/no-unused-vars: Avoid cloned ancestor iterator (#22598)
(camc314)
- 97fe9ba linter/no-extra-non-null-assertion: Reduce node matches
(#22588) (camc314)
- ae98296 linter/consistent-indexed-object-style: Populate node types
(#22578) (camc314)
# Oxfmt
### 🚀 Features

- 16b8058 oxfmt: Support `vite-plus/resolveConfig` for vite.config.ts
(#22454) (leaysgur)

### 🐛 Bug Fixes

- 5a26479 formatter: Preserve import phases (#22692) (Cameron)

### ⚡ Performance

- 78cf83f formatter: Pre-size output buffer using source text length
(#22594) (Dunqing)

Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com>
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.

2 participants