Skip to content

Commit 0ca05d8

Browse files
authoredApr 24, 2023
fix(es/codegen): Fix codegen of TsModuleDecl (#7319)
1 parent caffb95 commit 0ca05d8

File tree

4 files changed

+56
-5
lines changed

4 files changed

+56
-5
lines changed
 

‎crates/swc_ecma_codegen/src/typescript.rs

+14-5
Original file line numberDiff line numberDiff line change
@@ -578,12 +578,21 @@ where
578578
space!();
579579
}
580580

581-
keyword!("module");
582-
space!();
583-
emit!(n.id);
584-
formatting_space!();
581+
if n.global {
582+
keyword!("global");
583+
} else {
584+
keyword!("module");
585+
space!();
586+
emit!(n.id);
587+
}
585588

586-
if let Some(body) = &n.body {
589+
if let Some(mut body) = n.body.as_ref() {
590+
while let TsNamespaceBody::TsNamespaceDecl(decl) = body {
591+
punct!(".");
592+
emit!(decl.id);
593+
body = &*decl.body;
594+
}
595+
formatting_space!();
587596
emit!(body);
588597
}
589598
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
module Test {
2+
1;
3+
}
4+
5+
export module Test.Test {
6+
1;
7+
}
8+
9+
declare module Test.Test2 {
10+
1;
11+
}
12+
13+
declare global {
14+
1;
15+
}
16+
17+
declare namespace Test1.Test2 {
18+
1;
19+
}
20+
21+
export namespace Test1.Test2.Test3 {
22+
2;
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
module Test {
2+
1;
3+
}
4+
export module Test.Test {
5+
1;
6+
}
7+
declare module Test.Test2 {
8+
1;
9+
}
10+
declare global {
11+
1;
12+
}
13+
declare module Test1.Test2 {
14+
1;
15+
}
16+
export module Test1.Test2.Test3 {
17+
2;
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module Test{1;}export module Test.Test{1;}declare module Test.Test2{1;}declare global{1;}declare module Test1.Test2{1;}export module Test1.Test2.Test3{2;}

1 commit comments

Comments
 (1)

github-actions[bot] commented on Apr 24, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 0ca05d8 Previous: 761ef83 Ratio
es/full/bugs-1 301106 ns/iter (± 15371) 309182 ns/iter (± 12165) 0.97
es/full/minify/libraries/antd 1431276524 ns/iter (± 23994740) 1568046631 ns/iter (± 18011888) 0.91
es/full/minify/libraries/d3 281658464 ns/iter (± 7624496) 295099170 ns/iter (± 8993416) 0.95
es/full/minify/libraries/echarts 1094800248 ns/iter (± 17141472) 1206936492 ns/iter (± 6582542) 0.91
es/full/minify/libraries/jquery 87674541 ns/iter (± 1056808) 90853215 ns/iter (± 707212) 0.97
es/full/minify/libraries/lodash 101350372 ns/iter (± 430269) 106105297 ns/iter (± 791142) 0.96
es/full/minify/libraries/moment 50811710 ns/iter (± 382584) 52651533 ns/iter (± 249529) 0.97
es/full/minify/libraries/react 18799387 ns/iter (± 114400) 19119271 ns/iter (± 139412) 0.98
es/full/minify/libraries/terser 228930218 ns/iter (± 1793490) 247026275 ns/iter (± 2574607) 0.93
es/full/minify/libraries/three 398072818 ns/iter (± 4375101) 437279706 ns/iter (± 3231782) 0.91
es/full/minify/libraries/typescript 2773197828 ns/iter (± 11060780) 2959591166 ns/iter (± 17988186) 0.94
es/full/minify/libraries/victory 608001255 ns/iter (± 17440773) 655948708 ns/iter (± 7386920) 0.93
es/full/minify/libraries/vue 125635033 ns/iter (± 1680498) 130145021 ns/iter (± 2536339) 0.97
es/full/codegen/es3 27697 ns/iter (± 293) 29053 ns/iter (± 44) 0.95
es/full/codegen/es5 28214 ns/iter (± 122) 29141 ns/iter (± 43) 0.97
es/full/codegen/es2015 27562 ns/iter (± 222) 29055 ns/iter (± 40) 0.95
es/full/codegen/es2016 27485 ns/iter (± 147) 29124 ns/iter (± 35) 0.94
es/full/codegen/es2017 27699 ns/iter (± 221) 29091 ns/iter (± 44) 0.95
es/full/codegen/es2018 27591 ns/iter (± 262) 29092 ns/iter (± 38) 0.95
es/full/codegen/es2019 27517 ns/iter (± 166) 29105 ns/iter (± 46) 0.95
es/full/codegen/es2020 27599 ns/iter (± 175) 29146 ns/iter (± 244) 0.95
es/full/all/es3 180344206 ns/iter (± 2044730) 177832805 ns/iter (± 3688602) 1.01
es/full/all/es5 175781104 ns/iter (± 2257500) 171979447 ns/iter (± 2456593) 1.02
es/full/all/es2015 136015771 ns/iter (± 1309138) 134030963 ns/iter (± 1714908) 1.01
es/full/all/es2016 133725458 ns/iter (± 1502885) 131548621 ns/iter (± 1547715) 1.02
es/full/all/es2017 130826839 ns/iter (± 1408502) 130555733 ns/iter (± 3246585) 1.00
es/full/all/es2018 126296737 ns/iter (± 2104085) 124976260 ns/iter (± 1362217) 1.01
es/full/all/es2019 124660987 ns/iter (± 1494823) 124074261 ns/iter (± 1361636) 1.00
es/full/all/es2020 117513970 ns/iter (± 1270971) 118186808 ns/iter (± 1319026) 0.99
es/full/parser 505609 ns/iter (± 7592) 511692 ns/iter (± 7769) 0.99
es/full/base/fixer 21869 ns/iter (± 105) 23300 ns/iter (± 26) 0.94
es/full/base/resolver_and_hygiene 83793 ns/iter (± 587) 87456 ns/iter (± 82) 0.96
serialization of serde 118 ns/iter (± 1) 121 ns/iter (± 0) 0.98
css/minify/libraries/bootstrap 26838471 ns/iter (± 277057) 27777283 ns/iter (± 134565) 0.97
css/visitor/compare/clone 2054576 ns/iter (± 17525) 2123377 ns/iter (± 21665) 0.97
css/visitor/compare/visit_mut_span 2229791 ns/iter (± 8604) 2309278 ns/iter (± 5467) 0.97
css/visitor/compare/visit_mut_span_panic 2294022 ns/iter (± 14319) 2372662 ns/iter (± 9074) 0.97
css/visitor/compare/fold_span 2996180 ns/iter (± 39858) 3086581 ns/iter (± 13377) 0.97
css/visitor/compare/fold_span_panic 3138612 ns/iter (± 22260) 3229340 ns/iter (± 10321) 0.97
css/lexer/bootstrap_5_1_3 4991818 ns/iter (± 27553) 5129075 ns/iter (± 11016) 0.97
css/lexer/foundation_6_7_4 4215096 ns/iter (± 33448) 4323049 ns/iter (± 3331) 0.98
css/lexer/tailwind_3_1_1 798100 ns/iter (± 5925) 819973 ns/iter (± 534) 0.97
css/parser/bootstrap_5_1_3 20055490 ns/iter (± 145491) 20931473 ns/iter (± 57540) 0.96
css/parser/foundation_6_7_4 15991046 ns/iter (± 127985) 16710070 ns/iter (± 47831) 0.96
css/parser/tailwind_3_1_1 3131545 ns/iter (± 24877) 3222954 ns/iter (± 3197) 0.97
es/codegen/colors 315144 ns/iter (± 177587) 327235 ns/iter (± 184917) 0.96
es/codegen/large 1187738 ns/iter (± 613854) 1247376 ns/iter (± 654252) 0.95
es/codegen/with-parser/colors 45584 ns/iter (± 160) 47591 ns/iter (± 253) 0.96
es/codegen/with-parser/large 493869 ns/iter (± 2153) 514007 ns/iter (± 2009) 0.96
es/minify/libraries/antd 1284219647 ns/iter (± 15431935) 1383552453 ns/iter (± 16178527) 0.93
es/minify/libraries/d3 236542707 ns/iter (± 2631333) 256050025 ns/iter (± 3101497) 0.92
es/minify/libraries/echarts 945317202 ns/iter (± 15834958) 1051813843 ns/iter (± 10274976) 0.90
es/minify/libraries/jquery 76322816 ns/iter (± 404803) 79023663 ns/iter (± 646815) 0.97
es/minify/libraries/lodash 91490647 ns/iter (± 727434) 95017182 ns/iter (± 1370336) 0.96
es/minify/libraries/moment 44155084 ns/iter (± 174113) 45966137 ns/iter (± 620287) 0.96
es/minify/libraries/react 16785108 ns/iter (± 148757) 17054616 ns/iter (± 115657) 0.98
es/minify/libraries/terser 196371781 ns/iter (± 1633750) 209461615 ns/iter (± 3046363) 0.94
es/minify/libraries/three 331234536 ns/iter (± 5059739) 361746451 ns/iter (± 4435929) 0.92
es/minify/libraries/typescript 2352239710 ns/iter (± 13542092) 2517367390 ns/iter (± 13819987) 0.93
es/minify/libraries/victory 492414652 ns/iter (± 5529547) 573692338 ns/iter (± 4218578) 0.86
es/minify/libraries/vue 110780057 ns/iter (± 1789125) 115915304 ns/iter (± 961323) 0.96
es/visitor/compare/clone 2295263 ns/iter (± 20289) 2343157 ns/iter (± 12903) 0.98
es/visitor/compare/visit_mut_span 2630913 ns/iter (± 23715) 2711972 ns/iter (± 6652) 0.97
es/visitor/compare/visit_mut_span_panic 2688067 ns/iter (± 22758) 2751535 ns/iter (± 6333) 0.98
es/visitor/compare/fold_span 3729091 ns/iter (± 28562) 3849689 ns/iter (± 5679) 0.97
es/visitor/compare/fold_span_panic 3876649 ns/iter (± 19163) 3973240 ns/iter (± 8290) 0.98
es/lexer/colors 12851 ns/iter (± 101) 13254 ns/iter (± 20) 0.97
es/lexer/angular 6211021 ns/iter (± 37618) 6387582 ns/iter (± 3295) 0.97
es/lexer/backbone 764303 ns/iter (± 3188) 786851 ns/iter (± 381) 0.97
es/lexer/jquery 4271373 ns/iter (± 37984) 4408557 ns/iter (± 1865) 0.97
es/lexer/jquery mobile 6672597 ns/iter (± 46507) 6876934 ns/iter (± 23154) 0.97
es/lexer/mootools 3331759 ns/iter (± 13730) 3454019 ns/iter (± 990) 0.96
es/lexer/underscore 624155 ns/iter (± 4561) 650108 ns/iter (± 170) 0.96
es/lexer/three 20143599 ns/iter (± 171245) 20822240 ns/iter (± 19226) 0.97
es/lexer/yui 3748327 ns/iter (± 30805) 3854552 ns/iter (± 1448) 0.97
es/parser/colors 28332 ns/iter (± 400) 28862 ns/iter (± 148) 0.98
es/parser/angular 14370432 ns/iter (± 106490) 15040006 ns/iter (± 161465) 0.96
es/parser/backbone 2092377 ns/iter (± 13519) 2181165 ns/iter (± 12026) 0.96
es/parser/jquery 11269454 ns/iter (± 136541) 11796411 ns/iter (± 92956) 0.96
es/parser/jquery mobile 17548823 ns/iter (± 136630) 18691448 ns/iter (± 187386) 0.94
es/parser/mootools 8669037 ns/iter (± 36040) 8983915 ns/iter (± 41500) 0.96
es/parser/underscore 1768409 ns/iter (± 16081) 1835880 ns/iter (± 11633) 0.96
es/parser/three 48793508 ns/iter (± 528483) 55073037 ns/iter (± 217502) 0.89
es/parser/yui 8765607 ns/iter (± 65579) 9046876 ns/iter (± 56652) 0.97
es/preset-env/usage/builtin_type 141873 ns/iter (± 35023) 141153 ns/iter (± 34481) 1.01
es/preset-env/usage/property 19429 ns/iter (± 191) 19677 ns/iter (± 63) 0.99
es/resolver/typescript 107565757 ns/iter (± 1950285) 115034506 ns/iter (± 1794118) 0.94
es/fixer/typescript 74061627 ns/iter (± 419030) 82502035 ns/iter (± 859301) 0.90
es/hygiene/typescript 157789460 ns/iter (± 1830640) 174558339 ns/iter (± 2220687) 0.90
es/resolver_with_hygiene/typescript 290583583 ns/iter (± 3522402) 323237090 ns/iter (± 1358029) 0.90
es/visitor/base-perf/module_clone 80627 ns/iter (± 583) 81275 ns/iter (± 398) 0.99
es/visitor/base-perf/fold_empty 88611 ns/iter (± 1287) 91514 ns/iter (± 348) 0.97
es/visitor/base-perf/fold_noop_impl_all 88474 ns/iter (± 824) 91132 ns/iter (± 870) 0.97
es/visitor/base-perf/fold_noop_impl_vec 89029 ns/iter (± 952) 91435 ns/iter (± 298) 0.97
es/visitor/base-perf/boxing_boxed_clone 54 ns/iter (± 0) 56 ns/iter (± 0) 0.96
es/visitor/base-perf/boxing_unboxed_clone 41 ns/iter (± 0) 41 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 99 ns/iter (± 0) 101 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed 77 ns/iter (± 0) 81 ns/iter (± 0) 0.95
es/visitor/base-perf/visit_contains_this 3500 ns/iter (± 46) 3510 ns/iter (± 61) 1.00
es/base/parallel/resolver/typescript 5525445534 ns/iter (± 358070593) 5922741883 ns/iter (± 415294119) 0.93
es/base/parallel/hygiene/typescript 1951535104 ns/iter (± 16199079) 1999304818 ns/iter (± 30356711) 0.98
misc/visitors/time-complexity/time 5 111 ns/iter (± 0) 111 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 352 ns/iter (± 2) 352 ns/iter (± 0) 1
misc/visitors/time-complexity/time 15 669 ns/iter (± 0) 669 ns/iter (± 3) 1
misc/visitors/time-complexity/time 20 1229 ns/iter (± 11) 1229 ns/iter (± 0) 1
misc/visitors/time-complexity/time 40 5993 ns/iter (± 12) 5995 ns/iter (± 39) 1.00
misc/visitors/time-complexity/time 60 13406 ns/iter (± 25) 13307 ns/iter (± 1) 1.01
es/full-target/es2016 253011 ns/iter (± 1127) 253427 ns/iter (± 481) 1.00
es/full-target/es2017 244589 ns/iter (± 441) 245738 ns/iter (± 530) 1.00
es/full-target/es2018 233679 ns/iter (± 712) 234840 ns/iter (± 183) 1.00
es2020_nullish_coalescing 92476 ns/iter (± 277) 93054 ns/iter (± 263) 0.99
es2020_optional_chaining 124562 ns/iter (± 292) 124693 ns/iter (± 237) 1.00
es2022_class_properties 148261 ns/iter (± 298) 148885 ns/iter (± 366) 1.00
es2018_object_rest_spread 95487 ns/iter (± 209) 95779 ns/iter (± 281) 1.00
es2019_optional_catch_binding 85334 ns/iter (± 236) 85235 ns/iter (± 172) 1.00
es2017_async_to_generator 85435 ns/iter (± 295) 85845 ns/iter (± 201) 1.00
es2016_exponentiation 90446 ns/iter (± 165) 90489 ns/iter (± 198) 1.00
es2015_arrow 93122 ns/iter (± 308) 93589 ns/iter (± 260) 1.00
es2015_block_scoped_fn 91736 ns/iter (± 191) 91984 ns/iter (± 237) 1.00
es2015_block_scoping 168776 ns/iter (± 578) 169708 ns/iter (± 592) 0.99

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

Please sign in to comment.