Skip to content

Commit

Permalink
fix(es/transforms): Handle object shorthand in const_modules (#7022)
Browse files Browse the repository at this point in the history
  • Loading branch information
magic-akari committed Mar 9, 2023
1 parent 32bc2f5 commit 0314869
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
22 changes: 22 additions & 0 deletions crates/swc_ecma_transforms_optimization/src/const_modules.rs
Expand Up @@ -197,4 +197,26 @@ impl VisitMut for ConstModules {
}
};
}

fn visit_mut_prop(&mut self, n: &mut Prop) {
match n {
Prop::Shorthand(id) => {
if let Some(value) = self.scope.imported.get(&id.sym) {
*n = Prop::KeyValue(KeyValueProp {
key: id.take().into(),
value: Box::new((**value).clone()),
});
return;
}

if let Some(..) = self.scope.namespace.get(&id.to_id()) {
panic!(
"The const_module namespace `{}` cannot be used without member accessor",
id.sym
)
}
}
_ => n.visit_mut_children_with(self),
}
}
}
13 changes: 13 additions & 0 deletions crates/swc_ecma_transforms_optimization/tests/const_modules.rs
Expand Up @@ -134,3 +134,16 @@ test!(
})['var'];
"#
);

test!(
::swc_ecma_parser::Syntax::default(),
|tester| tr(tester, &[("foo", &[("bar", "true")])]),
use_as_object_prop_shorthand,
r#"
import { bar } from 'foo';
console.log({ bar });
"#,
r#"
console.log({ bar: true });
"#
);

1 comment on commit 0314869

