Skip to content

Commit

Permalink
fix(es/decorator): Preserve evaluation order (#6972)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #6951.
  • Loading branch information
magic-akari authored Feb 23, 2023
1 parent 9e05f4c commit 703b340
Show file tree
Hide file tree
Showing 24 changed files with 234 additions and 63 deletions.
24 changes: 24 additions & 0 deletions crates/swc/tests/exec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,29 @@ fn init_helpers() -> Arc<PathBuf> {
}

fn create_matrix(entry: &Path) -> Vec<Options> {
// use_define_for_class_fields: false
// force to use [[Set]] instead of [[Define]]
// EsVersion should be lower than EsVersion::Es2022
let force_set_class_field = entry
.parent()
.map(|parent| parent.join(".swcrc"))
.and_then(|path| fs::read_to_string(path).ok())
.and_then(|content| {
jsonc_parser::parse_to_serde_value(
&content,
&jsonc_parser::ParseOptions {
allow_comments: true,
allow_trailing_commas: true,
allow_loose_object_property_names: false,
},
)
.ok()?
})
.and_then(|content| serde_json::from_value::<Config>(content).ok())
.and_then(|config| config.jsc.transform.into_inner())
.map(|c| c.use_define_for_class_fields == false.into())
.unwrap_or(false);

[
EsVersion::Es2022,
EsVersion::Es2021,
Expand All @@ -125,6 +148,7 @@ fn create_matrix(entry: &Path) -> Vec<Options> {
EsVersion::Es5,
]
.into_iter()
.filter(|e| !force_set_class_field || e < &EsVersion::Es2022)
.matrix(|| {
let default_es = Syntax::Es(EsConfig {
..Default::default()
Expand Down
5 changes: 1 addition & 4 deletions crates/swc/tests/fixture/issues-3xxx/3686/1/output/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@ const _tsDecorate = require("@swc/helpers/lib/_ts_decorate.js").default;
const CD = ()=>{};
const PD = ()=>{};
let ServiceError = class ServiceError1 extends Error {
constructor(...args){
super(...args);
this.code = ServiceError.Code.badResponse;
}
code = ServiceError.Code.badResponse;
name = "ServiceError.BadResponse";
};
_tsDecorate([
Expand Down
24 changes: 24 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/1/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"jsc": {
"parser": {
"syntax": "typescript",
"tsx": false,
"decorators": true
},
"target": "es5",
"loose": false,
"minify": {
"compress": false,
"mangle": false
},
"transform": {
"legacyDecorator": true,
"decoratorMetadata": true
}
},
"module": {
"type": "es6"
},
"minify": false,
"isModule": true
}
9 changes: 9 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/1/input/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class A {
@observable a = true;

b = false;

@foo static c = 1;

constructor() {}
}
15 changes: 15 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/1/output/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _ts_decorate from "@swc/helpers/src/_ts_decorate.mjs";
var A = function A() {
"use strict";
_class_call_check(this, A);
this.a = true;
this.b = false;
};
A.c = 1;
_ts_decorate([
observable
], A.prototype, "a", void 0);
_ts_decorate([
foo
], A, "c", void 0);
24 changes: 24 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/2/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"jsc": {
"parser": {
"syntax": "typescript",
"tsx": false,
"decorators": true
},
"target": "es2022",
"loose": false,
"minify": {
"compress": false,
"mangle": false
},
"transform": {
"legacyDecorator": true,
"decoratorMetadata": true
}
},
"module": {
"type": "es6"
},
"minify": false,
"isModule": true
}
9 changes: 9 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/2/input/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class A {
@observable a = true;

b = false;

@foo static c = 1;

constructor() {}
}
13 changes: 13 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/2/output/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import _ts_decorate from "@swc/helpers/src/_ts_decorate.mjs";
class A {
a = true;
b = false;
static c = 1;
constructor(){}
}
_ts_decorate([
observable
], A.prototype, "a", void 0);
_ts_decorate([
foo
], A, "c", void 0);
25 changes: 25 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/3/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"jsc": {
"parser": {
"syntax": "typescript",
"tsx": false,
"decorators": true
},
"target": "es2015",
"loose": false,
"minify": {
"compress": false,
"mangle": false
},
"transform": {
"legacyDecorator": true,
"decoratorMetadata": true,
"useDefineForClassFields": true
}
},
"module": {
"type": "es6"
},
"minify": false,
"isModule": true
}
9 changes: 9 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/3/input/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class A {
@observable a = true;

b = false;

@foo static c = 1;

constructor() {}
}
15 changes: 15 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/3/output/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import _define_property from "@swc/helpers/src/_define_property.mjs";
import _ts_decorate from "@swc/helpers/src/_ts_decorate.mjs";
class A {
constructor(){
_define_property(this, "a", true);
_define_property(this, "b", false);
}
}
_define_property(A, "c", 1);
_ts_decorate([
observable
], A.prototype, "a", void 0);
_ts_decorate([
foo
], A, "c", void 0);
25 changes: 25 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/4/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"jsc": {
"parser": {
"syntax": "typescript",
"tsx": false,
"decorators": true
},
"target": "es5",
"loose": false,
"minify": {
"compress": false,
"mangle": false
},
"transform": {
"legacyDecorator": true,
"decoratorMetadata": true,
"useDefineForClassFields": true
}
},
"module": {
"type": "es6"
},
"minify": false,
"isModule": true
}
9 changes: 9 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/4/input/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class A {
@observable a = true;

b = false;

@foo static c = 1;

constructor() {}
}
16 changes: 16 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6951/4/output/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _define_property from "@swc/helpers/src/_define_property.mjs";
import _ts_decorate from "@swc/helpers/src/_ts_decorate.mjs";
var A = function A() {
"use strict";
_class_call_check(this, A);
_define_property(this, "a", true);
_define_property(this, "b", false);
};
_define_property(A, "c", 1);
_ts_decorate([
observable
], A.prototype, "a", void 0);
_ts_decorate([
foo
], A, "c", void 0);
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
class A {
x;
x = 1;
constructor();
constructor(){
this.x = 1;
console.log(123);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
class Store {
constructor(){
this.doSomething = ()=>{
console.log("run");
};
this.doSomething();
}
doSomething;
doSomething = ()=>{
console.log("run");
};
}
__decorate([
action
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
class Store extends BaseStore {
constructor(){
super();
this.doSomething = ()=>{
console.log("run");
};
this.doSomething();
}
doSomething;
doSomething = ()=>{
console.log("run");
};
}
__decorate([
action
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
export class Example {
constructor(){
this.bar = "1";
this.baz = "2";
}
bar;
baz;
bar = "1";
baz = "2";
}
__decorate([
foo()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
class Example {
constructor(){
this.bar = "1";
this.baz = "2";
}
bar;
baz;
bar = "1";
baz = "2";
}
__decorate([
foo()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
export default class X {
constructor(){
this.prop = "";
}
prop: string;
prop: string = "";
}
__decorate([
networked
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -466,9 +466,7 @@ test!(
"
export default class X {
constructor(){
this.anything = 0;
}
anything = 0;
x() {
const localVar = aFunctionSomewhere();
return localVar;
Expand Down
26 changes: 1 addition & 25 deletions crates/swc_ecma_transforms_proposal/src/decorators/legacy/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,9 @@ enum EnumKind {
Num,
}

pub(super) fn new(metadata: bool, use_define_for_class_fields: bool) -> TscDecorator {
pub(super) fn new(metadata: bool) -> TscDecorator {
TscDecorator {
metadata,
use_define_for_class_fields,
enums: Default::default(),
vars: Default::default(),
appended_exprs: Default::default(),
Expand All @@ -36,7 +35,6 @@ pub(super) fn new(metadata: bool, use_define_for_class_fields: bool) -> TscDecor

pub(super) struct TscDecorator {
metadata: bool,
use_define_for_class_fields: bool,

enums: AHashMap<JsWord, EnumKind>,

Expand Down Expand Up @@ -352,28 +350,6 @@ impl VisitMut for TscDecorator {
key.as_arg(),
undefined(DUMMY_SP).as_arg(),
);

if !self.use_define_for_class_fields && !c.is_static {
if let Some(init) = c.value.take() {
self.constructor_exprs
.push(Box::new(Expr::Assign(AssignExpr {
span: c.span,
op: op!("="),
left: PatOrExpr::Expr(Box::new(Expr::Member(MemberExpr {
span: DUMMY_SP,
obj: Box::new(Expr::This(ThisExpr { span: DUMMY_SP })),
prop: match &c.key {
PropName::Ident(i) => MemberProp::Ident(i.clone()),
_ => MemberProp::Computed(ComputedPropName {
span: DUMMY_SP,
expr: Box::new(prop_name_to_expr_value(c.key.clone())),
}),
},
}))),
right: init,
})));
}
}
}
}
}
Expand Down
Loading

1 comment on commit 703b340

@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: 703b340 Previous: f1e7a2a Ratio
es/full/bugs-1 304264 ns/iter (± 18725) 319124 ns/iter (± 9884) 0.95
es/full/minify/libraries/antd 1702060471 ns/iter (± 63124223) 1816191457 ns/iter (± 10545538) 0.94
es/full/minify/libraries/d3 293293839 ns/iter (± 9337089) 348426979 ns/iter (± 10579789) 0.84
es/full/minify/libraries/echarts 1302695154 ns/iter (± 38630782) 1391004990 ns/iter (± 10134679) 0.94
es/full/minify/libraries/jquery 92665225 ns/iter (± 1002287) 98902408 ns/iter (± 1274635) 0.94
es/full/minify/libraries/lodash 114371951 ns/iter (± 3956802) 113391829 ns/iter (± 1400507) 1.01
es/full/minify/libraries/moment 59053723 ns/iter (± 2854663) 55998264 ns/iter (± 604802) 1.05
es/full/minify/libraries/react 19365790 ns/iter (± 225339) 20230606 ns/iter (± 230643) 0.96
es/full/minify/libraries/terser 261001956 ns/iter (± 8739898) 276924804 ns/iter (± 3590042) 0.94
es/full/minify/libraries/three 450468609 ns/iter (± 9665345) 507574596 ns/iter (± 5007173) 0.89
es/full/minify/libraries/typescript 3214308102 ns/iter (± 38658948) 3346808868 ns/iter (± 48454365) 0.96
es/full/minify/libraries/victory 707274353 ns/iter (± 41081884) 779253791 ns/iter (± 13075467) 0.91
es/full/minify/libraries/vue 136004017 ns/iter (± 5171544) 146145770 ns/iter (± 2536364) 0.93
es/full/codegen/es3 26161 ns/iter (± 169) 26796 ns/iter (± 323) 0.98
es/full/codegen/es5 26161 ns/iter (± 67) 26810 ns/iter (± 86) 0.98
es/full/codegen/es2015 26235 ns/iter (± 41) 26847 ns/iter (± 51) 0.98
es/full/codegen/es2016 26158 ns/iter (± 61) 26850 ns/iter (± 71) 0.97
es/full/codegen/es2017 26005 ns/iter (± 38) 26975 ns/iter (± 48) 0.96
es/full/codegen/es2018 26174 ns/iter (± 37) 26841 ns/iter (± 46) 0.98
es/full/codegen/es2019 26144 ns/iter (± 58) 26808 ns/iter (± 32) 0.98
es/full/codegen/es2020 26162 ns/iter (± 50) 26837 ns/iter (± 79) 0.97
es/full/all/es3 172161168 ns/iter (± 2459783) 177004430 ns/iter (± 2862217) 0.97
es/full/all/es5 161976068 ns/iter (± 2795466) 165671731 ns/iter (± 3007440) 0.98
es/full/all/es2015 128629979 ns/iter (± 4165199) 134169168 ns/iter (± 1938983) 0.96
es/full/all/es2016 121735057 ns/iter (± 3115656) 130368999 ns/iter (± 2688843) 0.93
es/full/all/es2017 120762258 ns/iter (± 1184185) 129971539 ns/iter (± 2844180) 0.93
es/full/all/es2018 121747313 ns/iter (± 2727984) 126022078 ns/iter (± 2214580) 0.97
es/full/all/es2019 119111352 ns/iter (± 923116) 127113923 ns/iter (± 2656535) 0.94
es/full/all/es2020 113135622 ns/iter (± 579638) 119686102 ns/iter (± 957085) 0.95
es/full/parser 531731 ns/iter (± 7240) 544859 ns/iter (± 9588) 0.98
es/full/base/fixer 21815 ns/iter (± 26) 22038 ns/iter (± 54) 0.99
es/full/base/resolver_and_hygiene 81972 ns/iter (± 128) 82324 ns/iter (± 582) 1.00
serialization of ast node 123 ns/iter (± 0) 122 ns/iter (± 0) 1.01
serialization of serde 126 ns/iter (± 0) 126 ns/iter (± 0) 1
css/minify/libraries/bootstrap 29101708 ns/iter (± 722761) 29615617 ns/iter (± 262722) 0.98
css/visitor/compare/clone 2065333 ns/iter (± 14020) 2185416 ns/iter (± 28277) 0.95
css/visitor/compare/visit_mut_span 2246451 ns/iter (± 4449) 2419510 ns/iter (± 23782) 0.93
css/visitor/compare/visit_mut_span_panic 2327892 ns/iter (± 7983) 2499851 ns/iter (± 34983) 0.93
css/visitor/compare/fold_span 3043950 ns/iter (± 20592) 3339155 ns/iter (± 71640) 0.91
css/visitor/compare/fold_span_panic 3187356 ns/iter (± 39368) 3428022 ns/iter (± 51029) 0.93
css/lexer/bootstrap_5_1_3 5196369 ns/iter (± 19009) 5179075 ns/iter (± 2387) 1.00
css/lexer/foundation_6_7_4 4369073 ns/iter (± 3208) 4355357 ns/iter (± 1203) 1.00
css/lexer/tailwind_3_1_1 829358 ns/iter (± 609) 829657 ns/iter (± 1640) 1.00
css/parser/bootstrap_5_1_3 21604074 ns/iter (± 30029) 22193237 ns/iter (± 85463) 0.97
css/parser/foundation_6_7_4 17279650 ns/iter (± 206902) 17760499 ns/iter (± 91153) 0.97
css/parser/tailwind_3_1_1 3315826 ns/iter (± 3220) 3344050 ns/iter (± 3045) 0.99
es/codegen/colors 328143 ns/iter (± 185419) 322703 ns/iter (± 180358) 1.02
es/codegen/large 1226842 ns/iter (± 635588) 1258620 ns/iter (± 634982) 0.97
es/codegen/with-parser/colors 48601 ns/iter (± 451) 48105 ns/iter (± 315) 1.01
es/codegen/with-parser/large 534314 ns/iter (± 1622) 533943 ns/iter (± 1989) 1.00
es/minify/libraries/antd 1445946707 ns/iter (± 20954529) 1559716006 ns/iter (± 14977139) 0.93
es/minify/libraries/d3 256443038 ns/iter (± 7291819) 288165505 ns/iter (± 6418781) 0.89
es/minify/libraries/echarts 1077073456 ns/iter (± 19659437) 1201514193 ns/iter (± 14426656) 0.90
es/minify/libraries/jquery 77620070 ns/iter (± 2508542) 83360825 ns/iter (± 1802411) 0.93
es/minify/libraries/lodash 96198155 ns/iter (± 3147347) 100535353 ns/iter (± 1219734) 0.96
es/minify/libraries/moment 45984525 ns/iter (± 219343) 47863518 ns/iter (± 244985) 0.96
es/minify/libraries/react 16872065 ns/iter (± 155507) 17829580 ns/iter (± 135527) 0.95
es/minify/libraries/terser 210459963 ns/iter (± 2755767) 235721460 ns/iter (± 2440573) 0.89
es/minify/libraries/three 354572723 ns/iter (± 3622229) 419586748 ns/iter (± 6570965) 0.85
es/minify/libraries/typescript 2650826777 ns/iter (± 18184250) 2810844938 ns/iter (± 17196685) 0.94
es/minify/libraries/victory 580261649 ns/iter (± 19308635) 657977031 ns/iter (± 6680169) 0.88
es/minify/libraries/vue 115840088 ns/iter (± 913563) 124311885 ns/iter (± 1590100) 0.93
es/visitor/compare/clone 2400181 ns/iter (± 12802) 2527561 ns/iter (± 40817) 0.95
es/visitor/compare/visit_mut_span 2749216 ns/iter (± 4971) 2993986 ns/iter (± 51253) 0.92
es/visitor/compare/visit_mut_span_panic 2837944 ns/iter (± 9005) 3055733 ns/iter (± 32557) 0.93
es/visitor/compare/fold_span 3937118 ns/iter (± 22920) 4192138 ns/iter (± 68683) 0.94
es/visitor/compare/fold_span_panic 4057612 ns/iter (± 12853) 4384272 ns/iter (± 40849) 0.93
es/lexer/colors 17306 ns/iter (± 9) 17271 ns/iter (± 344) 1.00
es/lexer/angular 8249130 ns/iter (± 16547) 8239712 ns/iter (± 4715) 1.00
es/lexer/backbone 1080928 ns/iter (± 743) 1078981 ns/iter (± 1032) 1.00
es/lexer/jquery 5967689 ns/iter (± 7071) 5950005 ns/iter (± 3145) 1.00
es/lexer/jquery mobile 9199824 ns/iter (± 9134) 9205772 ns/iter (± 5973) 1.00
es/lexer/mootools 4677997 ns/iter (± 3525) 4664796 ns/iter (± 5299) 1.00
es/lexer/underscore 900802 ns/iter (± 1162) 899807 ns/iter (± 1717) 1.00
es/lexer/three 27884885 ns/iter (± 18007) 27794642 ns/iter (± 46809) 1.00
es/lexer/yui 5055496 ns/iter (± 3445) 5055648 ns/iter (± 3024) 1.00
es/parser/colors 31279 ns/iter (± 46) 30542 ns/iter (± 53) 1.02
es/parser/angular 15995060 ns/iter (± 105030) 16309040 ns/iter (± 277578) 0.98
es/parser/backbone 2330142 ns/iter (± 13026) 2337965 ns/iter (± 19105) 1.00
es/parser/jquery 12481413 ns/iter (± 69346) 13106008 ns/iter (± 145635) 0.95
es/parser/jquery mobile 19618881 ns/iter (± 382061) 20643442 ns/iter (± 199545) 0.95
es/parser/mootools 9453955 ns/iter (± 81602) 9744003 ns/iter (± 87805) 0.97
es/parser/underscore 1975438 ns/iter (± 14305) 1971869 ns/iter (± 11407) 1.00
es/parser/three 56393700 ns/iter (± 1566968) 60602998 ns/iter (± 284194) 0.93
es/parser/yui 9513597 ns/iter (± 113023) 9827417 ns/iter (± 125563) 0.97
es/preset-env/usage/builtin_type 140542 ns/iter (± 32069) 139724 ns/iter (± 30613) 1.01
es/preset-env/usage/property 20724 ns/iter (± 98) 21198 ns/iter (± 86) 0.98
es/resolver/typescript 122331998 ns/iter (± 4297022) 123767744 ns/iter (± 2385365) 0.99
es/fixer/typescript 95924597 ns/iter (± 705164) 98633557 ns/iter (± 1003729) 0.97
es/hygiene/typescript 198977278 ns/iter (± 1700925) 208313113 ns/iter (± 2159494) 0.96
es/resolver_with_hygiene/typescript 341946381 ns/iter (± 2985590) 365293465 ns/iter (± 3415141) 0.94
es/visitor/base-perf/module_clone 75118 ns/iter (± 1600) 76366 ns/iter (± 2143) 0.98
es/visitor/base-perf/fold_empty 82588 ns/iter (± 2203) 86171 ns/iter (± 984) 0.96
es/visitor/base-perf/fold_noop_impl_all 83113 ns/iter (± 2465) 86894 ns/iter (± 992) 0.96
es/visitor/base-perf/fold_noop_impl_vec 84584 ns/iter (± 1554) 87127 ns/iter (± 1274) 0.97
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 60 ns/iter (± 0) 59 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_boxed 109 ns/iter (± 0) 105 ns/iter (± 0) 1.04
es/visitor/base-perf/boxing_unboxed 102 ns/iter (± 0) 103 ns/iter (± 0) 0.99
es/visitor/base-perf/visit_contains_this 3631 ns/iter (± 71) 3425 ns/iter (± 74) 1.06
es/base/parallel/resolver/typescript 5621079102 ns/iter (± 563113624) 5635739654 ns/iter (± 452131589) 1.00
es/base/parallel/hygiene/typescript 2418721068 ns/iter (± 20453432) 2577307155 ns/iter (± 59061565) 0.94
misc/visitors/time-complexity/time 5 96 ns/iter (± 0) 94 ns/iter (± 0) 1.02
misc/visitors/time-complexity/time 10 347 ns/iter (± 5) 311 ns/iter (± 0) 1.12
misc/visitors/time-complexity/time 15 656 ns/iter (± 1) 634 ns/iter (± 1) 1.03
misc/visitors/time-complexity/time 20 1226 ns/iter (± 2) 1175 ns/iter (± 5) 1.04
misc/visitors/time-complexity/time 40 6199 ns/iter (± 42) 6136 ns/iter (± 38) 1.01
misc/visitors/time-complexity/time 60 15590 ns/iter (± 61) 15640 ns/iter (± 144) 1.00
es/full-target/es2016 189266 ns/iter (± 597) 187592 ns/iter (± 2205) 1.01
es/full-target/es2017 184621 ns/iter (± 717) 183756 ns/iter (± 2084) 1.00
es/full-target/es2018 173233 ns/iter (± 874) 170923 ns/iter (± 442) 1.01
es2020_nullish_coalescing 67886 ns/iter (± 266) 66674 ns/iter (± 293) 1.02
es2020_optional_chaining 96829 ns/iter (± 282) 95739 ns/iter (± 413) 1.01
es2022_class_properties 94565 ns/iter (± 279) 93609 ns/iter (± 135) 1.01
es2018_object_rest_spread 72716 ns/iter (± 118) 71390 ns/iter (± 223) 1.02
es2019_optional_catch_binding 61990 ns/iter (± 113) 61240 ns/iter (± 424) 1.01
es2017_async_to_generator 62366 ns/iter (± 171) 61767 ns/iter (± 126) 1.01
es2016_exponentiation 66059 ns/iter (± 143) 65224 ns/iter (± 228) 1.01
es2015_arrow 71712 ns/iter (± 345) 70217 ns/iter (± 229) 1.02
es2015_block_scoped_fn 67320 ns/iter (± 107) 66792 ns/iter (± 474) 1.01
es2015_block_scoping 139518 ns/iter (± 5933) 148508 ns/iter (± 8711) 0.94
es2015_classes 117527 ns/iter (± 435) 117140 ns/iter (± 661) 1.00
es2015_computed_props 62297 ns/iter (± 213) 61013 ns/iter (± 61) 1.02
es2015_destructuring 117857 ns/iter (± 235) 115409 ns/iter (± 270) 1.02
es2015_duplicate_keys 65025 ns/iter (± 168) 63779 ns/iter (± 93) 1.02
es2015_parameters 81218 ns/iter (± 150) 79765 ns/iter (± 106) 1.02
es2015_fn_name 68200 ns/iter (± 414) 67316 ns/iter (± 795) 1.01
es2015_for_of 65118 ns/iter (± 171) 64601 ns/iter (± 247) 1.01
es2015_instanceof 64464 ns/iter (± 106) 62979 ns/iter (± 132) 1.02
es2015_shorthand_property 61912 ns/iter (± 157) 61000 ns/iter (± 96) 1.01
es2015_spread 62076 ns/iter (± 159) 61098 ns/iter (± 291) 1.02
es2015_sticky_regex 63041 ns/iter (± 127) 62321 ns/iter (± 95) 1.01
es2015_typeof_symbol 63494 ns/iter (± 143) 62362 ns/iter (± 101) 1.02
es/transform/baseline/base 52557 ns/iter (± 242) 51652 ns/iter (± 106) 1.02
es/transform/baseline/common_reserved_word 63543 ns/iter (± 194) 63055 ns/iter (± 224) 1.01
es/transform/baseline/common_typescript 143465 ns/iter (± 460) 144515 ns/iter (± 211) 0.99
es/target/es3 170878 ns/iter (± 752) 169415 ns/iter (± 370) 1.01
es/target/es2015 630363 ns/iter (± 1394) 632979 ns/iter (± 2876) 1.00
es/target/es2016 66218 ns/iter (± 138) 65303 ns/iter (± 161) 1.01
es/target/es2017 62582 ns/iter (± 99) 61921 ns/iter (± 374) 1.01
es/target/es2018 83306 ns/iter (± 205) 81288 ns/iter (± 95) 1.02
es/target/es2020 134303 ns/iter (± 325) 132189 ns/iter (± 199) 1.02
babelify-only 676858 ns/iter (± 1667) 692077 ns/iter (± 10945) 0.98
parse_and_babelify_angular 46305964 ns/iter (± 863644) 51811109 ns/iter (± 793547) 0.89
parse_and_babelify_backbone 5543508 ns/iter (± 99160) 7026651 ns/iter (± 226177) 0.79
parse_and_babelify_jquery 33294664 ns/iter (± 420011) 38574242 ns/iter (± 1016196) 0.86
parse_and_babelify_jquery_mobile 56788379 ns/iter (± 782968) 63834745 ns/iter (± 3142231) 0.89
parse_and_babelify_mootools 34542232 ns/iter (± 439631) 39218119 ns/iter (± 1035297) 0.88
parse_and_babelify_underscore 4418677 ns/iter (± 38680) 5156169 ns/iter (± 102953) 0.86
parse_and_babelify_yui 39179221 ns/iter (± 1025015) 41411494 ns/iter (± 1889554) 0.95
html/minify/document/css_spec 42523372 ns/iter (± 250212) 45614111 ns/iter (± 998439) 0.93
html/minify/document/github 17613099 ns/iter (± 304840) 18764256 ns/iter (± 357512) 0.94
html/minify/document/stackoverflow 15797705 ns/iter (± 70357) 16890328 ns/iter (± 231859) 0.94
html/minify/document_fragment/css_spec 40849023 ns/iter (± 214812) 45174024 ns/iter (± 399244) 0.90
html/minify/document_fragment/github 16739221 ns/iter (± 47283) 17770539 ns/iter (± 215449) 0.94
html/minify/document_fragment/stackoverflow 15218693 ns/iter (± 61349) 16464212 ns/iter (± 227878) 0.92
html/document/visitor/compare/clone 340375 ns/iter (± 2540) 348345 ns/iter (± 3746) 0.98
html/document/visitor/compare/visit_mut_span 370734 ns/iter (± 2330) 374962 ns/iter (± 3470) 0.99
html/document/visitor/compare/visit_mut_span_panic 380096 ns/iter (± 2233) 388399 ns/iter (± 2754) 0.98
html/document/visitor/compare/fold_span 409237 ns/iter (± 2237) 409595 ns/iter (± 2592) 1.00
html/document/visitor/compare/fold_span_panic 458787 ns/iter (± 2729) 468622 ns/iter (± 5788) 0.98
html/document_fragment/visitor/compare/clone 345820 ns/iter (± 2832) 343039 ns/iter (± 1455) 1.01
html/document_fragment/visitor/compare/visit_mut_span 371102 ns/iter (± 1869) 369938 ns/iter (± 1388) 1.00
html/document_fragment/visitor/compare/visit_mut_span_panic 368980 ns/iter (± 2337) 382254 ns/iter (± 2697) 0.97
html/document_fragment/visitor/compare/fold_span 399500 ns/iter (± 2470) 418987 ns/iter (± 2517) 0.95
html/document_fragment/visitor/compare/fold_span_panic 465459 ns/iter (± 3188) 465324 ns/iter (± 2798) 1.00
html/lexer/css_2021_spec 15487808 ns/iter (± 33638) 15461320 ns/iter (± 17766) 1.00
html/lexer/github_com_17_05_2022 5999005 ns/iter (± 15112) 6002031 ns/iter (± 3296) 1.00
html/lexer/stackoverflow_com_17_05_2022 5629545 ns/iter (± 4100) 5611148 ns/iter (± 3037) 1.00
html/parser/parser_document/css_2021_spec 25739910 ns/iter (± 145870) 27841304 ns/iter (± 372622) 0.92
html/parser/parser_document/github_com_17_05_2022 8778657 ns/iter (± 21330) 8990186 ns/iter (± 40625) 0.98
html/parser/parser_document/stackoverflow_com_17_05_2022 7705061 ns/iter (± 21355) 7906776 ns/iter (± 33940) 0.97
html/parser/parser_document_fragment/css_2021_spec 25848135 ns/iter (± 100298) 28303439 ns/iter (± 291133) 0.91
html/parser/parser_document_fragment/github_com_17_05_2022 8793363 ns/iter (± 17760) 9090776 ns/iter (± 75126) 0.97
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7797012 ns/iter (± 17572) 7895209 ns/iter (± 47639) 0.99

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

Please sign in to comment.