Skip to content

Commit a6471f3

Browse files
authoredMar 3, 2023
feat(es/parser): Add an option to disallow ambiguous jsx (#6913)
1 parent c2f0629 commit a6471f3

File tree

22 files changed

+372
-0
lines changed

22 files changed

+372
-0
lines changed
 

‎crates/swc/src/config/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -775,6 +775,7 @@ impl Default for Rc {
775775
jsc: JscConfig {
776776
syntax: Some(Syntax::Typescript(TsConfig {
777777
tsx: false,
778+
disallow_ambiguous_jsx_like: true,
778779
..Default::default()
779780
})),
780781
..Default::default()

‎crates/swc/tests/rust_api.rs

+1
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ fn shopify_2_same_opt() {
136136
decorators: false,
137137
dts: false,
138138
no_early_errors: false,
139+
disallow_ambiguous_jsx_like: false,
139140
})),
140141
transform: None.into(),
141142
external_helpers: false.into(),

‎crates/swc/tests/tsc.rs

+1
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@ fn matrix(input: &Path) -> Vec<TestUnitData> {
380380
decorators,
381381
dts: false,
382382
no_early_errors: false,
383+
disallow_ambiguous_jsx_like: false,
383384
})),
384385
external_helpers: true.into(),
385386
target: Some(target),

‎crates/swc_ecma_dep_graph/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,7 @@ mod tests {
399399
tsx: file_name.contains("tsx"),
400400
decorators: true,
401401
no_early_errors: true,
402+
disallow_ambiguous_jsx_like: false,
402403
}),
403404
EsVersion::Es2015,
404405
(&*fm).into(),

‎crates/swc_ecma_parser/src/error.rs

+11
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,9 @@ pub enum SyntaxError {
278278
span: Span,
279279
note: &'static str,
280280
},
281+
282+
ReservedTypeAssertion,
283+
ReservedArrowTypeParam,
281284
}
282285

283286
impl SyntaxError {
@@ -709,6 +712,14 @@ impl SyntaxError {
709712
format!("Unexpected token. Did you mean {}?", did_you_mean).into()
710713
}
711714
SyntaxError::WithLabel { inner, .. } => inner.error.1.msg(),
715+
SyntaxError::ReservedTypeAssertion => "This syntax is reserved in files with the .mts \
716+
or .cts extension. Use an `as` expression \
717+
instead."
718+
.into(),
719+
SyntaxError::ReservedArrowTypeParam => "This syntax is reserved in files with the \
720+
.mts or .cts extension. Add a trailing comma, \
721+
as in `<T,>() => ...`."
722+
.into(),
712723
}
713724
}
714725
}

‎crates/swc_ecma_parser/src/lib.rs

+15
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,13 @@ impl Syntax {
275275
Syntax::Es(..) => true,
276276
}
277277
}
278+
279+
fn disallow_ambiguous_jsx_like(self) -> bool {
280+
match self {
281+
Syntax::Typescript(t) => t.disallow_ambiguous_jsx_like,
282+
_ => false,
283+
}
284+
}
278285
}
279286

280287
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
@@ -292,6 +299,14 @@ pub struct TsConfig {
292299

293300
#[serde(skip, default)]
294301
pub no_early_errors: bool,
302+
303+
/// babel: `disallowAmbiguousJSXLike`
304+
/// Even when JSX parsing is not enabled, this option disallows using syntax
305+
/// that would be ambiguous with JSX (`<X> y` type assertions and
306+
/// `<X>()=>{}` type arguments)
307+
/// see: https://babeljs.io/docs/en/babel-plugin-transform-typescript#disallowambiguousjsxlike
308+
#[serde(skip, default)]
309+
pub disallow_ambiguous_jsx_like: bool,
295310
}
296311

297312
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]

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

+4
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ impl<I: Tokens> Parser<I> {
8282
#[cfg_attr(feature = "debug", tracing::instrument(skip_all))]
8383
fn parse_assignment_expr_base(&mut self) -> PResult<Box<Expr>> {
8484
trace_cur!(self, parse_assignment_expr_base);
85+
let start = self.input.cur_span();
8586

8687
if self.input.syntax().typescript()
8788
&& (is_one_of!(self, '<', JSXTagStart))
@@ -120,6 +121,9 @@ impl<I: Tokens> Parser<I> {
120121
Ok(Some(arrow))
121122
});
122123
if let Some(res) = res {
124+
if self.input.syntax().disallow_ambiguous_jsx_like() {
125+
self.emit_err(start, SyntaxError::ReservedArrowTypeParam);
126+
}
123127
return Ok(res);
124128
}
125129
}

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

