Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test(es/preset-env): Ensure custom transforms are working (#6227)
**Related issue:** - Closes #5052
- Loading branch information
Showing
1 changed file
with
204 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,204 @@ | ||
import swc from "../../.."; | ||
|
||
it("should respect custom transform option", async () => { | ||
const { code } = await swc.transform( | ||
` | ||
const spread = 1; | ||
const { foo, ...rest } = { ...spread } | ||
async function bar() { | ||
await 1; | ||
} | ||
function* baz() { | ||
yield 1; | ||
yield 2; | ||
} | ||
`, | ||
{ | ||
env: { | ||
targets: { | ||
chrome: "79", | ||
}, | ||
include: [ | ||
"transform-async-to-generator", | ||
"transform-regenerator", | ||
], | ||
}, | ||
} | ||
); | ||
expect(code).toMatchInlineSnapshot(` | ||
"function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { | ||
try { | ||
var info = gen[key](arg); | ||
var value = info.value; | ||
} catch (error) { | ||
reject(error); | ||
return; | ||
} | ||
if (info.done) { | ||
resolve(value); | ||
} else { | ||
Promise.resolve(value).then(_next, _throw); | ||
} | ||
} | ||
function _asyncToGenerator(fn) { | ||
return function() { | ||
var self = this, args = arguments; | ||
return new Promise(function(resolve, reject) { | ||
var gen = fn.apply(self, args); | ||
function _next(value) { | ||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"next\\", value); | ||
} | ||
function _throw(err) { | ||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"throw\\", err); | ||
} | ||
_next(undefined); | ||
}); | ||
}; | ||
} | ||
var __generator = this && this.__generator || function(thisArg, body) { | ||
var f, y, t, g, _ = { | ||
label: 0, | ||
sent: function() { | ||
if (t[0] & 1) throw t[1]; | ||
return t[1]; | ||
}, | ||
trys: [], | ||
ops: [] | ||
}; | ||
return g = { | ||
next: verb(0), | ||
\\"throw\\": verb(1), | ||
\\"return\\": verb(2) | ||
}, typeof Symbol === \\"function\\" && (g[Symbol.iterator] = function() { | ||
return this; | ||
}), g; | ||
function verb(n) { | ||
return function(v) { | ||
return step([ | ||
n, | ||
v | ||
]); | ||
}; | ||
} | ||
function step(op) { | ||
if (f) throw new TypeError(\\"Generator is already executing.\\"); | ||
while(_)try { | ||
if (f = 1, y && (t = op[0] & 2 ? y[\\"return\\"] : op[0] ? y[\\"throw\\"] || ((t = y[\\"return\\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [ | ||
op[0] & 2, | ||
t.value | ||
]; | ||
switch(op[0]){ | ||
case 0: | ||
case 1: | ||
t = op; | ||
break; | ||
case 4: | ||
_.label++; | ||
return { | ||
value: op[1], | ||
done: false | ||
}; | ||
case 5: | ||
_.label++; | ||
y = op[1]; | ||
op = [ | ||
0 | ||
]; | ||
continue; | ||
case 7: | ||
op = _.ops.pop(); | ||
_.trys.pop(); | ||
continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { | ||
_ = 0; | ||
continue; | ||
} | ||
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { | ||
_.label = op[1]; | ||
break; | ||
} | ||
if (op[0] === 6 && _.label < t[1]) { | ||
_.label = t[1]; | ||
t = op; | ||
break; | ||
} | ||
if (t && _.label < t[2]) { | ||
_.label = t[2]; | ||
_.ops.push(op); | ||
break; | ||
} | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); | ||
continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { | ||
op = [ | ||
6, | ||
e | ||
]; | ||
y = 0; | ||
} finally{ | ||
f = t = 0; | ||
} | ||
if (op[0] & 5) throw op[1]; | ||
return { | ||
value: op[0] ? op[1] : void 0, | ||
done: true | ||
}; | ||
} | ||
}; | ||
const spread = 1; | ||
const { foo , ...rest } = { | ||
...spread | ||
}; | ||
function bar() { | ||
return _bar.apply(this, arguments); | ||
} | ||
function _bar() { | ||
_bar = _asyncToGenerator(function() { | ||
return __generator(this, function(_state) { | ||
switch(_state.label){ | ||
case 0: | ||
return [ | ||
4, | ||
1 | ||
]; | ||
case 1: | ||
_state.sent(); | ||
return [ | ||
2 | ||
]; | ||
} | ||
}); | ||
}); | ||
return _bar.apply(this, arguments); | ||
} | ||
function baz() { | ||
return __generator(this, function(_state) { | ||
switch(_state.label){ | ||
case 0: | ||
return [ | ||
4, | ||
1 | ||
]; | ||
case 1: | ||
_state.sent(); | ||
return [ | ||
4, | ||
2 | ||
]; | ||
case 2: | ||
_state.sent(); | ||
return [ | ||
2 | ||
]; | ||
} | ||
}); | ||
} | ||
" | ||
`); | ||
}); |
de03675
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark
es/full/bugs-1
433925
ns/iter (± 38854
)386877
ns/iter (± 72319
)1.12
es/full/minify/libraries/antd
2900162799
ns/iter (± 357856406
)1895184601
ns/iter (± 65447301
)1.53
es/full/minify/libraries/d3
610340593
ns/iter (± 106665463
)399750223
ns/iter (± 13234870
)1.53
es/full/minify/libraries/echarts
1851163897
ns/iter (± 124920337
)1579385198
ns/iter (± 114577411
)1.17
es/full/minify/libraries/jquery
115024018
ns/iter (± 6847072
)98933491
ns/iter (± 2901301
)1.16
es/full/minify/libraries/lodash
140669572
ns/iter (± 16482145
)118796997
ns/iter (± 3634591
)1.18
es/full/minify/libraries/moment
65390387
ns/iter (± 3743164
)59605050
ns/iter (± 996105
)1.10
es/full/minify/libraries/react
25299342
ns/iter (± 2628572
)21117838
ns/iter (± 1442468
)1.20
es/full/minify/libraries/terser
353976016
ns/iter (± 20066380
)375159351
ns/iter (± 115448558
)0.94
es/full/minify/libraries/three
613540580
ns/iter (± 44793577
)577920111
ns/iter (± 46943836
)1.06
es/full/minify/libraries/typescript
4004659232
ns/iter (± 152887625
)3514560096
ns/iter (± 69422795
)1.14
es/full/minify/libraries/victory
918133987
ns/iter (± 33881405
)819236425
ns/iter (± 32922555
)1.12
es/full/minify/libraries/vue
195697752
ns/iter (± 8747150
)154449315
ns/iter (± 7793162
)1.27
es/full/codegen/es3
37465
ns/iter (± 4336
)33952
ns/iter (± 639
)1.10
es/full/codegen/es5
37043
ns/iter (± 4160
)33929
ns/iter (± 731
)1.09
es/full/codegen/es2015
37035
ns/iter (± 3058
)33937
ns/iter (± 1004
)1.09
es/full/codegen/es2016
36505
ns/iter (± 3931
)33965
ns/iter (± 1691
)1.07
es/full/codegen/es2017
35917
ns/iter (± 2605
)34110
ns/iter (± 844
)1.05
es/full/codegen/es2018
36440
ns/iter (± 6533
)34101
ns/iter (± 732
)1.07
es/full/codegen/es2019
36560
ns/iter (± 3160
)34093
ns/iter (± 1570
)1.07
es/full/codegen/es2020
35733
ns/iter (± 5351
)34053
ns/iter (± 915
)1.05
es/full/all/es3
237253394
ns/iter (± 343091007
)196375847
ns/iter (± 13178691
)1.21
es/full/all/es5
221275023
ns/iter (± 223437294
)196285120
ns/iter (± 17452186
)1.13
es/full/all/es2015
183971269
ns/iter (± 2002816904
)164168873
ns/iter (± 14048488
)1.12
es/full/all/es2016
224500350
ns/iter (± 357848316
)164253297
ns/iter (± 13468521
)1.37
es/full/all/es2017
217189224
ns/iter (± 28406458
)144586335
ns/iter (± 14820196
)1.50
es/full/all/es2018
205483375
ns/iter (± 436891866
)142473790
ns/iter (± 5244133
)1.44
es/full/all/es2019
198906303
ns/iter (± 384642806
)144347736
ns/iter (± 13914076
)1.38
es/full/all/es2020
175947456
ns/iter (± 22220554
)145390707
ns/iter (± 10962228
)1.21
es/full/parser
795402
ns/iter (± 130039
)710546
ns/iter (± 78675
)1.12
es/full/base/fixer
27192
ns/iter (± 3698
)25403
ns/iter (± 2387
)1.07
es/full/base/resolver_and_hygiene
99277
ns/iter (± 16008
)91568
ns/iter (± 2639
)1.08
serialization of ast node
256
ns/iter (± 59
)214
ns/iter (± 4
)1.20
serialization of serde
233
ns/iter (± 941
)230
ns/iter (± 7
)1.01
This comment was automatically generated by workflow using github-action-benchmark.