Skip to content

Commit

Permalink
fix(es/compat): Improve destructuring pass (#6412)
Browse files Browse the repository at this point in the history
  • Loading branch information
magic-akari committed Nov 13, 2022
1 parent 81816f9 commit 6728603
Show file tree
Hide file tree
Showing 76 changed files with 328 additions and 290 deletions.
@@ -1,14 +1,14 @@
import _async_to_generator from "@swc/helpers/src/_async_to_generator.mjs";
import _throw from "@swc/helpers/src/_throw.mjs";
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _ts_generator from "@swc/helpers/src/_ts_generator.mjs";
function foo() {
return _foo.apply(this, arguments);
}
function _foo() {
_foo = _async_to_generator(function() {
var tmp, _ref, _ref;
var tmp, ref;
return _ts_generator(this, function(_state) {
tmp = baz.bar, _ref = tmp === void 0 ? {} : tmp, _ref = _ref !== null ? _ref : _throw(new TypeError("Cannot destructure undefined"));
tmp = baz.bar, ref = _object_destructuring_empty(tmp === void 0 ? {} : tmp);
return [
2
];
Expand Down
@@ -1,3 +1,4 @@
import _extends from "@swc/helpers/src/_extends.mjs";
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
var a = {};
var b = _extends({}, a);
var b = _extends({}, _object_destructuring_empty(a));
Expand Up @@ -14,9 +14,10 @@ _export(exports, {
foo: ()=>foo
});
const _extends = require("@swc/helpers/lib/_extends.js").default;
const _objectDestructuringEmpty = require("@swc/helpers/lib/_object_destructuring_empty.js").default;
const a = 1;
const b = 2;
var foo = _extends({}, {
var foo = _extends({}, _objectDestructuringEmpty({
a: 1,
b: 2
});
}));
2 changes: 2 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6306/input/index.js
@@ -0,0 +1,2 @@
"use strict";
x = {} = null;
3 changes: 3 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6306/output/index.js
@@ -0,0 +1,3 @@
"use strict";
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
x = _object_destructuring_empty(null);
1 change: 1 addition & 0 deletions crates/swc/tests/fixture/issues-6xxx/6330/input/input.js
@@ -0,0 +1 @@
new (function ({}) {})();
4 changes: 4 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6330/output/input.js
@@ -0,0 +1,4 @@
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
new function(param) {
var ref = _object_destructuring_empty(param);
}();
5 changes: 5 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6390/input/input.js
@@ -0,0 +1,5 @@
var { ...x } = null;
var { ...y } = undefined;

var z;
({...z} = null);
7 changes: 7 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6390/output/input.js
@@ -0,0 +1,7 @@
import _extends from "@swc/helpers/src/_extends.mjs";
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
var x = _extends({}, _object_destructuring_empty(null));
var y = _extends({}, _object_destructuring_empty(undefined));
var z;
var _tmp;
_tmp = null, z = _extends({}, _object_destructuring_empty(_tmp)), _tmp;
1 change: 1 addition & 0 deletions crates/swc/tests/fixture/issues-6xxx/6392/1/input/index.js
@@ -0,0 +1 @@
let {} = x;
2 changes: 2 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6392/1/output/index.js
@@ -0,0 +1,2 @@
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
var ref = _object_destructuring_empty(x);
8 changes: 8 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6392/2/input/index.js
@@ -0,0 +1,8 @@
let x = 42;

function f() {
let {} = x;
console.log(x);
}

f();
7 changes: 7 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6392/2/output/index.js
@@ -0,0 +1,7 @@
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
var x = 42;
function f() {
var ref = _object_destructuring_empty(x);
console.log(x);
}
f();
Expand Up @@ -2,6 +2,7 @@
// https://github.com/Microsoft/TypeScript/issues/20461
import _async_to_generator from "@swc/helpers/src/_async_to_generator.mjs";
import _extends from "@swc/helpers/src/_extends.mjs";
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
function fn1(x) {
return _fn1.apply(this, arguments);
}
Expand Down Expand Up @@ -97,7 +98,7 @@ function fn11(x) {
}
function _fn11() {
_fn11 = _async_to_generator(function*(x) {
var x = _extends({}, y);
var x = _extends({}, _object_destructuring_empty(y));
});
return _fn11.apply(this, arguments);
}
Expand Down
@@ -1,6 +1,6 @@
//// [declarationsAndAssignments.ts]
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
import _throw from "@swc/helpers/src/_throw.mjs";
import _to_array from "@swc/helpers/src/_to_array.mjs";
function f0() {
var _ref = [
Expand Down Expand Up @@ -33,10 +33,10 @@ function f1() {
var z;
}
function f2() {
var _ref = {
var ref = _object_destructuring_empty({
x: 5,
y: "hello"
}, _ref = _ref !== null ? _ref : _throw(new TypeError("Cannot destructure undefined")); // Ok, empty binding pattern means nothing
}); // Ok, empty binding pattern means nothing
var x = {
x: 5,
y: "hello"
Expand All @@ -45,24 +45,24 @@ function f2() {
x: 5,
y: "hello"
}.y; // Error, no x in target
var _ref1 = {
var _ref = {
x: 5,
y: "hello"
}, x = _ref1.x, y = _ref1.y;
}, x = _ref.x, y = _ref.y;
var x;
var y;
var _ref2 = {
var _ref1 = {
x: 5,
y: "hello"
}, a = _ref2.x; // Error, no y in target
var _ref3 = {
}, a = _ref1.x; // Error, no y in target
var _ref2 = {
x: 5,
y: "hello"
}, b = _ref3.y; // Error, no x in target
var _ref4 = {
}, b = _ref2.y; // Error, no x in target
var _ref3 = {
x: 5,
y: "hello"
}, a = _ref4.x, b = _ref4.y;
}, a = _ref3.x, b = _ref3.y;
var a;
var b;
}
Expand Down
@@ -1,23 +1,23 @@
//// [destructuringAssignabilityCheck.ts]
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
import _throw from "@swc/helpers/src/_throw.mjs";
var _ref = _sliced_to_array({}, 0); // should be error
var undefined = undefined !== null ? undefined : _throw(new TypeError("Cannot destructure undefined")); // error correctly
var ref = _object_destructuring_empty(undefined); // error correctly
(function(param) {
var _param = _sliced_to_array(param, 0);
return 0;
})({}); // should be error
(function(param) {
var param = param !== null ? param : _throw(new TypeError("Cannot destructure undefined"));
var ref = _object_destructuring_empty(param);
return 0;
})(undefined); // should be error
function foo(param) {
var param = param !== null ? param : _throw(new TypeError("Cannot destructure undefined"));
var ref = _object_destructuring_empty(param);
return 0;
}
function bar(param) {
var _param = _sliced_to_array(param, 0);
return 0;
}
var _ref1 = 1, _ref1 = _ref1 !== null ? _ref1 : _throw(new TypeError("Cannot destructure undefined"));
var _ref2 = _sliced_to_array({}, 0);
var ref1 = _object_destructuring_empty(1);
var _ref1 = _sliced_to_array({}, 0);
@@ -1,10 +1,4 @@
//// [destructuringAssignabilityCheck.ts]
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
import _throw from "@swc/helpers/src/_throw.mjs";
_sliced_to_array({}, 0);
var undefined = undefined;
_sliced_to_array({}, 0), function(param) {
var param = null !== param ? param : _throw(new TypeError("Cannot destructure undefined"));
}(undefined);
var _ref = 1, _ref = null !== _ref ? _ref : _throw(new TypeError("Cannot destructure undefined"));
_sliced_to_array({}, 0);
_sliced_to_array({}, 0), _object_destructuring_empty(void 0), _sliced_to_array({}, 0), _object_destructuring_empty(void 0), _object_destructuring_empty(1), _sliced_to_array({}, 0);
@@ -1,6 +1,7 @@
//// [destructuringEvaluationOrder.ts]
// https://github.com/microsoft/TypeScript/issues/39205
import _extends from "@swc/helpers/src/_extends.mjs";
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _object_without_properties from "@swc/helpers/src/_object_without_properties.mjs";
import _to_property_key from "@swc/helpers/src/_to_property_key.mjs";
let trace = [];
Expand All @@ -23,4 +24,4 @@ let _ref1 = [
{
x: 1
}
], [{}, b = a] = _ref1, a = _extends({}, _ref1[0]);
], [{}, b = a] = _ref1, a = _extends({}, _object_destructuring_empty(_ref1[0]));
@@ -1,5 +1,6 @@
//// [destructuringEvaluationOrder.ts]
import _extends from "@swc/helpers/src/_extends.mjs";
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _object_without_properties from "@swc/helpers/src/_object_without_properties.mjs";
import _to_property_key from "@swc/helpers/src/_to_property_key.mjs";
let trace = [], order = (n)=>trace.push(n), [{ [order(1)]: x } = order(0)] = [], [{ [order(1)]: y } = order(0)] = [
Expand All @@ -12,4 +13,4 @@ let _ref1 = [
{
x: 1
}
], [{}, b = a] = _ref1, a = _extends({}, _ref1[0]);
], [{}, b = a] = _ref1, a = _extends({}, _object_destructuring_empty(_ref1[0]));
@@ -1,9 +1,9 @@
//// [destructuringEvaluationOrder.ts]
// https://github.com/microsoft/TypeScript/issues/39205
import _extends from "@swc/helpers/src/_extends.mjs";
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _object_without_properties from "@swc/helpers/src/_object_without_properties.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
import _throw from "@swc/helpers/src/_throw.mjs";
import _to_property_key from "@swc/helpers/src/_to_property_key.mjs";
var trace = [];
var order = function(n) {
Expand All @@ -25,4 +25,4 @@ var _ref5 = [
{
x: 1
}
], _ref6 = _sliced_to_array(_ref5, 2), _ref_ = _ref6[0], _ref_ = _ref_ !== null ? _ref_ : _throw(new TypeError("Cannot destructure undefined")), tmp3 = _ref6[1], b = tmp3 === void 0 ? a : tmp3, a = _extends({}, _ref5[0]);
], _ref6 = _sliced_to_array(_ref5, 2), ref = _object_destructuring_empty(_ref6[0]), tmp3 = _ref6[1], b = tmp3 === void 0 ? a : tmp3, a = _extends({}, _object_destructuring_empty(_ref5[0]));
@@ -1,8 +1,8 @@
//// [destructuringEvaluationOrder.ts]
import _extends from "@swc/helpers/src/_extends.mjs";
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _object_without_properties from "@swc/helpers/src/_object_without_properties.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
import _throw from "@swc/helpers/src/_throw.mjs";
import _to_property_key from "@swc/helpers/src/_to_property_key.mjs";
var trace = [], order = function(n) {
return trace.push(n);
Expand All @@ -18,5 +18,5 @@ var _ref1 = [
{
x: 1
}
], _ref2 = _sliced_to_array(_ref1, 2), _ref_ = _ref2[0], _ref_ = null !== _ref_ ? _ref_ : _throw(new TypeError("Cannot destructure undefined"));
_ref2[1], _extends({}, _ref1[0]);
], _ref2 = _sliced_to_array(_ref1, 2);
_object_destructuring_empty(_ref2[0]), _ref2[1], _extends({}, _object_destructuring_empty(_ref1[0]));
@@ -1,14 +1,14 @@
//// [destructuringParameterDeclaration7ES5.ts]
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
import _throw from "@swc/helpers/src/_throw.mjs";
function foo(_$param, param) {
var _$param = _$param !== null ? _$param : _throw(new TypeError("Cannot destructure undefined")), foo = param.foo, bar = param.bar;
function foo(param, param1) {
var ref = _object_destructuring_empty(param), foo = param1.foo, bar = param1.bar;
}
function baz(param, param1) {
var _param = _sliced_to_array(param, 0), foo = param1.foo, bar = param1.bar;
}
function one(param, _$param) {
var _param = _sliced_to_array(param, 0), _$param = _$param !== null ? _$param : _throw(new TypeError("Cannot destructure undefined"));
function one(param, param1) {
var _param = _sliced_to_array(param, 0), ref = _object_destructuring_empty(param1);
}
function two(param, param1) {
var _param = _sliced_to_array(param, 0), _param1 = _sliced_to_array(param1, 3), a = _param1[0], b = _param1[1], c = _param1[2];
Expand Down
@@ -1,14 +1,14 @@
//// [destructuringParameterDeclaration7ES5iterable.ts]
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
import _throw from "@swc/helpers/src/_throw.mjs";
function foo(_$param, param) {
var _$param = _$param !== null ? _$param : _throw(new TypeError("Cannot destructure undefined")), foo = param.foo, bar = param.bar;
function foo(param, param1) {
var ref = _object_destructuring_empty(param), foo = param1.foo, bar = param1.bar;
}
function baz(param, param1) {
var _param = _sliced_to_array(param, 0), foo = param1.foo, bar = param1.bar;
}
function one(param, _$param) {
var _param = _sliced_to_array(param, 0), _$param = _$param !== null ? _$param : _throw(new TypeError("Cannot destructure undefined"));
function one(param, param1) {
var _param = _sliced_to_array(param, 0), ref = _object_destructuring_empty(param1);
}
function two(param, param1) {
var _param = _sliced_to_array(param, 0), _param1 = _sliced_to_array(param1, 3), a = _param1[0], b = _param1[1], c = _param1[2];
Expand Down
4 changes: 2 additions & 2 deletions crates/swc/tests/tsc-references/destructuringVoid.1.normal.js
@@ -1,3 +1,3 @@
//// [destructuringVoid.ts]
import _throw from "@swc/helpers/src/_throw.mjs";
var v = v !== null ? v : _throw(new TypeError("Cannot destructure undefined"));
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
var ref = _object_destructuring_empty(v);
@@ -1,3 +1,3 @@
//// [destructuringVoid.ts]
import _throw from "@swc/helpers/src/_throw.mjs";
var v = null !== v ? v : _throw(new TypeError("Cannot destructure undefined"));
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
_object_destructuring_empty(v);
@@ -1,3 +1,3 @@
//// [destructuringVoidStrictNullChecks.ts]
import _throw from "@swc/helpers/src/_throw.mjs";
var v = v !== null ? v : _throw(new TypeError("Cannot destructure undefined"));
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
var ref = _object_destructuring_empty(v);
@@ -1,3 +1,3 @@
//// [destructuringVoidStrictNullChecks.ts]
import _throw from "@swc/helpers/src/_throw.mjs";
var v = null !== v ? v : _throw(new TypeError("Cannot destructure undefined"));
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
_object_destructuring_empty(v);
@@ -1,10 +1,10 @@
//// [emptyAssignmentPatterns01_ES5.ts]
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
var a;
_object_destructuring_empty(a);
var ref;
ref = a, ref;
var ref1;
ref1 = _sliced_to_array(a, 0), ref1;
ref = _sliced_to_array(a, 0), ref;
var _ref = [
1,
2
Expand Down
@@ -1,4 +1,5 @@
//// [emptyAssignmentPatterns01_ES5.ts]
var a;
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
_sliced_to_array(a, 0);
_object_destructuring_empty(a), _sliced_to_array(a, 0);
@@ -1,7 +1,7 @@
//// [emptyAssignmentPatterns01_ES5iterable.ts]
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
var a;
_object_destructuring_empty(a);
var ref;
ref = a, ref;
var ref1;
ref1 = _sliced_to_array(a, 0), ref1;
ref = _sliced_to_array(a, 0), ref;
@@ -1,4 +1,5 @@
//// [emptyAssignmentPatterns01_ES5iterable.ts]
var a;
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
_sliced_to_array(a, 0);
_object_destructuring_empty(a), _sliced_to_array(a, 0);
@@ -1,8 +1,9 @@
//// [emptyAssignmentPatterns02_ES5.ts]
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
var a;
var x, y, z, a1, a2, a3;
var ref, ref1;
ref1 = (ref = a, x = ref.x, y = ref.y, z = ref.z, ref), ref1;
var ref2, ref3;
ref3 = _sliced_to_array((ref2 = _sliced_to_array(a, 3), a1 = ref2[0], a2 = ref2[1], a3 = ref2[2], ref2), 0), ref3;
var ref;
_object_destructuring_empty((ref = a, x = ref.x, y = ref.y, z = ref.z, ref));
var ref1, ref2;
ref2 = _sliced_to_array((ref1 = _sliced_to_array(a, 3), a1 = ref1[0], a2 = ref1[1], a3 = ref1[2], ref1), 0), ref2;
@@ -1,4 +1,5 @@
//// [emptyAssignmentPatterns02_ES5.ts]
var a, ref;
import _object_destructuring_empty from "@swc/helpers/src/_object_destructuring_empty.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
a.x, a.y, a.z, _sliced_to_array(((ref = _sliced_to_array(a, 3))[0], ref[1], ref[2], ref), 0);
_object_destructuring_empty((a.x, a.y, a.z, a)), _sliced_to_array(((ref = _sliced_to_array(a, 3))[0], ref[1], ref[2], ref), 0);

1 comment on commit 6728603

@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: 6728603 Previous: 7a1c2a1 Ratio
es/full/bugs-1 415024 ns/iter (± 11128) 331740 ns/iter (± 27508) 1.25
es/full/minify/libraries/antd 2059852743 ns/iter (± 21382128) 1849928006 ns/iter (± 22932446) 1.11
es/full/minify/libraries/d3 400056910 ns/iter (± 12122381) 370049033 ns/iter (± 16917712) 1.08
es/full/minify/libraries/echarts 1747708510 ns/iter (± 51799219) 1560028342 ns/iter (± 48132412) 1.12
es/full/minify/libraries/jquery 114822889 ns/iter (± 2099146) 101871750 ns/iter (± 2568297) 1.13
es/full/minify/libraries/lodash 136021333 ns/iter (± 2885108) 117314005 ns/iter (± 5404659) 1.16
es/full/minify/libraries/moment 68753123 ns/iter (± 1921550) 58823483 ns/iter (± 2871460) 1.17
es/full/minify/libraries/react 23768869 ns/iter (± 371905) 21288136 ns/iter (± 1661783) 1.12
es/full/minify/libraries/terser 319858540 ns/iter (± 7732483) 310018263 ns/iter (± 18548098) 1.03
es/full/minify/libraries/three 587466327 ns/iter (± 16970628) 584480462 ns/iter (± 34434334) 1.01
es/full/minify/libraries/typescript 3928839245 ns/iter (± 96394563) 3277302496 ns/iter (± 73091238) 1.20
es/full/minify/libraries/victory 858729512 ns/iter (± 44506772) 803494342 ns/iter (± 25895480) 1.07
es/full/minify/libraries/vue 176970113 ns/iter (± 4334526) 145461710 ns/iter (± 1752431) 1.22
es/full/codegen/es3 39903 ns/iter (± 393) 33711 ns/iter (± 1029) 1.18
es/full/codegen/es5 39878 ns/iter (± 1156) 33696 ns/iter (± 1239) 1.18
es/full/codegen/es2015 39900 ns/iter (± 2029) 33619 ns/iter (± 1746) 1.19
es/full/codegen/es2016 39958 ns/iter (± 1408) 33769 ns/iter (± 339) 1.18
es/full/codegen/es2017 39856 ns/iter (± 6764) 33691 ns/iter (± 373) 1.18
es/full/codegen/es2018 39962 ns/iter (± 1280) 33795 ns/iter (± 415) 1.18
es/full/codegen/es2019 39774 ns/iter (± 398) 33630 ns/iter (± 1003) 1.18
es/full/codegen/es2020 39770 ns/iter (± 2499) 33727 ns/iter (± 883) 1.18
es/full/all/es3 231297844 ns/iter (± 12075968) 190737316 ns/iter (± 12758128) 1.21
es/full/all/es5 221334095 ns/iter (± 6321418) 179069335 ns/iter (± 7101289) 1.24
es/full/all/es2015 177746904 ns/iter (± 5251374) 147282439 ns/iter (± 7399404) 1.21
es/full/all/es2016 176211727 ns/iter (± 6218441) 139400862 ns/iter (± 4018966) 1.26
es/full/all/es2017 176323630 ns/iter (± 5322826) 146013879 ns/iter (± 13918127) 1.21
es/full/all/es2018 173754346 ns/iter (± 5824901) 141916501 ns/iter (± 4554118) 1.22
es/full/all/es2019 172430481 ns/iter (± 8524138) 141032613 ns/iter (± 10883016) 1.22
es/full/all/es2020 166146618 ns/iter (± 11099605) 139976513 ns/iter (± 9890605) 1.19
es/full/parser 860817 ns/iter (± 29437) 722357 ns/iter (± 24014) 1.19
es/full/base/fixer 32970 ns/iter (± 2391) 27083 ns/iter (± 2145) 1.22
es/full/base/resolver_and_hygiene 114336 ns/iter (± 7573) 90715 ns/iter (± 5926) 1.26
serialization of ast node 260 ns/iter (± 3) 213 ns/iter (± 8) 1.22
serialization of serde 264 ns/iter (± 5) 222 ns/iter (± 11) 1.19

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

Please sign in to comment.