Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(es/compat): Fix async generator #8881

Merged
merged 12 commits into from
Apr 23, 2024
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { _ as _async_iterator } from "@swc/helpers/_/_async_iterator";
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
import { _ as _await_async_generator } from "@swc/helpers/_/_await_async_generator";
import { _ as _wrap_async_generator } from "@swc/helpers/_/_wrap_async_generator";
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
function lol() {
Expand Down Expand Up @@ -96,7 +97,7 @@ function _main() {
];
return [
4,
_iterator["return"]()
_await_async_generator(_iterator["return"]())
];
case 8:
_state.sent();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { _ as _async_iterator } from "@swc/helpers/_/_async_iterator";
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
import { _ as _await_async_generator } from "@swc/helpers/_/_await_async_generator";
_async_to_generator(function*() {
let counter = 0;
let resolve;
Expand Down Expand Up @@ -29,7 +30,7 @@ _async_to_generator(function*() {
} finally{
try {
if (_iteratorAbruptCompletion && _iterator.return != null) {
yield _iterator.return();
yield _await_async_generator(_iterator.return());
}
} finally{
if (_didIteratorError) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
});
var _async_iterator = require("@swc/helpers/_/_async_iterator");
var _async_to_generator = require("@swc/helpers/_/_async_to_generator");
var _await_async_generator = require("@swc/helpers/_/_await_async_generator");
var _define_property = require("@swc/helpers/_/_define_property");
var _ts_generator = require("@swc/helpers/_/_ts_generator");
_async_to_generator._(function() {
Expand Down Expand Up @@ -85,7 +86,7 @@ _async_to_generator._(function() {
];
return [
4,
_iterator.return()
_await_async_generator._(_iterator.return())
];
case 8:
_state.sent();
Expand Down
75 changes: 75 additions & 0 deletions crates/swc/tests/fixture/issues-8xxx/8880/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"jsc": {
"externalHelpers": true,
"parser": {
"syntax": "typescript",
"tsx": false
},
"transform": {
"legacyDecorator": true,
},
"target": "es2017",
"loose": false,
"minify": {
"compress": {
"arguments": false,
"arrows": true,
"booleans": true,
"booleans_as_integers": false,
"collapse_vars": true,
"comparisons": true,
"computed_props": true,
"conditionals": true,
"dead_code": true,
"directives": true,
"drop_console": false,
"drop_debugger": true,
"evaluate": true,
"expression": false,
"hoist_funs": false,
"hoist_props": true,
"hoist_vars": false,
"if_return": true,
"join_vars": true,
"keep_classnames": false,
"keep_fargs": true,
"keep_fnames": false,
"keep_infinity": false,
"loops": true,
"negate_iife": true,
"properties": true,
"reduce_funcs": false,
"reduce_vars": false,
"side_effects": true,
"switches": true,
"typeofs": true,
"unsafe": false,
"unsafe_arrows": false,
"unsafe_comps": false,
"unsafe_Function": false,
"unsafe_math": false,
"unsafe_symbols": false,
"unsafe_methods": false,
"unsafe_proto": false,
"unsafe_regexp": false,
"unsafe_undefined": false,
"unused": false,
"const_to_let": true,
"pristine_globals": true
},
"mangle": {
"toplevel": false,
"keep_classnames": false,
"keep_fnames": false,
"keep_private_props": false,
"ie8": false,
"safari10": false
}
}
},
"module": {
"type": "es6"
},
"minify": false,
"isModule": true
}
70 changes: 70 additions & 0 deletions crates/swc/tests/fixture/issues-8xxx/8880/input/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
function a(module, exports, farmRequire, farmDynamicRequire) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
const _interop_require_default = farmRequire("@swc/helpers/_/_interop_require_default");
const _typeof = _interop_require_default._(farmRequire("8178b9bd"));
const _dep734fea04 = farmRequire("92648bed");
const _dayjs = _interop_require_default._(farmRequire("d0dc4dad"));
farmRequire("15d5169f");
var zhCn = (0, _dep734fea04.c)(function (module, exports) {
!function (e, _) {
"object" == 'object' && "undefined" != 'object' ? module.exports = _(_dayjs.default) : "function" == typeof undefined && undefined.amd ? undefined([
"dayjs"
], _) : (e = "undefined" != typeof globalThis ? globalThis : e || self).dayjs_locale_zh_cn = _(e.dayjs);
}(_dep734fea04.a, function (e) {
"use strict";
function _(e) {
return e && "object" == (0, _typeof.default)(e) && "default" in e ? e : {
"default": e
};
}
var t = _(e), d = {
name: "zh-cn",
weekdays: "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
weekdaysShort: "周日_周一_周二_周三_周四_周五_周六".split("_"),
weekdaysMin: "日_一_二_三_四_五_六".split("_"),
months: "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
ordinal: function ordinal(e, _) {
return "W" === _ ? e + "周" : e + "日";
},
weekStart: 1,
yearStart: 4,
formats: {
LT: "HH:mm",
LTS: "HH:mm:ss",
L: "YYYY/MM/DD",
LL: "YYYY年M月D日",
LLL: "YYYY年M月D日Ah点mm分",
LLLL: "YYYY年M月D日ddddAh点mm分",
l: "YYYY/M/D",
ll: "YYYY年M月D日",
lll: "YYYY年M月D日 HH:mm",
llll: "YYYY年M月D日dddd HH:mm"
},
relativeTime: {
future: "%s内",
past: "%s前",
s: "几秒",
m: "1 分钟",
mm: "%d 分钟",
h: "1 小时",
hh: "%d 小时",
d: "1 天",
dd: "%d 天",
M: "1 个月",
MM: "%d 个月",
y: "1 年",
yy: "%d 年"
},
meridiem: function meridiem(e, _) {
var t = 100 * e + _;
return t < 600 ? "凌晨" : t < 900 ? "早上" : t < 1100 ? "上午" : t < 1300 ? "中午" : t < 1800 ? "下午" : "晚上";
}
};
return t["default"].locale(d, null, !0), d;
});
});
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//// [awaitUsingDeclarationsInForAwaitOf.ts]
import { _ as _async_iterator } from "@swc/helpers/_/_async_iterator";
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
import { _ as _await_async_generator } from "@swc/helpers/_/_await_async_generator";
import { _ as _using_ctx } from "@swc/helpers/_/_using_ctx";
function main() {
return _main.apply(this, arguments);
Expand Down Expand Up @@ -39,7 +40,7 @@ function _main() {
} finally{
try {
if (_iteratorAbruptCompletion && _iterator.return != null) {
yield _iterator.return();
yield _await_async_generator(_iterator.return());
}
} finally{
if (_didIteratorError) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
//// [awaitUsingDeclarationsInForAwaitOf.ts]
import "@swc/helpers/_/_async_iterator";
import "@swc/helpers/_/_async_to_generator";
import "@swc/helpers/_/_await_async_generator";
import "@swc/helpers/_/_using_ctx";
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//// [awaitUsingDeclarationsInForAwaitOf.ts]
import { _ as _async_iterator } from "@swc/helpers/_/_async_iterator";
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
import { _ as _await_async_generator } from "@swc/helpers/_/_await_async_generator";
import { _ as _define_property } from "@swc/helpers/_/_define_property";
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
import { _ as _using_ctx } from "@swc/helpers/_/_using_ctx";
Expand Down Expand Up @@ -90,7 +91,7 @@ function _main() {
];
return [
4,
_iterator.return()
_await_async_generator(_iterator.return())
];
case 8:
_state.sent();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//// [awaitUsingDeclarationsInForAwaitOf.ts]
import "@swc/helpers/_/_async_iterator";
import "@swc/helpers/_/_async_to_generator";
import "@swc/helpers/_/_await_async_generator";
import "@swc/helpers/_/_define_property";
import "@swc/helpers/_/_ts_generator";
import "@swc/helpers/_/_using_ctx";
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//// [file1.ts]
import { _ as _async_iterator } from "@swc/helpers/_/_async_iterator";
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
import { _ as _await_async_generator } from "@swc/helpers/_/_await_async_generator";
function f1() {
return _f1.apply(this, arguments);
}
Expand All @@ -20,7 +21,7 @@ function _f1() {
} finally{
try {
if (_iteratorAbruptCompletion && _iterator.return != null) {
yield _iterator.return();
yield _await_async_generator(_iterator.return());
}
} finally{
if (_didIteratorError) {
Expand All @@ -35,6 +36,7 @@ function _f1() {
//// [file2.ts]
import { _ as _async_iterator } from "@swc/helpers/_/_async_iterator";
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
import { _ as _await_async_generator } from "@swc/helpers/_/_await_async_generator";
function f2() {
return _f2.apply(this, arguments);
}
Expand All @@ -54,7 +56,7 @@ function _f2() {
} finally{
try {
if (_iteratorAbruptCompletion && _iterator.return != null) {
yield _iterator.return();
yield _await_async_generator(_iterator.return());
}
} finally{
if (_didIteratorError) {
Expand Down Expand Up @@ -89,7 +91,7 @@ function _f3() {
} finally{
try {
if (_iteratorAbruptCompletion && _iterator.return != null) {
yield _iterator.return();
yield _await_async_generator(_iterator.return());
}
} finally{
if (_didIteratorError) {
Expand Down Expand Up @@ -124,7 +126,7 @@ function _f4() {
} finally{
try {
if (_iteratorAbruptCompletion && _iterator.return != null) {
yield _iterator.return();
yield _await_async_generator(_iterator.return());
}
} finally{
if (_didIteratorError) {
Expand All @@ -140,6 +142,7 @@ function _f4() {
// https://github.com/Microsoft/TypeScript/issues/21363
import { _ as _async_iterator } from "@swc/helpers/_/_async_iterator";
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
import { _ as _await_async_generator } from "@swc/helpers/_/_await_async_generator";
function f5() {
return _f5.apply(this, arguments);
}
Expand All @@ -160,7 +163,7 @@ function _f5() {
} finally{
try {
if (_iteratorAbruptCompletion && _iterator.return != null) {
yield _iterator.return();
yield _await_async_generator(_iterator.return());
}
} finally{
if (_didIteratorError) {
Expand Down Expand Up @@ -197,7 +200,7 @@ function _f6() {
} finally{
try {
if (_iteratorAbruptCompletion && _iterator.return != null) {
yield _iterator.return();
yield _await_async_generator(_iterator.return());
}
} finally{
if (_didIteratorError) {
Expand Down Expand Up @@ -234,7 +237,7 @@ function _f7() {
} finally{
try {
if (_iteratorAbruptCompletion && _iterator.return != null) {
yield _iterator.return();
yield _await_async_generator(_iterator.return());
}
} finally{
if (_didIteratorError) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
//// [file1.ts]
import "@swc/helpers/_/_async_iterator";
import "@swc/helpers/_/_async_to_generator";
import "@swc/helpers/_/_await_async_generator";
//// [file2.ts]
import "@swc/helpers/_/_async_iterator";
import "@swc/helpers/_/_async_to_generator";
import "@swc/helpers/_/_await_async_generator";
//// [file3.ts]
import "@swc/helpers/_/_async_iterator";
import "@swc/helpers/_/_await_async_generator";
Expand All @@ -15,6 +17,7 @@ import "@swc/helpers/_/_wrap_async_generator";
//// [file5.ts]
import "@swc/helpers/_/_async_iterator";
import "@swc/helpers/_/_async_to_generator";
import "@swc/helpers/_/_await_async_generator";
//// [file6.ts]
import "@swc/helpers/_/_async_iterator";
import "@swc/helpers/_/_await_async_generator";
Expand Down
Loading
Loading