Skip to content

Commit 96a7a4d

Browse files
authoredOct 2, 2023
fix(es/compat): Fix scoping of explicit-resource-management (#8044)
**Related issue:** - Closes #8020
1 parent 77b8591 commit 96a7a4d

File tree

13 files changed

+64
-16
lines changed

13 files changed

+64
-16
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"jsc": {
3+
"parser": {
4+
"syntax": "typescript",
5+
"tsx": false
6+
},
7+
"loose": false,
8+
"minify": {
9+
"compress": false,
10+
"mangle": false
11+
},
12+
"target": "es2022",
13+
},
14+
"module": {
15+
"type": "es6"
16+
},
17+
"minify": false,
18+
"isModule": true,
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using foo = null
2+
3+
const bar = 1
4+
5+
console.log(baz())
6+
7+
function baz() {
8+
return bar
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { _ as _dispose } from "@swc/helpers/_/_dispose";
2+
import { _ as _using } from "@swc/helpers/_/_using";
3+
function baz() {
4+
return bar;
5+
}
6+
try {
7+
var _stack = [];
8+
var foo = _using(_stack, null);
9+
var bar = 1;
10+
console.log(baz());
11+
} catch (_) {
12+
var _error = _;
13+
var _hasError = true;
14+
} finally{
15+
_dispose(_stack, _error, _hasError);
16+
}

‎crates/swc_ecma_transforms_proposal/src/explicit_resource_management.rs

+4
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ impl ExplicitResourceManagement {
8787
Ok(stmt @ Stmt::Decl(Decl::Fn(..))) => {
8888
new.push(T::from_stmt(stmt));
8989
}
90+
Ok(Stmt::Decl(Decl::Var(mut var))) => {
91+
var.kind = VarDeclKind::Var;
92+
try_body.push(Stmt::Decl(Decl::Var(var)));
93+
}
9094
Ok(stmt) => try_body.push(stmt),
9195
Err(stmt) => match stmt.try_into_module_decl() {
9296
Ok(ModuleDecl::ExportDefaultDecl(decl)) => {

‎crates/swc_ecma_transforms_proposal/tests/explicit-resource-management/transform-await/mixed/output.mjs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
try {
33
var _stack = [];
4-
const a = _using(_stack, 1);
5-
const b = _using(_stack, 2, true);
6-
const c = _using(_stack, 3);
4+
var a = _using(_stack, 1);
5+
var b = _using(_stack, 2, true);
6+
var c = _using(_stack, 3);
77
} catch (_) {
88
var _error = _;
99
var _hasError = true;

‎crates/swc_ecma_transforms_proposal/tests/explicit-resource-management/transform-await/only-using-await/output.mjs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
try {
33
var _stack = [];
4-
const x = _using(_stack, obj, true);
4+
var x = _using(_stack, obj, true);
55
stmt;
6-
const y = _using(_stack, obj, true), z = _using(_stack, obj, true);
6+
var y = _using(_stack, obj, true), z = _using(_stack, obj, true);
77
doSomethingWith(x, y);
88
} catch (_) {
99
var _error = _;

‎crates/swc_ecma_transforms_proposal/tests/explicit-resource-management/transform-sync/bare-block/output.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
try {
33
var _stack = [];
4-
const x = _using(_stack, obj);
4+
var x = _using(_stack, obj);
55
doSomethingWith(x);
66
} catch (_) {
77
var _error = _;

‎crates/swc_ecma_transforms_proposal/tests/explicit-resource-management/transform-sync/function-body/output.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
function fn() {
22
try {
33
var _stack = [];
4-
const x = _using(_stack, obj);
4+
var x = _using(_stack, obj);
55
return doSomethingWith(x);
66
} catch (_) {
77
var _error = _;

‎crates/swc_ecma_transforms_proposal/tests/explicit-resource-management/transform-sync/if-body/output.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
if (test) {
22
try {
33
var _stack = [];
4-
const x = _using(_stack, obj);
4+
var x = _using(_stack, obj);
55
doSomethingWith(x);
66
} catch (_) {
77
var _error = _;

‎crates/swc_ecma_transforms_proposal/tests/explicit-resource-management/transform-sync/multiple-nested/output.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
22
try {
33
var _stack = [];
4-
const x = _using(_stack, obj);
4+
var x = _using(_stack, obj);
55
{
66
try {
77
var _stack1 = [];
8-
const y = _using(_stack1, call(()=>{
8+
var y = _using(_stack1, call(()=>{
99
try {
1010
var _stack = [];
11-
const z = _using(_stack, obj);
11+
var z = _using(_stack, obj);
1212
return z;
1313
} catch (_) {
1414
var _error = _;

‎crates/swc_ecma_transforms_proposal/tests/explicit-resource-management/transform-sync/multiple-same-level/output.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
try {
33
var _stack = [];
44
stmt;
5-
const x = _using(_stack, obj);
5+
var x = _using(_stack, obj);
66
stmt;
7-
const y = _using(_stack, obj), z = _using(_stack, obj);
7+
var y = _using(_stack, obj), z = _using(_stack, obj);
88
stmt;
9-
const w = _using(_stack, obj);
9+
var w = _using(_stack, obj);
1010
doSomethingWith(x, z);
1111
} catch (_) {
1212
var _error = _;

‎crates/swc_ecma_transforms_proposal/tests/explicit-resource-management/transform-sync/static-block/output.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ class A {
22
static{
33
try {
44
var _stack = [];
5-
const x = _using(_stack, y);
5+
var x = _using(_stack, y);
66
doSomethingWith(x);
77
} catch (_) {
88
var _error = _;

‎crates/swc_ecma_transforms_proposal/tests/explicit-resource-management/transform-top-level/hoisting/output.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export class B {
1919
try {
2020
var _stack = [];
2121
doSomething();
22-
let c = 2;
22+
var c = 2;
2323
class A {
2424
}
2525
var x = _using(_stack, null);

1 commit comments

Comments
 (1)

github-actions[bot] commented on Oct 2, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 96a7a4d Previous: 77b8591 Ratio
es/full/bugs-1 278077 ns/iter (± 3860) 277979 ns/iter (± 3475) 1.00
es/full/minify/libraries/antd 1308459645 ns/iter (± 19673792) 1305066502 ns/iter (± 9298668) 1.00
es/full/minify/libraries/d3 275911923 ns/iter (± 4551380) 273123510 ns/iter (± 2173234) 1.01
es/full/minify/libraries/echarts 1047573589 ns/iter (± 3575543) 1045670825 ns/iter (± 16019086) 1.00
es/full/minify/libraries/jquery 84056679 ns/iter (± 171108) 83776515 ns/iter (± 188811) 1.00
es/full/minify/libraries/lodash 97710483 ns/iter (± 210410) 97154108 ns/iter (± 201657) 1.01
es/full/minify/libraries/moment 49830144 ns/iter (± 83411) 49561679 ns/iter (± 137623) 1.01
es/full/minify/libraries/react 18017170 ns/iter (± 116945) 17997392 ns/iter (± 175439) 1.00
es/full/minify/libraries/terser 216936122 ns/iter (± 542979) 216144673 ns/iter (± 1478762) 1.00
es/full/minify/libraries/three 386335835 ns/iter (± 3775306) 382282806 ns/iter (± 1169531) 1.01
es/full/minify/libraries/typescript 2639333862 ns/iter (± 15054578) 2638531135 ns/iter (± 4612413) 1.00
es/full/minify/libraries/victory 563374490 ns/iter (± 8212793) 560486005 ns/iter (± 4835168) 1.01
es/full/minify/libraries/vue 119309833 ns/iter (± 506668) 118795476 ns/iter (± 448992) 1.00
es/full/codegen/es3 35604 ns/iter (± 205) 34809 ns/iter (± 129) 1.02
es/full/codegen/es5 35326 ns/iter (± 208) 34666 ns/iter (± 98) 1.02
es/full/codegen/es2015 35281 ns/iter (± 268) 34678 ns/iter (± 146) 1.02
es/full/codegen/es2016 35609 ns/iter (± 119) 34758 ns/iter (± 100) 1.02
es/full/codegen/es2017 35593 ns/iter (± 185) 34751 ns/iter (± 92) 1.02
es/full/codegen/es2018 35682 ns/iter (± 122) 34605 ns/iter (± 138) 1.03
es/full/codegen/es2019 35728 ns/iter (± 100) 34722 ns/iter (± 44) 1.03
es/full/codegen/es2020 35680 ns/iter (± 114) 34601 ns/iter (± 120) 1.03
es/full/all/es3 164928629 ns/iter (± 1259944) 164676996 ns/iter (± 796755) 1.00
es/full/all/es5 158091998 ns/iter (± 1798692) 159579307 ns/iter (± 1502040) 0.99
es/full/all/es2015 117084226 ns/iter (± 348183) 118295076 ns/iter (± 1172604) 0.99
es/full/all/es2016 116054688 ns/iter (± 611124) 116942311 ns/iter (± 576146) 0.99
es/full/all/es2017 116259348 ns/iter (± 533786) 116517874 ns/iter (± 486618) 1.00
es/full/all/es2018 114547230 ns/iter (± 750095) 114481237 ns/iter (± 620100) 1.00
es/full/all/es2019 112874685 ns/iter (± 643492) 113785358 ns/iter (± 859988) 0.99
es/full/all/es2020 108706564 ns/iter (± 759271) 110296302 ns/iter (± 935587) 0.99
es/full/parser 493901 ns/iter (± 4562) 502292 ns/iter (± 5375) 0.98
es/full/base/fixer 18228 ns/iter (± 545) 19037 ns/iter (± 88) 0.96
es/full/base/resolver_and_hygiene 81240 ns/iter (± 143) 81573 ns/iter (± 113) 1.00
serialization of serde 310 ns/iter (± 2) 282 ns/iter (± 9) 1.10

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

Please sign in to comment.