Skip to content

Commit d3fb992

Browse files
authored
fix(es/helpers): Sync tslib _ts_generator implementation (#10366)
**Related issue:** - Closes #10365 - microsoft/tslib#186 - microsoft/TypeScript#59514
1 parent 3ab47b2 commit d3fb992

File tree

6 files changed

+23
-29
lines changed

6 files changed

+23
-29
lines changed

Diff for: .changeset/silly-seas-enjoy.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
swc_core: minor
3+
swc_ecma_transforms_base: minor
4+
---
5+
6+
fix(es/helpers): Sync tslib `_ts_generator` implementation

Diff for: crates/swc/tests/stacktrace/issue-622/output/stacks.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ $DIR/tests/stacktrace/issue-622/input/index.js:3
55

66
ReferenceError: call is not defined
77
at <anonymous> ($DIR/tests/stacktrace/issue-622/input/index.js:3:9)
8-
at step ($DIR/tests/stacktrace/issue-622/input/_exec.js:109:23)
9-
at Object.next ($DIR/tests/stacktrace/issue-622/input/_exec.js:50:20)
8+
at step ($DIR/tests/stacktrace/issue-622/input/_exec.js:105:23)
9+
at Object.next ($DIR/tests/stacktrace/issue-622/input/_exec.js:46:20)
1010
at asyncGeneratorStep ($DIR/tests/stacktrace/issue-622/input/_exec.js:4:28)
1111
at _next ($DIR/tests/stacktrace/issue-622/input/_exec.js:22:17)
1212
at $DIR/tests/stacktrace/issue-622/input/_exec.js:27:13

Diff for: crates/swc_ecma_transforms_base/src/helpers/_ts_generator.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
function _ts_generator(thisArg, body) {
2-
var f, y, t, g, _ = { label: 0, sent: function () { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] };
3-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
2+
var f, y, t, _ = { label: 0, sent: function () { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
3+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
44
function verb(n) { return function (v) { return step([n, v]); }; }
55
function step(op) {
66
if (f) throw new TypeError("Generator is already executing.");
7-
while (_) try {
7+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
88
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;
99
if (y = 0, t) op = [op[0] & 2, t.value];
1010
switch (op[0]) {

Diff for: crates/swc_node_bundler/tests/pass/issue-1328/case1/output/entry.js

+4-8
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,16 @@ function _async_to_generator(fn) {
2828
};
2929
}
3030
function _ts_generator(thisArg, body) {
31-
var f, y, t, g, _ = {
31+
var f, y, t, _ = {
3232
label: 0,
3333
sent: function() {
3434
if (t[0] & 1) throw t[1];
3535
return t[1];
3636
},
3737
trys: [],
3838
ops: []
39-
};
40-
return g = {
41-
next: verb(0),
42-
"throw": verb(1),
43-
"return": verb(2)
44-
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
39+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
40+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
4541
return this;
4642
}), g;
4743
function verb(n) {
@@ -54,7 +50,7 @@ function _ts_generator(thisArg, body) {
5450
}
5551
function step(op) {
5652
if (f) throw new TypeError("Generator is already executing.");
57-
while(_)try {
53+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
5854
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;
5955
if (y = 0, t) op = [
6056
op[0] & 2,

Diff for: crates/swc_node_bundler/tests/pass/regenerator/1/output/entry.js

+4-8
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,16 @@ function _async_to_generator(fn) {
2828
};
2929
}
3030
function _ts_generator(thisArg, body) {
31-
var f, y, t, g, _ = {
31+
var f, y, t, _ = {
3232
label: 0,
3333
sent: function() {
3434
if (t[0] & 1) throw t[1];
3535
return t[1];
3636
},
3737
trys: [],
3838
ops: []
39-
};
40-
return g = {
41-
next: verb(0),
42-
"throw": verb(1),
43-
"return": verb(2)
44-
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
39+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
40+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
4541
return this;
4642
}), g;
4743
function verb(n) {
@@ -54,7 +50,7 @@ function _ts_generator(thisArg, body) {
5450
}
5551
function step(op) {
5652
if (f) throw new TypeError("Generator is already executing.");
57-
while(_)try {
53+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
5854
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;
5955
if (y = 0, t) op = [
6056
op[0] & 2,

Diff for: packages/core/__tests__/transform/preset-env_test.mjs

+4-8
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,16 @@ it("should respect custom transform option", async () => {
5757
};
5858
}
5959
function _ts_generator(thisArg, body) {
60-
var f, y, t, g, _ = {
60+
var f, y, t, _ = {
6161
label: 0,
6262
sent: function() {
6363
if (t[0] & 1) throw t[1];
6464
return t[1];
6565
},
6666
trys: [],
6767
ops: []
68-
};
69-
return g = {
70-
next: verb(0),
71-
"throw": verb(1),
72-
"return": verb(2)
73-
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
68+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
69+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
7470
return this;
7571
}), g;
7672
function verb(n) {
@@ -83,7 +79,7 @@ it("should respect custom transform option", async () => {
8379
}
8480
function step(op) {
8581
if (f) throw new TypeError("Generator is already executing.");
86-
while(_)try {
82+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
8783
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;
8884
if (y = 0, t) op = [
8985
op[0] & 2,

0 commit comments

Comments
 (0)