+4
Original file line numberDiff line numberDiff line change
@@ -994,6 +994,10 @@ impl<I: Tokens> Parser<I> {
994994
pub(super) fn parse_ts_type_assertion(&mut self, start: BytePos) -> PResult<TsTypeAssertion> {
995995
debug_assert!(self.input.syntax().typescript());
996996

997+
if self.input.syntax().disallow_ambiguous_jsx_like() {
998+
self.emit_err(span!(self, start), SyntaxError::ReservedTypeAssertion);
999+
}
1000+
9971001
// Not actually necessary to set state.inType because we never reach here if JSX
9981002
// plugin is enabled, but need `tsInType` to satisfy the assertion in
9991003
// `tsParseType`.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<T>x;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
x This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.
3+
,-[$DIR/tests/typescript-errors/disallow-ambiguous-jsx-like/cts-case1/input.cts:1:1]
4+
1 | <T>x;
5+
: ^
6+
`----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<T>() => 1;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
x This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.
3+
,-[$DIR/tests/typescript-errors/disallow-ambiguous-jsx-like/cts-case2/input.cts:1:1]
4+
1 | <T>() => 1;
5+
: ^
6+
`----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<T>x;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
x This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.
3+
,-[$DIR/tests/typescript-errors/disallow-ambiguous-jsx-like/mts-case1/input.mts:1:1]
4+
1 | <T>x;
5+
: ^
6+
`----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<T>(x) => 1;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
x This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.
3+
,-[$DIR/tests/typescript-errors/disallow-ambiguous-jsx-like/mts-case2/input.mts:1:1]
4+
1 | <T>(x) => 1;
5+
: ^
6+
`----

‎crates/swc_ecma_parser/tests/typescript.rs

+3
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ where
242242
tsx: fname.contains("tsx"),
243243
decorators: true,
244244
no_early_errors,
245+
disallow_ambiguous_jsx_like: fname.contains("cts") || fname.contains("mts"),
245246
..Default::default()
246247
}),
247248
EsVersion::Es2015,
@@ -266,6 +267,8 @@ where
266267
}
267268

