diff --git a/crates/oxc_codegen/src/gen.rs b/crates/oxc_codegen/src/gen.rs index 57d9ea6dc3dad..8f8bd9743e394 100644 --- a/crates/oxc_codegen/src/gen.rs +++ b/crates/oxc_codegen/src/gen.rs @@ -1054,11 +1054,19 @@ impl Gen for ExportSpecifier<'_> { if self.export_kind.is_type() { p.print_str("type "); } + if let Some(comments) = p.get_comments(self.local.span().start) { + p.print_comments(&comments); + p.print_soft_space(); + } self.local.print(p, ctx); let local_name = get_module_export_name(&self.local, p); let exported_name = get_module_export_name(&self.exported, p); if local_name != exported_name { p.print_str(" as "); + if let Some(comments) = p.get_comments(self.exported.span().start) { + p.print_comments(&comments); + p.print_soft_space(); + } self.exported.print(p, ctx); } } diff --git a/crates/oxc_codegen/tests/integration/comments.rs b/crates/oxc_codegen/tests/integration/comments.rs index 5f2b7e7340e12..68ae973a1eb02 100644 --- a/crates/oxc_codegen/tests/integration/comments.rs +++ b/crates/oxc_codegen/tests/integration/comments.rs @@ -26,6 +26,11 @@ fn unit() { "function foo() { return /*i18n*/ {} }", "function foo() {\n\treturn (\t/*i18n*/ {});\n}\n", ); + + test_same("export { /** @deprecated */ parseAst } from \"rolldown/parseAst\";\n"); + test_same("export { /** @deprecated */ parseAst };\n"); + test_same("export { parseAst as /** @deprecated */ b } from \"rolldown/parseAst\";\n"); + test_same("export { parseAst as /** @deprecated */ b };\n"); } pub mod jsdoc { diff --git a/crates/oxc_codegen/tests/integration/snapshots/ts.snap b/crates/oxc_codegen/tests/integration/snapshots/ts.snap index a24b6ac57e0fd..781ee63c10bcb 100644 --- a/crates/oxc_codegen/tests/integration/snapshots/ts.snap +++ b/crates/oxc_codegen/tests/integration/snapshots/ts.snap @@ -317,15 +317,15 @@ export class ClassName {} export function* generatorFunctionName() {/* … */} export const { name5, name2: bar } = o; export const [name6, name7] = array; -export { name8, name81 }; -export { variable1 as name9, variable2 as name10, name82 }; -export { variable1 as 'string name' }; +export { name8, /* …, */ name81 }; + export { variable1 as name9, variable2 as name10, /* …, */ name82 }; + export { variable1 as 'string name' }; export { name1 as default1 }; export * from 'module-name'; export * as name11 from 'module-name'; -export { name12, nameN } from 'module-name'; -export { import1 as name13, import2 as name14, name15 } from 'module-name'; -export { default } from 'module-name'; +export { name12, /* …, */ nameN } from 'module-name'; + export { import1 as name13, import2 as name14, /* …, */ name15 } from 'module-name'; + export { default } from 'module-name'; export { default as name16 } from 'module-name'; ########## 41