@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: 0314869 Previous: 32bc2f5 Ratio
es/full/bugs-1 304912 ns/iter (± 6871) 311659 ns/iter (± 10487) 0.98
es/full/minify/libraries/antd 1667933162 ns/iter (± 21434633) 1886996100 ns/iter (± 56746017) 0.88
es/full/minify/libraries/d3 319673573 ns/iter (± 8351891) 293122927 ns/iter (± 10923939) 1.09
es/full/minify/libraries/echarts 1304386979 ns/iter (± 35193781) 1352493747 ns/iter (± 44309212) 0.96
es/full/minify/libraries/jquery 93181867 ns/iter (± 1570623) 89670483 ns/iter (± 1041620) 1.04
es/full/minify/libraries/lodash 108520536 ns/iter (± 1407975) 105069765 ns/iter (± 1410656) 1.03
es/full/minify/libraries/moment 52635523 ns/iter (± 593696) 52348291 ns/iter (± 793029) 1.01
es/full/minify/libraries/react 19251237 ns/iter (± 186852) 19008353 ns/iter (± 247824) 1.01
es/full/minify/libraries/terser 248187973 ns/iter (± 4640558) 240195543 ns/iter (± 2207006) 1.03
es/full/minify/libraries/three 443819169 ns/iter (± 5717696) 431028012 ns/iter (± 10565657) 1.03
es/full/minify/libraries/typescript 3151930140 ns/iter (± 39222856) 3411712545 ns/iter (± 33296020) 0.92
es/full/minify/libraries/victory 714017926 ns/iter (± 12099931) 682946729 ns/iter (± 15028628) 1.05
es/full/minify/libraries/vue 130310032 ns/iter (± 1223515) 129261903 ns/iter (± 1883643) 1.01
es/full/codegen/es3 26336 ns/iter (± 173) 25834 ns/iter (± 83) 1.02
es/full/codegen/es5 26387 ns/iter (± 60) 26238 ns/iter (± 256) 1.01
es/full/codegen/es2015 26391 ns/iter (± 77) 26496 ns/iter (± 235) 1.00
es/full/codegen/es2016 26335 ns/iter (± 81) 25830 ns/iter (± 128) 1.02
es/full/codegen/es2017 26320 ns/iter (± 50) 25876 ns/iter (± 222) 1.02
es/full/codegen/es2018 26358 ns/iter (± 31) 25940 ns/iter (± 199) 1.02
es/full/codegen/es2019 26394 ns/iter (± 39) 26125 ns/iter (± 168) 1.01
es/full/codegen/es2020 26368 ns/iter (± 75) 25747 ns/iter (± 295) 1.02
es/full/all/es3 173035236 ns/iter (± 2008290) 173054889 ns/iter (± 4806607) 1.00
es/full/all/es5 160989893 ns/iter (± 2798297) 167394093 ns/iter (± 2634067) 0.96
es/full/all/es2015 126185109 ns/iter (± 4031601) 125928883 ns/iter (± 1761662) 1.00
es/full/all/es2016 124341843 ns/iter (± 1025036) 124625384 ns/iter (± 1807385) 1.00
es/full/all/es2017 123176112 ns/iter (± 676998) 124501858 ns/iter (± 1727967) 0.99
es/full/all/es2018 118888359 ns/iter (± 1409154) 121639398 ns/iter (± 1595947) 0.98
es/full/all/es2019 119905861 ns/iter (± 870900) 119449555 ns/iter (± 1121968) 1.00
es/full/all/es2020 114919823 ns/iter (± 502621) 115876945 ns/iter (± 986323) 0.99
es/full/parser 537430 ns/iter (± 8110) 527870 ns/iter (± 9496) 1.02
es/full/base/fixer 23227 ns/iter (± 38) 22624 ns/iter (± 151) 1.03
es/full/base/resolver_and_hygiene 82922 ns/iter (± 245) 81507 ns/iter (± 755) 1.02
serialization of ast node 128 ns/iter (± 0) 124 ns/iter (± 0) 1.03
serialization of serde 129 ns/iter (± 0) 126 ns/iter (± 0) 1.02
css/minify/libraries/bootstrap 28324406 ns/iter (± 240741) 27179616 ns/iter (± 341752) 1.04
css/visitor/compare/clone 2087156 ns/iter (± 20018) 2059705 ns/iter (± 14864) 1.01
css/visitor/compare/visit_mut_span 2301958 ns/iter (± 9165) 2236935 ns/iter (± 13165) 1.03
css/visitor/compare/visit_mut_span_panic 2373316 ns/iter (± 28316) 2301060 ns/iter (± 4334) 1.03
css/visitor/compare/fold_span 3088984 ns/iter (± 23932) 2946428 ns/iter (± 15140) 1.05
css/visitor/compare/fold_span_panic 3220281 ns/iter (± 30325) 3113240 ns/iter (± 45446) 1.03
css/lexer/bootstrap_5_1_3 5223846 ns/iter (± 39899) 5137680 ns/iter (± 40565) 1.02
css/lexer/foundation_6_7_4 4411250 ns/iter (± 25484) 4383847 ns/iter (± 28986) 1.01
css/lexer/tailwind_3_1_1 837363 ns/iter (± 1397) 831994 ns/iter (± 6161) 1.01
css/parser/bootstrap_5_1_3 21865277 ns/iter (± 111608) 21418509 ns/iter (± 151527) 1.02
css/parser/foundation_6_7_4 17427443 ns/iter (± 127765) 16998533 ns/iter (± 180841) 1.03
css/parser/tailwind_3_1_1 3331060 ns/iter (± 11354) 3320077 ns/iter (± 11195) 1.00
es/codegen/colors 331466 ns/iter (± 186424) 324509 ns/iter (± 186003) 1.02
es/codegen/large 1207070 ns/iter (± 638869) 1220494 ns/iter (± 597378) 0.99
es/codegen/with-parser/colors 48195 ns/iter (± 195) 46764 ns/iter (± 432) 1.03
es/codegen/with-parser/large 520979 ns/iter (± 1566) 507155 ns/iter (± 5502) 1.03
es/minify/libraries/antd 1441853285 ns/iter (± 15678362) 1544695651 ns/iter (± 29784044) 0.93
es/minify/libraries/d3 259237965 ns/iter (± 3450509) 242816840 ns/iter (± 2737704) 1.07
es/minify/libraries/echarts 1083636933 ns/iter (± 22718275) 1077976612 ns/iter (± 23025957) 1.01
es/minify/libraries/jquery 79862333 ns/iter (± 1336024) 77315990 ns/iter (± 1370797) 1.03
es/minify/libraries/lodash 95151875 ns/iter (± 1137614) 91574727 ns/iter (± 937655) 1.04
es/minify/libraries/moment 46141290 ns/iter (± 628979) 45165940 ns/iter (± 629793) 1.02
es/minify/libraries/react 17210188 ns/iter (± 180626) 16922302 ns/iter (± 105006) 1.02
es/minify/libraries/terser 211678825 ns/iter (± 2051043) 208021547 ns/iter (± 4821517) 1.02
es/minify/libraries/three 384677626 ns/iter (± 8313818) 350448185 ns/iter (± 12316213) 1.10
es/minify/libraries/typescript 2657215532 ns/iter (± 18554120) 2894380873 ns/iter (± 33785870) 0.92
es/minify/libraries/victory 568878641 ns/iter (± 9806234) 576499621 ns/iter (± 23190791) 0.99
es/minify/libraries/vue 117541581 ns/iter (± 1464691) 111967648 ns/iter (± 1639015) 1.05
es/visitor/compare/clone 2319987 ns/iter (± 13697) 2242534 ns/iter (± 35999) 1.03
es/visitor/compare/visit_mut_span 2664340 ns/iter (± 18796) 2623411 ns/iter (± 19909) 1.02
es/visitor/compare/visit_mut_span_panic 2724103 ns/iter (± 11365) 2649332 ns/iter (± 16045) 1.03
es/visitor/compare/fold_span 3749632 ns/iter (± 17871) 3705956 ns/iter (± 17489) 1.01
es/visitor/compare/fold_span_panic 3921429 ns/iter (± 20892) 3858876 ns/iter (± 32281) 1.02
es/lexer/colors 16357 ns/iter (± 78) 15851 ns/iter (± 162) 1.03
es/lexer/angular 7993492 ns/iter (± 24609) 7698027 ns/iter (± 74632) 1.04
es/lexer/backbone 1031889 ns/iter (± 4697) 988869 ns/iter (± 6605) 1.04
es/lexer/jquery 5736744 ns/iter (± 20185) 5594834 ns/iter (± 64482) 1.03
es/lexer/jquery mobile 8825741 ns/iter (± 24320) 8569038 ns/iter (± 58314) 1.03
es/lexer/mootools 4518672 ns/iter (± 9880) 4354618 ns/iter (± 29597) 1.04
es/lexer/underscore 854791 ns/iter (± 4079) 825375 ns/iter (± 6399) 1.04
es/lexer/three 26640194 ns/iter (± 146935) 25753599 ns/iter (± 238601) 1.03
es/lexer/yui 4910722 ns/iter (± 15525) 4715158 ns/iter (± 31342) 1.04
es/parser/colors 30327 ns/iter (± 73) 29676 ns/iter (± 316) 1.02
es/parser/angular 15926498 ns/iter (± 141208) 15011992 ns/iter (± 126599) 1.06
es/parser/backbone 2278636 ns/iter (± 9190) 2214985 ns/iter (± 39576) 1.03
es/parser/jquery 12492341 ns/iter (± 128453) 12001370 ns/iter (± 185190) 1.04
es/parser/jquery mobile 20052730 ns/iter (± 413435) 18619502 ns/iter (± 324272) 1.08
es/parser/mootools 9449630 ns/iter (± 62812) 9126081 ns/iter (± 64998) 1.04
es/parser/underscore 1935477 ns/iter (± 15433) 1889107 ns/iter (± 35505) 1.02
es/parser/three 57475072 ns/iter (± 1557159) 54351439 ns/iter (± 2227819) 1.06
es/parser/yui 9451436 ns/iter (± 94354) 9299459 ns/iter (± 83162) 1.02
es/preset-env/usage/builtin_type 138581 ns/iter (± 31810) 137276 ns/iter (± 32802) 1.01
es/preset-env/usage/property 20539 ns/iter (± 130) 20153 ns/iter (± 141) 1.02
es/resolver/typescript 115848478 ns/iter (± 4694799) 125709791 ns/iter (± 7596311) 0.92
es/fixer/typescript 86378109 ns/iter (± 1127634) 97110434 ns/iter (± 4454441) 0.89
es/hygiene/typescript 187786999 ns/iter (± 2970372) 212582285 ns/iter (± 5220755) 0.88
es/resolver_with_hygiene/typescript 321635871 ns/iter (± 4957273) 350294286 ns/iter (± 5000494) 0.92
es/visitor/base-perf/module_clone 75852 ns/iter (± 1710) 75358 ns/iter (± 1809) 1.01
es/visitor/base-perf/fold_empty 86150 ns/iter (± 1630) 85044 ns/iter (± 2239) 1.01
es/visitor/base-perf/fold_noop_impl_all 88296 ns/iter (± 2270) 87277 ns/iter (± 1321) 1.01
es/visitor/base-perf/fold_noop_impl_vec 86719 ns/iter (± 1298) 87092 ns/iter (± 1788) 1.00
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 56 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed_clone 53 ns/iter (± 0) 52 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_boxed 99 ns/iter (± 0) 99 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed 103 ns/iter (± 0) 93 ns/iter (± 0) 1.11
es/visitor/base-perf/visit_contains_this 3622 ns/iter (± 80) 3416 ns/iter (± 105) 1.06
es/base/parallel/resolver/typescript 5685079603 ns/iter (± 463393930) 5769983926 ns/iter (± 569343642) 0.99
es/base/parallel/hygiene/typescript 2143322247 ns/iter (± 24023215) 2603642743 ns/iter (± 25608009) 0.82
misc/visitors/time-complexity/time 5 102 ns/iter (± 0) 100 ns/iter (± 0) 1.02
misc/visitors/time-complexity/time 10 320 ns/iter (± 0) 310 ns/iter (± 2) 1.03
misc/visitors/time-complexity/time 15 664 ns/iter (± 0) 666 ns/iter (± 11) 1.00
misc/visitors/time-complexity/time 20 1278 ns/iter (± 41) 1224 ns/iter (± 8) 1.04
misc/visitors/time-complexity/time 40 6727 ns/iter (± 20) 6648 ns/iter (± 112) 1.01
misc/visitors/time-complexity/time 60 17258 ns/iter (± 143) 16677 ns/iter (± 113) 1.03
es/full-target/es2016 189493 ns/iter (± 1324) 187714 ns/iter (± 787) 1.01
es/full-target/es2017 184419 ns/iter (± 622) 179059 ns/iter (± 1170) 1.03
es/full-target/es2018 173354 ns/iter (± 592) 167807 ns/iter (± 1049) 1.03
es2020_nullish_coalescing 67366 ns/iter (± 270) 65039 ns/iter (± 418) 1.04
es2020_optional_chaining 95667 ns/iter (± 7673) 94043 ns/iter (± 549) 1.02
es2022_class_properties 93947 ns/iter (± 221) 92769 ns/iter (± 366) 1.01
es2018_object_rest_spread 71839 ns/iter (± 129) 70758 ns/iter (± 431) 1.02
es2019_optional_catch_binding 61746 ns/iter (± 152) 60858 ns/iter (± 304) 1.01
es2017_async_to_generator 61937 ns/iter (± 116) 61240 ns/iter (± 479) 1.01
es2016_exponentiation 65815 ns/iter (± 210) 63961 ns/iter (± 638) 1.03
es2015_arrow 69659 ns/iter (± 135) 67545 ns/iter (± 397) 1.03
es2015_block_scoped_fn 66802 ns/iter (± 150) 64835 ns/iter (± 593) 1.03
es2015_block_scoping 139204 ns/iter (± 3831) 151154 ns/iter (± 9714) 0.92
es2015_classes 117405 ns/iter (± 461) 114254 ns/iter (± 732) 1.03
es2015_computed_props 61269 ns/iter (± 116) 59957 ns/iter (± 358) 1.02
es2015_destructuring 116682 ns/iter (± 273) 112434 ns/iter (± 692) 1.04
es2015_duplicate_keys 64427 ns/iter (± 115) 62239 ns/iter (± 400) 1.04
es2015_parameters 80489 ns/iter (± 190) 78866 ns/iter (± 1081) 1.02
es2015_fn_name 66663 ns/iter (± 511) 65716 ns/iter (± 860) 1.01
es2015_for_of 64198 ns/iter (± 92) 62787 ns/iter (± 336) 1.02
es2015_instanceof 63438 ns/iter (± 115) 62202 ns/iter (± 442) 1.02
es2015_shorthand_property 61406 ns/iter (± 108) 59929 ns/iter (± 379) 1.02
es2015_spread 61136 ns/iter (± 97) 59167 ns/iter (± 621) 1.03
es2015_sticky_regex 62609 ns/iter (± 175) 60415 ns/iter (± 834) 1.04
es2015_typeof_symbol 62583 ns/iter (± 95) 60568 ns/iter (± 518) 1.03
es/transform/baseline/base 52068 ns/iter (± 125) 50457 ns/iter (± 189) 1.03
es/transform/baseline/common_reserved_word 63067 ns/iter (± 134) 61171 ns/iter (± 563) 1.03
es/transform/baseline/common_typescript 141888 ns/iter (± 1067) 142743 ns/iter (± 4581) 0.99
es/target/es3 170365 ns/iter (± 213) 166669 ns/iter (± 1514) 1.02
es/target/es2015 627911 ns/iter (± 1255) 613737 ns/iter (± 4769) 1.02
es/target/es2016 65653 ns/iter (± 124) 63534 ns/iter (± 571) 1.03
es/target/es2017 62027 ns/iter (± 130) 60091 ns/iter (± 493) 1.03
es/target/es2018 81605 ns/iter (± 102) 79028 ns/iter (± 240) 1.03
es/target/es2020 133595 ns/iter (± 265) 130160 ns/iter (± 1144) 1.03
babelify-only 675956 ns/iter (± 5065) 636692 ns/iter (± 11273) 1.06
parse_and_babelify_angular 44574632 ns/iter (± 1295261) 44411725 ns/iter (± 1540558) 1.00
parse_and_babelify_backbone 5577223 ns/iter (± 33589) 5504322 ns/iter (± 179865) 1.01
parse_and_babelify_jquery 33224200 ns/iter (± 349352) 33474828 ns/iter (± 406896) 0.99
parse_and_babelify_jquery_mobile 57502960 ns/iter (± 895350) 59356190 ns/iter (± 1499797) 0.97
parse_and_babelify_mootools 35021046 ns/iter (± 502837) 37335885 ns/iter (± 1825261) 0.94
parse_and_babelify_underscore 4391031 ns/iter (± 30809) 4371937 ns/iter (± 49445) 1.00
parse_and_babelify_yui 33971240 ns/iter (± 316084) 33935845 ns/iter (± 788509) 1.00
html/minify/document/css_spec 43127697 ns/iter (± 215599) 41427384 ns/iter (± 664349) 1.04
html/minify/document/github 17775580 ns/iter (± 83545) 17216696 ns/iter (± 148083) 1.03
html/minify/document/stackoverflow 15886874 ns/iter (± 62317) 15351647 ns/iter (± 153085) 1.03
html/minify/document_fragment/css_spec 42099756 ns/iter (± 895666) 40779481 ns/iter (± 605290) 1.03
html/minify/document_fragment/github 16996342 ns/iter (± 56663) 16513665 ns/iter (± 184622) 1.03
html/minify/document_fragment/stackoverflow 15461320 ns/iter (± 275385) 14916402 ns/iter (± 161879) 1.04
html/document/visitor/compare/clone 343386 ns/iter (± 1648) 342065 ns/iter (± 2651) 1.00
html/document/visitor/compare/visit_mut_span 377305 ns/iter (± 1556) 367042 ns/iter (± 2612) 1.03
html/document/visitor/compare/visit_mut_span_panic 382158 ns/iter (± 1903) 373832 ns/iter (± 2086) 1.02
html/document/visitor/compare/fold_span 407722 ns/iter (± 2656) 401656 ns/iter (± 2855) 1.02
html/document/visitor/compare/fold_span_panic 464933 ns/iter (± 2303) 454757 ns/iter (± 2882) 1.02
html/document_fragment/visitor/compare/clone 342394 ns/iter (± 1597) 335870 ns/iter (± 3160) 1.02
html/document_fragment/visitor/compare/visit_mut_span 373879 ns/iter (± 2445) 366132 ns/iter (± 3626) 1.02
html/document_fragment/visitor/compare/visit_mut_span_panic 385378 ns/iter (± 2450) 377959 ns/iter (± 4402) 1.02
html/document_fragment/visitor/compare/fold_span 411208 ns/iter (± 2122) 403265 ns/iter (± 3360) 1.02
html/document_fragment/visitor/compare/fold_span_panic 471217 ns/iter (± 2147) 464839 ns/iter (± 4574) 1.01
html/lexer/css_2021_spec 15753826 ns/iter (± 215280) 15437607 ns/iter (± 427120) 1.02
html/lexer/github_com_17_05_2022 6086679 ns/iter (± 8042) 5862490 ns/iter (± 53695) 1.04
html/lexer/stackoverflow_com_17_05_2022 5691698 ns/iter (± 3819) 5511622 ns/iter (± 33466) 1.03
html/parser/parser_document/css_2021_spec 27063820 ns/iter (± 289818) 25419772 ns/iter (± 351044) 1.06
html/parser/parser_document/github_com_17_05_2022 8950473 ns/iter (± 25926) 8694537 ns/iter (± 74012) 1.03
html/parser/parser_document/stackoverflow_com_17_05_2022 7814158 ns/iter (± 11765) 7591792 ns/iter (± 66513) 1.03
html/parser/parser_document_fragment/css_2021_spec 28050406 ns/iter (± 251465) 25429218 ns/iter (± 267976) 1.10
html/parser/parser_document_fragment/github_com_17_05_2022 8950058 ns/iter (± 11238) 8721092 ns/iter (± 67154) 1.03
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7805093 ns/iter (± 12852) 7673288 ns/iter (± 70004) 1.02

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

Please sign in to comment.