Skip to content

Commit f735108

Browse files
authored
fix(es/proposal): Use tsc version of explicit resource management (#9585)
**Related issue:** - Closes #9576
1 parent b2d40a7 commit f735108

File tree

443 files changed

+12894
-6704
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

443 files changed

+12894
-6704
lines changed

.changeset/dull-shirts-judge.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
swc_ecma_transforms_proposal: patch
3+
swc_core: patch
4+
---
5+
6+
fix(es/proposal): Call `asyncDispose` correctly
Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
1-
var _using_ctx = require("@swc/helpers/_/_using_ctx");
1+
var _ts_add_disposable_resource = require("@swc/helpers/_/_ts_add_disposable_resource");
2+
var _ts_dispose_resources = require("@swc/helpers/_/_ts_dispose_resources");
3+
const env = {
4+
stack: [],
5+
error: void 0,
6+
hasError: false
7+
};
28
try {
3-
var _usingCtx = _using_ctx._();
4-
const foo = _usingCtx.u(null);
9+
const foo = _ts_add_disposable_resource._(env, null, false);
510
const bar = 1;
611
console.log(baz());
712
function baz() {
813
return bar;
914
}
10-
} catch (_) {
11-
_usingCtx.e = _;
15+
} catch (e) {
16+
env.error = e;
17+
env.hasError = true;
1218
} finally{
13-
_usingCtx.d();
19+
_ts_dispose_resources._(env);
1420
}

crates/swc/tests/fixture/issues-8xxx/8629/output/1.js

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
1-
import { _ as _using_ctx } from "@swc/helpers/_/_using_ctx";
2-
var _Disposable;
1+
import { _ as _ts_add_disposable_resource } from "@swc/helpers/_/_ts_add_disposable_resource";
2+
import { _ as _ts_dispose_resources } from "@swc/helpers/_/_ts_dispose_resources";
3+
const env = {
4+
stack: [],
5+
error: void 0,
6+
hasError: false
7+
};
38
try {
4-
var _usingCtx = _using_ctx();
59
var _computedKey;
610
_computedKey = Symbol.dispose;
7-
class Disposable {
8-
[_computedKey]() {
9-
console.log('dispose');
10-
}
11-
}
12-
_Disposable = Disposable;
13-
var _disposable = _usingCtx.u(new Disposable());
11+
const _disposable = _ts_add_disposable_resource(env, new Disposable(), false);
1412
console.log('ok');
15-
} catch (_) {
16-
_usingCtx.e = _;
13+
} catch (e) {
14+
env.error = e;
15+
env.hasError = true;
1716
} finally{
18-
_usingCtx.d();
17+
_ts_dispose_resources(env);
18+
}
19+
export class Disposable {
20+
[_computedKey]() {
21+
console.log('dispose');
22+
}
1923
}
20-
export { _Disposable as Disposable };
Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
import { _ as _using_ctx } from "@swc/helpers/_/_using_ctx";
2-
var _Disposable;
1+
import { _ as _ts_add_disposable_resource } from "@swc/helpers/_/_ts_add_disposable_resource";
2+
import { _ as _ts_dispose_resources } from "@swc/helpers/_/_ts_dispose_resources";
3+
const env = {
4+
stack: [],
5+
error: void 0,
6+
hasError: false
7+
};
38
try {
4-
var _usingCtx = _using_ctx();
5-
var Disposable = 1334;
6-
_Disposable = Disposable;
7-
var _disposable = _usingCtx.u(new Disposable());
9+
const _disposable = _ts_add_disposable_resource(env, new Disposable(), false);
810
console.log('ok');
9-
} catch (_) {
10-
_usingCtx.e = _;
11+
} catch (e) {
12+
env.error = e;
13+
env.hasError = true;
1114
} finally{
12-
_usingCtx.d();
15+
_ts_dispose_resources(env);
1316
}
14-
export { _Disposable as Disposable };
17+
export var Disposable = 1334;
Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
var _using_ctx = require("@swc/helpers/_/_using_ctx");
1+
var _ts_add_disposable_resource = require("@swc/helpers/_/_ts_add_disposable_resource");
2+
var _ts_dispose_resources = require("@swc/helpers/_/_ts_dispose_resources");
23
const logClean = function() {
34
return {
45
[Symbol.dispose] () {
@@ -10,40 +11,61 @@ const logClean = function() {
1011
};
1112
};
1213
async function foo() {
14+
const env = {
15+
stack: [],
16+
error: void 0,
17+
hasError: false
18+
};
1319
try {
14-
var _usingCtx = _using_ctx._();
15-
const a = _usingCtx.u(logClean());
16-
const b = _usingCtx.a(logClean());
17-
for (const a of [
20+
const a = _ts_add_disposable_resource._(env, logClean(), false);
21+
;
22+
const b = _ts_add_disposable_resource._(env, logClean(), true);
23+
;
24+
for (const _ of [
1825
logClean(),
1926
logClean()
2027
]){
28+
const env = {
29+
stack: [],
30+
error: void 0,
31+
hasError: false
32+
};
2133
try {
22-
var _usingCtx1 = _using_ctx._();
34+
const a = _ts_add_disposable_resource._(env, _, false);
2335
{}
24-
} catch (_) {
25-
_usingCtx1.e = _;
36+
} catch (e) {
37+
env.error = e;
38+
env.hasError = true;
2639
} finally{
27-
_usingCtx1.d();
40+
_ts_dispose_resources._(env);
2841
}
2942
}
30-
for (const a of [
43+
for (const _ of [
3144
logClean(),
3245
logClean()
3346
]){
47+
const env = {
48+
stack: [],
49+
error: void 0,
50+
hasError: false
51+
};
3452
try {
35-
var _usingCtx2 = _using_ctx._();
53+
const a = _ts_add_disposable_resource._(env, _, true);
3654
{}
37-
} catch (_) {
38-
_usingCtx2.e = _;
55+
} catch (e) {
56+
env.error = e;
57+
env.hasError = true;
3958
} finally{
40-
_usingCtx2.d();
59+
const result = _ts_dispose_resources._(env);
60+
if (result) await result;
4161
}
4262
}
43-
} catch (_) {
44-
_usingCtx.e = _;
63+
} catch (e) {
64+
env.error = e;
65+
env.hasError = true;
4566
} finally{
46-
await _usingCtx.d();
67+
const result = _ts_dispose_resources._(env);
68+
if (result) await result;
4769
}
4870
}
4971
foo();
Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
var _using_ctx = require("@swc/helpers/_/_using_ctx");
1+
var _ts_add_disposable_resource = require("@swc/helpers/_/_ts_add_disposable_resource");
2+
var _ts_dispose_resources = require("@swc/helpers/_/_ts_dispose_resources");
23
class File {
34
read() {
45
return 'content';
@@ -8,16 +9,22 @@ class File {
89
}
910
}
1011
function main() {
12+
const env = {
13+
stack: [],
14+
error: void 0,
15+
hasError: false
16+
};
1117
try {
12-
var _usingCtx = _using_ctx._();
13-
const file = _usingCtx.u(new File());
18+
const file = _ts_add_disposable_resource._(env, new File(), false);
19+
;
1420
function readFile() {
1521
file.read();
1622
}
1723
readFile();
18-
} catch (_) {
19-
_usingCtx.e = _;
24+
} catch (e) {
25+
env.error = e;
26+
env.hasError = true;
2027
} finally{
21-
_usingCtx.d();
28+
_ts_dispose_resources._(env);
2229
}
2330
}

0 commit comments

Comments
 (0)