268269
#[testing::fixture("tests/typescript-errors/**/*.ts")]
270+
#[testing::fixture("tests/typescript-errors/**/*.mts")]
271+
#[testing::fixture("tests/typescript-errors/**/*.cts")]
269272
#[testing::fixture("tests/typescript-errors/**/*.tsx")]
270273
fn errors(file: PathBuf) {
271274
let file_name = file.display().to_string();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<T,>() => 1;
2+
<T,>(x) => 1;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 27,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 13,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "ArrowFunctionExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 12,
21+
"ctxt": 0
22+
},
23+
"params": [],
24+
"body": {
25+
"type": "NumericLiteral",
26+
"span": {
27+
"start": 11,
28+
"end": 12,
29+
"ctxt": 0
30+
},
31+
"value": 1.0,
32+
"raw": "1"
33+
},
34+
"async": false,
35+
"generator": false,
36+
"typeParameters": {
37+
"type": "TsTypeParameterDeclaration",
38+
"span": {
39+
"start": 1,
40+
"end": 5,
41+
"ctxt": 0
42+
},
43+
"parameters": [
44+
{
45+
"type": "TsTypeParameter",
46+
"span": {
47+
"start": 2,
48+
"end": 3,
49+
"ctxt": 0
50+
},
51+
"name": {
52+
"type": "Identifier",
53+
"span": {
54+
"start": 2,
55+
"end": 3,
56+
"ctxt": 0
57+
},
58+
"value": "T",
59+
"optional": false
60+
},
61+
"in": false,
62+
"out": false,
63+
"const": false,
64+
"constraint": null,
65+
"default": null
66+
}
67+
]
68+
},
69+
"returnType": null
70+
}
71+
},
72+
{
73+
"type": "ExpressionStatement",
74+
"span": {
75+
"start": 14,
76+
"end": 27,
77+
"ctxt": 0
78+
},
79+
"expression": {
80+
"type": "ArrowFunctionExpression",
81+
"span": {
82+
"start": 14,
83+
"end": 26,
84+
"ctxt": 0
85+
},
86+
"params": [
87+
{
88+
"type": "Identifier",
89+
"span": {
90+
"start": 19,
91+
"end": 20,
92+
"ctxt": 0
93+
},
94+
"value": "x",
95+
"optional": false,
96+
"typeAnnotation": null
97+
}
98+
],
99+
"body": {
100+
"type": "NumericLiteral",
101+
"span": {
102+
"start": 25,
103+
"end": 26,
104+
"ctxt": 0
105+
},
106+
"value": 1.0,
107+
"raw": "1"
108+
},
109+
"async": false,
110+
"generator": false,
111+
"typeParameters": {
112+
"type": "TsTypeParameterDeclaration",
113+
"span": {
114+
"start": 14,
115+
"end": 18,
116+
"ctxt": 0
117+
},
118+
"parameters": [
119+
{
120+
"type": "TsTypeParameter",
121+
"span": {
122+
"start": 15,
123+
"end": 16,
124+
"ctxt": 0
125+
},
126+
"name": {
127+
"type": "Identifier",
128+
"span": {
129+
"start": 15,
130+
"end": 16,
131+
"ctxt": 0
132+
},
133+
"value": "T",
134+
"optional": false
135+
},
136+
"in": false,
137+
"out": false,
138+
"const": false,
139+
"constraint": null,
140+
"default": null
141+
}
142+
]
143+
},
144+
"returnType": null
145+
}
146+
}
147+
],
148+
"interpreter": null
149+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<T,>() => 1;
2+
<T,>(x) => 1;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 27,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 13,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "ArrowFunctionExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 12,
21+
"ctxt": 0
22+
},
23+
"params": [],
24+
"body": {
25+
"type": "NumericLiteral",
26+
"span": {
27+
"start": 11,
28+
"end": 12,
29+
"ctxt": 0
30+
},
31+
"value": 1.0,
32+
"raw": "1"
33+
},
34+
"async": false,
35+
"generator": false,
36+
"typeParameters": {
37+
"type": "TsTypeParameterDeclaration",
38+
"span": {
39+
"start": 1,
40+
"end": 5,
41+
"ctxt": 0
42+
},
43+
"parameters": [
44+
{
45+
"type": "TsTypeParameter",
46+
"span": {
47+
"start": 2,
48+
"end": 3,
49+
"ctxt": 0
50+
},
51+
"name": {
52+
"type": "Identifier",
53+
"span": {
54+
"start": 2,
55+
"end": 3,
56+
"ctxt": 0
57+
},
58+
"value": "T",
59+
"optional": false
60+
},
61+
"in": false,
62+
"out": false,
63+
"const": false,
64+
"constraint": null,
65+
"default": null
66+
}
67+
]
68+
},
69+
"returnType": null
70+
}
71+
},
72+
{
73+
"type": "ExpressionStatement",
74+
"span": {
75+
"start": 14,
76+
"end": 27,
77+
"ctxt": 0
78+
},
79+
"expression": {
80+
"type": "ArrowFunctionExpression",
81+
"span": {
82+
"start": 14,
83+
"end": 26,
84+
"ctxt": 0
85+
},
86+
"params": [
87+
{
88+
"type": "Identifier",
89+
"span": {
90+
"start": 19,
91+
"end": 20,
92+
"ctxt": 0
93+
},
94+
"value": "x",
95+
"optional": false,
96+
"typeAnnotation": null
97+
}
98+
],
99+
"body": {
100+
"type": "NumericLiteral",
101+
"span": {
102+
"start": 25,
103+
"end": 26,
104+
"ctxt": 0
105+
},
106+
"value": 1.0,
107+
"raw": "1"
108+
},
109+
"async": false,
110+
"generator": false,
111+
"typeParameters": {
112+
"type": "TsTypeParameterDeclaration",
113+
"span": {
114+
"start": 14,
115+
"end": 18,
116+
"ctxt": 0
117+
},
118+
"parameters": [
119+
{
120+
"type": "TsTypeParameter",
121+
"span": {
122+
"start": 15,
123+
"end": 16,
124+
"ctxt": 0
125+
},
126+
"name": {
127+
"type": "Identifier",
128+
"span": {
129+
"start": 15,
130+
"end": 16,
131+
"ctxt": 0
132+
},
133+
"value": "T",
134+
"optional": false
135+
},
136+
"in": false,
137+
"out": false,
138+
"const": false,
139+
"constraint": null,
140+
"default": null
141+
}
142+
]
143+
},
144+
"returnType": null
145+
}
146+
}
147+
],
148+
"interpreter": null
149+
}

