Skip to content

Commit

Permalink
fix(es/parser): Fix parsing of static accessors (#7108)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #7107.
  • Loading branch information
Crayonn committed Mar 21, 2023
1 parent 6e9be45 commit dd2b16d
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 2 deletions.
5 changes: 3 additions & 2 deletions crates/swc_ecma_parser/src/parser/class_and_fn.rs
Expand Up @@ -482,7 +482,7 @@ impl<I: Tokens> Parser<I> {
is_override: false,
is_async: false,
is_generator: false,
static_token: None,
static_token,
key,
kind: MethodKind::Method,
},
Expand All @@ -497,12 +497,13 @@ impl<I: Tokens> Parser<I> {
accessor_token,
)));
let is_optional = self.input.syntax().typescript() && eat!(self, '?');
let is_static = static_token.is_some();
return self.make_property(
start,
decorators,
accessibility,
key,
false,
is_static,
None,
is_optional,
false,
Expand Down
@@ -0,0 +1,5 @@
class SomeClass {
static accessor() {
return 'accessor';
}
}
103 changes: 103 additions & 0 deletions crates/swc_ecma_parser/tests/typescript/issue-7042/case3/input.ts.json
@@ -0,0 +1,103 @@
{
"type": "Script",
"span": {
"start": 1,
"end": 77,
"ctxt": 0
},
"body": [
{
"type": "ClassDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7,
"end": 16,
"ctxt": 0
},
"value": "SomeClass",
"optional": false
},
"declare": false,
"span": {
"start": 1,
"end": 77,
"ctxt": 0
},
"decorators": [],
"body": [
{
"type": "ClassMethod",
"span": {
"start": 23,
"end": 75,
"ctxt": 0
},
"key": {
"type": "Identifier",
"span": {
"start": 30,
"end": 38,
"ctxt": 0
},
"value": "accessor",
"optional": false
},
"function": {
"params": [],
"decorators": [],
"span": {
"start": 23,
"end": 75,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 41,
"end": 75,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 51,
"end": 69,
"ctxt": 0
},
"argument": {
"type": "StringLiteral",
"span": {
"start": 58,
"end": 68,
"ctxt": 0
},
"value": "accessor",
"raw": "'accessor'"
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
"kind": "method",
"isStatic": true,
"accessibility": null,
"isAbstract": false,
"isOptional": false,
"isOverride": false
}
],
"superClass": null,
"isAbstract": false,
"typeParams": null,
"superTypeParams": null,
"implements": []
}
],
"interpreter": null
}
@@ -0,0 +1,5 @@
class SomeClass {
static accessor() {
return 'accessor';
}
}
@@ -0,0 +1,5 @@
class SomeClass {
static accessor() {
return 'accessor';
}
}

1 comment on commit dd2b16d

@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: dd2b16d Previous: 6a1201c Ratio
es/full/bugs-1 307443 ns/iter (± 9786) 298931 ns/iter (± 22653) 1.03
es/full/minify/libraries/antd 1470866369 ns/iter (± 34652128) 1517154220 ns/iter (± 32431279) 0.97
es/full/minify/libraries/d3 280955770 ns/iter (± 7674975) 287226493 ns/iter (± 9431816) 0.98
es/full/minify/libraries/echarts 1111736266 ns/iter (± 13839452) 1220130079 ns/iter (± 16820161) 0.91
es/full/minify/libraries/jquery 87055975 ns/iter (± 1011821) 89425539 ns/iter (± 1094645) 0.97
es/full/minify/libraries/lodash 101903413 ns/iter (± 1231863) 106109853 ns/iter (± 1230343) 0.96
es/full/minify/libraries/moment 50230504 ns/iter (± 707496) 51739370 ns/iter (± 488117) 0.97
es/full/minify/libraries/react 18610099 ns/iter (± 190542) 18845663 ns/iter (± 114066) 0.99
es/full/minify/libraries/terser 224776982 ns/iter (± 2991839) 243617099 ns/iter (± 4428615) 0.92
es/full/minify/libraries/three 395822085 ns/iter (± 5321112) 428453756 ns/iter (± 9081886) 0.92
es/full/minify/libraries/typescript 2770098842 ns/iter (± 21798900) 2887403478 ns/iter (± 29298304) 0.96
es/full/minify/libraries/victory 611103211 ns/iter (± 17388349) 637299773 ns/iter (± 11137201) 0.96
es/full/minify/libraries/vue 124318873 ns/iter (± 1424274) 126381378 ns/iter (± 1679864) 0.98
es/full/codegen/es3 25566 ns/iter (± 207) 26231 ns/iter (± 153) 0.97
es/full/codegen/es5 26149 ns/iter (± 176) 26640 ns/iter (± 48) 0.98
es/full/codegen/es2015 25583 ns/iter (± 261) 26512 ns/iter (± 50) 0.96
es/full/codegen/es2016 25676 ns/iter (± 385) 26459 ns/iter (± 98) 0.97
es/full/codegen/es2017 25682 ns/iter (± 259) 26467 ns/iter (± 143) 0.97
es/full/codegen/es2018 25635 ns/iter (± 171) 26467 ns/iter (± 87) 0.97
es/full/codegen/es2019 25591 ns/iter (± 135) 26546 ns/iter (± 57) 0.96
es/full/codegen/es2020 25641 ns/iter (± 175) 26351 ns/iter (± 86) 0.97
es/full/all/es3 180441450 ns/iter (± 2469833) 182018634 ns/iter (± 3285062) 0.99
es/full/all/es5 174753228 ns/iter (± 2559745) 172445027 ns/iter (± 4429995) 1.01
es/full/all/es2015 133867566 ns/iter (± 2749651) 137703540 ns/iter (± 3886715) 0.97
es/full/all/es2016 133030145 ns/iter (± 2537175) 135895415 ns/iter (± 1228242) 0.98
es/full/all/es2017 134304745 ns/iter (± 3005816) 133514833 ns/iter (± 2035287) 1.01
es/full/all/es2018 125950646 ns/iter (± 3092607) 129090471 ns/iter (± 1318567) 0.98
es/full/all/es2019 122134194 ns/iter (± 2282188) 127311197 ns/iter (± 1558873) 0.96
es/full/all/es2020 118978986 ns/iter (± 1702152) 119280253 ns/iter (± 1121756) 1.00
es/full/parser 515538 ns/iter (± 7660) 533714 ns/iter (± 7534) 0.97
es/full/base/fixer 21531 ns/iter (± 220) 22336 ns/iter (± 72) 0.96
es/full/base/resolver_and_hygiene 79779 ns/iter (± 673) 83553 ns/iter (± 334) 0.95
serialization of ast node 120 ns/iter (± 1) 123 ns/iter (± 0) 0.98
serialization of serde 124 ns/iter (± 1) 126 ns/iter (± 0) 0.98
css/minify/libraries/bootstrap 27594109 ns/iter (± 307542) 28313847 ns/iter (± 163895) 0.97
css/visitor/compare/clone 2001729 ns/iter (± 20679) 2076964 ns/iter (± 29070) 0.96
css/visitor/compare/visit_mut_span 2205407 ns/iter (± 13840) 2263091 ns/iter (± 7261) 0.97
css/visitor/compare/visit_mut_span_panic 2217063 ns/iter (± 16415) 2309475 ns/iter (± 5759) 0.96
css/visitor/compare/fold_span 2950862 ns/iter (± 26321) 3061699 ns/iter (± 13150) 0.96
css/visitor/compare/fold_span_panic 3069367 ns/iter (± 28015) 3211018 ns/iter (± 20439) 0.96
css/lexer/bootstrap_5_1_3 4979093 ns/iter (± 47933) 5120346 ns/iter (± 10003) 0.97
css/lexer/foundation_6_7_4 4139596 ns/iter (± 25602) 4311393 ns/iter (± 2068) 0.96
css/lexer/tailwind_3_1_1 800122 ns/iter (± 11085) 818412 ns/iter (± 446) 0.98
css/parser/bootstrap_5_1_3 21080609 ns/iter (± 232506) 22440173 ns/iter (± 144730) 0.94
css/parser/foundation_6_7_4 16689904 ns/iter (± 88218) 17861096 ns/iter (± 57443) 0.93
css/parser/tailwind_3_1_1 3216620 ns/iter (± 26357) 3354746 ns/iter (± 12139) 0.96
es/codegen/colors 332878 ns/iter (± 193569) 328739 ns/iter (± 183929) 1.01
es/codegen/large 1114341 ns/iter (± 575434) 1320884 ns/iter (± 664418) 0.84
es/codegen/with-parser/colors 45735 ns/iter (± 289) 47920 ns/iter (± 197) 0.95
es/codegen/with-parser/large 504029 ns/iter (± 5403) 522568 ns/iter (± 1433) 0.96
es/minify/libraries/antd 1253417187 ns/iter (± 18862187) 1329940370 ns/iter (± 16289170) 0.94
es/minify/libraries/d3 234298829 ns/iter (± 5591657) 246629749 ns/iter (± 3628788) 0.95
es/minify/libraries/echarts 945961403 ns/iter (± 12085903) 1031497621 ns/iter (± 12695457) 0.92
es/minify/libraries/jquery 75242470 ns/iter (± 621896) 77930345 ns/iter (± 847584) 0.97
es/minify/libraries/lodash 91401052 ns/iter (± 1800885) 93069327 ns/iter (± 524161) 0.98
es/minify/libraries/moment 43871197 ns/iter (± 262775) 44912149 ns/iter (± 185517) 0.98
es/minify/libraries/react 16665802 ns/iter (± 149064) 16868154 ns/iter (± 104863) 0.99
es/minify/libraries/terser 194484379 ns/iter (± 2296032) 204095032 ns/iter (± 2926389) 0.95
es/minify/libraries/three 333764172 ns/iter (± 4117807) 345676617 ns/iter (± 8415774) 0.97
es/minify/libraries/typescript 2351844901 ns/iter (± 45649297) 2450218653 ns/iter (± 17966613) 0.96
es/minify/libraries/victory 505203583 ns/iter (± 18092027) 535179017 ns/iter (± 5850614) 0.94
es/minify/libraries/vue 111268375 ns/iter (± 1775000) 113886806 ns/iter (± 1113660) 0.98
es/visitor/compare/clone 2255418 ns/iter (± 37485) 2309626 ns/iter (± 12345) 0.98
es/visitor/compare/visit_mut_span 2631125 ns/iter (± 15280) 2660062 ns/iter (± 7175) 0.99
es/visitor/compare/visit_mut_span_panic 2659346 ns/iter (± 38927) 2690484 ns/iter (± 5797) 0.99
es/visitor/compare/fold_span 3695253 ns/iter (± 37490) 3728456 ns/iter (± 24333) 0.99
es/visitor/compare/fold_span_panic 3781202 ns/iter (± 20117) 3905819 ns/iter (± 51059) 0.97
es/lexer/colors 14889 ns/iter (± 186) 15225 ns/iter (± 70) 0.98
es/lexer/angular 7251572 ns/iter (± 66156) 7389782 ns/iter (± 16280) 0.98
es/lexer/backbone 962310 ns/iter (± 8885) 983289 ns/iter (± 4016) 0.98
es/lexer/jquery 5435026 ns/iter (± 50799) 5519698 ns/iter (± 13890) 0.98
es/lexer/jquery mobile 8282827 ns/iter (± 46601) 8504000 ns/iter (± 37139) 0.97
es/lexer/mootools 4382019 ns/iter (± 49418) 4413633 ns/iter (± 21100) 0.99
es/lexer/underscore 821983 ns/iter (± 9627) 827381 ns/iter (± 3053) 0.99
es/lexer/three 25284724 ns/iter (± 288588) 26042799 ns/iter (± 62570) 0.97
es/lexer/yui 4547454 ns/iter (± 33988) 4641493 ns/iter (± 15101) 0.98
es/parser/colors 29093 ns/iter (± 171) 29218 ns/iter (± 192) 1.00
es/parser/angular 14700180 ns/iter (± 86064) 15284782 ns/iter (± 162368) 0.96
es/parser/backbone 2164461 ns/iter (± 20285) 2231010 ns/iter (± 33872) 0.97
es/parser/jquery 11749718 ns/iter (± 125061) 12076069 ns/iter (± 64528) 0.97
es/parser/jquery mobile 18296237 ns/iter (± 177457) 18640540 ns/iter (± 78015) 0.98
es/parser/mootools 9014547 ns/iter (± 56477) 9188871 ns/iter (± 44747) 0.98
es/parser/underscore 1838704 ns/iter (± 11715) 1877833 ns/iter (± 5244) 0.98
es/parser/three 53122825 ns/iter (± 1503004) 54120566 ns/iter (± 714380) 0.98
es/parser/yui 9009097 ns/iter (± 143037) 9168123 ns/iter (± 65238) 0.98
es/preset-env/usage/builtin_type 138664 ns/iter (± 32694) 136688 ns/iter (± 31764) 1.01
es/preset-env/usage/property 20359 ns/iter (± 149) 21100 ns/iter (± 101) 0.96
es/resolver/typescript 106839042 ns/iter (± 3311653) 112764588 ns/iter (± 1526234) 0.95
es/fixer/typescript 74070635 ns/iter (± 1373314) 77425625 ns/iter (± 775585) 0.96
es/hygiene/typescript 164611794 ns/iter (± 1752878) 164832518 ns/iter (± 1082344) 1.00
es/resolver_with_hygiene/typescript 305017625 ns/iter (± 1544994) 305222959 ns/iter (± 2699123) 1.00
es/visitor/base-perf/module_clone 79231 ns/iter (± 1827) 79461 ns/iter (± 1171) 1.00
es/visitor/base-perf/fold_empty 88017 ns/iter (± 1108) 89091 ns/iter (± 848) 0.99
es/visitor/base-perf/fold_noop_impl_all 89208 ns/iter (± 1636) 89069 ns/iter (± 1422) 1.00
es/visitor/base-perf/fold_noop_impl_vec 90042 ns/iter (± 1325) 89324 ns/iter (± 1617) 1.01
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 53 ns/iter (± 0) 53 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 100 ns/iter (± 1) 101 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 101 ns/iter (± 0) 99 ns/iter (± 0) 1.02
es/visitor/base-perf/visit_contains_this 3413 ns/iter (± 55) 3486 ns/iter (± 58) 0.98
es/base/parallel/resolver/typescript 6461201986 ns/iter (± 390871325) 6129934279 ns/iter (± 599473360) 1.05
es/base/parallel/hygiene/typescript 1958361121 ns/iter (± 35037924) 1960199061 ns/iter (± 29303854) 1.00
misc/visitors/time-complexity/time 5 94 ns/iter (± 0) 98 ns/iter (± 0) 0.96
misc/visitors/time-complexity/time 10 310 ns/iter (± 2) 361 ns/iter (± 1) 0.86
misc/visitors/time-complexity/time 15 644 ns/iter (± 4) 708 ns/iter (± 3) 0.91
misc/visitors/time-complexity/time 20 1229 ns/iter (± 27) 1297 ns/iter (± 13) 0.95
misc/visitors/time-complexity/time 40 6554 ns/iter (± 82) 6741 ns/iter (± 22) 0.97
misc/visitors/time-complexity/time 60 16677 ns/iter (± 174) 17328 ns/iter (± 56) 0.96
es/full-target/es2016 243645 ns/iter (± 1406) 247313 ns/iter (± 931) 0.99
es/full-target/es2017 236767 ns/iter (± 2682) 241788 ns/iter (± 446) 0.98
es/full-target/es2018 221063 ns/iter (± 1532) 229820 ns/iter (± 800) 0.96
es2020_nullish_coalescing 87476 ns/iter (± 537) 91259 ns/iter (± 431) 0.96
es2020_optional_chaining 119729 ns/iter (± 1324) 124366 ns/iter (± 803) 0.96
es2022_class_properties 141873 ns/iter (± 1693) 146332 ns/iter (± 518) 0.97
es2018_object_rest_spread 92191 ns/iter (± 806) 94483 ns/iter (± 341) 0.98
es2019_optional_catch_binding 81093 ns/iter (± 453) 83870 ns/iter (± 294) 0.97
es2017_async_to_generator 81827 ns/iter (± 678) 84654 ns/iter (± 293) 0.97
es2016_exponentiation 85497 ns/iter (± 708) 88600 ns/iter (± 295) 0.96
es2015_arrow 89875 ns/iter (± 647) 92935 ns/iter (± 240) 0.97
es2015_block_scoped_fn 87573 ns/iter (± 722) 91218 ns/iter (± 292) 0.96
es2015_block_scoping 163899 ns/iter (± 1536) 169053 ns/iter (± 345) 0.97

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

Please sign in to comment.