-
-
Notifications
You must be signed in to change notification settings - Fork 737
fix(semantic): allow reserved keywords in typescript ambient contexts #15495
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(semantic): allow reserved keywords in typescript ambient contexts #15495
Conversation
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
CodSpeed Performance ReportMerging #15495 will not alter performanceComparing Summary
Footnotes
|
2812de7 to
28b3708
Compare
28b3708 to
75ad01b
Compare
6d6dd71 to
a0895a4
Compare
|
This probably should be solved in a different way... |
The "look up ancestors" part only applies to |
75ad01b to
e751988
Compare
a0895a4 to
103d98d
Compare
e751988 to
fc8846f
Compare
103d98d to
c0ba508
Compare
c0ba508 to
c8c7da7
Compare
fc8846f to
0fb9c45
Compare
c8c7da7 to
b3fb231
Compare
0fb9c45 to
8e2056d
Compare
8e2056d to
f0ce955
Compare
b3fb231 to
ee035b4
Compare
f0ce955 to
a1745a9
Compare
187bbc9 to
ffda463
Compare
There was a problem hiding this 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 allows reserved keywords (like private, await) to be used as identifiers in TypeScript ambient contexts by relaxing keyword restrictions for declare variable declarations. The change fixes parsing of TypeScript declaration files where reserved keywords may appear as variable names.
- Adds logic to check if a binding identifier is part of a
declarevariable declaration - Updates test coverage snapshots to reflect one additional passing test
- Fixes the
topLevelAwait.3.tstest case which previously had errors
Reviewed Changes
Copilot reviewed 1 out of 9 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
crates/oxc_semantic/src/checker/javascript.rs |
Adds new helper function and extends ambient context checks to include declare variable declarations |
tasks/coverage/misc/pass/declare-let-private.ts |
New test case demonstrating private keyword usage in declare statement |
tasks/coverage/snapshots/transformer_misc.snap |
Updated test counts (49→50) |
tasks/coverage/snapshots/parser_misc.snap |
Updated test counts (49→50) |
tasks/coverage/snapshots/formatter_misc.snap |
Updated test counts (49→50) |
tasks/coverage/snapshots/codegen_misc.snap |
Updated test counts (49→50) |
tasks/coverage/snapshots/semantic_misc.snap |
Updated test counts (49→50) and shows semantic error for new test |
tasks/coverage/snapshots/semantic_typescript.snap |
Removes error for topLevelAwait.3.ts and updates pass count |
tasks/coverage/snapshots/parser_typescript.snap |
Removes parsing error for topLevelAwait.3.ts and updates pass count |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
I think we can simplify it more by checking whether the binding is flagged with the See Oxc Playground |
ffda463 to
a5af938
Compare
a5af938 to
74feebf
Compare
74feebf to
bace84d
Compare
|
I tweaked a little bit to improve the identifier in a BindingIdentifier situation, which already has a symbol ID, so that we can avoid getting a symbol ID again from |
Merge activity
|
…#15495) Reserved keywords are allowed as an identifier in ambient contexts. ```ts declare const private: number ``` This is allowed.
bace84d to
2191ae9
Compare
### 💥 BREAKING CHANGES - cbb27fd ast: [**BREAKING**] Add `TSGlobalDeclaration` type (#15712) (overlookmotel) ### 🚀 Features - 0c1f82b linter/plugins: Add `tokens` property to `Program` (#16020) (overlookmotel) - 6cff132 span: Add `Span::merge_within` method (#15869) (sapphi-red) - 102365d allocator/vec: Add `Vec::into_bump_slice` method (#15770) (Dunqing) ### 🐛 Bug Fixes - e2ca770 codegen: Add support for printing type arguments in new expressions (#15963) (Ives van Hoorne) - 2bd3cb6 apps, editors, napi: Fix `oxlint-disable` comments (#16014) (overlookmotel) - 622cb5e parser: Preserve legal comments with @preserve/@license when preceded by other annotations (#15929) (copilot-swe-agent) - 7c46a9e transformer/tagged-template-transform: Handle `\n` escape sequences (#15830) (Dunqing) - f386efc minifier: Avoid generating invalid spans (#15778) (sapphi-red) - d4ff004 parser: Forbid invalid modifiers on `module` and `global` (#15723) (overlookmotel) - 2191ae9 semantic: Allow reserved keywords in typescript ambient contexts (#15495) (sapphi-red) - 7d1ebad isolated-declarations: Incorrect nested namespace output in isolated declarations (#15800) (copilot-swe-agent) ### ⚡ Performance - b4b0ed8 transformer/typescript: Reverse order of checks (#15722) (overlookmotel) ### 📚 Documentation - c81a331 data_structures: Doc comments on fields of `Stack` (#15793) (overlookmotel) - cfae31d allocator: Use `allocator` as var name in examples (#15781) (overlookmotel) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>

Reserved keywords are allowed as an identifier in ambient contexts.
This is allowed.