Skip to content

Commit

Permalink
fix(es/compat): Visit transformed expression in optional chaining pass (
Browse files Browse the repository at this point in the history
#7614)

**Related issue:**

 - Closes #7612.
  • Loading branch information
kdy1 committed Jul 4, 2023
1 parent 984fdc8 commit c087c82
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 8 deletions.
19 changes: 19 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7612/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"jsc": {
"parser": {
"syntax": "typescript",
"tsx": true
},
"target": "es5",
"loose": false,
"minify": {
"compress": false,
"mangle": false
}
},
"module": {
"type": "es6"
},
"minify": false,
"isModule": true
}
1 change: 1 addition & 0 deletions crates/swc/tests/fixture/issues-7xxx/7612/input/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(qcData?.flawImageList || [])?.map()
2 changes: 2 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7612/output/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
var _this, _qcData;
(_this = ((_qcData = qcData) === null || _qcData === void 0 ? void 0 : _qcData.flawImageList) || []) === null || _this === void 0 ? void 0 : _this.map();
6 changes: 3 additions & 3 deletions crates/swc/tests/tsc-references/deleteChain.1.normal.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
//// [deleteChain.ts]
var _o1, _o11, _o2, _o21, _o3_b, _o3_b1, _o4_b_c_d, _o4_b, _this, _o4_b_c_d1, _o4_b1, _o5_b_c_d, _o5_b, _o5, _o5_b_c_d1, _o5_b1, _o51, _o6_b_c_d, _o6_b, _o6_b_c_d1, _o6_b1;
var _o1, _o11, _o2, _o21, _o3_b, _o3_b1, _o4_b_c_d, _o4_b, _this, _o4_b1, _o4_b_c_d1, _o4_b2, _o5_b_c_d, _o5_b, _o5, _o5_b_c_d1, _o5_b1, _o51, _o6_b_c_d, _o6_b, _o6_b_c_d1, _o6_b1;
(_o1 = o1) === null || _o1 === void 0 ? true : delete _o1.b;
delete ((_o11 = o1) === null || _o11 === void 0 ? void 0 : _o11.b);
(_o2 = o2) === null || _o2 === void 0 ? true : delete _o2.b.c;
delete ((_o21 = o2) === null || _o21 === void 0 ? void 0 : _o21.b.c);
(_o3_b = o3.b) === null || _o3_b === void 0 ? true : delete _o3_b.c;
delete ((_o3_b1 = o3.b) === null || _o3_b1 === void 0 ? void 0 : _o3_b1.c);
(_o4_b = o4.b) === null || _o4_b === void 0 ? true : (_o4_b_c_d = _o4_b.c.d) === null || _o4_b_c_d === void 0 ? true : delete _o4_b_c_d.e;
(_this = (o4.b?.c.d)) === null || _this === void 0 ? true : delete _this.e;
delete ((_o4_b1 = o4.b) === null || _o4_b1 === void 0 ? void 0 : (_o4_b_c_d1 = _o4_b1.c.d) === null || _o4_b_c_d1 === void 0 ? void 0 : _o4_b_c_d1.e);
(_this = (_o4_b1 = o4.b) === null || _o4_b1 === void 0 ? void 0 : _o4_b1.c.d) === null || _this === void 0 ? true : delete _this.e;
delete ((_o4_b2 = o4.b) === null || _o4_b2 === void 0 ? void 0 : (_o4_b_c_d1 = _o4_b2.c.d) === null || _o4_b_c_d1 === void 0 ? void 0 : _o4_b_c_d1.e);
(_o5_b = (_o5 = o5).b) === null || _o5_b === void 0 ? true : (_o5_b_c_d = _o5_b.call(_o5).c.d) === null || _o5_b_c_d === void 0 ? true : delete _o5_b_c_d.e;
delete ((_o5_b1 = (_o51 = o5).b) === null || _o5_b1 === void 0 ? void 0 : (_o5_b_c_d1 = _o5_b1.call(_o51).c.d) === null || _o5_b_c_d1 === void 0 ? void 0 : _o5_b_c_d1.e);
(_o6_b = o6.b) === null || _o6_b === void 0 ? true : (_o6_b_c_d = _o6_b["c"].d) === null || _o6_b_c_d === void 0 ? true : delete _o6_b_c_d["e"];
Expand Down
4 changes: 2 additions & 2 deletions crates/swc/tests/tsc-references/deleteChain.2.minified.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,10 @@ impl OptChaining {
Expr::OptChain(next) => {
current = next;
}
base => return (base, count, chain),
mut base => {
base.visit_mut_children_with(self);
return (base, count, chain);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo, _a_b_c, _a, _a_b_c_d, _a_b, _a_b_c_d1, _a_b_c1, _orders, _orders_, _orders1, _client, _orders_client_key, _a1, _c;
var _foo, _a_b_c, _a, _a_b_c_d, _a_b, _a_b_c_d1, _a_b_c1, _orders, _orders_, _orders1, _client, _orders_client_key, _a1, _c, _a2;
(_foo = foo) === null || _foo === void 0 ? void 0 : _foo.bar;
(_a = a) === null || _a === void 0 ? void 0 : (_a_b_c = _a.b.c) === null || _a_b_c === void 0 ? void 0 : _a_b_c.d.e;
(_a_b = a.b) === null || _a_b === void 0 ? void 0 : (_a_b_c_d = _a_b.c.d) === null || _a_b_c_d === void 0 ? void 0 : _a_b_c_d.e;
Expand All @@ -8,4 +8,4 @@ var _foo, _a_b_c, _a, _a_b_c_d, _a_b, _a_b_c_d1, _a_b_c1, _orders, _orders_, _or
orders[(_client = client) === null || _client === void 0 ? void 0 : _client.key].price;
(_orders_client_key = orders[client.key]) === null || _orders_client_key === void 0 ? void 0 : _orders_client_key.price;
(0, (_a1 = a) === null || _a1 === void 0 ? void 0 : _a1.b).c;
(0, (_c = (0, a?.b).c) === null || _c === void 0 ? void 0 : _c.d).e;
(0, (_c = (0, (_a2 = a) === null || _a2 === void 0 ? void 0 : _a2.b).c) === null || _c === void 0 ? void 0 : _c.d).e;

1 comment on commit c087c82

@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: c087c82 Previous: 4f866de Ratio
es/full/bugs-1 301206 ns/iter (± 10470) 313670 ns/iter (± 13555) 0.96
es/full/minify/libraries/antd 1485630935 ns/iter (± 15672898) 1445922017 ns/iter (± 21274518) 1.03
es/full/minify/libraries/d3 317594309 ns/iter (± 4715088) 319988202 ns/iter (± 3253456) 0.99
es/full/minify/libraries/echarts 1203145371 ns/iter (± 6051616) 1181212957 ns/iter (± 7205089) 1.02
es/full/minify/libraries/jquery 96216835 ns/iter (± 317750) 96161534 ns/iter (± 451880) 1.00
es/full/minify/libraries/lodash 113941410 ns/iter (± 228846) 114276644 ns/iter (± 123387) 1.00
es/full/minify/libraries/moment 56415209 ns/iter (± 110139) 56655584 ns/iter (± 84742) 1.00
es/full/minify/libraries/react 20361248 ns/iter (± 64164) 20226189 ns/iter (± 42444) 1.01
es/full/minify/libraries/terser 246723401 ns/iter (± 1875869) 247620621 ns/iter (± 429935) 1.00
es/full/minify/libraries/three 438879855 ns/iter (± 2922053) 435887300 ns/iter (± 2713987) 1.01
es/full/minify/libraries/typescript 3008427730 ns/iter (± 11380524) 2979039021 ns/iter (± 28105926) 1.01
es/full/minify/libraries/victory 637663434 ns/iter (± 6239770) 635470563 ns/iter (± 4010453) 1.00
es/full/minify/libraries/vue 139053573 ns/iter (± 434243) 136830462 ns/iter (± 1368148) 1.02
es/full/codegen/es3 37008 ns/iter (± 362) 35641 ns/iter (± 561) 1.04
es/full/codegen/es5 37020 ns/iter (± 78) 36782 ns/iter (± 711) 1.01
es/full/codegen/es2015 37068 ns/iter (± 114) 36734 ns/iter (± 617) 1.01
es/full/codegen/es2016 37053 ns/iter (± 88) 36799 ns/iter (± 750) 1.01
es/full/codegen/es2017 37083 ns/iter (± 163) 36321 ns/iter (± 568) 1.02
es/full/codegen/es2018 37041 ns/iter (± 75) 36511 ns/iter (± 456) 1.01
es/full/codegen/es2019 37091 ns/iter (± 96) 36579 ns/iter (± 704) 1.01
es/full/codegen/es2020 37077 ns/iter (± 47) 37294 ns/iter (± 260) 0.99
es/full/all/es3 184123880 ns/iter (± 759432) 180826896 ns/iter (± 1197156) 1.02
es/full/all/es5 175799902 ns/iter (± 715249) 173258446 ns/iter (± 1108923) 1.01
es/full/all/es2015 131949453 ns/iter (± 777379) 128864385 ns/iter (± 1191664) 1.02
es/full/all/es2016 131602070 ns/iter (± 487394) 128911320 ns/iter (± 750106) 1.02
es/full/all/es2017 130345693 ns/iter (± 1335306) 128334025 ns/iter (± 290591) 1.02
es/full/all/es2018 128225865 ns/iter (± 2805244) 125394532 ns/iter (± 1282795) 1.02
es/full/all/es2019 128549983 ns/iter (± 642224) 125210636 ns/iter (± 4618785) 1.03
es/full/all/es2020 123699353 ns/iter (± 735397) 120394919 ns/iter (± 1247221) 1.03
es/full/parser 556339 ns/iter (± 5819) 534334 ns/iter (± 8702) 1.04
es/full/base/fixer 18599 ns/iter (± 79) 18147 ns/iter (± 273) 1.02
es/full/base/resolver_and_hygiene 92730 ns/iter (± 348) 90132 ns/iter (± 1608) 1.03
serialization of serde 306 ns/iter (± 2) 292 ns/iter (± 4) 1.05
css/minify/libraries/bootstrap 30817972 ns/iter (± 676366) 30656615 ns/iter (± 396805) 1.01
css/visitor/compare/clone 2121895 ns/iter (± 13816) 2083654 ns/iter (± 41364) 1.02
css/visitor/compare/visit_mut_span 2270579 ns/iter (± 10773) 2244687 ns/iter (± 28190) 1.01
css/visitor/compare/visit_mut_span_panic 2339183 ns/iter (± 13379) 2323015 ns/iter (± 39717) 1.01
css/visitor/compare/fold_span 3046630 ns/iter (± 31280) 3068689 ns/iter (± 27132) 0.99
css/visitor/compare/fold_span_panic 3229984 ns/iter (± 20357) 3252861 ns/iter (± 32140) 0.99
css/lexer/bootstrap_5_1_3 4706980 ns/iter (± 5567) 4708449 ns/iter (± 109476) 1.00
css/lexer/foundation_6_7_4 3983712 ns/iter (± 4178) 3880824 ns/iter (± 53533) 1.03
css/lexer/tailwind_3_1_1 757943 ns/iter (± 641) 743116 ns/iter (± 7801) 1.02
css/parser/bootstrap_5_1_3 20461210 ns/iter (± 20951) 19905012 ns/iter (± 261386) 1.03
css/parser/foundation_6_7_4 16496800 ns/iter (± 33439) 16223371 ns/iter (± 304717) 1.02
css/parser/tailwind_3_1_1 3194570 ns/iter (± 3247) 3097346 ns/iter (± 37938) 1.03
es/codegen/colors 745180 ns/iter (± 404111) 729402 ns/iter (± 395733) 1.02
es/codegen/large 3000396 ns/iter (± 1571774) 2995828 ns/iter (± 1578154) 1.00
es/codegen/with-parser/colors 48378 ns/iter (± 243) 48329 ns/iter (± 631) 1.00
es/codegen/with-parser/large 518007 ns/iter (± 596) 513098 ns/iter (± 6595) 1.01
es/minify/libraries/antd 1274533040 ns/iter (± 9367804) 1260850853 ns/iter (± 18978099) 1.01
es/minify/libraries/d3 276471078 ns/iter (± 2145755) 274572593 ns/iter (± 2054286) 1.01
es/minify/libraries/echarts 1013554700 ns/iter (± 3993253) 1003205004 ns/iter (± 7588248) 1.01
es/minify/libraries/jquery 83620194 ns/iter (± 259225) 83281047 ns/iter (± 137930) 1.00
es/minify/libraries/lodash 102229125 ns/iter (± 257461) 101043222 ns/iter (± 828387) 1.01
es/minify/libraries/moment 49256748 ns/iter (± 86980) 48990707 ns/iter (± 225385) 1.01
es/minify/libraries/react 18013363 ns/iter (± 37950) 17877290 ns/iter (± 104591) 1.01
es/minify/libraries/terser 211296387 ns/iter (± 608880) 209415316 ns/iter (± 793430) 1.01
es/minify/libraries/three 363218693 ns/iter (± 640947) 357702109 ns/iter (± 2729343) 1.02
es/minify/libraries/typescript 2547036605 ns/iter (± 12196047) 2500242995 ns/iter (± 20194062) 1.02
es/minify/libraries/victory 540140528 ns/iter (± 6127597) 528555535 ns/iter (± 4039940) 1.02
es/minify/libraries/vue 123037797 ns/iter (± 2033552) 121818942 ns/iter (± 925379) 1.01
es/visitor/compare/clone 2084099 ns/iter (± 3654) 2048236 ns/iter (± 21010) 1.02
es/visitor/compare/visit_mut_span 2422207 ns/iter (± 3033) 2344425 ns/iter (± 31443) 1.03
es/visitor/compare/visit_mut_span_panic 2474748 ns/iter (± 11805) 2388555 ns/iter (± 45869) 1.04
es/visitor/compare/fold_span 3518321 ns/iter (± 4395) 3401565 ns/iter (± 71023) 1.03
es/visitor/compare/fold_span_panic 3652632 ns/iter (± 8141) 3533401 ns/iter (± 61410) 1.03
es/lexer/colors 13423 ns/iter (± 28) 12963 ns/iter (± 199) 1.04
es/lexer/angular 6292021 ns/iter (± 31809) 6086383 ns/iter (± 132078) 1.03
es/lexer/backbone 822424 ns/iter (± 873) 824108 ns/iter (± 17421) 1.00
es/lexer/jquery 4664229 ns/iter (± 6364) 4576391 ns/iter (± 81670) 1.02
es/lexer/jquery mobile 7090556 ns/iter (± 9745) 7163735 ns/iter (± 75192) 0.99
es/lexer/mootools 3664047 ns/iter (± 2358) 3680527 ns/iter (± 18032) 1.00
es/lexer/underscore 687637 ns/iter (± 1251) 692428 ns/iter (± 1063) 0.99
es/lexer/three 21672806 ns/iter (± 31747) 21615812 ns/iter (± 234087) 1.00
es/lexer/yui 4104630 ns/iter (± 3692) 4017867 ns/iter (± 39464) 1.02
es/parser/colors 28779 ns/iter (± 574) 28639 ns/iter (± 137) 1.00
es/parser/angular 14184625 ns/iter (± 69996) 13815153 ns/iter (± 163209) 1.03
es/parser/backbone 2127984 ns/iter (± 7478) 2093812 ns/iter (± 30813) 1.02
es/parser/jquery 11566465 ns/iter (± 34596) 11281753 ns/iter (± 109128) 1.03
es/parser/jquery mobile 17731308 ns/iter (± 67755) 17316521 ns/iter (± 266254) 1.02
es/parser/mootools 8868631 ns/iter (± 27582) 8497691 ns/iter (± 121382) 1.04
es/parser/underscore 1834502 ns/iter (± 8233) 1809824 ns/iter (± 22143) 1.01
es/parser/three 49034610 ns/iter (± 465673) 47762868 ns/iter (± 719304) 1.03
es/parser/yui 8883143 ns/iter (± 44857) 8797331 ns/iter (± 50734) 1.01
es/preset-env/usage/builtin_type 144894 ns/iter (± 32531) 143579 ns/iter (± 33542) 1.01
es/preset-env/usage/property 18208 ns/iter (± 127) 18467 ns/iter (± 45) 0.99
es/resolver/typescript 94727957 ns/iter (± 1369263) 93770120 ns/iter (± 949236) 1.01
es/fixer/typescript 65574390 ns/iter (± 482005) 64086211 ns/iter (± 347510) 1.02
es/hygiene/typescript 142213386 ns/iter (± 583720) 141236316 ns/iter (± 703680) 1.01
es/resolver_with_hygiene/typescript 312317061 ns/iter (± 2130356) 299342153 ns/iter (± 2516556) 1.04
es/visitor/base-perf/module_clone 62421 ns/iter (± 156) 60821 ns/iter (± 603) 1.03
es/visitor/base-perf/fold_empty 65663 ns/iter (± 448) 64084 ns/iter (± 573) 1.02
es/visitor/base-perf/fold_noop_impl_all 65504 ns/iter (± 292) 64419 ns/iter (± 250) 1.02
es/visitor/base-perf/fold_noop_impl_vec 66003 ns/iter (± 263) 64269 ns/iter (± 865) 1.03
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 56 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 40 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 114 ns/iter (± 0) 113 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 81 ns/iter (± 0) 79 ns/iter (± 0) 1.03
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2668 ns/iter (± 11) 2561 ns/iter (± 55) 1.04
es/base/parallel/resolver/typescript 4922929665 ns/iter (± 262073122) 4313968310 ns/iter (± 224937964) 1.14
es/base/parallel/hygiene/typescript 1605615374 ns/iter (± 22998991) 1566295485 ns/iter (± 11498481) 1.03
misc/visitors/time-complexity/time 5 101 ns/iter (± 0) 100 ns/iter (± 1) 1.01
misc/visitors/time-complexity/time 10 263 ns/iter (± 0) 295 ns/iter (± 1) 0.89
misc/visitors/time-complexity/time 15 581 ns/iter (± 0) 514 ns/iter (± 13) 1.13
misc/visitors/time-complexity/time 20 927 ns/iter (± 30) 1022 ns/iter (± 7) 0.91
misc/visitors/time-complexity/time 40 3752 ns/iter (± 6) 3754 ns/iter (± 37) 1.00
misc/visitors/time-complexity/time 60 7832 ns/iter (± 25) 8481 ns/iter (± 65) 0.92
es/full-target/es2016 239434 ns/iter (± 705) 232602 ns/iter (± 4211) 1.03
es/full-target/es2017 227251 ns/iter (± 723) 226055 ns/iter (± 3393) 1.01
es/full-target/es2018 216280 ns/iter (± 713) 209773 ns/iter (± 2857) 1.03
es2020_nullish_coalescing 71464 ns/iter (± 388) 69422 ns/iter (± 661) 1.03
es2020_optional_chaining 83533 ns/iter (± 169) 80909 ns/iter (± 1454) 1.03
es2022_class_properties 123049 ns/iter (± 420) 117504 ns/iter (± 829) 1.05
es2018_object_rest_spread 76562 ns/iter (± 282) 72989 ns/iter (± 1343) 1.05
es2019_optional_catch_binding 64535 ns/iter (± 270) 63228 ns/iter (± 716) 1.02
es2017_async_to_generator 64653 ns/iter (± 404) 63978 ns/iter (± 655) 1.01
es2016_exponentiation 70151 ns/iter (± 108) 68480 ns/iter (± 894) 1.02
es2015_arrow 73162 ns/iter (± 198) 71601 ns/iter (± 588) 1.02
es2015_block_scoped_fn 70161 ns/iter (± 249) 67733 ns/iter (± 916) 1.04
es2015_block_scoping 135632 ns/iter (± 426) 132835 ns/iter (± 2180) 1.02

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

Please sign in to comment.