Skip to content

Commit

Permalink
feat(es/parser): Add an option to disallow ambiguous jsx (#6913)
Browse files Browse the repository at this point in the history
  • Loading branch information
nissy-dev committed Mar 3, 2023
1 parent c2f0629 commit a6471f3
Show file tree
Hide file tree
Showing 22 changed files with 372 additions and 0 deletions.
1 change: 1 addition & 0 deletions crates/swc/src/config/mod.rs
Expand Up @@ -775,6 +775,7 @@ impl Default for Rc {
jsc: JscConfig {
syntax: Some(Syntax::Typescript(TsConfig {
tsx: false,
disallow_ambiguous_jsx_like: true,
..Default::default()
})),
..Default::default()
Expand Down
1 change: 1 addition & 0 deletions crates/swc/tests/rust_api.rs
Expand Up @@ -136,6 +136,7 @@ fn shopify_2_same_opt() {
decorators: false,
dts: false,
no_early_errors: false,
disallow_ambiguous_jsx_like: false,
})),
transform: None.into(),
external_helpers: false.into(),
Expand Down
1 change: 1 addition & 0 deletions crates/swc/tests/tsc.rs
Expand Up @@ -380,6 +380,7 @@ fn matrix(input: &Path) -> Vec<TestUnitData> {
decorators,
dts: false,
no_early_errors: false,
disallow_ambiguous_jsx_like: false,
})),
external_helpers: true.into(),
target: Some(target),
Expand Down
1 change: 1 addition & 0 deletions crates/swc_ecma_dep_graph/src/lib.rs
Expand Up @@ -399,6 +399,7 @@ mod tests {
tsx: file_name.contains("tsx"),
decorators: true,
no_early_errors: true,
disallow_ambiguous_jsx_like: false,
}),
EsVersion::Es2015,
(&*fm).into(),
Expand Down
11 changes: 11 additions & 0 deletions crates/swc_ecma_parser/src/error.rs
Expand Up @@ -278,6 +278,9 @@ pub enum SyntaxError {
span: Span,
note: &'static str,
},

ReservedTypeAssertion,
ReservedArrowTypeParam,
}

impl SyntaxError {
Expand Down Expand Up @@ -709,6 +712,14 @@ impl SyntaxError {
format!("Unexpected token. Did you mean {}?", did_you_mean).into()
}
SyntaxError::WithLabel { inner, .. } => inner.error.1.msg(),
SyntaxError::ReservedTypeAssertion => "This syntax is reserved in files with the .mts \
or .cts extension. Use an `as` expression \
instead."
.into(),
SyntaxError::ReservedArrowTypeParam => "This syntax is reserved in files with the \
.mts or .cts extension. Add a trailing comma, \
as in `<T,>() => ...`."
.into(),
}
}
}
Expand Down
15 changes: 15 additions & 0 deletions crates/swc_ecma_parser/src/lib.rs
Expand Up @@ -275,6 +275,13 @@ impl Syntax {
Syntax::Es(..) => true,
}
}

fn disallow_ambiguous_jsx_like(self) -> bool {
match self {
Syntax::Typescript(t) => t.disallow_ambiguous_jsx_like,
_ => false,
}
}
}

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

#[serde(skip, default)]
pub no_early_errors: bool,

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

