Skip to content

Commit

Permalink
fix(es/typescript): Fix replacement logic of fast TS strip (#9163)
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Jul 6, 2024
1 parent 87315da commit c5acafe
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 3 deletions.
7 changes: 6 additions & 1 deletion crates/swc_fast_ts_strip/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,12 @@ pub fn operate(
let mut code = fm.src.to_string().into_bytes();

for r in replacements {
code[(r.0 .0 - 1) as usize..(r.1 .0 - 1) as usize].fill(b' ');
for c in &mut code[(r.0 .0 - 1) as usize..(r.1 .0 - 1) as usize] {
if *c == b'\n' {
continue;
}
*c = b' ';
}
}

// Assert that removal does not overlap with each other
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@




Original file line number Diff line number Diff line change
@@ -1 +1,4 @@





5 changes: 5 additions & 0 deletions crates/swc_fast_ts_strip/tests/fixture/test-1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@




throw new Error('Whitespacing')
5 changes: 5 additions & 0 deletions crates/swc_fast_ts_strip/tests/fixture/test-1.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
interface Foo {
bar: string
}

throw new Error('Whitespacing')

1 comment on commit c5acafe

@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: c5acafe Previous: 3638e97 Ratio
es/full/bugs-1 278446 ns/iter (± 9530) 288594 ns/iter (± 16293) 0.96
es/full/minify/libraries/antd 1782028259 ns/iter (± 61029588) 1571272830 ns/iter (± 60307647) 1.13
es/full/minify/libraries/d3 332187347 ns/iter (± 1807489) 324674608 ns/iter (± 3670895) 1.02
es/full/minify/libraries/echarts 1364210309 ns/iter (± 4207160) 1330742108 ns/iter (± 10918147) 1.03
es/full/minify/libraries/jquery 100706180 ns/iter (± 180796) 101264422 ns/iter (± 2845188) 0.99
es/full/minify/libraries/lodash 111335457 ns/iter (± 381555) 112105575 ns/iter (± 1166646) 0.99
es/full/minify/libraries/moment 58569224 ns/iter (± 203632) 58655316 ns/iter (± 501738) 1.00
es/full/minify/libraries/react 18152787 ns/iter (± 16685) 17761831 ns/iter (± 207208) 1.02
es/full/minify/libraries/terser 265859193 ns/iter (± 778765) 266566174 ns/iter (± 4283098) 1.00
es/full/minify/libraries/three 452472679 ns/iter (± 1708451) 431126303 ns/iter (± 2413786) 1.05
es/full/minify/libraries/typescript 3086423273 ns/iter (± 11803573) 2970264639 ns/iter (± 21371751) 1.04
es/full/minify/libraries/victory 687014469 ns/iter (± 6692255) 659344794 ns/iter (± 10578254) 1.04
es/full/minify/libraries/vue 142242196 ns/iter (± 219493) 140661278 ns/iter (± 1699306) 1.01
es/full/codegen/es3 58107 ns/iter (± 214) 58776 ns/iter (± 1073) 0.99
es/full/codegen/es5 58473 ns/iter (± 297) 59192 ns/iter (± 1118) 0.99
es/full/codegen/es2015 58269 ns/iter (± 102) 58555 ns/iter (± 842) 1.00
es/full/codegen/es2016 58149 ns/iter (± 173) 60152 ns/iter (± 711) 0.97
es/full/codegen/es2017 58334 ns/iter (± 263) 59879 ns/iter (± 1237) 0.97
es/full/codegen/es2018 58225 ns/iter (± 543) 60586 ns/iter (± 170) 0.96
es/full/codegen/es2019 58108 ns/iter (± 78) 60791 ns/iter (± 136) 0.96
es/full/codegen/es2020 58333 ns/iter (± 231) 60694 ns/iter (± 136) 0.96
es/full/all/es3 159655977 ns/iter (± 841496) 162807027 ns/iter (± 728636) 0.98
es/full/all/es5 153708814 ns/iter (± 420282) 156962787 ns/iter (± 1315806) 0.98
es/full/all/es2015 114225474 ns/iter (± 553180) 115891054 ns/iter (± 649285) 0.99
es/full/all/es2016 112918600 ns/iter (± 857100) 115615092 ns/iter (± 917745) 0.98
es/full/all/es2017 112521809 ns/iter (± 833824) 115135368 ns/iter (± 1412212) 0.98
es/full/all/es2018 110614645 ns/iter (± 847800) 111314282 ns/iter (± 1955524) 0.99
es/full/all/es2019 110297201 ns/iter (± 741610) 112107391 ns/iter (± 1555560) 0.98
es/full/all/es2020 106564956 ns/iter (± 627515) 107695649 ns/iter (± 857303) 0.99
es/full/parser 450039 ns/iter (± 3327) 469140 ns/iter (± 2962) 0.96
es/full/base/fixer 15229 ns/iter (± 68) 14678 ns/iter (± 132) 1.04
es/full/base/resolver_and_hygiene 79000 ns/iter (± 176) 77534 ns/iter (± 854) 1.02
serialization of serde 272 ns/iter (± 2) 269 ns/iter (± 9) 1.01
css/minify/libraries/bootstrap 21824261 ns/iter (± 156030) 22387773 ns/iter (± 247161) 0.97
css/visitor/compare/clone 1394247 ns/iter (± 7278) 1355214 ns/iter (± 14238) 1.03
css/visitor/compare/visit_mut_span 1534180 ns/iter (± 16621) 1482007 ns/iter (± 11764) 1.04
css/visitor/compare/visit_mut_span_panic 1536597 ns/iter (± 24999) 1500551 ns/iter (± 24081) 1.02
css/visitor/compare/fold_span 2036059 ns/iter (± 12079) 1997219 ns/iter (± 17513) 1.02
css/visitor/compare/fold_span_panic 2193931 ns/iter (± 21105) 2128423 ns/iter (± 4328) 1.03
css/lexer/bootstrap_5_1_3 3508314 ns/iter (± 6810) 3476646 ns/iter (± 3607) 1.01
css/lexer/foundation_6_7_4 2825458 ns/iter (± 2411) 2817857 ns/iter (± 11438) 1.00
css/lexer/tailwind_3_1_1 540307 ns/iter (± 539) 538450 ns/iter (± 635) 1.00
css/parser/bootstrap_5_1_3 15970125 ns/iter (± 69688) 15977275 ns/iter (± 37707) 1.00
css/parser/foundation_6_7_4 12758411 ns/iter (± 26990) 12792543 ns/iter (± 20650) 1.00
css/parser/tailwind_3_1_1 2513264 ns/iter (± 6711) 2538308 ns/iter (± 16775) 0.99
es/codegen/colors 724676 ns/iter (± 393997) 728226 ns/iter (± 398690) 1.00
es/codegen/large 2991484 ns/iter (± 1578295) 3002993 ns/iter (± 1632413) 1.00
es/codegen/with-parser/colors 40479 ns/iter (± 170) 40703 ns/iter (± 325) 0.99
es/codegen/with-parser/large 456467 ns/iter (± 23531) 449777 ns/iter (± 1951) 1.01
es/minify/libraries/antd 1477070717 ns/iter (± 15610493) 1352452269 ns/iter (± 11735618) 1.09
es/minify/libraries/d3 293850303 ns/iter (± 3840218) 277627500 ns/iter (± 5932994) 1.06
es/minify/libraries/echarts 1234862888 ns/iter (± 8410894) 1108500758 ns/iter (± 26975698) 1.11
es/minify/libraries/jquery 83262959 ns/iter (± 385302) 82172363 ns/iter (± 165406) 1.01
es/minify/libraries/lodash 105371549 ns/iter (± 261442) 103647968 ns/iter (± 546430) 1.02
es/minify/libraries/moment 48345687 ns/iter (± 85012) 47719276 ns/iter (± 41007) 1.01
es/minify/libraries/react 16327608 ns/iter (± 15729) 16196285 ns/iter (± 21066) 1.01
es/minify/libraries/terser 223958820 ns/iter (± 1609387) 214470202 ns/iter (± 505755) 1.04
es/minify/libraries/three 383336407 ns/iter (± 4356380) 354613496 ns/iter (± 2798163) 1.08
es/minify/libraries/typescript 2816400125 ns/iter (± 7684950) 2646628297 ns/iter (± 14563354) 1.06
es/minify/libraries/victory 618958515 ns/iter (± 6695328) 548754470 ns/iter (± 5213702) 1.13
es/minify/libraries/vue 122224192 ns/iter (± 804270) 119891373 ns/iter (± 257548) 1.02
es/visitor/compare/clone 1733688 ns/iter (± 10372) 1715795 ns/iter (± 14125) 1.01
es/visitor/compare/visit_mut_span 2069557 ns/iter (± 9023) 2054585 ns/iter (± 2678) 1.01
es/visitor/compare/visit_mut_span_panic 2057593 ns/iter (± 73507) 2058473 ns/iter (± 38046) 1.00
es/visitor/compare/fold_span 2776056 ns/iter (± 16927) 2764131 ns/iter (± 10702) 1.00
es/visitor/compare/fold_span_panic 2802432 ns/iter (± 15138) 2827431 ns/iter (± 11084) 0.99
es/lexer/colors 9472 ns/iter (± 49) 9633 ns/iter (± 53) 0.98
es/lexer/angular 4937837 ns/iter (± 8870) 5193088 ns/iter (± 29978) 0.95
es/lexer/backbone 648707 ns/iter (± 4029) 671369 ns/iter (± 6116) 0.97
es/lexer/jquery 3631996 ns/iter (± 17315) 3669851 ns/iter (± 11451) 0.99
es/lexer/jquery mobile 5389225 ns/iter (± 10534) 5480860 ns/iter (± 8095) 0.98
es/lexer/mootools 2869697 ns/iter (± 11223) 2844918 ns/iter (± 6560) 1.01
es/lexer/underscore 528010 ns/iter (± 2135) 535580 ns/iter (± 2300) 0.99
es/lexer/three 16031752 ns/iter (± 19315) 16475977 ns/iter (± 51010) 0.97
es/lexer/yui 2917399 ns/iter (± 3764) 3009318 ns/iter (± 9802) 0.97
es/lexer/cal-com 13063706 ns/iter (± 22587) 13203867 ns/iter (± 25847) 0.99
es/lexer/typescript 91916553 ns/iter (± 270344) 92078569 ns/iter (± 324262) 1.00
es/parser/colors 23945 ns/iter (± 94) 23878 ns/iter (± 136) 1.00
es/parser/angular 12742540 ns/iter (± 114391) 12643155 ns/iter (± 106460) 1.01
es/parser/backbone 1832192 ns/iter (± 6631) 1820686 ns/iter (± 5582) 1.01
es/parser/jquery 10135073 ns/iter (± 54978) 10108006 ns/iter (± 52186) 1.00
es/parser/jquery mobile 15222777 ns/iter (± 170597) 15309384 ns/iter (± 74277) 0.99
es/parser/mootools 7897301 ns/iter (± 95496) 7862112 ns/iter (± 10092) 1.00
es/parser/underscore 1596319 ns/iter (± 7518) 1588080 ns/iter (± 6985) 1.01
es/parser/three 44664911 ns/iter (± 329139) 43983596 ns/iter (± 187180) 1.02
es/parser/yui 7533019 ns/iter (± 46772) 7449529 ns/iter (± 42103) 1.01
es/parser/cal-com 40357976 ns/iter (± 1000743) 40080071 ns/iter (± 230248) 1.01
es/parser/typescript 269775765 ns/iter (± 4752859) 269439879 ns/iter (± 1206521) 1.00
es/preset-env/usage/builtin_type 136228 ns/iter (± 34098) 135932 ns/iter (± 34468) 1.00
es/preset-env/usage/property 16206 ns/iter (± 188) 16861 ns/iter (± 131) 0.96
es/resolver/typescript 101621470 ns/iter (± 2643193) 97622782 ns/iter (± 2136088) 1.04
es/fixer/typescript 82377763 ns/iter (± 3202964) 79552774 ns/iter (± 2790402) 1.04
es/hygiene/typescript 188819084 ns/iter (± 2290613) 184942787 ns/iter (± 3377944) 1.02
es/resolver_with_hygiene/typescript 322717206 ns/iter (± 4483156) 310221334 ns/iter (± 3192848) 1.04
es/visitor/base-perf/module_clone 56590 ns/iter (± 393) 57167 ns/iter (± 313) 0.99
es/visitor/base-perf/fold_empty 59910 ns/iter (± 470) 59970 ns/iter (± 428) 1.00
es/visitor/base-perf/fold_noop_impl_all 59854 ns/iter (± 748) 60351 ns/iter (± 1003) 0.99
es/visitor/base-perf/fold_noop_impl_vec 59806 ns/iter (± 432) 59522 ns/iter (± 340) 1.00
es/visitor/base-perf/boxing_boxed_clone 61 ns/iter (± 0) 59 ns/iter (± 0) 1.03
es/visitor/base-perf/boxing_unboxed_clone 47 ns/iter (± 0) 47 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 109 ns/iter (± 0) 106 ns/iter (± 0) 1.03
es/visitor/base-perf/boxing_unboxed 81 ns/iter (± 0) 81 ns/iter (± 0) 1
es/visitor/base-perf/visit_contains_this 2469 ns/iter (± 13) 2502 ns/iter (± 17) 0.99
es/base/parallel/resolver/typescript 2509041623 ns/iter (± 234031646) 2499285041 ns/iter (± 130145287) 1.00
es/base/parallel/hygiene/typescript 3314866617 ns/iter (± 64027221) 3252642311 ns/iter (± 41454235) 1.02
babelify-only 497010 ns/iter (± 5442) 485006 ns/iter (± 8593) 1.02
parse_and_babelify_angular 44360190 ns/iter (± 816248) 44284690 ns/iter (± 880818) 1.00
parse_and_babelify_backbone 4364365 ns/iter (± 153408) 4385861 ns/iter (± 160052) 1.00
parse_and_babelify_jquery 28477375 ns/iter (± 268875) 28163175 ns/iter (± 514409) 1.01
parse_and_babelify_jquery_mobile 48712513 ns/iter (± 583729) 51641444 ns/iter (± 1138937) 0.94
parse_and_babelify_mootools 27721436 ns/iter (± 1300418) 26076661 ns/iter (± 284775) 1.06
parse_and_babelify_underscore 3659979 ns/iter (± 7128) 3660343 ns/iter (± 8665) 1.00
parse_and_babelify_yui 29201263 ns/iter (± 1780729) 23961606 ns/iter (± 129907) 1.22
html/minify/document/css_spec 47726934 ns/iter (± 373808) 46696914 ns/iter (± 179997) 1.02
html/minify/document/github 18829374 ns/iter (± 182817) 18596142 ns/iter (± 201579) 1.01
html/minify/document/stackoverflow 17064235 ns/iter (± 576653) 16866998 ns/iter (± 503625) 1.01
html/minify/document_fragment/css_spec 48148653 ns/iter (± 909671) 45723913 ns/iter (± 460144) 1.05
html/minify/document_fragment/github 18794166 ns/iter (± 107341) 18309701 ns/iter (± 141766) 1.03
html/minify/document_fragment/stackoverflow 16968043 ns/iter (± 176435) 16587669 ns/iter (± 65879) 1.02
html/document/visitor/compare/clone 166408 ns/iter (± 1363) 167735 ns/iter (± 1484) 0.99
html/document/visitor/compare/visit_mut_span 185331 ns/iter (± 1568) 182595 ns/iter (± 1133) 1.01
html/document/visitor/compare/visit_mut_span_panic 189589 ns/iter (± 1651) 189445 ns/iter (± 5298) 1.00
html/document/visitor/compare/fold_span 230013 ns/iter (± 1102) 233942 ns/iter (± 776) 0.98
html/document/visitor/compare/fold_span_panic 279249 ns/iter (± 960) 283122 ns/iter (± 860) 0.99
html/document_fragment/visitor/compare/clone 167615 ns/iter (± 1000) 169333 ns/iter (± 1277) 0.99
html/document_fragment/visitor/compare/visit_mut_span 184066 ns/iter (± 686) 184954 ns/iter (± 946) 1.00
html/document_fragment/visitor/compare/visit_mut_span_panic 187167 ns/iter (± 673) 188940 ns/iter (± 2700) 0.99
html/document_fragment/visitor/compare/fold_span 229260 ns/iter (± 988) 232950 ns/iter (± 2846) 0.98
html/document_fragment/visitor/compare/fold_span_panic 282191 ns/iter (± 1228) 281142 ns/iter (± 4634) 1.00
html/lexer/css_2021_spec 12827083 ns/iter (± 170667) 13001671 ns/iter (± 42988) 0.99
html/lexer/github_com_17_05_2022 4912100 ns/iter (± 15268) 5000343 ns/iter (± 5532) 0.98
html/lexer/stackoverflow_com_17_05_2022 4663076 ns/iter (± 11271) 4701254 ns/iter (± 4742) 0.99
html/parser/parser_document/css_2021_spec 25830106 ns/iter (± 195920) 26081715 ns/iter (± 418068) 0.99
html/parser/parser_document/github_com_17_05_2022 8675360 ns/iter (± 15884) 8690022 ns/iter (± 26105) 1.00
html/parser/parser_document/stackoverflow_com_17_05_2022 7511731 ns/iter (± 8337) 7767543 ns/iter (± 16760) 0.97
html/parser/parser_document_fragment/css_2021_spec 25618096 ns/iter (± 38113) 26111832 ns/iter (± 58539) 0.98
html/parser/parser_document_fragment/github_com_17_05_2022 8584238 ns/iter (± 7154) 8707805 ns/iter (± 11597) 0.99
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7428027 ns/iter (± 13924) 7566099 ns/iter (± 19246) 0.98

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

Please sign in to comment.