Skip to content

Commit

Permalink
fix(es/codegen): Preserve more parens (#6268)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #6266.
  • Loading branch information
kdy1 committed Oct 27, 2022
1 parent d2dc90b commit c318446
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
6 changes: 6 additions & 0 deletions 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))
);
}
6 changes: 6 additions & 0 deletions 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);
}));
}
22 changes: 22 additions & 0 deletions crates/swc_ecma_codegen/src/lib.rs
Expand Up @@ -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) {
Expand All @@ -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;
}
}
}

_ => {}
}

Expand Down

1 comment on commit c318446

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: c318446 Previous: c3944ba Ratio
es/full/bugs-1 351098 ns/iter (± 13736) 397452 ns/iter (± 71644) 0.88
es/full/minify/libraries/antd 1902755724 ns/iter (± 30591665) 2001768198 ns/iter (± 168091298) 0.95
es/full/minify/libraries/d3 412876150 ns/iter (± 16936844) 468727830 ns/iter (± 28251545) 0.88
es/full/minify/libraries/echarts 1665869386 ns/iter (± 165102758) 1730299978 ns/iter (± 89972308) 0.96
es/full/minify/libraries/jquery 97019617 ns/iter (± 6327132) 119528740 ns/iter (± 2577573) 0.81
es/full/minify/libraries/lodash 142928270 ns/iter (± 28017963) 134261476 ns/iter (± 9171074) 1.06
es/full/minify/libraries/moment 61512055 ns/iter (± 2424335) 67268639 ns/iter (± 3472432) 0.91
es/full/minify/libraries/react 20458342 ns/iter (± 699566) 21163625 ns/iter (± 1403202) 0.97
es/full/minify/libraries/terser 349326588 ns/iter (± 16923562) 354027460 ns/iter (± 20789272) 0.99
es/full/minify/libraries/three 592443534 ns/iter (± 19889612) 615801677 ns/iter (± 29349556) 0.96
es/full/minify/libraries/typescript 3640111607 ns/iter (± 775570662) 3747255820 ns/iter (± 118824858) 0.97
es/full/minify/libraries/victory 818085181 ns/iter (± 21394040) 905913650 ns/iter (± 29641733) 0.90
es/full/minify/libraries/vue 150694166 ns/iter (± 16114547) 179824665 ns/iter (± 6197929) 0.84
es/full/codegen/es3 32709 ns/iter (± 694) 34071 ns/iter (± 1527) 0.96
es/full/codegen/es5 32685 ns/iter (± 551) 34071 ns/iter (± 654) 0.96
es/full/codegen/es2015 32861 ns/iter (± 1124) 34040 ns/iter (± 447) 0.97
es/full/codegen/es2016 32689 ns/iter (± 932) 33852 ns/iter (± 426) 0.97
es/full/codegen/es2017 32759 ns/iter (± 1962) 34113 ns/iter (± 1360) 0.96
es/full/codegen/es2018 32785 ns/iter (± 4431) 34223 ns/iter (± 1616) 0.96
es/full/codegen/es2019 32721 ns/iter (± 595) 34116 ns/iter (± 1816) 0.96
es/full/codegen/es2020 33265 ns/iter (± 548) 34138 ns/iter (± 5259) 0.97
es/full/all/es3 192896187 ns/iter (± 7174584) 220113760 ns/iter (± 16060622) 0.88
es/full/all/es5 182716767 ns/iter (± 7374127) 205841879 ns/iter (± 27416810) 0.89
es/full/all/es2015 145588591 ns/iter (± 7520312) 163016206 ns/iter (± 21054029) 0.89
es/full/all/es2016 144217344 ns/iter (± 6207969) 163261290 ns/iter (± 17514109) 0.88
es/full/all/es2017 144833095 ns/iter (± 10954996) 158447748 ns/iter (± 17194754) 0.91
es/full/all/es2018 142447115 ns/iter (± 4386895) 149574306 ns/iter (± 17994375) 0.95
es/full/all/es2019 141718989 ns/iter (± 4894981) 155766738 ns/iter (± 18556498) 0.91
es/full/all/es2020 136371626 ns/iter (± 4117309) 154508749 ns/iter (± 16893130) 0.88
es/full/parser 723572 ns/iter (± 34702) 741215 ns/iter (± 59805) 0.98
es/full/base/fixer 25784 ns/iter (± 398) 26525 ns/iter (± 1146) 0.97
es/full/base/resolver_and_hygiene 91475 ns/iter (± 3030) 92139 ns/iter (± 5587) 0.99
serialization of ast node 216 ns/iter (± 4) 227 ns/iter (± 3) 0.95
serialization of serde 217 ns/iter (± 5) 228 ns/iter (± 6) 0.95

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.