Skip to content

Commit

Permalink
fix(es/transforms): Handle member object in missing else branch (#7027)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #7025.
  • Loading branch information
magic-akari committed Mar 7, 2023
1 parent 7f6b4f0 commit 5c7c8e0
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 7 deletions.
16 changes: 9 additions & 7 deletions crates/swc_ecma_transforms_optimization/src/const_modules.rs
Expand Up @@ -161,11 +161,11 @@ impl VisitMut for ConstModules {
}
}
Expr::Member(MemberExpr { obj, prop, .. }) if obj.is_ident() => {
let member_obj = obj.as_ident().unwrap();

if self.scope.namespace.contains(&member_obj.to_id()) {
let module_name = &member_obj.sym;

if let Some(module_name) = obj
.as_ident()
.filter(|member_obj| self.scope.namespace.contains(&member_obj.to_id()))
.map(|member_obj| &member_obj.sym)
{
let imported_name = match prop {
MemberProp::Ident(ref id) => &id.sym,
MemberProp::Computed(ref p) => match &*p.expr {
Expand All @@ -188,10 +188,12 @@ impl VisitMut for ConstModules {
});

*n = (**value).clone();
} else {
n.visit_mut_children_with(self);
}
}
e => {
e.visit_mut_children_with(self);
_ => {
n.visit_mut_children_with(self);
}
};
}
Expand Down
18 changes: 18 additions & 0 deletions crates/swc_ecma_transforms_optimization/tests/const_modules.rs
Expand Up @@ -116,3 +116,21 @@ console.log(foo["bar"])
console.log(true);
"#
);

test!(
::swc_ecma_parser::Syntax::default(),
|tester| tr(
tester,
&[("testModule", &[("testMap", "{ 'var': 'value' }")])]
),
issue_7025,
r#"
import { testMap } from "testModule";
testMap['var'];
"#,
r#"
({
'var': 'value'
})['var'];
"#
);

1 comment on commit 5c7c8e0

