diff --git a/crates/swc/tests/fixture/issues-6xxx/6255/1/input/input.js b/crates/swc/tests/fixture/issues-6xxx/6255/1/input/input.js new file mode 100644 index 00000000000..0005abdbc6e --- /dev/null +++ b/crates/swc/tests/fixture/issues-6xxx/6255/1/input/input.js @@ -0,0 +1,6 @@ +function test(node) { + return ( + // comment from the source code + (_a = node.modifiers) === null || _a === void 0 ? void 0 : _a.filter((m) => !ts.isDecorator(m)) + ); +} diff --git a/crates/swc/tests/fixture/issues-6xxx/6255/1/output/input.js b/crates/swc/tests/fixture/issues-6xxx/6255/1/output/input.js new file mode 100644 index 00000000000..18b1a73eaaa --- /dev/null +++ b/crates/swc/tests/fixture/issues-6xxx/6255/1/output/input.js @@ -0,0 +1,6 @@ +function test(node) { + return(// comment from the source code + (_a = node.modifiers) === null || _a === void 0 ? void 0 : _a.filter(function(m) { + return !ts.isDecorator(m); + })); +} diff --git a/crates/swc_ecma_codegen/src/lib.rs b/crates/swc_ecma_codegen/src/lib.rs index 14447057fe0..2b88143c891 100644 --- a/crates/swc_ecma_codegen/src/lib.rs +++ b/crates/swc_ecma_codegen/src/lib.rs @@ -2736,6 +2736,12 @@ where } } + Expr::Cond(e) => { + if self.has_leading_comment(&e.test) { + return true; + } + } + Expr::Seq(e) => { if let Some(e) = e.exprs.first() { if self.has_leading_comment(e) { @@ -2744,6 +2750,22 @@ where } } + Expr::Assign(e) => { + if let Some(cmt) = self.comments { + let lo = e.span.lo; + + if cmt.has_leading(lo) { + return true; + } + } + + if let Some(e) = e.left.as_expr() { + if self.has_leading_comment(e) { + return true; + } + } + } + _ => {} }