feat(codegen): keep comments on the export specifiers#16943
feat(codegen): keep comments on the export specifiers#16943Boshen merged 2 commits intooxc-project:mainfrom
Conversation
CodSpeed Performance ReportMerging #16943 will not alter performanceComparing Summary
Footnotes
|
There was a problem hiding this comment.
Pull request overview
This PR adds support for preserving comments on export specifiers during code generation, resolving issue #6938. The implementation allows JSDoc and other comments (like deprecation notices) to be retained when formatting export statements, which is particularly useful for API documentation and deprecation warnings.
Key Changes
- Added comment handling in
ExportSpecifier::r#gento preserve comments before local and exported identifiers - Added test cases to verify comment preservation in various export scenarios (with/without source, with/without "as" clause)
- Updated snapshots to reflect the new behavior of preserving comments in export specifiers
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
crates/oxc_codegen/src/gen.rs |
Implements comment handling in ExportSpecifier by checking for and printing comments before both the local and exported identifiers |
crates/oxc_codegen/tests/integration/comments.rs |
Adds four test cases covering comment preservation in export specifiers with and without source modules, and with and without "as" clauses |
crates/oxc_codegen/tests/integration/snapshots/ts.snap |
Updates snapshots to show comments are now preserved in export specifier output (6 lines changed showing comments retained) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
resolve rolldown/rolldown#6938 Co-authored-by: Boshen <[email protected]>
### 🚀 Features - d209c21 allocator: Add cap to FixedSizeAllocatorPool and block when exhausted (#17023) (Cameron) - fb2af91 allocator: Add bitset utils (#17042) (zhaoting zhou) - c16082c tasks/compat_data: Integrate `node-compat-table` (#16831) (Boshen) - 5586823 span: Extract TS declaration file check to its own function (#17037) (camchenry) - 3d2b492 minifier: Fold iife arrow functions in call expressions (#16477) (Armano) - 67e9f9e codegen: Keep comments on the export specifiers (#16943) (夕舞八弦) - cb515fa parser: Improve error message for `yield` as identifier usage (#16950) (sapphi-red) - dcc856b parser: Add help for `new_dynamic_import` error (#16949) (sapphi-red) - c3c79f8 parser: Improve import attribute value error message (#16948) (sapphi-red) - 291b57b ast_tools: Generate TS declaration files for deserializer and walk files (#16912) (camc314) - 74eae13 minifier: Remove unused import specifiers (#16797) (camc314) ### 🐛 Bug Fixes - fb9e193 linter: OOM problems with custom plugins (#17082) (overlookmotel) - e59132b parser/napi: Fix lazy deser (#17069) (overlookmotel) - a92faf0 ast_tools: Support `u128` in `assert_layouts` generator (#17050) (overlookmotel) - 47b4c2f minifier/docs: Correct hyperlink path in OPTIMIZATIONS.md (#16986) (GRK) - 3002649 transformer/typescript: Remove unused import equals declaration (#16776) (Dunqing) - 5a2af88 regular_expression: Correct named capture group reference error (#16952) (sapphi-red) ### ⚡ Performance - b657bb6 allocator: Reduce time `Mutex` lock is held in `FixedSizeAllocatorPool::get` (#17079) (overlookmotel) - 1f3b19b ast: `#[ast]` macro use `#[repr(transparent)]` for single-field structs (#17052) (overlookmotel) - 225f229 parser: Use SmallVec for duplicate default export detection (#16801) (camc314) ### 📚 Documentation - a9c419f traverse: Update safety comments (#16944) (overlookmotel) Co-authored-by: overlookmotel <[email protected]>
) resolve rolldown/rolldown#6938 Co-authored-by: Boshen <[email protected]>
resolve rolldown/rolldown#6938
oxc playground