Skip to content

Commit dd2b16d

Browse files
authoredMar 21, 2023
fix(es/parser): Fix parsing of static accessors (#7108)
**Related issue:** - Closes #7107.
1 parent 6e9be45 commit dd2b16d

File tree

5 files changed

+121
-2
lines changed

5 files changed

+121
-2
lines changed
 

‎crates/swc_ecma_parser/src/parser/class_and_fn.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ impl<I: Tokens> Parser<I> {
482482
is_override: false,
483483
is_async: false,
484484
is_generator: false,
485-
static_token: None,
485+
static_token,
486486
key,
487487
kind: MethodKind::Method,
488488
},
@@ -497,12 +497,13 @@ impl<I: Tokens> Parser<I> {
497497
accessor_token,
498498
)));
499499
let is_optional = self.input.syntax().typescript() && eat!(self, '?');
500+
let is_static = static_token.is_some();
500501
return self.make_property(
501502
start,
502503
decorators,
503504
accessibility,
504505
key,
505-
false,
506+
is_static,
506507
None,
507508
is_optional,
508509
false,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class SomeClass {
2+
static accessor() {
3+
return 'accessor';
4+
}
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 77,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ClassDeclaration",
11+
"identifier": {
12+
"type": "Identifier",
13+
"span": {
14+
"start": 7,
15+
"end": 16,
16+
"ctxt": 0
17+
},
18+
"value": "SomeClass",
19+
"optional": false
20+
},
21+
"declare": false,
22+
"span": {
23+
"start": 1,
24+
"end": 77,
25+
"ctxt": 0
26+
},
27+
"decorators": [],
28+
"body": [
29+
{
30+
"type": "ClassMethod",
31+
"span": {
32+
"start": 23,
33+
"end": 75,
34+
"ctxt": 0
35+
},
36+
"key": {
37+
"type": "Identifier",
38+
"span": {
39+
"start": 30,
40+
"end": 38,
41+
"ctxt": 0
42+
},
43+
"value": "accessor",
44+
"optional": false
45+
},
46+
"function": {
47+
"params": [],
48+
"decorators": [],
49+
"span": {
50+
"start": 23,
51+
"end": 75,
52+
"ctxt": 0
53+
},
54+
"body": {
55+
"type": "BlockStatement",
56+
"span": {
57+
"start": 41,
58+
"end": 75,
59+
"ctxt": 0
60+
},
61+
"stmts": [
62+
{
63+
"type": "ReturnStatement",
64+
"span": {
65+
"start": 51,
66+
"end": 69,
67+
"ctxt": 0
68+
},
69+
"argument": {
70+
"type": "StringLiteral",
71+
"span": {
72+
"start": 58,
73+
"end": 68,
74+
"ctxt": 0
75+
},
76+
"value": "accessor",
77+
"raw": "'accessor'"
78+
}
79+
}
80+
]
81+
},
82+
"generator": false,
83+
"async": false,
84+
"typeParameters": null,
85+
"returnType": null
86+
},
87+
"kind": "method",
88+
"isStatic": true,
89+
"accessibility": null,
90+
"isAbstract": false,
91+
"isOptional": false,
92+
"isOverride": false
93+
}
94+
],
95+
"superClass": null,
96+
"isAbstract": false,
97+
"typeParams": null,
98+
"superTypeParams": null,
99+
"implements": []
100+
}
101+
],
102+
"interpreter": null
103+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class SomeClass {
2+
static accessor() {
3+
return 'accessor';
4+
}
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class SomeClass {
2+
static accessor() {
3+
return 'accessor';
4+
}
5+
}

1 commit comments

Comments
 (1)

github-actions[bot] commented on Mar 21, 2023

@github-actions[bot]

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.