#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
Expand Down
4 changes: 4 additions & 0 deletions crates/swc_ecma_parser/src/parser/expr.rs
Expand Up @@ -82,6 +82,7 @@ impl<I: Tokens> Parser<I> {
#[cfg_attr(feature = "debug", tracing::instrument(skip_all))]
fn parse_assignment_expr_base(&mut self) -> PResult<Box<Expr>> {
trace_cur!(self, parse_assignment_expr_base);
let start = self.input.cur_span();

if self.input.syntax().typescript()
&& (is_one_of!(self, '<', JSXTagStart))
Expand Down Expand Up @@ -120,6 +121,9 @@ impl<I: Tokens> Parser<I> {
Ok(Some(arrow))
});
if let Some(res) = res {
if self.input.syntax().disallow_ambiguous_jsx_like() {
self.emit_err(start, SyntaxError::ReservedArrowTypeParam);
}
return Ok(res);
}
}
Expand Down
4 changes: 4 additions & 0 deletions crates/swc_ecma_parser/src/parser/typescript.rs
Expand Up @@ -994,6 +994,10 @@ impl<I: Tokens> Parser<I> {
pub(super) fn parse_ts_type_assertion(&mut self, start: BytePos) -> PResult<TsTypeAssertion> {
debug_assert!(self.input.syntax().typescript());

if self.input.syntax().disallow_ambiguous_jsx_like() {
self.emit_err(span!(self, start), SyntaxError::ReservedTypeAssertion);
}

// Not actually necessary to set state.inType because we never reach here if JSX
// plugin is enabled, but need `tsInType` to satisfy the assertion in
// `tsParseType`.
Expand Down
@@ -0,0 +1 @@
<T>x;
@@ -0,0 +1,6 @@

x This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.
,-[$DIR/tests/typescript-errors/disallow-ambiguous-jsx-like/cts-case1/input.cts:1:1]
1 | <T>x;
: ^
`----
@@ -0,0 +1 @@
<T>() => 1;
@@ -0,0 +1,6 @@

x This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.
,-[$DIR/tests/typescript-errors/disallow-ambiguous-jsx-like/cts-case2/input.cts:1:1]
1 | <T>() => 1;
: ^
`----
@@ -0,0 +1 @@
<T>x;
@@ -0,0 +1,6 @@

x This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.
,-[$DIR/tests/typescript-errors/disallow-ambiguous-jsx-like/mts-case1/input.mts:1:1]
1 | <T>x;
: ^
`----
@@ -0,0 +1 @@
<T>(x) => 1;
@@ -0,0 +1,6 @@

x This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.
,-[$DIR/tests/typescript-errors/disallow-ambiguous-jsx-like/mts-case2/input.mts:1:1]
1 | <T>(x) => 1;
: ^
`----
3 changes: 3 additions & 0 deletions crates/swc_ecma_parser/tests/typescript.rs
Expand Up @@ -242,6 +242,7 @@ where
tsx: fname.contains("tsx"),
decorators: true,
no_early_errors,
disallow_ambiguous_jsx_like: fname.contains("cts") || fname.contains("mts"),
..Default::default()
}),
EsVersion::Es2015,
Expand All @@ -266,6 +267,8 @@ where
}

#[testing::fixture("tests/typescript-errors/**/*.ts")]
#[testing::fixture("tests/typescript-errors/**/*.mts")]
#[testing::fixture("tests/typescript-errors/**/*.cts")]
#[testing::fixture("tests/typescript-errors/**/*.tsx")]
fn errors(file: PathBuf) {
let file_name = file.display().to_string();
Expand Down
@@ -0,0 +1,2 @@
<T,>() => 1;
<T,>(x) => 1;
@@ -0,0 +1,149 @@
{
"type": "Script",
"span": {
"start": 1,
"end": 27,
"ctxt": 0
},
"body": [
{
"type": "ExpressionStatement",
"span": {
"start": 1,
"end": 13,
"ctxt": 0
},
"expression": {
"type": "ArrowFunctionExpression",
"span": {
"start": 1,
"end": 12,
"ctxt": 0
},
"params": [],
"body": {
"type": "NumericLiteral",
"span": {
"start": 11,
"end": 12,
"ctxt": 0
},
"value": 1.0,
"raw": "1"
},
"async": false,
"generator": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1,
"end": 5,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2,
"end": 3,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2,
"end": 3,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 14,
"end": 27,
"ctxt": 0
},
"expression": {
"type": "ArrowFunctionExpression",
"span": {
"start": 14,
"end": 26,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 19,
"end": 20,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": null
}
],
"body": {
"type": "NumericLiteral",
"span": {
"start": 25,
"end": 26,
"ctxt": 0
},
"value": 1.0,
"raw": "1"
},
"async": false,
"generator": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 14,
"end": 18,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 15,
"end": 16,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 15,
"end": 16,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
}
}
],
"interpreter": null
}
@@ -0,0 +1,2 @@
<T,>() => 1;
<T,>(x) => 1;

1 comment on commit a6471f3

@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: 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.