‎crates/swc_ecma_transforms_typescript/tests/strip_correctness.rs

+1
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ fn identity(entry: PathBuf) {
178178
decorators: true,
179179
dts: false,
180180
no_early_errors: false,
181+
disallow_ambiguous_jsx_like: false,
181182
}),
182183
(&*src).into(),
183184
None,

1 commit comments

Comments
 (1)

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

@github-actions[bot]

Benchmark

Benchmark suite Current: a6471f3 Previous: 30cff01 Ratio
es/full/bugs-1 288149 ns/iter (± 19912) 289255 ns/iter (± 10477) 1.00
es/full/minify/libraries/antd 1566143784 ns/iter (± 56229848) 1838801541 ns/iter (± 146632125) 0.85
es/full/minify/libraries/d3 279974187 ns/iter (± 5939686) 339369337 ns/iter (± 8505742) 0.82
es/full/minify/libraries/echarts 1200878193 ns/iter (± 55443174) 1230990003 ns/iter (± 20958358) 0.98
es/full/minify/libraries/jquery 90143429 ns/iter (± 1202903) 112817596 ns/iter (± 3835519) 0.80
es/full/minify/libraries/lodash 106317600 ns/iter (± 1360588) 124713532 ns/iter (± 8725266) 0.85
es/full/minify/libraries/moment 52891116 ns/iter (± 1283305) 55017603 ns/iter (± 1781471) 0.96
es/full/minify/libraries/react 19566524 ns/iter (± 81510) 19300583 ns/iter (± 213155) 1.01
es/full/minify/libraries/terser 238193282 ns/iter (± 4918211) 247512635 ns/iter (± 3088041) 0.96
es/full/minify/libraries/three 418841077 ns/iter (± 4765762) 445626087 ns/iter (± 9012103) 0.94
es/full/minify/libraries/typescript 2919727885 ns/iter (± 24747951) 2984921773 ns/iter (± 16740810) 0.98
es/full/minify/libraries/victory 642147472 ns/iter (± 15285956) 695317430 ns/iter (± 13828462) 0.92
es/full/minify/libraries/vue 127853402 ns/iter (± 2088805) 138552054 ns/iter (± 3123399) 0.92
es/full/codegen/es3 26178 ns/iter (± 218) 26116 ns/iter (± 213) 1.00
es/full/codegen/es5 26570 ns/iter (± 98) 26327 ns/iter (± 219) 1.01
es/full/codegen/es2015 25969 ns/iter (± 251) 26216 ns/iter (± 207) 0.99
es/full/codegen/es2016 25967 ns/iter (± 130) 26290 ns/iter (± 154) 0.99
es/full/codegen/es2017 26651 ns/iter (± 127) 26121 ns/iter (± 124) 1.02
es/full/codegen/es2018 26519 ns/iter (± 148) 26127 ns/iter (± 164) 1.02
es/full/codegen/es2019 25809 ns/iter (± 189) 26479 ns/iter (± 229) 0.97
es/full/codegen/es2020 26118 ns/iter (± 456) 26315 ns/iter (± 237) 0.99
es/full/all/es3 167853561 ns/iter (± 5196484) 168696253 ns/iter (± 2652268) 1.00
es/full/all/es5 165734811 ns/iter (± 4265286) 162981796 ns/iter (± 1944374) 1.02
es/full/all/es2015 127785907 ns/iter (± 2606320) 122419847 ns/iter (± 1179783) 1.04
es/full/all/es2016 128355959 ns/iter (± 1405726) 122989526 ns/iter (± 983207) 1.04
es/full/all/es2017 126514287 ns/iter (± 1664839) 121439030 ns/iter (± 1200855) 1.04
es/full/all/es2018 120899520 ns/iter (± 1093580) 119865350 ns/iter (± 1313814) 1.01
es/full/all/es2019 120288399 ns/iter (± 1433846) 119400841 ns/iter (± 1069052) 1.01
es/full/all/es2020 116115603 ns/iter (± 722958) 114637088 ns/iter (± 340962) 1.01
es/full/parser 533568 ns/iter (± 9406) 532264 ns/iter (± 8505) 1.00
es/full/base/fixer 21680 ns/iter (± 204) 22526 ns/iter (± 94) 0.96
es/full/base/resolver_and_hygiene 80174 ns/iter (± 814) 81887 ns/iter (± 190) 0.98
serialization of ast node 124 ns/iter (± 0) 124 ns/iter (± 0) 1
serialization of serde 124 ns/iter (± 0) 124 ns/iter (± 0) 1
css/minify/libraries/bootstrap 27806657 ns/iter (± 187218) 28185219 ns/iter (± 118821) 0.99
css/visitor/compare/clone 2033153 ns/iter (± 16456) 2101565 ns/iter (± 23698) 0.97
css/visitor/compare/visit_mut_span 2192126 ns/iter (± 25266) 2261429 ns/iter (± 3945) 0.97
css/visitor/compare/visit_mut_span_panic 2256504 ns/iter (± 50497) 2306726 ns/iter (± 7973) 0.98
css/visitor/compare/fold_span 2943072 ns/iter (± 14083) 3020642 ns/iter (± 17117) 0.97
css/visitor/compare/fold_span_panic 3077043 ns/iter (± 36819) 3207295 ns/iter (± 20016) 0.96
css/lexer/bootstrap_5_1_3 5080349 ns/iter (± 60035) 5178712 ns/iter (± 27628) 0.98
css/lexer/foundation_6_7_4 4392211 ns/iter (± 73145) 4370955 ns/iter (± 18523) 1.00
css/lexer/tailwind_3_1_1 805892 ns/iter (± 9451) 814544 ns/iter (± 7404) 0.99
css/parser/bootstrap_5_1_3 20788313 ns/iter (± 284854) 21361891 ns/iter (± 158768) 0.97
css/parser/foundation_6_7_4 16591498 ns/iter (± 208247) 17292504 ns/iter (± 39648) 0.96
css/parser/tailwind_3_1_1 3229249 ns/iter (± 35776) 3295031 ns/iter (± 4264) 0.98
es/codegen/colors 332912 ns/iter (± 188220) 328095 ns/iter (± 184492) 1.01
es/codegen/large 1240587 ns/iter (± 671704) 1222243 ns/iter (± 614666) 1.02
es/codegen/with-parser/colors 46717 ns/iter (± 591) 47515 ns/iter (± 462) 0.98
es/codegen/with-parser/large 508149 ns/iter (± 2897) 519034 ns/iter (± 4007) 0.98
es/minify/libraries/antd 1341768332 ns/iter (± 52947569) 1372534578 ns/iter (± 24647220) 0.98
es/minify/libraries/d3 242452728 ns/iter (± 3928445) 250777172 ns/iter (± 4757399) 0.97
es/minify/libraries/echarts 982848181 ns/iter (± 59006158) 1037790187 ns/iter (± 13745673) 0.95
es/minify/libraries/jquery 76038780 ns/iter (± 525049) 78054244 ns/iter (± 791973) 0.97
es/minify/libraries/lodash 93065154 ns/iter (± 1483236) 94418567 ns/iter (± 1636201) 0.99
es/minify/libraries/moment 45150962 ns/iter (± 632723) 45979267 ns/iter (± 316322) 0.98
es/minify/libraries/react 16895752 ns/iter (± 108904) 17030384 ns/iter (± 108626) 0.99
es/minify/libraries/terser 202062697 ns/iter (± 6468095) 209215895 ns/iter (± 2338230) 0.97
es/minify/libraries/three 345595825 ns/iter (± 10121295) 362788685 ns/iter (± 14236618) 0.95
es/minify/libraries/typescript 2542202920 ns/iter (± 24477172) 2596972867 ns/iter (± 18631858) 0.98
es/minify/libraries/victory 532321984 ns/iter (± 16597968) 615230407 ns/iter (± 36499140) 0.87
es/minify/libraries/vue 114696698 ns/iter (± 1159248) 122203343 ns/iter (± 2203796) 0.94
es/visitor/compare/clone 2377796 ns/iter (± 15111) 2420680 ns/iter (± 20629) 0.98
es/visitor/compare/visit_mut_span 2752595 ns/iter (± 26085) 2836534 ns/iter (± 7155) 0.97
es/visitor/compare/visit_mut_span_panic 2769032 ns/iter (± 28562) 2863269 ns/iter (± 15037) 0.97
es/visitor/compare/fold_span 3841429 ns/iter (± 35793) 3905586 ns/iter (± 32817) 0.98
es/visitor/compare/fold_span_panic 3975970 ns/iter (± 50823) 4061676 ns/iter (± 33380) 0.98
es/lexer/colors 15732 ns/iter (± 86) 16272 ns/iter (± 110) 0.97
es/lexer/angular 7616313 ns/iter (± 97960) 7819735 ns/iter (± 71657) 0.97
es/lexer/backbone 983810 ns/iter (± 15150) 1005625 ns/iter (± 5698) 0.98
es/lexer/jquery 5449545 ns/iter (± 24875) 5560368 ns/iter (± 28123) 0.98
es/lexer/jquery mobile 8417192 ns/iter (± 129126) 8531131 ns/iter (± 38405) 0.99
es/lexer/mootools 4321298 ns/iter (± 51102) 4366615 ns/iter (± 16727) 0.99
es/lexer/underscore 828525 ns/iter (± 3466) 838455 ns/iter (± 4743) 0.99
es/lexer/three 25629282 ns/iter (± 229766) 26445610 ns/iter (± 37163) 0.97
es/lexer/yui 4697276 ns/iter (± 29894) 4879600 ns/iter (± 11658) 0.96
es/parser/colors 29740 ns/iter (± 255) 30603 ns/iter (± 60) 0.97
es/parser/angular 15276334 ns/iter (± 262334) 15592766 ns/iter (± 167229) 0.98
es/parser/backbone 2249917 ns/iter (± 12603) 2296728 ns/iter (± 15645) 0.98
es/parser/jquery 11946378 ns/iter (± 96200) 12347788 ns/iter (± 67404) 0.97
es/parser/jquery mobile 18380851 ns/iter (± 205764) 19267735 ns/iter (± 109332) 0.95
es/parser/mootools 9162712 ns/iter (± 99068) 9550222 ns/iter (± 37457) 0.96
es/parser/underscore 1894812 ns/iter (± 24524) 1960634 ns/iter (± 13457) 0.97
es/parser/three 53528465 ns/iter (± 1066019) 57365392 ns/iter (± 695330) 0.93
es/parser/yui 9341717 ns/iter (± 161886) 9512993 ns/iter (± 78198) 0.98
es/preset-env/usage/builtin_type 140389 ns/iter (± 30413) 138719 ns/iter (± 29880) 1.01
es/preset-env/usage/property 21129 ns/iter (± 71) 21069 ns/iter (± 76) 1.00
es/resolver/typescript 112976989 ns/iter (± 2713472) 113299043 ns/iter (± 1179910) 1.00
es/fixer/typescript 85150216 ns/iter (± 2341570) 88223469 ns/iter (± 574419) 0.97
es/hygiene/typescript 180560549 ns/iter (± 2205871) 187361703 ns/iter (± 1547662) 0.96
es/resolver_with_hygiene/typescript 309192385 ns/iter (± 2194354) 324078985 ns/iter (± 2692502) 0.95
es/visitor/base-perf/module_clone 75559 ns/iter (± 1463) 76015 ns/iter (± 1922) 0.99
es/visitor/base-perf/fold_empty 82826 ns/iter (± 1294) 85955 ns/iter (± 1648) 0.96
es/visitor/base-perf/fold_noop_impl_all 83722 ns/iter (± 1523) 86154 ns/iter (± 1681) 0.97
es/visitor/base-perf/fold_noop_impl_vec 83622 ns/iter (± 1285) 87392 ns/iter (± 1160) 0.96
es/visitor/base-perf/boxing_boxed_clone 54 ns/iter (± 0) 56 ns/iter (± 0) 0.96
es/visitor/base-perf/boxing_unboxed_clone 57 ns/iter (± 1) 59 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_boxed 102 ns/iter (± 0) 103 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 101 ns/iter (± 0) 102 ns/iter (± 0) 0.99
es/visitor/base-perf/visit_contains_this 3483 ns/iter (± 61) 3306 ns/iter (± 67) 1.05
es/base/parallel/resolver/typescript 5204965956 ns/iter (± 356303088) 4850633361 ns/iter (± 405145608) 1.07
es/base/parallel/hygiene/typescript 2144292217 ns/iter (± 25949047) 2170882636 ns/iter (± 66109060) 0.99
misc/visitors/time-complexity/time 5 100 ns/iter (± 0) 101 ns/iter (± 0) 0.99
misc/visitors/time-complexity/time 10 324 ns/iter (± 4) 318 ns/iter (± 3) 1.02
misc/visitors/time-complexity/time 15 632 ns/iter (± 5) 643 ns/iter (± 0) 0.98
misc/visitors/time-complexity/time 20 1208 ns/iter (± 11) 1214 ns/iter (± 6) 1.00
misc/visitors/time-complexity/time 40 6611 ns/iter (± 26) 6683 ns/iter (± 51) 0.99
misc/visitors/time-complexity/time 60 16756 ns/iter (± 57) 17011 ns/iter (± 17) 0.99
es/full-target/es2016 187676 ns/iter (± 825) 187841 ns/iter (± 384) 1.00
es/full-target/es2017 180185 ns/iter (± 930) 183063 ns/iter (± 941) 0.98
es/full-target/es2018 172502 ns/iter (± 373) 172950 ns/iter (± 668) 1.00
es2020_nullish_coalescing 67421 ns/iter (± 158) 67015 ns/iter (± 178) 1.01
es2020_optional_chaining 93750 ns/iter (± 987) 96181 ns/iter (± 8998) 0.97
es2022_class_properties 93446 ns/iter (± 228) 93731 ns/iter (± 427) 1.00
es2018_object_rest_spread 70877 ns/iter (± 466) 71866 ns/iter (± 252) 0.99
es2019_optional_catch_binding 61262 ns/iter (± 240) 61687 ns/iter (± 150) 0.99
es2017_async_to_generator 61213 ns/iter (± 341) 62056 ns/iter (± 86) 0.99
es2016_exponentiation 64707 ns/iter (± 477) 65795 ns/iter (± 110) 0.98
es2015_arrow 69818 ns/iter (± 628) 71304 ns/iter (± 323) 0.98
es2015_block_scoped_fn 66566 ns/iter (± 572) 67054 ns/iter (± 223) 0.99
es2015_block_scoping 142585 ns/iter (± 7982) 159261 ns/iter (± 7978) 0.90
es2015_classes 112797 ns/iter (± 1124) 116928 ns/iter (± 480) 0.96
es2015_computed_props 60399 ns/iter (± 832) 62069 ns/iter (± 179) 0.97
es2015_destructuring 117836 ns/iter (± 1565) 117632 ns/iter (± 297) 1.00
es2015_duplicate_keys 63532 ns/iter (± 94) 63826 ns/iter (± 144) 1.00
es2015_parameters 80204 ns/iter (± 334) 80170 ns/iter (± 184) 1.00
es2015_fn_name 65854 ns/iter (± 828) 66951 ns/iter (± 311) 0.98
es2015_for_of 64974 ns/iter (± 249) 65019 ns/iter (± 103) 1.00
es2015_instanceof 63533 ns/iter (± 96) 63575 ns/iter (± 80) 1.00
es2015_shorthand_property 61432 ns/iter (± 139) 61348 ns/iter (± 105) 1.00
es2015_spread 61323 ns/iter (± 133) 61167 ns/iter (± 183) 1.00
es2015_sticky_regex 62136 ns/iter (± 288) 62575 ns/iter (± 122) 0.99
es2015_typeof_symbol 61921 ns/iter (± 528) 62886 ns/iter (± 147) 0.98
es/transform/baseline/base 50718 ns/iter (± 417) 52344 ns/iter (± 69) 0.97
es/transform/baseline/common_reserved_word 61779 ns/iter (± 434) 63346 ns/iter (± 125) 0.98
es/transform/baseline/common_typescript 163538 ns/iter (± 999) 164845 ns/iter (± 1178) 0.99
es/target/es3 169833 ns/iter (± 297) 170498 ns/iter (± 191) 1.00
es/target/es2015 627387 ns/iter (± 3931) 630195 ns/iter (± 1430) 1.00
es/target/es2016 64518 ns/iter (± 471) 65441 ns/iter (± 257) 0.99
es/target/es2017 60872 ns/iter (± 496) 61033 ns/iter (± 448) 1.00
es/target/es2018 80451 ns/iter (± 743) 79427 ns/iter (± 422) 1.01
es/target/es2020 129202 ns/iter (± 908) 130381 ns/iter (± 677) 0.99
babelify-only 670503 ns/iter (± 1347) 672327 ns/iter (± 5780) 1.00
parse_and_babelify_angular 41710330 ns/iter (± 760795) 43548498 ns/iter (± 645934) 0.96
parse_and_babelify_backbone 5364188 ns/iter (± 40641) 5370451 ns/iter (± 53632) 1.00
parse_and_babelify_jquery 30646111 ns/iter (± 351396) 31087770 ns/iter (± 1684601) 0.99
parse_and_babelify_jquery_mobile 52676988 ns/iter (± 762519) 54344518 ns/iter (± 871904) 0.97
parse_and_babelify_mootools 31388369 ns/iter (± 525755) 33344184 ns/iter (± 770714) 0.94
parse_and_babelify_underscore 4377143 ns/iter (± 36505) 4397592 ns/iter (± 53175) 1.00
parse_and_babelify_yui 30602447 ns/iter (± 889542) 33494868 ns/iter (± 490524) 0.91
html/minify/document/css_spec 41767601 ns/iter (± 292038) 42322823 ns/iter (± 346069) 0.99
html/minify/document/github 17158101 ns/iter (± 181719) 17456223 ns/iter (± 53421) 0.98
html/minify/document/stackoverflow 15241772 ns/iter (± 130735) 15656819 ns/iter (± 133246) 0.97
html/minify/document_fragment/css_spec 40269686 ns/iter (± 238956) 39962494 ns/iter (± 208337) 1.01
html/minify/document_fragment/github 16374022 ns/iter (± 139967) 16795297 ns/iter (± 33168) 0.97
html/minify/document_fragment/stackoverflow 14834844 ns/iter (± 154359) 15161656 ns/iter (± 47912) 0.98
html/document/visitor/compare/clone 342010 ns/iter (± 1913) 346290 ns/iter (± 1384) 0.99
html/document/visitor/compare/visit_mut_span 361129 ns/iter (± 2288) 366772 ns/iter (± 2460) 0.98
html/document/visitor/compare/visit_mut_span_panic 375088 ns/iter (± 4870) 376643 ns/iter (± 2722) 1.00
html/document/visitor/compare/fold_span 399261 ns/iter (± 5092) 405245 ns/iter (± 1866) 0.99
html/document/visitor/compare/fold_span_panic 450059 ns/iter (± 3982) 461999 ns/iter (± 2055) 0.97
html/document_fragment/visitor/compare/clone 336454 ns/iter (± 2263) 338552 ns/iter (± 2922) 0.99
html/document_fragment/visitor/compare/visit_mut_span 371415 ns/iter (± 1611) 365580 ns/iter (± 1553) 1.02
html/document_fragment/visitor/compare/visit_mut_span_panic 378533 ns/iter (± 2301) 371864 ns/iter (± 2645) 1.02
html/document_fragment/visitor/compare/fold_span 410083 ns/iter (± 2345) 404872 ns/iter (± 2012) 1.01
html/document_fragment/visitor/compare/fold_span_panic 461820 ns/iter (± 3283) 459025 ns/iter (± 2574) 1.01
html/lexer/css_2021_spec 15396411 ns/iter (± 56712) 15621609 ns/iter (± 82231) 0.99
html/lexer/github_com_17_05_2022 6000758 ns/iter (± 17784) 6036645 ns/iter (± 26595) 0.99
html/lexer/stackoverflow_com_17_05_2022 5612847 ns/iter (± 17248) 5672448 ns/iter (± 15760) 0.99
html/parser/parser_document/css_2021_spec 25649099 ns/iter (± 312183) 25475458 ns/iter (± 259826) 1.01
html/parser/parser_document/github_com_17_05_2022 8619110 ns/iter (± 64378) 8660714 ns/iter (± 32995) 1.00
html/parser/parser_document/stackoverflow_com_17_05_2022 7493152 ns/iter (± 55739) 7684239 ns/iter (± 17809) 0.98
html/parser/parser_document_fragment/css_2021_spec 25076554 ns/iter (± 392755) 25659254 ns/iter (± 167133) 0.98
html/parser/parser_document_fragment/github_com_17_05_2022 8744111 ns/iter (± 104472) 8758167 ns/iter (± 16347) 1.00
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7620504 ns/iter (± 55332) 7726164 ns/iter (± 10005) 0.99

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

Please sign in to comment.