Skip to content

Commit

Permalink
chore(es/typescript): Improve decorator handling of fast strip (#9178)
Browse files Browse the repository at this point in the history
**Description:**

Given that decorators will be a part of JavaScript, as specified in the [proposal](https://github.com/tc39/proposal-decorators), we retain them in the output rather than reporting an error.
  • Loading branch information
magic-akari committed Jul 8, 2024
1 parent 67915bf commit 962170f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 19 deletions.
25 changes: 12 additions & 13 deletions crates/swc_fast_ts_strip/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,12 @@ use swc_common::{
BytePos, FileName, SourceMap, Span, Spanned,
};
use swc_ecma_ast::{
ArrowExpr, BindingIdent, Class, ClassDecl, ClassMethod, ClassProp, Decorator, EsVersion,
ExportAll, ExportDecl, ExportSpecifier, FnDecl, Ident, ImportDecl, ImportSpecifier,
NamedExport, Param, Pat, Program, TsAsExpr, TsConstAssertion, TsEnumDecl, TsExportAssignment,
TsImportEqualsDecl, TsIndexSignature, TsInstantiation, TsInterfaceDecl, TsModuleDecl,
TsModuleName, TsNamespaceDecl, TsNonNullExpr, TsParamPropParam, TsSatisfiesExpr,
TsTypeAliasDecl, TsTypeAnn, TsTypeAssertion, TsTypeParamDecl, TsTypeParamInstantiation,
VarDecl,
ArrowExpr, BindingIdent, Class, ClassDecl, ClassMethod, ClassProp, EsVersion, ExportAll,
ExportDecl, ExportSpecifier, FnDecl, Ident, ImportDecl, ImportSpecifier, NamedExport, Param,
Pat, Program, TsAsExpr, TsConstAssertion, TsEnumDecl, TsExportAssignment, TsImportEqualsDecl,
TsIndexSignature, TsInstantiation, TsInterfaceDecl, TsModuleDecl, TsModuleName,
TsNamespaceDecl, TsNonNullExpr, TsParamPropParam, TsSatisfiesExpr, TsTypeAliasDecl, TsTypeAnn,
TsTypeAssertion, TsTypeParamDecl, TsTypeParamInstantiation, VarDecl,
};
use swc_ecma_parser::{
lexer::Lexer,
Expand Down Expand Up @@ -364,12 +363,6 @@ impl Visit for TsStrip {
self.add_replacement(n.span);
}

fn visit_decorator(&mut self, n: &Decorator) {
HANDLER.with(|handler| {
handler.span_err(n.span, "Decorators are not supported");
});
}

fn visit_export_all(&mut self, n: &ExportAll) {
if n.type_only {
self.add_replacement(n.span);
Expand Down Expand Up @@ -419,6 +412,8 @@ impl Visit for TsStrip {
let comma = self.get_next_token(import.span_hi());
if comma.token == Token::Comma {
span = span.with_hi(comma.span.hi);
} else {
debug_assert_eq!(comma.token, Token::RBrace);
}
self.add_replacement(span);
}
Expand All @@ -439,6 +434,8 @@ impl Visit for TsStrip {
let comma = self.get_next_token(e.span_hi());
if comma.token == Token::Comma {
span = span.with_hi(comma.span.hi);
} else {
debug_assert_eq!(comma.token, Token::RBrace);
}
self.add_replacement(span);
}
Expand Down Expand Up @@ -484,6 +481,8 @@ impl Visit for TsStrip {
let comma = self.get_next_token(span.hi);
if comma.token == Token::Comma {
span = span.with_hi(comma.span.hi);
} else {
debug_assert_eq!(comma.token, Token::RParen);
}
self.add_replacement(span);

Expand Down
5 changes: 0 additions & 5 deletions crates/swc_fast_ts_strip/tests/errors/decorators.swc-stderr

This file was deleted.

1 change: 0 additions & 1 deletion crates/swc_fast_ts_strip/tests/errors/decorators.ts

This file was deleted.

1 comment on commit 962170f

@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: 962170f Previous: 9904a53 Ratio
es/full/bugs-1 298460 ns/iter (± 10054) 293654 ns/iter (± 8680) 1.02
es/full/minify/libraries/antd 1764116943 ns/iter (± 41952085) 1796985849 ns/iter (± 54294747) 0.98
es/full/minify/libraries/d3 339999139 ns/iter (± 2203273) 351328422 ns/iter (± 2950243) 0.97
es/full/minify/libraries/echarts 1507558401 ns/iter (± 45124935) 1536844802 ns/iter (± 35788254) 0.98
es/full/minify/libraries/jquery 101931554 ns/iter (± 259535) 102907793 ns/iter (± 561961) 0.99
es/full/minify/libraries/lodash 113140629 ns/iter (± 152393) 114139818 ns/iter (± 311504) 0.99
es/full/minify/libraries/moment 59318726 ns/iter (± 141632) 59347848 ns/iter (± 346711) 1.00
es/full/minify/libraries/react 18361232 ns/iter (± 244292) 18246181 ns/iter (± 33647) 1.01
es/full/minify/libraries/terser 272681248 ns/iter (± 1471280) 276543821 ns/iter (± 9698426) 0.99
es/full/minify/libraries/three 463614110 ns/iter (± 2733797) 480791123 ns/iter (± 8888859) 0.96
es/full/minify/libraries/typescript 3229179723 ns/iter (± 46371067) 3288611585 ns/iter (± 54734207) 0.98
es/full/minify/libraries/victory 731847705 ns/iter (± 9130991) 810457635 ns/iter (± 48061200) 0.90
es/full/minify/libraries/vue 144868295 ns/iter (± 261022) 147284824 ns/iter (± 871662) 0.98
es/full/codegen/es3 59628 ns/iter (± 157) 58593 ns/iter (± 245) 1.02
es/full/codegen/es5 59679 ns/iter (± 124) 59314 ns/iter (± 466) 1.01
es/full/codegen/es2015 59592 ns/iter (± 97) 58690 ns/iter (± 147) 1.02
es/full/codegen/es2016 59753 ns/iter (± 138) 58804 ns/iter (± 154) 1.02
es/full/codegen/es2017 59587 ns/iter (± 180) 58613 ns/iter (± 249) 1.02
es/full/codegen/es2018 59638 ns/iter (± 2441) 58986 ns/iter (± 176) 1.01
es/full/codegen/es2019 59683 ns/iter (± 184) 58686 ns/iter (± 155) 1.02
es/full/codegen/es2020 59790 ns/iter (± 43) 58685 ns/iter (± 292) 1.02
es/full/all/es3 161531179 ns/iter (± 1449389) 163199129 ns/iter (± 2050983) 0.99
es/full/all/es5 154365543 ns/iter (± 1326644) 157081800 ns/iter (± 520928) 0.98
es/full/all/es2015 113877741 ns/iter (± 758931) 115406645 ns/iter (± 721410) 0.99
es/full/all/es2016 112949934 ns/iter (± 1021040) 114333313 ns/iter (± 719964) 0.99
es/full/all/es2017 112411492 ns/iter (± 553617) 113856515 ns/iter (± 603634) 0.99
es/full/all/es2018 109963218 ns/iter (± 1285595) 111693000 ns/iter (± 934304) 0.98
es/full/all/es2019 109939330 ns/iter (± 1174177) 110742480 ns/iter (± 759606) 0.99
es/full/all/es2020 105418923 ns/iter (± 801095) 107736845 ns/iter (± 827190) 0.98
es/full/parser 445309 ns/iter (± 2199) 447722 ns/iter (± 4640) 0.99
es/full/base/fixer 14970 ns/iter (± 39) 15560 ns/iter (± 58) 0.96
es/full/base/resolver_and_hygiene 79214 ns/iter (± 234) 82136 ns/iter (± 812) 0.96
serialization of serde 270 ns/iter (± 3) 276 ns/iter (± 1) 0.98
css/minify/libraries/bootstrap 21513667 ns/iter (± 305963) 22079414 ns/iter (± 31669) 0.97
css/visitor/compare/clone 1394581 ns/iter (± 12945) 1393776 ns/iter (± 9264) 1.00
css/visitor/compare/visit_mut_span 1529850 ns/iter (± 6381) 1523779 ns/iter (± 9433) 1.00
css/visitor/compare/visit_mut_span_panic 1544454 ns/iter (± 25559) 1540356 ns/iter (± 49077) 1.00
css/visitor/compare/fold_span 2028952 ns/iter (± 6000) 2028916 ns/iter (± 7511) 1.00
css/visitor/compare/fold_span_panic 2171715 ns/iter (± 9687) 2159303 ns/iter (± 6170) 1.01
css/lexer/bootstrap_5_1_3 3485162 ns/iter (± 35680) 3505052 ns/iter (± 40596) 0.99
css/lexer/foundation_6_7_4 2818035 ns/iter (± 2234) 2831796 ns/iter (± 2998) 1.00
css/lexer/tailwind_3_1_1 540566 ns/iter (± 2110) 545817 ns/iter (± 889) 0.99
css/parser/bootstrap_5_1_3 16218676 ns/iter (± 57732) 16372082 ns/iter (± 44635) 0.99
css/parser/foundation_6_7_4 13075924 ns/iter (± 95241) 13080060 ns/iter (± 34478) 1.00
css/parser/tailwind_3_1_1 2587885 ns/iter (± 14013) 2574511 ns/iter (± 46864) 1.01
es/codegen/colors 728089 ns/iter (± 405441) 725319 ns/iter (± 397185) 1.00
es/codegen/large 3033992 ns/iter (± 1635266) 2992743 ns/iter (± 1594299) 1.01
es/codegen/with-parser/colors 41021 ns/iter (± 536) 40839 ns/iter (± 352) 1.00
es/codegen/with-parser/large 456674 ns/iter (± 2100) 449642 ns/iter (± 1239) 1.02
es/minify/libraries/antd 1449953070 ns/iter (± 45112603) 1473960944 ns/iter (± 21384405) 0.98
es/minify/libraries/d3 289459221 ns/iter (± 14552072) 300901846 ns/iter (± 12612926) 0.96
es/minify/libraries/echarts 1183775098 ns/iter (± 17167056) 1263186775 ns/iter (± 14330700) 0.94
es/minify/libraries/jquery 82780174 ns/iter (± 481279) 84133632 ns/iter (± 793418) 0.98
es/minify/libraries/lodash 104759416 ns/iter (± 462313) 105452532 ns/iter (± 296914) 0.99
es/minify/libraries/moment 48476789 ns/iter (± 122821) 48855018 ns/iter (± 926715) 0.99
es/minify/libraries/react 16311068 ns/iter (± 28947) 16288176 ns/iter (± 32829) 1.00
es/minify/libraries/terser 221914527 ns/iter (± 3314333) 227956019 ns/iter (± 2351910) 0.97
es/minify/libraries/three 377064810 ns/iter (± 7545640) 395125499 ns/iter (± 3943222) 0.95
es/minify/libraries/typescript 2756411323 ns/iter (± 22259997) 2808853662 ns/iter (± 25696501) 0.98
es/minify/libraries/victory 596585096 ns/iter (± 22405660) 621917399 ns/iter (± 22570677) 0.96
es/minify/libraries/vue 122192917 ns/iter (± 682388) 124419830 ns/iter (± 1010276) 0.98
es/visitor/compare/clone 1714750 ns/iter (± 7527) 1720311 ns/iter (± 7571) 1.00
es/visitor/compare/visit_mut_span 2068808 ns/iter (± 3516) 2057174 ns/iter (± 5021) 1.01
es/visitor/compare/visit_mut_span_panic 2050612 ns/iter (± 6705) 2054159 ns/iter (± 22895) 1.00
es/visitor/compare/fold_span 2754376 ns/iter (± 5776) 2792872 ns/iter (± 33998) 0.99
es/visitor/compare/fold_span_panic 2802516 ns/iter (± 3070) 2805504 ns/iter (± 2467) 1.00
es/lexer/colors 9736 ns/iter (± 67) 9579 ns/iter (± 91) 1.02
es/lexer/angular 5180011 ns/iter (± 3376) 5119076 ns/iter (± 29755) 1.01
es/lexer/backbone 638613 ns/iter (± 1697) 644878 ns/iter (± 1519) 0.99
es/lexer/jquery 3624151 ns/iter (± 117224) 3652801 ns/iter (± 17594) 0.99
es/lexer/jquery mobile 5407716 ns/iter (± 85178) 5530514 ns/iter (± 6038) 0.98
es/lexer/mootools 2889480 ns/iter (± 9452) 2965245 ns/iter (± 8936) 0.97
es/lexer/underscore 538771 ns/iter (± 811) 557439 ns/iter (± 1917) 0.97
es/lexer/three 16334603 ns/iter (± 106859) 16735219 ns/iter (± 131959) 0.98
es/lexer/yui 2923566 ns/iter (± 22946) 2990545 ns/iter (± 20269) 0.98
es/lexer/cal-com 13075688 ns/iter (± 26059) 13278988 ns/iter (± 171481) 0.98
es/lexer/typescript 91024802 ns/iter (± 295216) 92129634 ns/iter (± 339838) 0.99
es/parser/colors 23683 ns/iter (± 59) 23796 ns/iter (± 140) 1.00
es/parser/angular 12593504 ns/iter (± 93419) 12512565 ns/iter (± 76752) 1.01
es/parser/backbone 1829454 ns/iter (± 5626) 1822174 ns/iter (± 6895) 1.00
es/parser/jquery 10023556 ns/iter (± 147661) 10050052 ns/iter (± 68548) 1.00
es/parser/jquery mobile 15114147 ns/iter (± 115584) 15180026 ns/iter (± 124594) 1.00
es/parser/mootools 7854246 ns/iter (± 95183) 7854836 ns/iter (± 28292) 1.00
es/parser/underscore 1597455 ns/iter (± 9267) 1588919 ns/iter (± 6536) 1.01
es/parser/three 44257981 ns/iter (± 567243) 43591350 ns/iter (± 1249648) 1.02
es/parser/yui 7483174 ns/iter (± 107374) 7407185 ns/iter (± 78246) 1.01
es/parser/cal-com 41363200 ns/iter (± 588350) 40184025 ns/iter (± 802292) 1.03
es/parser/typescript 273664285 ns/iter (± 1131635) 268617053 ns/iter (± 1181175) 1.02
es/preset-env/usage/builtin_type 136801 ns/iter (± 33643) 135839 ns/iter (± 33086) 1.01
es/preset-env/usage/property 16358 ns/iter (± 137) 16728 ns/iter (± 100) 0.98
es/resolver/typescript 99830194 ns/iter (± 2436646) 104722277 ns/iter (± 2138455) 0.95
es/fixer/typescript 80978426 ns/iter (± 3691736) 85181206 ns/iter (± 2763398) 0.95
es/hygiene/typescript 183527689 ns/iter (± 2424946) 201487072 ns/iter (± 2545111) 0.91
es/resolver_with_hygiene/typescript 310309843 ns/iter (± 3620571) 336013836 ns/iter (± 2970793) 0.92
es/visitor/base-perf/module_clone 55617 ns/iter (± 941) 57214 ns/iter (± 7165) 0.97
es/visitor/base-perf/fold_empty 59056 ns/iter (± 447) 60256 ns/iter (± 591) 0.98
es/visitor/base-perf/fold_noop_impl_all 59048 ns/iter (± 535) 60203 ns/iter (± 617) 0.98
es/visitor/base-perf/fold_noop_impl_vec 58892 ns/iter (± 410) 60503 ns/iter (± 812) 0.97
es/visitor/base-perf/boxing_boxed_clone 61 ns/iter (± 0) 61 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 47 ns/iter (± 0) 47 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 107 ns/iter (± 0) 108 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 81 ns/iter (± 0) 81 ns/iter (± 0) 1
es/visitor/base-perf/visit_contains_this 2656 ns/iter (± 7) 2606 ns/iter (± 19) 1.02
es/base/parallel/resolver/typescript 2486447688 ns/iter (± 154119112) 2315559701 ns/iter (± 164024430) 1.07
es/base/parallel/hygiene/typescript 3230288772 ns/iter (± 57296287) 3375658123 ns/iter (± 52585883) 0.96
babelify-only 494244 ns/iter (± 5089) 493890 ns/iter (± 4068) 1.00
parse_and_babelify_angular 46485655 ns/iter (± 2446233) 43277487 ns/iter (± 2781213) 1.07
parse_and_babelify_backbone 4646630 ns/iter (± 207561) 4477606 ns/iter (± 174127) 1.04
parse_and_babelify_jquery 32697701 ns/iter (± 908898) 29818953 ns/iter (± 684632) 1.10
parse_and_babelify_jquery_mobile 54210389 ns/iter (± 836379) 51588301 ns/iter (± 486780) 1.05
parse_and_babelify_mootools 29016284 ns/iter (± 237718) 27603724 ns/iter (± 608612) 1.05
parse_and_babelify_underscore 3832632 ns/iter (± 67219) 3677877 ns/iter (± 15371) 1.04
parse_and_babelify_yui 30744132 ns/iter (± 2122946) 24878091 ns/iter (± 406587) 1.24
html/minify/document/css_spec 46526817 ns/iter (± 560879) 45463590 ns/iter (± 97733) 1.02
html/minify/document/github 18548000 ns/iter (± 531405) 18502153 ns/iter (± 24496) 1.00
html/minify/document/stackoverflow 16886660 ns/iter (± 495353) 16749087 ns/iter (± 527849) 1.01
html/minify/document_fragment/css_spec 45498769 ns/iter (± 399510) 45005906 ns/iter (± 255206) 1.01
html/minify/document_fragment/github 18261064 ns/iter (± 153295) 18312721 ns/iter (± 79535) 1.00
html/minify/document_fragment/stackoverflow 16521311 ns/iter (± 68913) 16606967 ns/iter (± 20978) 0.99
html/document/visitor/compare/clone 163770 ns/iter (± 2166) 166265 ns/iter (± 1548) 0.98
html/document/visitor/compare/visit_mut_span 183714 ns/iter (± 1696) 185075 ns/iter (± 1730) 0.99
html/document/visitor/compare/visit_mut_span_panic 188840 ns/iter (± 6693) 191452 ns/iter (± 2431) 0.99
html/document/visitor/compare/fold_span 231964 ns/iter (± 1128) 231523 ns/iter (± 9164) 1.00
html/document/visitor/compare/fold_span_panic 279609 ns/iter (± 1760) 279427 ns/iter (± 831) 1.00
html/document_fragment/visitor/compare/clone 165949 ns/iter (± 988) 168255 ns/iter (± 1270) 0.99
html/document_fragment/visitor/compare/visit_mut_span 180207 ns/iter (± 757) 185190 ns/iter (± 4693) 0.97
html/document_fragment/visitor/compare/visit_mut_span_panic 185358 ns/iter (± 530) 189297 ns/iter (± 901) 0.98
html/document_fragment/visitor/compare/fold_span 233088 ns/iter (± 1318) 229189 ns/iter (± 815) 1.02
html/document_fragment/visitor/compare/fold_span_panic 280544 ns/iter (± 1178) 281462 ns/iter (± 4912) 1.00
html/lexer/css_2021_spec 12830778 ns/iter (± 132581) 12863167 ns/iter (± 190556) 1.00
html/lexer/github_com_17_05_2022 4897786 ns/iter (± 13050) 4929116 ns/iter (± 32553) 0.99
html/lexer/stackoverflow_com_17_05_2022 4638529 ns/iter (± 3085) 4724694 ns/iter (± 24474) 0.98
html/parser/parser_document/css_2021_spec 25822469 ns/iter (± 41664) 26104474 ns/iter (± 100574) 0.99
html/parser/parser_document/github_com_17_05_2022 8763025 ns/iter (± 14124) 8665289 ns/iter (± 304407) 1.01
html/parser/parser_document/stackoverflow_com_17_05_2022 7550969 ns/iter (± 8592) 7580557 ns/iter (± 57664) 1.00
html/parser/parser_document_fragment/css_2021_spec 25908377 ns/iter (± 113934) 25858195 ns/iter (± 320306) 1.00
html/parser/parser_document_fragment/github_com_17_05_2022 8607957 ns/iter (± 29280) 8643802 ns/iter (± 83922) 1.00
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7485850 ns/iter (± 26205) 7497640 ns/iter (± 100403) 1.00

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

Please sign in to comment.