@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: 5c7c8e0 Previous: 1318afe Ratio
es/full/bugs-1 301094 ns/iter (± 12497) 306623 ns/iter (± 11631) 0.98
es/full/minify/libraries/antd 1657709476 ns/iter (± 26184733) 1638608675 ns/iter (± 21909079) 1.01
es/full/minify/libraries/d3 309924932 ns/iter (± 2294371) 289195906 ns/iter (± 10648115) 1.07
es/full/minify/libraries/echarts 1285100617 ns/iter (± 13493751) 1241589547 ns/iter (± 10768243) 1.04
es/full/minify/libraries/jquery 94742408 ns/iter (± 961116) 89922862 ns/iter (± 570943) 1.05
es/full/minify/libraries/lodash 111173721 ns/iter (± 1092952) 106286057 ns/iter (± 1058628) 1.05
es/full/minify/libraries/moment 55361888 ns/iter (± 860601) 51916926 ns/iter (± 383381) 1.07
es/full/minify/libraries/react 20102284 ns/iter (± 128852) 19059611 ns/iter (± 88890) 1.05
es/full/minify/libraries/terser 270505273 ns/iter (± 4628189) 240904371 ns/iter (± 3288501) 1.12
es/full/minify/libraries/three 474770831 ns/iter (± 4787310) 431118030 ns/iter (± 2848130) 1.10
es/full/minify/libraries/typescript 3146761044 ns/iter (± 25694488) 3130041728 ns/iter (± 26289235) 1.01
es/full/minify/libraries/victory 733607838 ns/iter (± 8363041) 655384265 ns/iter (± 8368443) 1.12
es/full/minify/libraries/vue 141280955 ns/iter (± 3086644) 128664545 ns/iter (± 1034484) 1.10
es/full/codegen/es3 25927 ns/iter (± 49) 25712 ns/iter (± 180) 1.01
es/full/codegen/es5 25896 ns/iter (± 124) 26044 ns/iter (± 76) 0.99
es/full/codegen/es2015 25891 ns/iter (± 31) 25776 ns/iter (± 116) 1.00
es/full/codegen/es2016 25832 ns/iter (± 60) 25618 ns/iter (± 114) 1.01
es/full/codegen/es2017 25858 ns/iter (± 45) 25658 ns/iter (± 111) 1.01
es/full/codegen/es2018 25853 ns/iter (± 29) 26111 ns/iter (± 174) 0.99
es/full/codegen/es2019 25869 ns/iter (± 62) 26294 ns/iter (± 86) 0.98
es/full/codegen/es2020 25893 ns/iter (± 51) 26219 ns/iter (± 71) 0.99
es/full/all/es3 172569114 ns/iter (± 3187681) 172236773 ns/iter (± 2787063) 1.00
es/full/all/es5 163946971 ns/iter (± 2186911) 164580444 ns/iter (± 2534544) 1.00
es/full/all/es2015 128657414 ns/iter (± 2328911) 125573663 ns/iter (± 1951023) 1.02
es/full/all/es2016 125998695 ns/iter (± 1247052) 125142746 ns/iter (± 2364566) 1.01
es/full/all/es2017 124492579 ns/iter (± 2649321) 123687102 ns/iter (± 961224) 1.01
es/full/all/es2018 123527471 ns/iter (± 1513041) 121372851 ns/iter (± 785666) 1.02
es/full/all/es2019 120771687 ns/iter (± 1348795) 119369526 ns/iter (± 560845) 1.01
es/full/all/es2020 116138959 ns/iter (± 1236819) 114985316 ns/iter (± 853334) 1.01
es/full/parser 533566 ns/iter (± 8892) 538738 ns/iter (± 8837) 0.99
es/full/base/fixer 22025 ns/iter (± 42) 22016 ns/iter (± 44) 1.00
es/full/base/resolver_and_hygiene 81943 ns/iter (± 851) 80905 ns/iter (± 344) 1.01
serialization of ast node 146 ns/iter (± 0) 143 ns/iter (± 1) 1.02
serialization of serde 134 ns/iter (± 0) 132 ns/iter (± 0) 1.02
css/minify/libraries/bootstrap 29146530 ns/iter (± 312025) 27523456 ns/iter (± 113597) 1.06
css/visitor/compare/clone 2080925 ns/iter (± 16110) 2054303 ns/iter (± 13423) 1.01
css/visitor/compare/visit_mut_span 2255078 ns/iter (± 23667) 2241906 ns/iter (± 5767) 1.01
css/visitor/compare/visit_mut_span_panic 2358798 ns/iter (± 13092) 2304037 ns/iter (± 37748) 1.02
css/visitor/compare/fold_span 3067214 ns/iter (± 22596) 3006363 ns/iter (± 21519) 1.02
css/visitor/compare/fold_span_panic 3204537 ns/iter (± 79369) 3105584 ns/iter (± 20907) 1.03
css/lexer/bootstrap_5_1_3 5226153 ns/iter (± 6005) 5114115 ns/iter (± 45331) 1.02
css/lexer/foundation_6_7_4 4403684 ns/iter (± 1518) 4298407 ns/iter (± 11536) 1.02
css/lexer/tailwind_3_1_1 838093 ns/iter (± 140) 817917 ns/iter (± 6016) 1.02
css/parser/bootstrap_5_1_3 22349072 ns/iter (± 106895) 21198577 ns/iter (± 107422) 1.05
css/parser/foundation_6_7_4 17550616 ns/iter (± 39781) 16968142 ns/iter (± 129154) 1.03
css/parser/tailwind_3_1_1 3323135 ns/iter (± 2365) 3269098 ns/iter (± 25905) 1.02
es/codegen/colors 317519 ns/iter (± 178285) 334090 ns/iter (± 189034) 0.95
es/codegen/large 1229180 ns/iter (± 645088) 1220180 ns/iter (± 620932) 1.01
es/codegen/with-parser/colors 48172 ns/iter (± 137) 47061 ns/iter (± 477) 1.02
es/codegen/with-parser/large 525595 ns/iter (± 1739) 514841 ns/iter (± 2797) 1.02
es/minify/libraries/antd 1484095763 ns/iter (± 16912728) 1459294261 ns/iter (± 21997822) 1.02
es/minify/libraries/d3 284777710 ns/iter (± 4605698) 249811570 ns/iter (± 1969325) 1.14
es/minify/libraries/echarts 1129723085 ns/iter (± 5612154) 1067928249 ns/iter (± 8429624) 1.06
es/minify/libraries/jquery 82638604 ns/iter (± 682209) 78658774 ns/iter (± 326003) 1.05
es/minify/libraries/lodash 100268650 ns/iter (± 1225149) 95227304 ns/iter (± 1243134) 1.05
es/minify/libraries/moment 48521053 ns/iter (± 594667) 45855746 ns/iter (± 423403) 1.06
es/minify/libraries/react 17946989 ns/iter (± 189648) 17156751 ns/iter (± 83590) 1.05
es/minify/libraries/terser 229492340 ns/iter (± 3252485) 207300249 ns/iter (± 1503271) 1.11
es/minify/libraries/three 400608172 ns/iter (± 6935948) 359135378 ns/iter (± 3046387) 1.12
es/minify/libraries/typescript 2644231988 ns/iter (± 18385055) 2693183661 ns/iter (± 13237368) 0.98
es/minify/libraries/victory 606842513 ns/iter (± 12731588) 554536360 ns/iter (± 7315873) 1.09
es/minify/libraries/vue 121984304 ns/iter (± 1818489) 116004541 ns/iter (± 1169784) 1.05
es/visitor/compare/clone 2407855 ns/iter (± 41605) 2377260 ns/iter (± 9655) 1.01
es/visitor/compare/visit_mut_span 2808692 ns/iter (± 24969) 2731263 ns/iter (± 12467) 1.03
es/visitor/compare/visit_mut_span_panic 2903719 ns/iter (± 45079) 2778131 ns/iter (± 9659) 1.05
es/visitor/compare/fold_span 4007481 ns/iter (± 43935) 3843085 ns/iter (± 25363) 1.04
es/visitor/compare/fold_span_panic 4252276 ns/iter (± 33943) 3965303 ns/iter (± 22039) 1.07
es/lexer/colors 16208 ns/iter (± 16) 15873 ns/iter (± 84) 1.02
es/lexer/angular 7778734 ns/iter (± 4500) 7679320 ns/iter (± 33044) 1.01
es/lexer/backbone 1002453 ns/iter (± 452) 984615 ns/iter (± 3539) 1.02
es/lexer/jquery 5583851 ns/iter (± 3785) 5480618 ns/iter (± 19211) 1.02
es/lexer/jquery mobile 8555946 ns/iter (± 9843) 8403405 ns/iter (± 47252) 1.02
es/lexer/mootools 4387132 ns/iter (± 1758) 4318290 ns/iter (± 26486) 1.02
es/lexer/underscore 835189 ns/iter (± 367) 821620 ns/iter (± 7006) 1.02
es/lexer/three 26029861 ns/iter (± 16657) 25683874 ns/iter (± 149592) 1.01
es/lexer/yui 4778173 ns/iter (± 2803) 4682680 ns/iter (± 18286) 1.02
es/parser/colors 30316 ns/iter (± 31) 29971 ns/iter (± 169) 1.01
es/parser/angular 16622859 ns/iter (± 192007) 15363694 ns/iter (± 113564) 1.08
es/parser/backbone 2291867 ns/iter (± 10610) 2236527 ns/iter (± 13170) 1.02
es/parser/jquery 12880922 ns/iter (± 97217) 12047238 ns/iter (± 60318) 1.07
es/parser/jquery mobile 20819499 ns/iter (± 141022) 18746576 ns/iter (± 196817) 1.11
es/parser/mootools 9570930 ns/iter (± 31315) 9251061 ns/iter (± 38197) 1.03
es/parser/underscore 1929414 ns/iter (± 10451) 1900729 ns/iter (± 17271) 1.02
es/parser/three 58761672 ns/iter (± 107655) 55091860 ns/iter (± 765119) 1.07
es/parser/yui 10001697 ns/iter (± 158043) 9308875 ns/iter (± 67560) 1.07
es/preset-env/usage/builtin_type 142977 ns/iter (± 32325) 150654 ns/iter (± 34272) 0.95
es/preset-env/usage/property 21206 ns/iter (± 57) 20716 ns/iter (± 121) 1.02
es/resolver/typescript 114819551 ns/iter (± 1667491) 120981493 ns/iter (± 2239173) 0.95
es/fixer/typescript 86413546 ns/iter (± 347915) 93800788 ns/iter (± 1409206) 0.92
es/hygiene/typescript 186742529 ns/iter (± 1785878) 196841859 ns/iter (± 1239643) 0.95
es/resolver_with_hygiene/typescript 320004522 ns/iter (± 1716310) 326753982 ns/iter (± 1658531) 0.98
es/visitor/base-perf/module_clone 75277 ns/iter (± 1896) 75010 ns/iter (± 2151) 1.00
es/visitor/base-perf/fold_empty 85181 ns/iter (± 1334) 84242 ns/iter (± 1749) 1.01
es/visitor/base-perf/fold_noop_impl_all 85950 ns/iter (± 1908) 85766 ns/iter (± 2174) 1.00
es/visitor/base-perf/fold_noop_impl_vec 86220 ns/iter (± 997) 85056 ns/iter (± 1143) 1.01
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 54 ns/iter (± 0) 1.04
es/visitor/base-perf/boxing_unboxed_clone 59 ns/iter (± 0) 58 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_boxed 105 ns/iter (± 0) 100 ns/iter (± 0) 1.05
es/visitor/base-perf/boxing_unboxed 103 ns/iter (± 0) 101 ns/iter (± 0) 1.02
es/visitor/base-perf/visit_contains_this 3388 ns/iter (± 86) 3492 ns/iter (± 62) 0.97
es/base/parallel/resolver/typescript 5430738707 ns/iter (± 338429544) 5398868439 ns/iter (± 556093230) 1.01
es/base/parallel/hygiene/typescript 2122667238 ns/iter (± 31991894) 2372514527 ns/iter (± 20716514) 0.89
misc/visitors/time-complexity/time 5 101 ns/iter (± 0) 100 ns/iter (± 0) 1.01
misc/visitors/time-complexity/time 10 325 ns/iter (± 0) 327 ns/iter (± 4) 0.99
misc/visitors/time-complexity/time 15 643 ns/iter (± 0) 632 ns/iter (± 3) 1.02
misc/visitors/time-complexity/time 20 1219 ns/iter (± 4) 1190 ns/iter (± 4) 1.02
misc/visitors/time-complexity/time 40 6686 ns/iter (± 70) 6550 ns/iter (± 110) 1.02
misc/visitors/time-complexity/time 60 16976 ns/iter (± 26) 16597 ns/iter (± 53) 1.02
es/full-target/es2016 187302 ns/iter (± 444) 184297 ns/iter (± 1590) 1.02
es/full-target/es2017 182772 ns/iter (± 351) 178344 ns/iter (± 663) 1.02
es/full-target/es2018 171856 ns/iter (± 355) 168179 ns/iter (± 770) 1.02
es2020_nullish_coalescing 66906 ns/iter (± 5073) 65034 ns/iter (± 254) 1.03
es2020_optional_chaining 96402 ns/iter (± 7165) 94039 ns/iter (± 1014) 1.03
es2022_class_properties 93619 ns/iter (± 336) 91288 ns/iter (± 350) 1.03
es2018_object_rest_spread 71715 ns/iter (± 161) 69608 ns/iter (± 301) 1.03
es2019_optional_catch_binding 61461 ns/iter (± 245) 59838 ns/iter (± 501) 1.03
es2017_async_to_generator 61834 ns/iter (± 152) 59951 ns/iter (± 294) 1.03
es2016_exponentiation 65427 ns/iter (± 124) 63523 ns/iter (± 276) 1.03
es2015_arrow 70560 ns/iter (± 187) 68984 ns/iter (± 362) 1.02
es2015_block_scoped_fn 66597 ns/iter (± 106) 64584 ns/iter (± 329) 1.03
es2015_block_scoping 145551 ns/iter (± 9171) 146137 ns/iter (± 9885) 1.00
es2015_classes 117494 ns/iter (± 319) 114574 ns/iter (± 982) 1.03
es2015_computed_props 61434 ns/iter (± 46) 59795 ns/iter (± 202) 1.03
es2015_destructuring 117146 ns/iter (± 172) 113484 ns/iter (± 855) 1.03
es2015_duplicate_keys 63897 ns/iter (± 83) 61766 ns/iter (± 383) 1.03
es2015_parameters 79620 ns/iter (± 165) 77848 ns/iter (± 626) 1.02
es2015_fn_name 66931 ns/iter (± 447) 64488 ns/iter (± 601) 1.04
es2015_for_of 64565 ns/iter (± 89) 62307 ns/iter (± 261) 1.04
es2015_instanceof 63216 ns/iter (± 78) 61529 ns/iter (± 243) 1.03
es2015_shorthand_property 61203 ns/iter (± 93) 59400 ns/iter (± 290) 1.03
es2015_spread 61032 ns/iter (± 52) 59611 ns/iter (± 226) 1.02
es2015_sticky_regex 62545 ns/iter (± 63) 60896 ns/iter (± 355) 1.03
es2015_typeof_symbol 62410 ns/iter (± 58) 60823 ns/iter (± 395) 1.03
es/transform/baseline/base 51926 ns/iter (± 73) 50471 ns/iter (± 316) 1.03
es/transform/baseline/common_reserved_word 62814 ns/iter (± 85) 61191 ns/iter (± 391) 1.03
es/transform/baseline/common_typescript 141751 ns/iter (± 116) 139462 ns/iter (± 2301) 1.02
es/target/es3 170337 ns/iter (± 244) 165642 ns/iter (± 574) 1.03
es/target/es2015 634409 ns/iter (± 1376) 615039 ns/iter (± 3193) 1.03
es/target/es2016 65349 ns/iter (± 131) 63187 ns/iter (± 321) 1.03
es/target/es2017 61712 ns/iter (± 235) 60409 ns/iter (± 338) 1.02
es/target/es2018 81778 ns/iter (± 168) 79375 ns/iter (± 359) 1.03
es/target/es2020 132675 ns/iter (± 288) 129891 ns/iter (± 1431) 1.02
babelify-only 676163 ns/iter (± 828) 666566 ns/iter (± 4757) 1.01
parse_and_babelify_angular 44628834 ns/iter (± 468735) 44399236 ns/iter (± 1551092) 1.01
parse_and_babelify_backbone 5634092 ns/iter (± 44989) 5406443 ns/iter (± 51944) 1.04
parse_and_babelify_jquery 32428219 ns/iter (± 418705) 31811105 ns/iter (± 378589) 1.02
parse_and_babelify_jquery_mobile 55010668 ns/iter (± 580278) 53955900 ns/iter (± 543758) 1.02
parse_and_babelify_mootools 34147215 ns/iter (± 467890) 32559543 ns/iter (± 420308) 1.05
parse_and_babelify_underscore 4436841 ns/iter (± 21570) 4370569 ns/iter (± 24451) 1.02
parse_and_babelify_yui 33379805 ns/iter (± 300786) 31992824 ns/iter (± 590817) 1.04
html/minify/document/css_spec 43047686 ns/iter (± 544861) 41096955 ns/iter (± 265723) 1.05
html/minify/document/github 17782032 ns/iter (± 46362) 17072498 ns/iter (± 108565) 1.04
html/minify/document/stackoverflow 15886538 ns/iter (± 44806) 15456247 ns/iter (± 99794) 1.03
html/minify/document_fragment/css_spec 41153278 ns/iter (± 223066) 38964693 ns/iter (± 285521) 1.06
html/minify/document_fragment/github 16932161 ns/iter (± 99577) 16439108 ns/iter (± 118583) 1.03
html/minify/document_fragment/stackoverflow 15353485 ns/iter (± 43848) 14990990 ns/iter (± 218337) 1.02
html/document/visitor/compare/clone 342208 ns/iter (± 1845) 336506 ns/iter (± 3967) 1.02
html/document/visitor/compare/visit_mut_span 363535 ns/iter (± 1694) 353405 ns/iter (± 2543) 1.03
html/document/visitor/compare/visit_mut_span_panic 368957 ns/iter (± 2045) 369534 ns/iter (± 2736) 1.00
html/document/visitor/compare/fold_span 404997 ns/iter (± 2474) 395575 ns/iter (± 2503) 1.02
html/document/visitor/compare/fold_span_panic 463975 ns/iter (± 2696) 453371 ns/iter (± 3350) 1.02
html/document_fragment/visitor/compare/clone 340572 ns/iter (± 3476) 329706 ns/iter (± 2954) 1.03
html/document_fragment/visitor/compare/visit_mut_span 367229 ns/iter (± 2476) 362759 ns/iter (± 2601) 1.01
html/document_fragment/visitor/compare/visit_mut_span_panic 374562 ns/iter (± 1917) 372985 ns/iter (± 3349) 1.00
html/document_fragment/visitor/compare/fold_span 401761 ns/iter (± 2436) 396244 ns/iter (± 1965) 1.01
html/document_fragment/visitor/compare/fold_span_panic 462078 ns/iter (± 2219) 451818 ns/iter (± 3859) 1.02
html/lexer/css_2021_spec 15607143 ns/iter (± 71752) 15213265 ns/iter (± 126788) 1.03
html/lexer/github_com_17_05_2022 6054371 ns/iter (± 5014) 5890318 ns/iter (± 22596) 1.03
html/lexer/stackoverflow_com_17_05_2022 5669371 ns/iter (± 3381) 5505420 ns/iter (± 29460) 1.03
html/parser/parser_document/css_2021_spec 25836829 ns/iter (± 117726) 25002613 ns/iter (± 232460) 1.03
html/parser/parser_document/github_com_17_05_2022 8751134 ns/iter (± 5950) 8511434 ns/iter (± 30740) 1.03
html/parser/parser_document/stackoverflow_com_17_05_2022 7762600 ns/iter (± 23709) 7507888 ns/iter (± 24117) 1.03
html/parser/parser_document_fragment/css_2021_spec 26043026 ns/iter (± 215079) 24962807 ns/iter (± 163821) 1.04
html/parser/parser_document_fragment/github_com_17_05_2022 8786558 ns/iter (± 12606) 8555079 ns/iter (± 33360) 1.03
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7720493 ns/iter (± 4977) 7536663 ns/iter (± 40898) 1.02

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

Please sign in to comment.