Skip to content

Commit

Permalink
fix(es/parser): Parse types in CallExpression inside templates (#6611)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #6601.
  • Loading branch information
alexander-akait committed Dec 10, 2022
1 parent 66b5282 commit c44f1d0
Show file tree
Hide file tree
Showing 6 changed files with 4,308 additions and 17 deletions.
3 changes: 0 additions & 3 deletions crates/swc_ecma_parser/src/lib.rs
Expand Up @@ -369,9 +369,6 @@ pub struct Context {

in_forced_jsx_context: bool,

/// If true, `:` should not be treated as a type annotation.
dont_parse_colon_as_type_ann: bool,

// If true, allow super.x and super[x]
allow_direct_super: bool,

Expand Down
17 changes: 12 additions & 5 deletions crates/swc_ecma_parser/src/parser/expr.rs
Expand Up @@ -218,7 +218,6 @@ impl<I: Tokens> Parser<I> {
let ctx = Context {
in_cond_expr: true,
will_expect_colon_for_cond: false,
dont_parse_colon_as_type_ann: false,
..self.ctx()
};
let alt = self.with_ctx(ctx).parse_assignment_expr()?;
Expand Down Expand Up @@ -306,7 +305,6 @@ impl<I: Tokens> Parser<I> {
tok!('[') => {
let ctx = Context {
will_expect_colon_for_cond: false,
dont_parse_colon_as_type_ann: false,
..self.ctx()
};
return self.with_ctx(ctx).parse_array_lit();
Expand Down Expand Up @@ -378,8 +376,13 @@ impl<I: Tokens> Parser<I> {
}

tok!('`') => {
let ctx = Context {
will_expect_colon_for_cond: false,
..self.ctx()
};

// parse template literal
return Ok(Box::new(Expr::Tpl(self.parse_tpl(false)?)));
return Ok(Box::new(Expr::Tpl(self.with_ctx(ctx).parse_tpl(false)?)));
}

tok!('(') => {
Expand Down Expand Up @@ -841,7 +844,6 @@ impl<I: Tokens> Parser<I> {
let return_type = if !self.ctx().will_expect_colon_for_cond
&& self.input.syntax().typescript()
&& is!(self, ':')
&& !self.ctx().dont_parse_colon_as_type_ann
{
self.try_parse_ts(|p| {
let return_type = p.parse_ts_type_or_type_predicate_ann(&tok!(':'))?;
Expand Down Expand Up @@ -1470,7 +1472,12 @@ impl<I: Tokens> Parser<I> {

// MemberExpression[?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]
if is!(self, '`') {
let tpl = self.parse_tagged_tpl(expr, None)?;
let ctx = Context {
will_expect_colon_for_cond: false,
..self.ctx()
};

let tpl = self.with_ctx(ctx).parse_tagged_tpl(expr, None)?;
return Ok((Box::new(Expr::TaggedTpl(tpl)), true));
}

Expand Down
1 change: 0 additions & 1 deletion crates/swc_ecma_parser/src/parser/object.rs
Expand Up @@ -14,7 +14,6 @@ impl<I: Tokens> Parser<I> {
{
let ctx = Context {
will_expect_colon_for_cond: false,
dont_parse_colon_as_type_ann: false,
..self.ctx()
};
self.with_ctx(ctx).parse_with(|p| {
Expand Down
9 changes: 1 addition & 8 deletions crates/swc_ecma_parser/src/parser/stmt.rs
Expand Up @@ -610,15 +610,8 @@ impl<'a, I: Tokens> Parser<I> {
let is_case = is!(p, "case");
let case_start = cur_pos!(p);
bump!(p);
let ctx = Context {
dont_parse_colon_as_type_ann: true,
..p.ctx()
};
let test = if is_case {
p.with_ctx(ctx)
.include_in_expr(true)
.parse_expr()
.map(Some)?
p.include_in_expr(true).parse_expr().map(Some)?
} else {
if let Some(previous) = span_of_previous_default {
syntax_error!(p, SyntaxError::MultipleDefault { previous });
Expand Down
104 changes: 104 additions & 0 deletions crates/swc_ecma_parser/tests/typescript/issue-6601/index.tsx
@@ -0,0 +1,104 @@
function exampleFunction1() {
return Math.random() > 0.5
? `<button
@click="${(): void => console.log('this line causes a syntax error')}"
></button>`
: `<button
@click="${(): void => console.log('this line does NOT causes a syntax error')}"
></button>`;
}

function exampleFunction2() {
return Math.random() > 0.5
? `<bar></bar>` + `<button
@click="${(): void => console.log('this line causes a syntax error')}"
></button>`
: `<bar></bar>` + `<button
@click="${(): void => console.log('this line does NOT causes a syntax error')}"
></button>`;
}

function exampleFunction3() {
return Math.random() > 0.5
? (): void => console.log('this line causes a syntax error')
: (): void => console.log('this line does NOT causes a syntax error');
}

function exampleFunction4() {
return Math.random() > 0.5
? function (): void { console.log('this line causes a syntax error') }
: function (): void { console.log('this line does NOT causes a syntax error') };
}

function exampleFunction5() {
return Math.random() > 0.5
? (function (): void { console.log('this line causes a syntax error') })
: (function (): void { console.log('this line does NOT causes a syntax error') });
}

function exampleFunction6() {
return Math.random() > 0.5
? "test" == "test"
? `<button @click="${(): void => console.log('this line causes a syntax error')}"></button>`
: "bar"
: `<button
@click="${(): void => console.log('this line does NOT causes a syntax error')}"
></button>`;
}


function exampleFunction6() {
return Math.random() > 0.5
? `<button @click="${(): void => console.log('this line causes a syntax error')}"></button>`
: "test" == "test"
? `<button @click="${(): void => console.log('this line causes a syntax error')}"></button>`
: "bar";
}

function exampleFunction7() {
return Math.random() > 0.5
? foo`<button @click="${(): void => console.log('this line causes a syntax error')}"></button>`
: bar`<button @click="${(): void => console.log('this line does NOT causes a syntax error')}"></button>`;
}

function exampleFunction8() {
return Math.random() > 0.5
? ((): void => console.log('this line causes a syntax error'))
: ((): void => console.log('this line does NOT causes a syntax error'));
}

function exampleFunction9() {
return Math.random() > 0.5
? async (): Promise<void> => console.log('this line causes a syntax error')
: async (): Promise<void> => console.log('this line causes a syntax error');
}

function exampleFunction10() {
const foo = "Oranges";

switch (foo) {
case 'Oranges': {
return `<button @click="${(): void => console.log('this line causes a syntax error')}" ></button>`;
}
default:
console.log(`Sorry, we are out of test.`);
}
}

function exampleFunction11() {
switch (true) {
case ((): boolean => true)(): {
console.log('This shape is a square.');
break;
}
}
}

function exampleFunction12() {
switch (((): boolean => true)()) {
case ((): boolean => true)(): {
console.log('This shape is a square.');
break;
}
}
}

1 comment on commit c44f1d0

@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: c44f1d0 Previous: b4eef53 Ratio
es/full/bugs-1 299750 ns/iter (± 12569) 304089 ns/iter (± 8388) 0.99
es/full/minify/libraries/antd 1655797100 ns/iter (± 21058812) 1737174379 ns/iter (± 25417642) 0.95
es/full/minify/libraries/d3 350193720 ns/iter (± 4295993) 367173466 ns/iter (± 7422878) 0.95
es/full/minify/libraries/echarts 1423267861 ns/iter (± 15508396) 1454842611 ns/iter (± 11206747) 0.98
es/full/minify/libraries/jquery 94485374 ns/iter (± 1514669) 97827950 ns/iter (± 2223557) 0.97
es/full/minify/libraries/lodash 113153583 ns/iter (± 1771164) 116586041 ns/iter (± 2440690) 0.97
es/full/minify/libraries/moment 54493292 ns/iter (± 1011220) 55194916 ns/iter (± 694063) 0.99
es/full/minify/libraries/react 19764963 ns/iter (± 189262) 20293636 ns/iter (± 220430) 0.97
es/full/minify/libraries/terser 264571326 ns/iter (± 6228607) 276254913 ns/iter (± 6890264) 0.96
es/full/minify/libraries/three 491042786 ns/iter (± 8858485) 504106551 ns/iter (± 11441271) 0.97
es/full/minify/libraries/typescript 3174248560 ns/iter (± 21727834) 3216447742 ns/iter (± 33848435) 0.99
es/full/minify/libraries/victory 706279499 ns/iter (± 11058687) 755777015 ns/iter (± 7252079) 0.93
es/full/minify/libraries/vue 138482946 ns/iter (± 1784285) 142490473 ns/iter (± 5345033) 0.97
es/full/codegen/es3 27952 ns/iter (± 64) 27845 ns/iter (± 49) 1.00
es/full/codegen/es5 27955 ns/iter (± 20) 27880 ns/iter (± 63) 1.00
es/full/codegen/es2015 27953 ns/iter (± 53) 27910 ns/iter (± 44) 1.00
es/full/codegen/es2016 27940 ns/iter (± 88) 27851 ns/iter (± 83) 1.00
es/full/codegen/es2017 27964 ns/iter (± 55) 27812 ns/iter (± 49) 1.01
es/full/codegen/es2018 28070 ns/iter (± 46) 27829 ns/iter (± 61) 1.01
es/full/codegen/es2019 28055 ns/iter (± 87) 27841 ns/iter (± 52) 1.01
es/full/codegen/es2020 28058 ns/iter (± 39) 27810 ns/iter (± 69) 1.01
es/full/all/es3 169693381 ns/iter (± 3732036) 170874166 ns/iter (± 2110967) 0.99
es/full/all/es5 163145482 ns/iter (± 4379997) 162384401 ns/iter (± 2989355) 1.00
es/full/all/es2015 121953688 ns/iter (± 1332736) 122603909 ns/iter (± 1398894) 0.99
es/full/all/es2016 121029934 ns/iter (± 1367890) 122048280 ns/iter (± 2514199) 0.99
es/full/all/es2017 119666816 ns/iter (± 1607577) 120425445 ns/iter (± 1616037) 0.99
es/full/all/es2018 118206239 ns/iter (± 1037672) 118597597 ns/iter (± 1285084) 1.00
es/full/all/es2019 117003895 ns/iter (± 1759131) 117804890 ns/iter (± 1432660) 0.99
es/full/all/es2020 112570376 ns/iter (± 1151914) 114244053 ns/iter (± 2324303) 0.99
es/full/parser 522076 ns/iter (± 7756) 513917 ns/iter (± 8431) 1.02
es/full/base/fixer 21400 ns/iter (± 21) 21722 ns/iter (± 49) 0.99
es/full/base/resolver_and_hygiene 77733 ns/iter (± 65) 77703 ns/iter (± 46) 1.00
serialization of ast node 140 ns/iter (± 0) 142 ns/iter (± 0) 0.99
serialization of serde 130 ns/iter (± 0) 123 ns/iter (± 0) 1.06
css/minify/libraries/bootstrap 28245535 ns/iter (± 331503) 27361921 ns/iter (± 215926) 1.03
css/visitor/compare/clone 2113619 ns/iter (± 11178) 2138711 ns/iter (± 12831) 0.99
css/visitor/compare/visit_mut_span 2298884 ns/iter (± 9584) 2317732 ns/iter (± 5867) 0.99
css/visitor/compare/visit_mut_span_panic 2346178 ns/iter (± 9580) 2359423 ns/iter (± 5792) 0.99
css/visitor/compare/fold_span 3023192 ns/iter (± 26549) 3003151 ns/iter (± 26406) 1.01
css/visitor/compare/fold_span_panic 3175026 ns/iter (± 21658) 3164749 ns/iter (± 19271) 1.00
css/lexer/bootstrap_5_1_3 5348786 ns/iter (± 2579) 5372986 ns/iter (± 1368) 1.00
css/lexer/foundation_6_7_4 4482825 ns/iter (± 1285) 4502041 ns/iter (± 4839) 1.00
css/lexer/tailwind_3_1_1 849252 ns/iter (± 234) 852838 ns/iter (± 777) 1.00
css/parser/bootstrap_5_1_3 21451931 ns/iter (± 228628) 20935322 ns/iter (± 406024) 1.02
css/parser/foundation_6_7_4 16927841 ns/iter (± 73795) 16587404 ns/iter (± 43532) 1.02
css/parser/tailwind_3_1_1 3250858 ns/iter (± 2604) 3222315 ns/iter (± 3153) 1.01
es/codegen/colors 330422 ns/iter (± 184940) 331950 ns/iter (± 186505) 1.00
es/codegen/large 1238575 ns/iter (± 627921) 1215440 ns/iter (± 634233) 1.02
es/codegen/with-parser/colors 44948 ns/iter (± 129) 45518 ns/iter (± 296) 0.99
es/codegen/with-parser/large 507320 ns/iter (± 21317) 510400 ns/iter (± 2172) 0.99
es/minify/libraries/antd 1439513420 ns/iter (± 22381028) 1406294623 ns/iter (± 13524317) 1.02
es/minify/libraries/d3 297245383 ns/iter (± 11072411) 289019250 ns/iter (± 7849017) 1.03
es/minify/libraries/echarts 1219612246 ns/iter (± 16556044) 1216227133 ns/iter (± 14995696) 1.00
es/minify/libraries/jquery 79833456 ns/iter (± 706014) 79103381 ns/iter (± 1048772) 1.01
es/minify/libraries/lodash 98479629 ns/iter (± 1582805) 99331471 ns/iter (± 1523732) 0.99
es/minify/libraries/moment 46725777 ns/iter (± 248932) 46943287 ns/iter (± 868872) 1.00
es/minify/libraries/react 17263406 ns/iter (± 62809) 18195475 ns/iter (± 334347) 0.95
es/minify/libraries/terser 219595865 ns/iter (± 5293624) 244032916 ns/iter (± 2931206) 0.90
es/minify/libraries/three 392181557 ns/iter (± 7679417) 446921368 ns/iter (± 10372480) 0.88
es/minify/libraries/typescript 2653796978 ns/iter (± 23581529) 2783177542 ns/iter (± 27505299) 0.95
es/minify/libraries/victory 587346535 ns/iter (± 9011120) 655461116 ns/iter (± 19207056) 0.90
es/minify/libraries/vue 118125981 ns/iter (± 974979) 126608903 ns/iter (± 1835452) 0.93
es/visitor/compare/clone 2456357 ns/iter (± 19828) 2477236 ns/iter (± 33397) 0.99
es/visitor/compare/visit_mut_span 2818923 ns/iter (± 8511) 2893690 ns/iter (± 25737) 0.97
es/visitor/compare/visit_mut_span_panic 2879485 ns/iter (± 6524) 2951076 ns/iter (± 20301) 0.98
es/visitor/compare/fold_span 3932673 ns/iter (± 13949) 4041559 ns/iter (± 31091) 0.97
es/visitor/compare/fold_span_panic 4103473 ns/iter (± 5868) 4385142 ns/iter (± 173378) 0.94
es/lexer/colors 17390 ns/iter (± 10) 17472 ns/iter (± 4) 1.00
es/lexer/angular 8245093 ns/iter (± 6941) 8253427 ns/iter (± 5472) 1.00
es/lexer/backbone 1077432 ns/iter (± 1221) 1077853 ns/iter (± 735) 1.00
es/lexer/jquery 5968914 ns/iter (± 1843) 5976426 ns/iter (± 5857) 1.00
es/lexer/jquery mobile 9203236 ns/iter (± 9966) 9221298 ns/iter (± 4344) 1.00
es/lexer/mootools 4694384 ns/iter (± 1685) 4698859 ns/iter (± 2086) 1.00
es/lexer/underscore 898016 ns/iter (± 397) 898168 ns/iter (± 307) 1.00
es/lexer/three 27964494 ns/iter (± 34529) 28000678 ns/iter (± 14540) 1.00
es/lexer/yui 5066510 ns/iter (± 2289) 5077162 ns/iter (± 909) 1.00
es/parser/colors 31330 ns/iter (± 127) 30987 ns/iter (± 205) 1.01
es/parser/angular 16550825 ns/iter (± 352763) 17445857 ns/iter (± 133952) 0.95
es/parser/backbone 2356527 ns/iter (± 13405) 2323928 ns/iter (± 16335) 1.01
es/parser/jquery 12679933 ns/iter (± 72098) 12988645 ns/iter (± 209716) 0.98
es/parser/jquery mobile 20433794 ns/iter (± 276194) 21265012 ns/iter (± 281398) 0.96
es/parser/mootools 9699247 ns/iter (± 49281) 9676987 ns/iter (± 63346) 1.00
es/parser/underscore 1983114 ns/iter (± 9814) 1958630 ns/iter (± 12514) 1.01
es/parser/three 59302465 ns/iter (± 282824) 59809226 ns/iter (± 279922) 0.99
es/parser/yui 9710236 ns/iter (± 58310) 9636517 ns/iter (± 75464) 1.01
es/preset-env/usage/builtin_type 140272 ns/iter (± 31610) 138068 ns/iter (± 30735) 1.02
es/preset-env/usage/property 21671 ns/iter (± 116) 21150 ns/iter (± 121) 1.02
es/resolver/typescript 109954138 ns/iter (± 4524137) 111918526 ns/iter (± 4572368) 0.98
es/fixer/typescript 83426341 ns/iter (± 1260702) 87305671 ns/iter (± 823542) 0.96
es/hygiene/typescript 165806139 ns/iter (± 1657961) 170878566 ns/iter (± 1039088) 0.97
es/resolver_with_hygiene/typescript 294166959 ns/iter (± 3540360) 295540711 ns/iter (± 2190024) 1.00
es/visitor/base-perf/module_clone 75161 ns/iter (± 1311) 74848 ns/iter (± 1344) 1.00
es/visitor/base-perf/fold_empty 86035 ns/iter (± 1595) 86587 ns/iter (± 1719) 0.99
es/visitor/base-perf/fold_noop_impl_all 86423 ns/iter (± 1699) 86315 ns/iter (± 558) 1.00
es/visitor/base-perf/fold_noop_impl_vec 86333 ns/iter (± 1693) 86063 ns/iter (± 1347) 1.00
es/visitor/base-perf/boxing_boxed_clone 54 ns/iter (± 0) 54 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 58 ns/iter (± 0) 58 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 100 ns/iter (± 0) 100 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed 101 ns/iter (± 0) 100 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_contains_this 3389 ns/iter (± 40) 3539 ns/iter (± 52) 0.96
es/base/parallel/resolver/typescript 5191611385 ns/iter (± 411745247) 5079582372 ns/iter (± 256897746) 1.02
es/base/parallel/hygiene/typescript 2008468770 ns/iter (± 26010890) 1992761597 ns/iter (± 26898342) 1.01
misc/visitors/time-complexity/time 5 97 ns/iter (± 0) 97 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 319 ns/iter (± 0) 321 ns/iter (± 2) 0.99
misc/visitors/time-complexity/time 15 671 ns/iter (± 6) 659 ns/iter (± 8) 1.02
misc/visitors/time-complexity/time 20 1217 ns/iter (± 4) 1217 ns/iter (± 0) 1
misc/visitors/time-complexity/time 40 6260 ns/iter (± 53) 6205 ns/iter (± 5) 1.01
misc/visitors/time-complexity/time 60 15592 ns/iter (± 6) 15586 ns/iter (± 5) 1.00
es/full-target/es2016 187747 ns/iter (± 533) 186647 ns/iter (± 429) 1.01
es/full-target/es2017 180815 ns/iter (± 677) 180367 ns/iter (± 895) 1.00
es/full-target/es2018 169976 ns/iter (± 395) 169761 ns/iter (± 618) 1.00
es2020_nullish_coalescing 65498 ns/iter (± 293) 65820 ns/iter (± 5109) 1.00
es2020_optional_chaining 94027 ns/iter (± 1027) 94053 ns/iter (± 5819) 1.00
es2022_class_properties 92141 ns/iter (± 277) 92593 ns/iter (± 220) 1.00
es2018_object_rest_spread 70081 ns/iter (± 106) 70534 ns/iter (± 88) 0.99
es2019_optional_catch_binding 59585 ns/iter (± 153) 59841 ns/iter (± 87) 1.00
es2017_async_to_generator 60353 ns/iter (± 99) 60710 ns/iter (± 91) 0.99
es2016_exponentiation 63251 ns/iter (± 109) 63859 ns/iter (± 100) 0.99
es2015_arrow 69017 ns/iter (± 251) 69317 ns/iter (± 311) 1.00
es2015_block_scoped_fn 64291 ns/iter (± 167) 65050 ns/iter (± 125) 0.99
es2015_block_scoping 155402 ns/iter (± 10920) 155931 ns/iter (± 7108) 1.00
es2015_classes 115588 ns/iter (± 537) 115264 ns/iter (± 393) 1.00
es2015_computed_props 59718 ns/iter (± 71) 59887 ns/iter (± 131) 1.00
es2015_destructuring 113850 ns/iter (± 202) 114477 ns/iter (± 305) 0.99
es2015_duplicate_keys 62370 ns/iter (± 130) 62344 ns/iter (± 63) 1.00
es2015_parameters 77590 ns/iter (± 118) 78088 ns/iter (± 82) 0.99
es2015_fn_name 65676 ns/iter (± 579) 65578 ns/iter (± 523) 1.00
es2015_for_of 62860 ns/iter (± 98) 63126 ns/iter (± 126) 1.00
es2015_instanceof 61701 ns/iter (± 134) 61899 ns/iter (± 70) 1.00
es2015_shorthand_property 59565 ns/iter (± 92) 59852 ns/iter (± 73) 1.00
es2015_spread 59966 ns/iter (± 127) 60091 ns/iter (± 52) 1.00
es2015_sticky_regex 60767 ns/iter (± 107) 61066 ns/iter (± 100) 1.00
es2015_typeof_symbol 60753 ns/iter (± 288) 61430 ns/iter (± 132) 0.99
es/transform/baseline/base 50328 ns/iter (± 144) 50705 ns/iter (± 60) 0.99
es/transform/baseline/common_reserved_word 61173 ns/iter (± 74) 61591 ns/iter (± 79) 0.99
es/transform/baseline/common_typescript 141026 ns/iter (± 2459) 140638 ns/iter (± 2010) 1.00
es/target/es3 167499 ns/iter (± 338) 167134 ns/iter (± 208) 1.00
es/target/es2015 629973 ns/iter (± 1411) 627133 ns/iter (± 1527) 1.00
es/target/es2016 63436 ns/iter (± 142) 63804 ns/iter (± 137) 0.99
es/target/es2017 60560 ns/iter (± 76) 60927 ns/iter (± 76) 0.99
es/target/es2018 80549 ns/iter (± 139) 80810 ns/iter (± 67) 1.00
es/target/es2020 131302 ns/iter (± 210) 130685 ns/iter (± 239) 1.00
babelify-only 664806 ns/iter (± 1739) 664416 ns/iter (± 1484) 1.00
parse_and_babelify_angular 44256109 ns/iter (± 1160180) 41611143 ns/iter (± 831959) 1.06
parse_and_babelify_backbone 5581128 ns/iter (± 147765) 5417012 ns/iter (± 74454) 1.03
parse_and_babelify_jquery 34560501 ns/iter (± 1150369) 32049376 ns/iter (± 447740) 1.08
parse_and_babelify_jquery_mobile 58873419 ns/iter (± 1316190) 54292590 ns/iter (± 625858) 1.08
parse_and_babelify_mootools 35498845 ns/iter (± 1136604) 34792751 ns/iter (± 1497998) 1.02
parse_and_babelify_underscore 4536196 ns/iter (± 129838) 4357539 ns/iter (± 82714) 1.04
parse_and_babelify_yui 33410617 ns/iter (± 363577) 31679970 ns/iter (± 861855) 1.05
html/minify/document/css_spec 45316638 ns/iter (± 253833) 43802813 ns/iter (± 219948) 1.03
html/minify/document/github 18738219 ns/iter (± 175366) 18519417 ns/iter (± 29817) 1.01
html/minify/document/stackoverflow 16400210 ns/iter (± 36376) 16420335 ns/iter (± 50431) 1.00
html/minify/document_fragment/css_spec 43461200 ns/iter (± 291797) 42894827 ns/iter (± 173534) 1.01
html/minify/document_fragment/github 18030153 ns/iter (± 38166) 17897369 ns/iter (± 42541) 1.01
html/minify/document_fragment/stackoverflow 15988277 ns/iter (± 126052) 15921202 ns/iter (± 49373) 1.00
html/document/visitor/compare/clone 344361 ns/iter (± 1701) 342933 ns/iter (± 1553) 1.00
html/document/visitor/compare/visit_mut_span 366846 ns/iter (± 2075) 373316 ns/iter (± 2309) 0.98
html/document/visitor/compare/visit_mut_span_panic 378970 ns/iter (± 2056) 377995 ns/iter (± 2242) 1.00
html/document/visitor/compare/fold_span 410913 ns/iter (± 1855) 404582 ns/iter (± 1508) 1.02
html/document/visitor/compare/fold_span_panic 466857 ns/iter (± 2775) 464831 ns/iter (± 1659) 1.00
html/document_fragment/visitor/compare/clone 341296 ns/iter (± 1708) 341830 ns/iter (± 2314) 1.00
html/document_fragment/visitor/compare/visit_mut_span 369346 ns/iter (± 1930) 367354 ns/iter (± 2386) 1.01
html/document_fragment/visitor/compare/visit_mut_span_panic 375233 ns/iter (± 2097) 376720 ns/iter (± 1774) 1.00
html/document_fragment/visitor/compare/fold_span 404880 ns/iter (± 2135) 406095 ns/iter (± 2780) 1.00
html/document_fragment/visitor/compare/fold_span_panic 464409 ns/iter (± 2712) 460394 ns/iter (± 2118) 1.01
html/lexer/css_2021_spec 15511276 ns/iter (± 7074) 15684074 ns/iter (± 6115) 0.99
html/lexer/github_com_17_05_2022 6042070 ns/iter (± 2388) 6068041 ns/iter (± 2844) 1.00
html/lexer/stackoverflow_com_17_05_2022 5637731 ns/iter (± 4240) 5668264 ns/iter (± 1579) 0.99
html/parser/parser_document/css_2021_spec 26223145 ns/iter (± 112285) 25906904 ns/iter (± 264886) 1.01
html/parser/parser_document/github_com_17_05_2022 8832893 ns/iter (± 8021) 8770675 ns/iter (± 3632) 1.01
html/parser/parser_document/stackoverflow_com_17_05_2022 7812422 ns/iter (± 4295) 7755788 ns/iter (± 7396) 1.01
html/parser/parser_document_fragment/css_2021_spec 25981841 ns/iter (± 154846) 26527777 ns/iter (± 206193) 0.98
html/parser/parser_document_fragment/github_com_17_05_2022 8777791 ns/iter (± 9558) 8793186 ns/iter (± 7315) 1.00
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7781604 ns/iter (± 32893) 7794495 ns/iter (± 12304) 1.00

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

Please sign in to comment.