Skip to content

Commit

Permalink
fix(es/codegen): Fix codegen of TypeScript mapped types (#6621)
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinbarabash committed Dec 12, 2022
1 parent cacd0d1 commit 5c53a74
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 1 deletion.
2 changes: 1 addition & 1 deletion crates/swc_ecma_codegen/src/typescript.rs
Expand Up @@ -505,7 +505,7 @@ where
}
TruePlusMinus::Plus => {
punct!("+");
punct!("/");
punct!("?");
}
TruePlusMinus::Minus => {
punct!("-");
Expand Down
3 changes: 3 additions & 0 deletions crates/swc_ecma_codegen/tests/fixture/issues/6616/input.ts
@@ -0,0 +1,3 @@
type Custom<A> = {
-readonly [P in keyof A]+?: A[P];
};
3 changes: 3 additions & 0 deletions crates/swc_ecma_codegen/tests/fixture/issues/6616/output.ts
@@ -0,0 +1,3 @@
type Custom<A> = {
-readonly [P in keyof A]+?: A[P];
};

1 comment on commit 5c53a74

@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: 5c53a74 Previous: 7e841a5 Ratio
es/full/bugs-1 297189 ns/iter (± 9534) 296219 ns/iter (± 10136) 1.00
es/full/minify/libraries/antd 1788839265 ns/iter (± 8397519) 1724407440 ns/iter (± 28345724) 1.04
es/full/minify/libraries/d3 352522028 ns/iter (± 4237708) 335252556 ns/iter (± 9701395) 1.05
es/full/minify/libraries/echarts 1492287203 ns/iter (± 12963983) 1474992441 ns/iter (± 22519559) 1.01
es/full/minify/libraries/jquery 95306812 ns/iter (± 1247103) 91404188 ns/iter (± 811966) 1.04
es/full/minify/libraries/lodash 112490873 ns/iter (± 1392896) 110302294 ns/iter (± 1634262) 1.02
es/full/minify/libraries/moment 54081730 ns/iter (± 228818) 53356419 ns/iter (± 430747) 1.01
es/full/minify/libraries/react 19844151 ns/iter (± 133927) 19651369 ns/iter (± 202990) 1.01
es/full/minify/libraries/terser 273988859 ns/iter (± 3515827) 260290471 ns/iter (± 8888729) 1.05
es/full/minify/libraries/three 501287743 ns/iter (± 6702840) 482146227 ns/iter (± 12251776) 1.04
es/full/minify/libraries/typescript 3338796641 ns/iter (± 14113038) 3305402328 ns/iter (± 14333853) 1.01
es/full/minify/libraries/victory 752974171 ns/iter (± 13422604) 715759977 ns/iter (± 24287885) 1.05
es/full/minify/libraries/vue 139913301 ns/iter (± 1433866) 135365368 ns/iter (± 2127443) 1.03
es/full/codegen/es3 27639 ns/iter (± 41) 26821 ns/iter (± 138) 1.03
es/full/codegen/es5 27602 ns/iter (± 57) 26676 ns/iter (± 177) 1.03
es/full/codegen/es2015 27626 ns/iter (± 44) 26822 ns/iter (± 201) 1.03
es/full/codegen/es2016 27663 ns/iter (± 38) 26799 ns/iter (± 113) 1.03
es/full/codegen/es2017 27667 ns/iter (± 66) 26864 ns/iter (± 90) 1.03
es/full/codegen/es2018 27600 ns/iter (± 71) 26758 ns/iter (± 175) 1.03
es/full/codegen/es2019 27674 ns/iter (± 117) 26862 ns/iter (± 167) 1.03
es/full/codegen/es2020 27581 ns/iter (± 49) 26897 ns/iter (± 159) 1.03
es/full/all/es3 168496508 ns/iter (± 2979040) 169108796 ns/iter (± 2215829) 1.00
es/full/all/es5 159222890 ns/iter (± 2722897) 160580176 ns/iter (± 1654655) 0.99
es/full/all/es2015 119464772 ns/iter (± 1395995) 120736199 ns/iter (± 1438692) 0.99
es/full/all/es2016 118795967 ns/iter (± 981053) 119552094 ns/iter (± 969753) 0.99
es/full/all/es2017 117616454 ns/iter (± 689762) 118967066 ns/iter (± 1706368) 0.99
es/full/all/es2018 116384546 ns/iter (± 944493) 116706337 ns/iter (± 1317681) 1.00
es/full/all/es2019 115497521 ns/iter (± 781287) 116653735 ns/iter (± 739530) 0.99
es/full/all/es2020 111334574 ns/iter (± 550293) 111734406 ns/iter (± 511062) 1.00
es/full/parser 513765 ns/iter (± 9351) 517294 ns/iter (± 10285) 0.99
es/full/base/fixer 21994 ns/iter (± 57) 21679 ns/iter (± 57) 1.01
es/full/base/resolver_and_hygiene 77995 ns/iter (± 88) 77541 ns/iter (± 203) 1.01
serialization of ast node 140 ns/iter (± 0) 138 ns/iter (± 1) 1.01
serialization of serde 123 ns/iter (± 0) 122 ns/iter (± 0) 1.01
css/minify/libraries/bootstrap 27873386 ns/iter (± 242665) 27025790 ns/iter (± 321455) 1.03
css/visitor/compare/clone 2100810 ns/iter (± 6723) 2121108 ns/iter (± 15563) 0.99
css/visitor/compare/visit_mut_span 2291397 ns/iter (± 3193) 2276283 ns/iter (± 11115) 1.01
css/visitor/compare/visit_mut_span_panic 2377296 ns/iter (± 9124) 2329476 ns/iter (± 18512) 1.02
css/visitor/compare/fold_span 3036668 ns/iter (± 29045) 3011338 ns/iter (± 15026) 1.01
css/visitor/compare/fold_span_panic 3171856 ns/iter (± 28746) 3132144 ns/iter (± 29223) 1.01
css/lexer/bootstrap_5_1_3 5354057 ns/iter (± 2358) 5353745 ns/iter (± 23865) 1.00
css/lexer/foundation_6_7_4 4497821 ns/iter (± 1212) 4596958 ns/iter (± 17236) 0.98
css/lexer/tailwind_3_1_1 853477 ns/iter (± 412) 876384 ns/iter (± 6026) 0.97
css/parser/bootstrap_5_1_3 21323936 ns/iter (± 140795) 20897174 ns/iter (± 166481) 1.02
css/parser/foundation_6_7_4 16944316 ns/iter (± 43499) 16650428 ns/iter (± 140163) 1.02
css/parser/tailwind_3_1_1 3241103 ns/iter (± 3741) 3213293 ns/iter (± 7781) 1.01
es/codegen/colors 324193 ns/iter (± 181316) 323654 ns/iter (± 182519) 1.00
es/codegen/large 1210468 ns/iter (± 625843) 1219054 ns/iter (± 650106) 0.99
es/codegen/with-parser/colors 45997 ns/iter (± 433) 46264 ns/iter (± 318) 0.99
es/codegen/with-parser/large 507164 ns/iter (± 1595) 507227 ns/iter (± 2445) 1.00
es/minify/libraries/antd 1541129928 ns/iter (± 8935796) 1508966446 ns/iter (± 25387148) 1.02
es/minify/libraries/d3 310652640 ns/iter (± 4914813) 293875898 ns/iter (± 5505164) 1.06
es/minify/libraries/echarts 1297201636 ns/iter (± 9210393) 1264123931 ns/iter (± 29215154) 1.03
es/minify/libraries/jquery 80472440 ns/iter (± 1044962) 78861910 ns/iter (± 616854) 1.02
es/minify/libraries/lodash 98698104 ns/iter (± 989199) 97894842 ns/iter (± 1290639) 1.01
es/minify/libraries/moment 46585079 ns/iter (± 232543) 46101488 ns/iter (± 353631) 1.01
es/minify/libraries/react 17310616 ns/iter (± 98639) 17466303 ns/iter (± 142039) 0.99
es/minify/libraries/terser 224745334 ns/iter (± 5364339) 224137054 ns/iter (± 6709622) 1.00
es/minify/libraries/three 418395244 ns/iter (± 9435455) 414068292 ns/iter (± 13181089) 1.01
es/minify/libraries/typescript 2838194946 ns/iter (± 15034419) 2824451435 ns/iter (± 17670635) 1.00
es/minify/libraries/victory 646097052 ns/iter (± 10394243) 589868443 ns/iter (± 18443268) 1.10
es/minify/libraries/vue 121629328 ns/iter (± 1480594) 119637200 ns/iter (± 2854137) 1.02
es/visitor/compare/clone 2415949 ns/iter (± 23669) 2387105 ns/iter (± 11714) 1.01
es/visitor/compare/visit_mut_span 2814925 ns/iter (± 10308) 2779175 ns/iter (± 24023) 1.01
es/visitor/compare/visit_mut_span_panic 2884296 ns/iter (± 11762) 2844005 ns/iter (± 18425) 1.01
es/visitor/compare/fold_span 3985486 ns/iter (± 24141) 3905703 ns/iter (± 31597) 1.02
es/visitor/compare/fold_span_panic 4160285 ns/iter (± 41591) 4056121 ns/iter (± 24260) 1.03
es/lexer/colors 17368 ns/iter (± 7) 17324 ns/iter (± 34) 1.00
es/lexer/angular 8192094 ns/iter (± 2208) 8191905 ns/iter (± 16205) 1.00
es/lexer/backbone 1071225 ns/iter (± 302) 1064258 ns/iter (± 5843) 1.01
es/lexer/jquery 5942632 ns/iter (± 2205) 5935251 ns/iter (± 22441) 1.00
es/lexer/jquery mobile 9164574 ns/iter (± 8585) 9144128 ns/iter (± 42685) 1.00
es/lexer/mootools 4662200 ns/iter (± 870) 4628270 ns/iter (± 35529) 1.01
es/lexer/underscore 893300 ns/iter (± 289) 883905 ns/iter (± 8061) 1.01
es/lexer/three 27841044 ns/iter (± 13867) 27759427 ns/iter (± 179021) 1.00
es/lexer/yui 5053496 ns/iter (± 54542) 5041604 ns/iter (± 13939) 1.00
es/parser/colors 31581 ns/iter (± 167) 31361 ns/iter (± 256) 1.01
es/parser/angular 16537277 ns/iter (± 218729) 16006655 ns/iter (± 267961) 1.03
es/parser/backbone 2334049 ns/iter (± 10590) 2308074 ns/iter (± 22680) 1.01
es/parser/jquery 12765690 ns/iter (± 127119) 12628818 ns/iter (± 107975) 1.01
es/parser/jquery mobile 20793798 ns/iter (± 359477) 20011850 ns/iter (± 394003) 1.04
es/parser/mootools 9630809 ns/iter (± 36342) 9540374 ns/iter (± 99623) 1.01
es/parser/underscore 1972700 ns/iter (± 9125) 1951391 ns/iter (± 13479) 1.01
es/parser/three 61134242 ns/iter (± 318710) 59967998 ns/iter (± 941557) 1.02
es/parser/yui 9819279 ns/iter (± 92840) 9688693 ns/iter (± 75413) 1.01
es/preset-env/usage/builtin_type 138553 ns/iter (± 30882) 141780 ns/iter (± 32278) 0.98
es/preset-env/usage/property 20930 ns/iter (± 104) 20851 ns/iter (± 125) 1.00
es/resolver/typescript 119749231 ns/iter (± 3289395) 120954766 ns/iter (± 2017252) 0.99
es/fixer/typescript 96528609 ns/iter (± 2256875) 94565340 ns/iter (± 753962) 1.02
es/hygiene/typescript 190317203 ns/iter (± 2083343) 190116255 ns/iter (± 1872375) 1.00
es/resolver_with_hygiene/typescript 327768076 ns/iter (± 2476977) 321608355 ns/iter (± 3714357) 1.02
es/visitor/base-perf/module_clone 74019 ns/iter (± 1303) 73525 ns/iter (± 1021) 1.01
es/visitor/base-perf/fold_empty 85756 ns/iter (± 1487) 85466 ns/iter (± 626) 1.00
es/visitor/base-perf/fold_noop_impl_all 86415 ns/iter (± 1210) 84998 ns/iter (± 1204) 1.02
es/visitor/base-perf/fold_noop_impl_vec 86669 ns/iter (± 1791) 86162 ns/iter (± 2042) 1.01
es/visitor/base-perf/boxing_boxed_clone 54 ns/iter (± 0) 54 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 59 ns/iter (± 0) 58 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_boxed 100 ns/iter (± 0) 99 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 101 ns/iter (± 0) 100 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_contains_this 3538 ns/iter (± 83) 3340 ns/iter (± 62) 1.06
es/base/parallel/resolver/typescript 5760400076 ns/iter (± 328863240) 5226910860 ns/iter (± 470240380) 1.10
es/base/parallel/hygiene/typescript 2230002686 ns/iter (± 33276548) 2252211222 ns/iter (± 32429473) 0.99
misc/visitors/time-complexity/time 5 108 ns/iter (± 0) 108 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 336 ns/iter (± 0) 335 ns/iter (± 1) 1.00
misc/visitors/time-complexity/time 15 692 ns/iter (± 0) 706 ns/iter (± 1) 0.98
misc/visitors/time-complexity/time 20 1311 ns/iter (± 35) 1267 ns/iter (± 4) 1.03
misc/visitors/time-complexity/time 40 6749 ns/iter (± 27) 6716 ns/iter (± 34) 1.00
misc/visitors/time-complexity/time 60 17227 ns/iter (± 2) 17375 ns/iter (± 61) 0.99
es/full-target/es2016 187773 ns/iter (± 489) 187836 ns/iter (± 649) 1.00
es/full-target/es2017 180514 ns/iter (± 1497) 180932 ns/iter (± 1035) 1.00
es/full-target/es2018 169973 ns/iter (± 416) 170989 ns/iter (± 874) 0.99
es2020_nullish_coalescing 65803 ns/iter (± 241) 65292 ns/iter (± 289) 1.01
es2020_optional_chaining 103553 ns/iter (± 11120) 96289 ns/iter (± 7848) 1.08
es2022_class_properties 93186 ns/iter (± 301) 91506 ns/iter (± 628) 1.02
es2018_object_rest_spread 70058 ns/iter (± 152) 69311 ns/iter (± 326) 1.01
es2019_optional_catch_binding 59916 ns/iter (± 117) 59242 ns/iter (± 252) 1.01
es2017_async_to_generator 60299 ns/iter (± 66) 59702 ns/iter (± 338) 1.01
es2016_exponentiation 63426 ns/iter (± 69) 63238 ns/iter (± 210) 1.00
es2015_arrow 69045 ns/iter (± 313) 68326 ns/iter (± 507) 1.01
es2015_block_scoped_fn 64522 ns/iter (± 116) 64368 ns/iter (± 255) 1.00
es2015_block_scoping 141503 ns/iter (± 8232) 144718 ns/iter (± 8996) 0.98
es2015_classes 114954 ns/iter (± 524) 114422 ns/iter (± 610) 1.00
es2015_computed_props 60008 ns/iter (± 122) 59528 ns/iter (± 145) 1.01
es2015_destructuring 115136 ns/iter (± 261) 115429 ns/iter (± 437) 1.00
es2015_duplicate_keys 62077 ns/iter (± 125) 62064 ns/iter (± 310) 1.00
es2015_parameters 78033 ns/iter (± 168) 78276 ns/iter (± 461) 1.00
es2015_fn_name 65259 ns/iter (± 619) 64806 ns/iter (± 491) 1.01
es2015_for_of 62739 ns/iter (± 175) 63070 ns/iter (± 423) 0.99
es2015_instanceof 61560 ns/iter (± 128) 61401 ns/iter (± 197) 1.00
es2015_shorthand_property 59542 ns/iter (± 50) 59096 ns/iter (± 262) 1.01
es2015_spread 59653 ns/iter (± 97) 59745 ns/iter (± 233) 1.00
es2015_sticky_regex 60759 ns/iter (± 216) 60246 ns/iter (± 435) 1.01
es2015_typeof_symbol 60796 ns/iter (± 139) 60550 ns/iter (± 417) 1.00
es/transform/baseline/base 50343 ns/iter (± 409) 50164 ns/iter (± 342) 1.00
es/transform/baseline/common_reserved_word 61567 ns/iter (± 112) 61380 ns/iter (± 499) 1.00
es/transform/baseline/common_typescript 142514 ns/iter (± 291) 170424 ns/iter (± 680) 0.84
es/target/es3 169325 ns/iter (± 247) 169823 ns/iter (± 864) 1.00
es/target/es2015 630563 ns/iter (± 1308) 630636 ns/iter (± 4646) 1.00
es/target/es2016 63495 ns/iter (± 134) 63392 ns/iter (± 356) 1.00
es/target/es2017 60549 ns/iter (± 62) 59943 ns/iter (± 274) 1.01
es/target/es2018 80131 ns/iter (± 145) 80247 ns/iter (± 410) 1.00
es/target/es2020 132009 ns/iter (± 296) 132266 ns/iter (± 434) 1.00
babelify-only 674936 ns/iter (± 1908) 663489 ns/iter (± 2101) 1.02
parse_and_babelify_angular 43980552 ns/iter (± 561597) 43070869 ns/iter (± 927880) 1.02
parse_and_babelify_backbone 5504424 ns/iter (± 64653) 5372379 ns/iter (± 77026) 1.02
parse_and_babelify_jquery 34041347 ns/iter (± 444773) 32882555 ns/iter (± 507013) 1.04
parse_and_babelify_jquery_mobile 58516283 ns/iter (± 993184) 57544830 ns/iter (± 1590600) 1.02
parse_and_babelify_mootools 35792494 ns/iter (± 512257) 34062818 ns/iter (± 835223) 1.05
parse_and_babelify_underscore 4387924 ns/iter (± 20356) 4335142 ns/iter (± 26957) 1.01
parse_and_babelify_yui 35153627 ns/iter (± 513533) 33763907 ns/iter (± 816382) 1.04
html/minify/document/css_spec 44886676 ns/iter (± 339746) 43355114 ns/iter (± 584995) 1.04
html/minify/document/github 18677566 ns/iter (± 45219) 18229095 ns/iter (± 141975) 1.02
html/minify/document/stackoverflow 16319672 ns/iter (± 64373) 16168598 ns/iter (± 121330) 1.01
html/minify/document_fragment/css_spec 42825238 ns/iter (± 334281) 41932685 ns/iter (± 681197) 1.02
html/minify/document_fragment/github 17825768 ns/iter (± 50405) 17760144 ns/iter (± 181667) 1.00
html/minify/document_fragment/stackoverflow 15942631 ns/iter (± 89821) 15827684 ns/iter (± 184500) 1.01
html/document/visitor/compare/clone 341664 ns/iter (± 1573) 335933 ns/iter (± 2147) 1.02
html/document/visitor/compare/visit_mut_span 376274 ns/iter (± 1918) 369424 ns/iter (± 3274) 1.02
html/document/visitor/compare/visit_mut_span_panic 382157 ns/iter (± 2260) 375831 ns/iter (± 2012) 1.02
html/document/visitor/compare/fold_span 408633 ns/iter (± 2531) 406391 ns/iter (± 2953) 1.01
html/document/visitor/compare/fold_span_panic 464034 ns/iter (± 1320) 460071 ns/iter (± 2401) 1.01
html/document_fragment/visitor/compare/clone 338882 ns/iter (± 1449) 342391 ns/iter (± 1967) 0.99
html/document_fragment/visitor/compare/visit_mut_span 365606 ns/iter (± 2722) 365827 ns/iter (± 1558) 1.00
html/document_fragment/visitor/compare/visit_mut_span_panic 372206 ns/iter (± 2095) 373385 ns/iter (± 2692) 1.00
html/document_fragment/visitor/compare/fold_span 402089 ns/iter (± 998) 400254 ns/iter (± 3182) 1.00
html/document_fragment/visitor/compare/fold_span_panic 459496 ns/iter (± 2210) 464724 ns/iter (± 6230) 0.99
html/lexer/css_2021_spec 15539046 ns/iter (± 25259) 15579052 ns/iter (± 31513) 1.00
html/lexer/github_com_17_05_2022 6055910 ns/iter (± 6325) 6055029 ns/iter (± 7655) 1.00
html/lexer/stackoverflow_com_17_05_2022 5650744 ns/iter (± 1492) 5652120 ns/iter (± 16685) 1.00
html/parser/parser_document/css_2021_spec 26566292 ns/iter (± 364086) 26204314 ns/iter (± 419392) 1.01
html/parser/parser_document/github_com_17_05_2022 8805324 ns/iter (± 27864) 8834222 ns/iter (± 15244) 1.00
html/parser/parser_document/stackoverflow_com_17_05_2022 7776036 ns/iter (± 9102) 7774419 ns/iter (± 24946) 1.00
html/parser/parser_document_fragment/css_2021_spec 27345337 ns/iter (± 375930) 25863676 ns/iter (± 421644) 1.06
html/parser/parser_document_fragment/github_com_17_05_2022 8825480 ns/iter (± 13066) 8719279 ns/iter (± 62251) 1.01
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7812447 ns/iter (± 8413) 7743735 ns/iter (± 34958) 1.01

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

Please sign in to comment.