Skip to content

Commit 703b340

Browse files
authoredFeb 23, 2023
fix(es/decorator): Preserve evaluation order (#6972)
**Related issue:** - Closes #6951.
1 parent 9e05f4c commit 703b340

File tree

24 files changed

+234
-63
lines changed

24 files changed

+234
-63
lines changed
 

‎crates/swc/tests/exec.rs

+24
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,29 @@ fn init_helpers() -> Arc<PathBuf> {
113113
}
114114

115115
fn create_matrix(entry: &Path) -> Vec<Options> {
116+
// use_define_for_class_fields: false
117+
// force to use [[Set]] instead of [[Define]]
118+
// EsVersion should be lower than EsVersion::Es2022
119+
let force_set_class_field = entry
120+
.parent()
121+
.map(|parent| parent.join(".swcrc"))
122+
.and_then(|path| fs::read_to_string(path).ok())
123+
.and_then(|content| {
124+
jsonc_parser::parse_to_serde_value(
125+
&content,
126+
&jsonc_parser::ParseOptions {
127+
allow_comments: true,
128+
allow_trailing_commas: true,
129+
allow_loose_object_property_names: false,
130+
},
131+
)
132+
.ok()?
133+
})
134+
.and_then(|content| serde_json::from_value::<Config>(content).ok())
135+
.and_then(|config| config.jsc.transform.into_inner())
136+
.map(|c| c.use_define_for_class_fields == false.into())
137+
.unwrap_or(false);
138+
116139
[
117140
EsVersion::Es2022,
118141
EsVersion::Es2021,
@@ -125,6 +148,7 @@ fn create_matrix(entry: &Path) -> Vec<Options> {
125148
EsVersion::Es5,
126149
]
127150
.into_iter()
151+
.filter(|e| !force_set_class_field || e < &EsVersion::Es2022)
128152
.matrix(|| {
129153
let default_es = Syntax::Es(EsConfig {
130154
..Default::default()

‎crates/swc/tests/fixture/issues-3xxx/3686/1/output/index.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ const _tsDecorate = require("@swc/helpers/lib/_ts_decorate.js").default;
1010
const CD = ()=>{};
1111
const PD = ()=>{};
1212
let ServiceError = class ServiceError1 extends Error {
13-
constructor(...args){
14-
super(...args);
15-
this.code = ServiceError.Code.badResponse;
16-
}
13+
code = ServiceError.Code.badResponse;
1714
name = "ServiceError.BadResponse";
1815
};
1916
_tsDecorate([
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"jsc": {
3+
"parser": {
4+
"syntax": "typescript",
5+
"tsx": false,
6+
"decorators": true
7+
},
8+
"target": "es5",
9+
"loose": false,
10+
"minify": {
11+
"compress": false,
12+
"mangle": false
13+
},
14+
"transform": {
15+
"legacyDecorator": true,
16+
"decoratorMetadata": true
17+
}
18+
},
19+
"module": {
20+
"type": "es6"
21+
},
22+
"minify": false,
23+
"isModule": true
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class A {
2+
@observable a = true;
3+
4+
b = false;
5+
6+
@foo static c = 1;
7+
8+
constructor() {}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
2+
import _ts_decorate from "@swc/helpers/src/_ts_decorate.mjs";
3+
var A = function A() {
4+
"use strict";
5+
_class_call_check(this, A);
6+
this.a = true;
7+
this.b = false;
8+
};
9+
A.c = 1;
10+
_ts_decorate([
11+
observable
12+
], A.prototype, "a", void 0);
13+
_ts_decorate([
14+
foo
15+
], A, "c", void 0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"jsc": {
3+
"parser": {
4+
"syntax": "typescript",
5+
"tsx": false,
6+
"decorators": true
7+
},
8+
"target": "es2022",
9+
"loose": false,
10+
"minify": {
11+
"compress": false,
12+
"mangle": false
13+
},
14+
"transform": {
15+
"legacyDecorator": true,
16+
"decoratorMetadata": true
17+
}
18+
},
19+
"module": {
20+
"type": "es6"
21+
},
22+
"minify": false,
23+
"isModule": true
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class A {
2+
@observable a = true;
3+
4+
b = false;
5+
6+
@foo static c = 1;
7+
8+
constructor() {}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import _ts_decorate from "@swc/helpers/src/_ts_decorate.mjs";
2+
class A {
3+
a = true;
4+
b = false;
5+
static c = 1;
6+
constructor(){}
7+
}
8+
_ts_decorate([
9+
observable
10+
], A.prototype, "a", void 0);
11+
_ts_decorate([
12+
foo
13+
], A, "c", void 0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"jsc": {
3+
"parser": {
4+
"syntax": "typescript",
5+
"tsx": false,
6+
"decorators": true
7+
},
8+
"target": "es2015",
9+
"loose": false,
10+
"minify": {
11+
"compress": false,
12+
"mangle": false
13+
},
14+
"transform": {
15+
"legacyDecorator": true,
16+
"decoratorMetadata": true,
17+
"useDefineForClassFields": true
18+
}
19+
},
20+
"module": {
21+
"type": "es6"
22+
},
23+
"minify": false,
24+
"isModule": true
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class A {
2+
@observable a = true;
3+
4+
b = false;
5+
6+
@foo static c = 1;
7+
8+
constructor() {}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import _define_property from "@swc/helpers/src/_define_property.mjs";
2+
import _ts_decorate from "@swc/helpers/src/_ts_decorate.mjs";
3+
class A {
4+
constructor(){
5+
_define_property(this, "a", true);
6+
_define_property(this, "b", false);
7+
}
8+
}
9+
_define_property(A, "c", 1);
10+
_ts_decorate([
11+
observable
12+
], A.prototype, "a", void 0);
13+
_ts_decorate([
14+
foo
15+
], A, "c", void 0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"jsc": {
3+
"parser": {
4+
"syntax": "typescript",
5+
"tsx": false,
6+
"decorators": true
7+
},
8+
"target": "es5",
9+
"loose": false,
10+
"minify": {
11+
"compress": false,
12+
"mangle": false
13+
},
14+
"transform": {
15+
"legacyDecorator": true,
16+
"decoratorMetadata": true,
17+
"useDefineForClassFields": true
18+
}
19+
},
20+
"module": {
21+
"type": "es6"
22+
},
23+
"minify": false,
24+
"isModule": true
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class A {
2+
@observable a = true;
3+
4+
b = false;
5+
6+
@foo static c = 1;
7+
8+
constructor() {}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
2+
import _define_property from "@swc/helpers/src/_define_property.mjs";
3+
import _ts_decorate from "@swc/helpers/src/_ts_decorate.mjs";
4+
var A = function A() {
5+
"use strict";
6+
_class_call_check(this, A);
7+
_define_property(this, "a", true);
8+
_define_property(this, "b", false);
9+
};
10+
_define_property(A, "c", 1);
11+
_ts_decorate([
12+
observable
13+
], A.prototype, "a", void 0);
14+
_ts_decorate([
15+
foo
16+
], A, "c", void 0);

‎crates/swc_ecma_transforms/tests/fixture/legacy-metadata/issues/3979/output.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
class A {
2-
x;
2+
x = 1;
33
constructor();
44
constructor(){
5-
this.x = 1;
65
console.log(123);
76
}
87
}

‎crates/swc_ecma_transforms/tests/fixture/legacy-only/issues/1913/1/output.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
class Store {
22
constructor(){
3-
this.doSomething = ()=>{
4-
console.log("run");
5-
};
63
this.doSomething();
74
}
8-
doSomething;
5+
doSomething = ()=>{
6+
console.log("run");
7+
};
98
}
109
__decorate([
1110
action

‎crates/swc_ecma_transforms/tests/fixture/legacy-only/issues/1913/2/output.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
class Store extends BaseStore {
22
constructor(){
33
super();
4-
this.doSomething = ()=>{
5-
console.log("run");
6-
};
74
this.doSomething();
85
}
9-
doSomething;
6+
doSomething = ()=>{
7+
console.log("run");
8+
};
109
}
1110
__decorate([
1211
action

‎crates/swc_ecma_transforms/tests/fixture/legacy-only/issues/591/1/output.ts

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
export class Example {
2-
constructor(){
3-
this.bar = "1";
4-
this.baz = "2";
5-
}
6-
bar;
7-
baz;
2+
bar = "1";
3+
baz = "2";
84
}
95
__decorate([
106
foo()

‎crates/swc_ecma_transforms/tests/fixture/legacy-only/issues/591/2/output.ts

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
class Example {
2-
constructor(){
3-
this.bar = "1";
4-
this.baz = "2";
5-
}
6-
bar;
7-
baz;
2+
bar = "1";
3+
baz = "2";
84
}
95
__decorate([
106
foo()

‎crates/swc_ecma_transforms/tests/fixture/legacy-only/issues/879/1/output.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
export default class X {
2-
constructor(){
3-
this.prop = "";
4-
}
5-
prop: string;
2+
prop: string = "";
63
}
74
__decorate([
85
networked

‎crates/swc_ecma_transforms_optimization/tests/simplify_dce.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -466,9 +466,7 @@ test!(
466466
"
467467
468468
export default class X {
469-
constructor(){
470-
this.anything = 0;
471-
}
469+
anything = 0;
472470
x() {
473471
const localVar = aFunctionSomewhere();
474472
return localVar;

‎crates/swc_ecma_transforms_proposal/src/decorators/legacy/mod.rs

+1-25
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,9 @@ enum EnumKind {
2020
Num,
2121
}
2222

23-
pub(super) fn new(metadata: bool, use_define_for_class_fields: bool) -> TscDecorator {
23+
pub(super) fn new(metadata: bool) -> TscDecorator {
2424
TscDecorator {
2525
metadata,
26-
use_define_for_class_fields,
2726
enums: Default::default(),
2827
vars: Default::default(),
2928
appended_exprs: Default::default(),
@@ -36,7 +35,6 @@ pub(super) fn new(metadata: bool, use_define_for_class_fields: bool) -> TscDecor
3635

3736
pub(super) struct TscDecorator {
3837
metadata: bool,
39-
use_define_for_class_fields: bool,
4038

4139
enums: AHashMap<JsWord, EnumKind>,
4240

@@ -352,28 +350,6 @@ impl VisitMut for TscDecorator {
352350
key.as_arg(),
353351
undefined(DUMMY_SP).as_arg(),
354352
);
355-
356-
if !self.use_define_for_class_fields && !c.is_static {
357-
if let Some(init) = c.value.take() {
358-
self.constructor_exprs
359-
.push(Box::new(Expr::Assign(AssignExpr {
360-
span: c.span,
361-
op: op!("="),
362-
left: PatOrExpr::Expr(Box::new(Expr::Member(MemberExpr {
363-
span: DUMMY_SP,
364-
obj: Box::new(Expr::This(ThisExpr { span: DUMMY_SP })),
365-
prop: match &c.key {
366-
PropName::Ident(i) => MemberProp::Ident(i.clone()),
367-
_ => MemberProp::Computed(ComputedPropName {
368-
span: DUMMY_SP,
369-
expr: Box::new(prop_name_to_expr_value(c.key.clone())),
370-
}),
371-
},
372-
}))),
373-
right: init,
374-
})));
375-
}
376-
}
377353
}
378354
}
379355
}

‎crates/swc_ecma_transforms_proposal/src/decorators/mod.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,7 @@ mod legacy;
5757
/// ```
5858
pub fn decorators(c: Config) -> impl Fold {
5959
if c.legacy {
60-
Either::Left(as_folder(self::legacy::new(
61-
c.emit_metadata,
62-
c.use_define_for_class_fields,
63-
)))
60+
Either::Left(as_folder(self::legacy::new(c.emit_metadata)))
6461
} else {
6562
if c.emit_metadata {
6663
unimplemented!("emitting decorator metadata while using new proposal")

‎crates/swc_ecma_transforms_typescript/src/strip.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ pub struct Config {
6565
/// When running `tsc` with configuration `"target": "<ES6-ES2020>",
6666
/// "useDefineForClassFields": true`, TS class fields are transformed to
6767
/// `Object.defineProperty()` statements. You must additionally apply the
68-
/// `swc_ecmascript::transforms::compat::es2022::class_properties()` pass to
68+
/// [swc_ecma_transforms_compat::es2022::class_properties()] pass to
6969
/// get this backward-compatible output.
7070
#[serde(default)]
7171
pub use_define_for_class_fields: bool,

1 commit comments

Comments
 (1)

github-actions[bot] commented on Feb 23, 2023

@github-actions[bot]

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.