Skip to content

Commit cff6a64

Browse files
dsherretkdy1
andauthoredFeb 27, 2025··
fix(es/resolver): Analyze variable declarations with declare (#10102)
**Description:** This change makes the resolver analyze ambient declarations when `handle_types` is `true` and also makes the behavior consistent across all declaration kinds and not just variable declarations. **Related issue:** Closes #9892 --------- Co-authored-by: Donny/강동윤 <kdy1997.dev@gmail.com>
1 parent dd019ea commit cff6a64

36 files changed

+239
-217
lines changed
 

‎.changeset/orange-pumpkins-rescue.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
swc_core: patch
3+
swc_ecma_transforms_base: patch
4+
---
5+
6+
fix(resolver): Analyze variable declarations with `declare`
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,86 @@
11
//// [callChain.ts]
22
var _o2, _o21, _o22, _o23, _o3_b, _o3_b1, _o3_b2, _o3_b3, _o3_b4, _o3_b5;
3-
var _o1, _o11, _o12, _o13, _o24, _o25, _o26, _o27, _o28, _o29, _o210, _o211, _o3_b6, _o3, _o3_b7, _o31, _o3_b8, _o32, _o3_b9, _o33, _o3_b10, _o34, _o3_b11, _o35, _o3_b12, _o36, _o3_b13, _o37, _o3_b14, _o38, _o3_b15, _o39, _o3_b16, _o310, _o3_b17, _o311, _o4, _o5, // GH#36031
4-
_o212, _o213;
5-
(_o1 = o1) === null || _o1 === void 0 ? void 0 : _o1();
6-
(_o11 = o1) === null || _o11 === void 0 ? void 0 : _o11(1);
7-
(_o12 = o1) === null || _o12 === void 0 ? void 0 : _o12.apply(void 0, [
3+
var _o3_b6, _o3_b7, _o3_b8, _o3_b9, _o3_b10, _o3_b11, _o3_b12, _o3_b13, _o3_b14, _o3_b15, _o3_b16, _o3_b17, _o5;
4+
o1 === null || o1 === void 0 ? void 0 : o1();
5+
o1 === null || o1 === void 0 ? void 0 : o1(1);
6+
o1 === null || o1 === void 0 ? void 0 : o1.apply(void 0, [
87
1,
98
2
109
]);
11-
(_o13 = o1) === null || _o13 === void 0 ? void 0 : _o13.apply(void 0, [
10+
o1 === null || o1 === void 0 ? void 0 : o1.apply(void 0, [
1211
1,
1312
2,
1413
3,
1514
4
1615
]);
17-
(_o24 = o2) === null || _o24 === void 0 ? void 0 : _o24.b();
18-
(_o25 = o2) === null || _o25 === void 0 ? void 0 : _o25.b(1);
19-
(_o26 = o2) === null || _o26 === void 0 ? void 0 : (_o2 = _o26).b.apply(_o2, [
16+
o2 === null || o2 === void 0 ? void 0 : o2.b();
17+
o2 === null || o2 === void 0 ? void 0 : o2.b(1);
18+
o2 === null || o2 === void 0 ? void 0 : (_o2 = o2).b.apply(_o2, [
2019
1,
2120
2
2221
]);
23-
(_o27 = o2) === null || _o27 === void 0 ? void 0 : (_o21 = _o27).b.apply(_o21, [
22+
o2 === null || o2 === void 0 ? void 0 : (_o21 = o2).b.apply(_o21, [
2423
1,
2524
2,
2625
3,
2726
4
2827
]);
29-
(_o28 = o2) === null || _o28 === void 0 ? void 0 : _o28["b"]();
30-
(_o29 = o2) === null || _o29 === void 0 ? void 0 : _o29["b"](1);
31-
(_o210 = o2) === null || _o210 === void 0 ? void 0 : (_o22 = _o210)["b"].apply(_o22, [
28+
o2 === null || o2 === void 0 ? void 0 : o2["b"]();
29+
o2 === null || o2 === void 0 ? void 0 : o2["b"](1);
30+
o2 === null || o2 === void 0 ? void 0 : (_o22 = o2)["b"].apply(_o22, [
3231
1,
3332
2
3433
]);
35-
(_o211 = o2) === null || _o211 === void 0 ? void 0 : (_o23 = _o211)["b"].apply(_o23, [
34+
o2 === null || o2 === void 0 ? void 0 : (_o23 = o2)["b"].apply(_o23, [
3635
1,
3736
2,
3837
3,
3938
4
4039
]);
41-
(_o3_b6 = (_o3 = o3).b) === null || _o3_b6 === void 0 ? void 0 : _o3_b6.call(_o3).c;
42-
(_o3_b7 = (_o31 = o3).b) === null || _o3_b7 === void 0 ? void 0 : _o3_b7.call(_o31, 1).c;
43-
(_o3_b8 = (_o32 = o3).b) === null || _o3_b8 === void 0 ? void 0 : (_o3_b = _o3_b8).call.apply(_o3_b, [
44-
_o32,
40+
(_o3_b6 = o3.b) === null || _o3_b6 === void 0 ? void 0 : _o3_b6.call(o3).c;
41+
(_o3_b7 = o3.b) === null || _o3_b7 === void 0 ? void 0 : _o3_b7.call(o3, 1).c;
42+
(_o3_b8 = o3.b) === null || _o3_b8 === void 0 ? void 0 : (_o3_b = _o3_b8).call.apply(_o3_b, [
43+
o3,
4544
1,
4645
2
4746
]).c;
48-
(_o3_b9 = (_o33 = o3).b) === null || _o3_b9 === void 0 ? void 0 : (_o3_b1 = _o3_b9).call.apply(_o3_b1, [
49-
_o33,
47+
(_o3_b9 = o3.b) === null || _o3_b9 === void 0 ? void 0 : (_o3_b1 = _o3_b9).call.apply(_o3_b1, [
48+
o3,
5049
1,
5150
2,
5251
3,
5352
4
5453
]).c;
55-
(_o3_b10 = (_o34 = o3).b) === null || _o3_b10 === void 0 ? void 0 : _o3_b10.call(_o34)["c"];
56-
(_o3_b11 = (_o35 = o3).b) === null || _o3_b11 === void 0 ? void 0 : _o3_b11.call(_o35, 1)["c"];
57-
(_o3_b12 = (_o36 = o3).b) === null || _o3_b12 === void 0 ? void 0 : (_o3_b2 = _o3_b12).call.apply(_o3_b2, [
58-
_o36,
54+
(_o3_b10 = o3.b) === null || _o3_b10 === void 0 ? void 0 : _o3_b10.call(o3)["c"];
55+
(_o3_b11 = o3.b) === null || _o3_b11 === void 0 ? void 0 : _o3_b11.call(o3, 1)["c"];
56+
(_o3_b12 = o3.b) === null || _o3_b12 === void 0 ? void 0 : (_o3_b2 = _o3_b12).call.apply(_o3_b2, [
57+
o3,
5958
1,
6059
2
6160
])["c"];
62-
(_o3_b13 = (_o37 = o3).b) === null || _o3_b13 === void 0 ? void 0 : (_o3_b3 = _o3_b13).call.apply(_o3_b3, [
63-
_o37,
61+
(_o3_b13 = o3.b) === null || _o3_b13 === void 0 ? void 0 : (_o3_b3 = _o3_b13).call.apply(_o3_b3, [
62+
o3,
6463
1,
6564
2,
6665
3,
6766
4
6867
])["c"];
69-
(_o3_b14 = (_o38 = o3)["b"]) === null || _o3_b14 === void 0 ? void 0 : _o3_b14.call(_o38).c;
70-
(_o3_b15 = (_o39 = o3)["b"]) === null || _o3_b15 === void 0 ? void 0 : _o3_b15.call(_o39, 1).c;
71-
(_o3_b16 = (_o310 = o3)["b"]) === null || _o3_b16 === void 0 ? void 0 : (_o3_b4 = _o3_b16).call.apply(_o3_b4, [
72-
_o310,
68+
(_o3_b14 = o3["b"]) === null || _o3_b14 === void 0 ? void 0 : _o3_b14.call(o3).c;
69+
(_o3_b15 = o3["b"]) === null || _o3_b15 === void 0 ? void 0 : _o3_b15.call(o3, 1).c;
70+
(_o3_b16 = o3["b"]) === null || _o3_b16 === void 0 ? void 0 : (_o3_b4 = _o3_b16).call.apply(_o3_b4, [
71+
o3,
7372
1,
7473
2
7574
]).c;
76-
(_o3_b17 = (_o311 = o3)["b"]) === null || _o3_b17 === void 0 ? void 0 : (_o3_b5 = _o3_b17).call.apply(_o3_b5, [
77-
_o311,
75+
(_o3_b17 = o3["b"]) === null || _o3_b17 === void 0 ? void 0 : (_o3_b5 = _o3_b17).call.apply(_o3_b5, [
76+
o3,
7877
1,
7978
2,
8079
3,
8180
4
8281
]).c;
83-
var v = (_o4 = o4) === null || _o4 === void 0 ? void 0 : _o4(incr);
82+
var v = o4 === null || o4 === void 0 ? void 0 : o4(incr);
8483
(_o5 = o5()) === null || _o5 === void 0 ? void 0 : _o5();
85-
(_o212 = o2) === null || _o212 === void 0 ? void 0 : _o212.b().toString;
86-
(_o213 = o2) === null || _o213 === void 0 ? void 0 : _o213.b().toString;
84+
// GH#36031
85+
o2 === null || o2 === void 0 ? void 0 : o2.b().toString;
86+
o2 === null || o2 === void 0 ? void 0 : o2.b().toString;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//// [callChain.2.ts]
2-
var _o1, _o2, _o3_b, _o3;
3-
(_o1 = o1) === null || _o1 === void 0 ? void 0 : _o1();
4-
(_o2 = o2) === null || _o2 === void 0 ? void 0 : _o2.b();
5-
(_o3_b = (_o3 = o3).b) === null || _o3_b === void 0 ? void 0 : _o3_b.call(_o3).c;
2+
var _o3_b;
3+
o1 === null || o1 === void 0 ? void 0 : o1();
4+
o2 === null || o2 === void 0 ? void 0 : o2.b();
5+
(_o3_b = o3.b) === null || _o3_b === void 0 ? void 0 : _o3_b.call(o3).c;
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
//// [callChain.2.ts]
2-
var _o1, _o2, _o3_b, _o3;
3-
null === (_o1 = o1) || void 0 === _o1 || _o1(), null === (_o2 = o2) || void 0 === _o2 || _o2.b(), null === (_o3_b = (_o3 = o3).b) || void 0 === _o3_b || _o3_b.call(_o3).c;
2+
var _o3_b;
3+
null == o1 || o1(), null == o2 || o2.b(), null === (_o3_b = o3.b) || void 0 === _o3_b || _o3_b.call(o3).c;
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
11
//// [callChain.ts]
2-
var _o1, _o11, _o12, _o13, _o24, _o25, _o26, _o27, _o28, _o29, _o210, _o211, _o3_b6, _o3, _o3_b7, _o31, _o3_b8, _o32, _o3_b9, _o33, _o3_b10, _o34, _o3_b11, _o35, _o3_b12, _o36, _o3_b13, _o37, _o3_b14, _o38, _o3_b15, _o39, _o3_b16, _o310, _o3_b17, _o311, _o4, _o5, _o212, _o213;
3-
null === (_o1 = o1) || void 0 === _o1 || _o1(), null === (_o11 = o1) || void 0 === _o11 || _o11(1), null === (_o12 = o1) || void 0 === _o12 || _o12.apply(void 0, [
2+
var _o2, _o21, _o22, _o23, _o3_b6, _o3_b7, _o3_b8, _o3_b9, _o3_b10, _o3_b11, _o3_b12, _o3_b13, _o3_b14, _o3_b15, _o3_b16, _o3_b17, _o5;
3+
null == o1 || o1(), null == o1 || o1(1), null == o1 || o1.apply(void 0, [
44
1,
55
2
6-
]), null === (_o13 = o1) || void 0 === _o13 || _o13.apply(void 0, [
6+
]), null == o1 || o1.apply(void 0, [
77
1,
88
2,
99
3,
1010
4
11-
]), null === (_o24 = o2) || void 0 === _o24 || _o24.b(), null === (_o25 = o2) || void 0 === _o25 || _o25.b(1), null === (_o26 = o2) || void 0 === _o26 || _o26.b.apply(_o26, [
11+
]), null == o2 || o2.b(), null == o2 || o2.b(1), null == o2 || (_o2 = o2).b.apply(_o2, [
1212
1,
1313
2
14-
]), null === (_o27 = o2) || void 0 === _o27 || _o27.b.apply(_o27, [
14+
]), null == o2 || (_o21 = o2).b.apply(_o21, [
1515
1,
1616
2,
1717
3,
1818
4
19-
]), null === (_o28 = o2) || void 0 === _o28 || _o28.b(), null === (_o29 = o2) || void 0 === _o29 || _o29.b(1), null === (_o210 = o2) || void 0 === _o210 || _o210.b.apply(_o210, [
19+
]), null == o2 || o2.b(), null == o2 || o2.b(1), null == o2 || (_o22 = o2).b.apply(_o22, [
2020
1,
2121
2
22-
]), null === (_o211 = o2) || void 0 === _o211 || _o211.b.apply(_o211, [
22+
]), null == o2 || (_o23 = o2).b.apply(_o23, [
2323
1,
2424
2,
2525
3,
2626
4
27-
]), null === (_o3_b6 = (_o3 = o3).b) || void 0 === _o3_b6 || _o3_b6.call(_o3).c, null === (_o3_b7 = (_o31 = o3).b) || void 0 === _o3_b7 || _o3_b7.call(_o31, 1).c, null === (_o3_b8 = (_o32 = o3).b) || void 0 === _o3_b8 || _o3_b8.call.apply(_o3_b8, [
28-
_o32,
27+
]), null === (_o3_b6 = o3.b) || void 0 === _o3_b6 || _o3_b6.call(o3).c, null === (_o3_b7 = o3.b) || void 0 === _o3_b7 || _o3_b7.call(o3, 1).c, null === (_o3_b8 = o3.b) || void 0 === _o3_b8 || _o3_b8.call.apply(_o3_b8, [
28+
o3,
2929
1,
3030
2
31-
]).c, null === (_o3_b9 = (_o33 = o3).b) || void 0 === _o3_b9 || _o3_b9.call.apply(_o3_b9, [
32-
_o33,
31+
]).c, null === (_o3_b9 = o3.b) || void 0 === _o3_b9 || _o3_b9.call.apply(_o3_b9, [
32+
o3,
3333
1,
3434
2,
3535
3,
3636
4
37-
]).c, null === (_o3_b10 = (_o34 = o3).b) || void 0 === _o3_b10 || _o3_b10.call(_o34).c, null === (_o3_b11 = (_o35 = o3).b) || void 0 === _o3_b11 || _o3_b11.call(_o35, 1).c, null === (_o3_b12 = (_o36 = o3).b) || void 0 === _o3_b12 || _o3_b12.call.apply(_o3_b12, [
38-
_o36,
37+
]).c, null === (_o3_b10 = o3.b) || void 0 === _o3_b10 || _o3_b10.call(o3).c, null === (_o3_b11 = o3.b) || void 0 === _o3_b11 || _o3_b11.call(o3, 1).c, null === (_o3_b12 = o3.b) || void 0 === _o3_b12 || _o3_b12.call.apply(_o3_b12, [
38+
o3,
3939
1,
4040
2
41-
]).c, null === (_o3_b13 = (_o37 = o3).b) || void 0 === _o3_b13 || _o3_b13.call.apply(_o3_b13, [
42-
_o37,
41+
]).c, null === (_o3_b13 = o3.b) || void 0 === _o3_b13 || _o3_b13.call.apply(_o3_b13, [
42+
o3,
4343
1,
4444
2,
4545
3,
4646
4
47-
]).c, null === (_o3_b14 = (_o38 = o3).b) || void 0 === _o3_b14 || _o3_b14.call(_o38).c, null === (_o3_b15 = (_o39 = o3).b) || void 0 === _o3_b15 || _o3_b15.call(_o39, 1).c, null === (_o3_b16 = (_o310 = o3).b) || void 0 === _o3_b16 || _o3_b16.call.apply(_o3_b16, [
48-
_o310,
47+
]).c, null === (_o3_b14 = o3.b) || void 0 === _o3_b14 || _o3_b14.call(o3).c, null === (_o3_b15 = o3.b) || void 0 === _o3_b15 || _o3_b15.call(o3, 1).c, null === (_o3_b16 = o3.b) || void 0 === _o3_b16 || _o3_b16.call.apply(_o3_b16, [
48+
o3,
4949
1,
5050
2
51-
]).c, null === (_o3_b17 = (_o311 = o3).b) || void 0 === _o3_b17 || _o3_b17.call.apply(_o3_b17, [
52-
_o311,
51+
]).c, null === (_o3_b17 = o3.b) || void 0 === _o3_b17 || _o3_b17.call.apply(_o3_b17, [
52+
o3,
5353
1,
5454
2,
5555
3,
5656
4
57-
]).c, null === (_o4 = o4) || void 0 === _o4 || _o4(incr), null === (_o5 = o5()) || void 0 === _o5 || _o5(), null === (_o212 = o2) || void 0 === _o212 || _o212.b().toString, null === (_o213 = o2) || void 0 === _o213 || _o213.b().toString;
57+
]).c, null == o4 || o4(incr), null === (_o5 = o5()) || void 0 === _o5 || _o5(), null == o2 || o2.b().toString, null == o2 || o2.b().toString;

‎crates/swc/tests/tsc-references/callChain.3.1.normal.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
//// [callChain.3.ts]
2-
var _a_m, _a, _a_m1, _a1, _a_m2, _a2, _a_m3, _a3, _a_m4, _a4;
3-
var n1 = (_a = a) === null || _a === void 0 ? void 0 : (_a_m = _a.m) === null || _a_m === void 0 ? void 0 : _a_m.call(_a, {
2+
var _a_m, _a_m1, _a_m2, _a_m3, _a_m4;
3+
var n1 = a === null || a === void 0 ? void 0 : (_a_m = a.m) === null || _a_m === void 0 ? void 0 : _a_m.call(a, {
44
x: 12
55
}); // should be an error (`undefined` is not assignable to `number`)
6-
var n2 = (_a1 = a) === null || _a1 === void 0 ? void 0 : (_a_m1 = _a1.m) === null || _a_m1 === void 0 ? void 0 : _a_m1.call(_a1, {
6+
var n2 = a === null || a === void 0 ? void 0 : (_a_m1 = a.m) === null || _a_m1 === void 0 ? void 0 : _a_m1.call(a, {
77
x: absorb()
88
}); // likewise
9-
var n3 = (_a2 = a) === null || _a2 === void 0 ? void 0 : (_a_m2 = _a2.m) === null || _a_m2 === void 0 ? void 0 : _a_m2.call(_a2, {
9+
var n3 = a === null || a === void 0 ? void 0 : (_a_m2 = a.m) === null || _a_m2 === void 0 ? void 0 : _a_m2.call(a, {
1010
x: 12
1111
}); // should be ok
12-
var n4 = (_a3 = a) === null || _a3 === void 0 ? void 0 : (_a_m3 = _a3.m) === null || _a_m3 === void 0 ? void 0 : _a_m3.call(_a3, {
12+
var n4 = a === null || a === void 0 ? void 0 : (_a_m3 = a.m) === null || _a_m3 === void 0 ? void 0 : _a_m3.call(a, {
1313
x: absorb()
1414
}); // likewise
1515
// Also a test showing `!` vs `?` for good measure
16-
var t1 = (_a4 = a) === null || _a4 === void 0 ? void 0 : (_a_m4 = _a4.m) === null || _a_m4 === void 0 ? void 0 : _a_m4.call(_a4, {
16+
var t1 = a === null || a === void 0 ? void 0 : (_a_m4 = a.m) === null || _a_m4 === void 0 ? void 0 : _a_m4.call(a, {
1717
x: 12
1818
});
1919
t1 = a.m({

‎crates/swc/tests/tsc-references/callChain.3.2.minified.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
//// [callChain.3.ts]
2-
var _a_m, _a, _a_m1, _a1, _a_m2, _a2, _a_m3, _a3, _a_m4, _a4;
3-
null === (_a = a) || void 0 === _a || null === (_a_m = _a.m) || void 0 === _a_m || _a_m.call(_a, {
2+
var _a_m, _a_m1, _a_m2, _a_m3, _a_m4;
3+
null == a || null === (_a_m = a.m) || void 0 === _a_m || _a_m.call(a, {
44
x: 12
5-
}), null === (_a1 = a) || void 0 === _a1 || null === (_a_m1 = _a1.m) || void 0 === _a_m1 || _a_m1.call(_a1, {
5+
}), null == a || null === (_a_m1 = a.m) || void 0 === _a_m1 || _a_m1.call(a, {
66
x: absorb()
7-
}), null === (_a2 = a) || void 0 === _a2 || null === (_a_m2 = _a2.m) || void 0 === _a_m2 || _a_m2.call(_a2, {
7+
}), null == a || null === (_a_m2 = a.m) || void 0 === _a_m2 || _a_m2.call(a, {
88
x: 12
9-
}), null === (_a3 = a) || void 0 === _a3 || null === (_a_m3 = _a3.m) || void 0 === _a_m3 || _a_m3.call(_a3, {
9+
}), null == a || null === (_a_m3 = a.m) || void 0 === _a_m3 || _a_m3.call(a, {
1010
x: absorb()
11-
}), null === (_a4 = a) || void 0 === _a4 || null === (_a_m4 = _a4.m) || void 0 === _a_m4 || _a_m4.call(_a4, {
11+
}), null == a || null === (_a_m4 = a.m) || void 0 === _a_m4 || _a_m4.call(a, {
1212
x: 12
1313
}), a.m({
1414
x: 12
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
//// [callChainInference.ts]
22
// Repro from #42404
3-
var _value;
43
if (value) {
5-
var _value1;
6-
(_value1 = value) === null || _value1 === void 0 ? void 0 : _value1.foo("a");
4+
value === null || value === void 0 ? void 0 : value.foo("a");
75
}
8-
(_value = value) === null || _value === void 0 ? void 0 : _value.foo("a");
6+
value === null || value === void 0 ? void 0 : value.foo("a");
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
//// [callChainInference.ts]
2-
var _value, _value1;
3-
value && (null === (_value1 = value) || void 0 === _value1 || _value1.foo("a")), null === (_value = value) || void 0 === _value || _value.foo("a");
2+
value && (null == value || value.foo("a")), null == value || value.foo("a");

‎crates/swc/tests/tsc-references/controlFlowOptionalChain.1.normal.js

+22-31
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
// assignments in shortcutting chain
33
import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
44
import { _ as _type_of } from "@swc/helpers/_/_type_of";
5-
var _o, _o1, _o2, _o3, _f, _o21, _o22, _o31, _o32, _o4_x, _o4_x1, _o5_x_y_z, _o5_x, _o5_x1, _o5_x2, _o5_x_y_z1, _o5_x3, _o6, _o61, _arr_i;
5+
var _o4_x, _o4_x1, _o5_x_y_z, _o5_x, _o5_x1, _o5_x2, _o5_x_y_z1, _o5_x3, _arr_i;
66
var a;
7-
(_o = o) === null || _o === void 0 ? void 0 : _o[a = 1];
7+
o === null || o === void 0 ? void 0 : o[a = 1];
88
a.toString();
99
var b;
10-
(_o1 = o) === null || _o1 === void 0 ? void 0 : _o1.x[b = 1];
10+
o === null || o === void 0 ? void 0 : o.x[b = 1];
1111
b.toString();
1212
var c;
13-
(_o2 = o) === null || _o2 === void 0 ? void 0 : _o2(c = 1);
13+
o === null || o === void 0 ? void 0 : o(c = 1);
1414
c.toString();
1515
var d;
16-
(_o3 = o) === null || _o3 === void 0 ? void 0 : _o3.x(d = 1);
16+
o === null || o === void 0 ? void 0 : o.x(d = 1);
1717
d.toString();
18-
if ((_f = f) === null || _f === void 0 ? void 0 : _f(x)) {
18+
if (f === null || f === void 0 ? void 0 : f(x)) {
1919
x; // number
2020
f; // (x: any) => x is number
2121
f(x);
@@ -27,36 +27,32 @@ if ((_f = f) === null || _f === void 0 ? void 0 : _f(x)) {
2727
x;
2828
f;
2929
f(x);
30-
if ((_o21 = o2) === null || _o21 === void 0 ? void 0 : _o21.f(x)) {
31-
var _o23, _o24;
30+
if (o2 === null || o2 === void 0 ? void 0 : o2.f(x)) {
3231
x; // number
3332
o2.f; // (x: any) => x is number
34-
(_o23 = o2) === null || _o23 === void 0 ? void 0 : _o23.f;
35-
(_o24 = o2) === null || _o24 === void 0 ? void 0 : _o24.f(x);
33+
o2 === null || o2 === void 0 ? void 0 : o2.f;
34+
o2 === null || o2 === void 0 ? void 0 : o2.f(x);
3635
} else {
37-
var _o25;
3836
x;
3937
o2;
40-
(_o25 = o2) === null || _o25 === void 0 ? void 0 : _o25.f;
38+
o2 === null || o2 === void 0 ? void 0 : o2.f;
4139
o2.f;
4240
}
4341
x;
4442
o2;
45-
(_o22 = o2) === null || _o22 === void 0 ? void 0 : _o22.f;
43+
o2 === null || o2 === void 0 ? void 0 : o2.f;
4644
o2.f;
47-
if (((_o31 = o3) === null || _o31 === void 0 ? void 0 : _o31.x) === 1) {
48-
var _o33;
45+
if ((o3 === null || o3 === void 0 ? void 0 : o3.x) === 1) {
4946
o3;
5047
o3.x;
51-
(_o33 = o3) === null || _o33 === void 0 ? void 0 : _o33.x;
48+
o3 === null || o3 === void 0 ? void 0 : o3.x;
5249
} else {
53-
var _o34;
5450
o3;
55-
(_o34 = o3) === null || _o34 === void 0 ? void 0 : _o34.x;
51+
o3 === null || o3 === void 0 ? void 0 : o3.x;
5652
o3.x;
5753
}
5854
o3;
59-
(_o32 = o3) === null || _o32 === void 0 ? void 0 : _o32.x;
55+
o3 === null || o3 === void 0 ? void 0 : o3.x;
6056
o3.x;
6157
if ((_o4_x = o4.x) === null || _o4_x === void 0 ? void 0 : _o4_x.y) {
6258
var _o4_x2;
@@ -96,38 +92,33 @@ o5.x;
9692
(_o5_x3 = o5.x) === null || _o5_x3 === void 0 ? void 0 : (_o5_x_y_z1 = _o5_x3.y.z) === null || _o5_x_y_z1 === void 0 ? void 0 : _o5_x_y_z1.w;
9793
o5.x.y;
9894
o5.x.y.z.w;
99-
if ((_o6 = o6) === null || _o6 === void 0 ? void 0 : _o6.f()) {
95+
if (o6 === null || o6 === void 0 ? void 0 : o6.f()) {
10096
o6; // Derived
10197
o6.f;
10298
} else {
103-
var _o62;
10499
o6;
105-
(_o62 = o6) === null || _o62 === void 0 ? void 0 : _o62.f;
100+
o6 === null || o6 === void 0 ? void 0 : o6.f;
106101
o6.f;
107102
}
108103
o6;
109-
(_o61 = o6) === null || _o61 === void 0 ? void 0 : _o61.f;
104+
o6 === null || o6 === void 0 ? void 0 : o6.f;
110105
o6.f;
111106
function f01(x1) {
112107
if (!!true) {
113-
var _isString;
114-
(_isString = isString) === null || _isString === void 0 ? void 0 : _isString(x1);
108+
isString === null || isString === void 0 ? void 0 : isString(x1);
115109
x1;
116110
}
117111
if (!!true) {
118-
var _maybeIsString;
119-
(_maybeIsString = maybeIsString) === null || _maybeIsString === void 0 ? void 0 : _maybeIsString(x1);
112+
maybeIsString === null || maybeIsString === void 0 ? void 0 : maybeIsString(x1);
120113
x1;
121114
}
122115
if (!!true) {
123-
var _maybeIsString1;
124116
isDefined(maybeIsString);
125-
(_maybeIsString1 = maybeIsString) === null || _maybeIsString1 === void 0 ? void 0 : _maybeIsString1(x1);
117+
maybeIsString === null || maybeIsString === void 0 ? void 0 : maybeIsString(x1);
126118
x1;
127119
}
128120
if (!!true) {
129-
var _maybeNever;
130-
(_maybeNever = maybeNever) === null || _maybeNever === void 0 ? void 0 : _maybeNever();
121+
maybeNever === null || maybeNever === void 0 ? void 0 : maybeNever();
131122
x1;
132123
}
133124
}

‎crates/swc/tests/tsc-references/controlFlowOptionalChain.2.minified.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
//// [deleteChain.ts]
2-
var _o1, _o11, _o2, _o21, _o3_b, _o3_b1, _o4_b_c_d, _o4_b, _o4_b_c_d1, _o4_b1, _o4_b_c_d2, _o4_b2, _o5_b_c_d, _o5_b, _o5, _o5_b_c_d1, _o5_b1, _o51, _o6_b_c_d, _o6_b, _o6_b_c_d1, _o6_b1;
3-
(_o1 = o1) === null || _o1 === void 0 ? true : delete _o1.b;
4-
(_o11 = o1) === null || _o11 === void 0 ? true : delete _o11.b;
5-
(_o2 = o2) === null || _o2 === void 0 ? true : delete _o2.b.c;
6-
(_o21 = o2) === null || _o21 === void 0 ? true : delete _o21.b.c;
2+
var _o3_b, _o3_b1, _o4_b_c_d, _o4_b, _o4_b_c_d1, _o4_b1, _o4_b_c_d2, _o4_b2, _o5_b_c_d, _o5_b, _o5_b_c_d1, _o5_b1, _o6_b_c_d, _o6_b, _o6_b_c_d1, _o6_b1;
3+
o1 === null || o1 === void 0 ? true : delete o1.b;
4+
o1 === null || o1 === void 0 ? true : delete o1.b;
5+
o2 === null || o2 === void 0 ? true : delete o2.b.c;
6+
o2 === null || o2 === void 0 ? true : delete o2.b.c;
77
(_o3_b = o3.b) === null || _o3_b === void 0 ? true : delete _o3_b.c;
88
(_o3_b1 = o3.b) === null || _o3_b1 === void 0 ? true : delete _o3_b1.c;
99
(_o4_b = o4.b) === null || _o4_b === void 0 ? true : (_o4_b_c_d = _o4_b.c.d) === null || _o4_b_c_d === void 0 ? true : delete _o4_b_c_d.e;
1010
(_o4_b1 = o4.b) === null || _o4_b1 === void 0 ? true : (_o4_b_c_d1 = _o4_b1.c.d) === null || _o4_b_c_d1 === void 0 ? true : delete _o4_b_c_d1.e;
1111
(_o4_b2 = o4.b) === null || _o4_b2 === void 0 ? true : (_o4_b_c_d2 = _o4_b2.c.d) === null || _o4_b_c_d2 === void 0 ? true : delete _o4_b_c_d2.e;
12-
(_o5_b = (_o5 = o5).b) === null || _o5_b === void 0 ? true : (_o5_b_c_d = _o5_b.call(_o5).c.d) === null || _o5_b_c_d === void 0 ? true : delete _o5_b_c_d.e;
13-
(_o5_b1 = (_o51 = o5).b) === null || _o5_b1 === void 0 ? true : (_o5_b_c_d1 = _o5_b1.call(_o51).c.d) === null || _o5_b_c_d1 === void 0 ? true : delete _o5_b_c_d1.e;
12+
(_o5_b = o5.b) === null || _o5_b === void 0 ? true : (_o5_b_c_d = _o5_b.call(o5).c.d) === null || _o5_b_c_d === void 0 ? true : delete _o5_b_c_d.e;
13+
(_o5_b1 = o5.b) === null || _o5_b1 === void 0 ? true : (_o5_b_c_d1 = _o5_b1.call(o5).c.d) === null || _o5_b_c_d1 === void 0 ? true : delete _o5_b_c_d1.e;
1414
(_o6_b = o6.b) === null || _o6_b === void 0 ? true : (_o6_b_c_d = _o6_b['c'].d) === null || _o6_b_c_d === void 0 ? true : delete _o6_b_c_d['e'];
1515
(_o6_b1 = o6.b) === null || _o6_b1 === void 0 ? true : (_o6_b_c_d1 = _o6_b1['c'].d) === null || _o6_b_c_d1 === void 0 ? true : delete _o6_b_c_d1['e'];

‎crates/swc/tests/tsc-references/deleteChain.2.minified.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
//// [elementAccessChain.ts]
2-
var _o1, _o2, _o21, _o3_b, _o3_b1, _o4_b_c_d, _o4_b, _o4_b_c_d1, _o4_b1, _o5_b_c_d, _o5_b, _o5, _o5_b_c_d1, _o5_b1, _o51, _o5_b_c_d2, _o5_b2, _o52, _o5_b_c_d3, _o5_b3, _o53, _o6, // GH#36031
3-
_o22, _o23, _o24, _o25;
4-
(_o1 = o1) === null || _o1 === void 0 ? void 0 : _o1["b"];
5-
(_o2 = o2) === null || _o2 === void 0 ? void 0 : _o2["b"].c;
6-
(_o21 = o2) === null || _o21 === void 0 ? void 0 : _o21.b["c"];
2+
var _o3_b, _o3_b1, _o4_b_c_d, _o4_b, _o4_b_c_d1, _o4_b1, _o5_b_c_d, _o5_b, _o5_b_c_d1, _o5_b1, _o5_b_c_d2, _o5_b2, _o5_b_c_d3, _o5_b3, _o6;
3+
o1 === null || o1 === void 0 ? void 0 : o1["b"];
4+
o2 === null || o2 === void 0 ? void 0 : o2["b"].c;
5+
o2 === null || o2 === void 0 ? void 0 : o2.b["c"];
76
(_o3_b = o3["b"]) === null || _o3_b === void 0 ? void 0 : _o3_b.c;
87
(_o3_b1 = o3.b) === null || _o3_b1 === void 0 ? void 0 : _o3_b1["c"];
98
(_o4_b = o4.b) === null || _o4_b === void 0 ? void 0 : (_o4_b_c_d = _o4_b["c"].d) === null || _o4_b_c_d === void 0 ? void 0 : _o4_b_c_d.e;
109
(_o4_b1 = o4.b) === null || _o4_b1 === void 0 ? void 0 : (_o4_b_c_d1 = _o4_b1["c"].d) === null || _o4_b_c_d1 === void 0 ? void 0 : _o4_b_c_d1["e"];
11-
(_o5_b = (_o5 = o5).b) === null || _o5_b === void 0 ? void 0 : (_o5_b_c_d = _o5_b.call(_o5)["c"].d) === null || _o5_b_c_d === void 0 ? void 0 : _o5_b_c_d.e;
12-
(_o5_b1 = (_o51 = o5).b) === null || _o5_b1 === void 0 ? void 0 : (_o5_b_c_d1 = _o5_b1.call(_o51)["c"].d) === null || _o5_b_c_d1 === void 0 ? void 0 : _o5_b_c_d1["e"];
13-
(_o5_b2 = (_o52 = o5)["b"]) === null || _o5_b2 === void 0 ? void 0 : (_o5_b_c_d2 = _o5_b2.call(_o52)["c"].d) === null || _o5_b_c_d2 === void 0 ? void 0 : _o5_b_c_d2.e;
14-
(_o5_b3 = (_o53 = o5)["b"]) === null || _o5_b3 === void 0 ? void 0 : (_o5_b_c_d3 = _o5_b3.call(_o53)["c"].d) === null || _o5_b_c_d3 === void 0 ? void 0 : _o5_b_c_d3["e"];
10+
(_o5_b = o5.b) === null || _o5_b === void 0 ? void 0 : (_o5_b_c_d = _o5_b.call(o5)["c"].d) === null || _o5_b_c_d === void 0 ? void 0 : _o5_b_c_d.e;
11+
(_o5_b1 = o5.b) === null || _o5_b1 === void 0 ? void 0 : (_o5_b_c_d1 = _o5_b1.call(o5)["c"].d) === null || _o5_b_c_d1 === void 0 ? void 0 : _o5_b_c_d1["e"];
12+
(_o5_b2 = o5["b"]) === null || _o5_b2 === void 0 ? void 0 : (_o5_b_c_d2 = _o5_b2.call(o5)["c"].d) === null || _o5_b_c_d2 === void 0 ? void 0 : _o5_b_c_d2.e;
13+
(_o5_b3 = o5["b"]) === null || _o5_b3 === void 0 ? void 0 : (_o5_b_c_d3 = _o5_b3.call(o5)["c"].d) === null || _o5_b_c_d3 === void 0 ? void 0 : _o5_b_c_d3["e"];
1514
(_o6 = o6()) === null || _o6 === void 0 ? void 0 : _o6["x"];
16-
(_o22 = o2) === null || _o22 === void 0 ? void 0 : _o22["b"].c;
17-
(_o23 = o2) === null || _o23 === void 0 ? void 0 : _o23["b"]["c"];
18-
(_o24 = o2) === null || _o24 === void 0 ? void 0 : _o24["b"].c;
19-
(_o25 = o2) === null || _o25 === void 0 ? void 0 : _o25["b"]["c"];
15+
// GH#36031
16+
o2 === null || o2 === void 0 ? void 0 : o2["b"].c;
17+
o2 === null || o2 === void 0 ? void 0 : o2["b"]["c"];
18+
o2 === null || o2 === void 0 ? void 0 : o2["b"].c;
19+
o2 === null || o2 === void 0 ? void 0 : o2["b"]["c"];
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//// [elementAccessChain.2.ts]
2-
var _o1, _o2, _o21, _o3_b, _o3_b1;
3-
(_o1 = o1) === null || _o1 === void 0 ? void 0 : _o1["b"];
4-
(_o2 = o2) === null || _o2 === void 0 ? void 0 : _o2["b"].c;
5-
(_o21 = o2) === null || _o21 === void 0 ? void 0 : _o21.b["c"];
2+
var _o3_b, _o3_b1;
3+
o1 === null || o1 === void 0 ? void 0 : o1["b"];
4+
o2 === null || o2 === void 0 ? void 0 : o2["b"].c;
5+
o2 === null || o2 === void 0 ? void 0 : o2.b["c"];
66
(_o3_b = o3["b"]) === null || _o3_b === void 0 ? void 0 : _o3_b.c;
77
(_o3_b1 = o3.b) === null || _o3_b1 === void 0 ? void 0 : _o3_b1["c"];
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
//// [elementAccessChain.2.ts]
2-
var _o1, _o2, _o21, _o3_b, _o3_b1;
3-
null === (_o1 = o1) || void 0 === _o1 || _o1.b, null === (_o2 = o2) || void 0 === _o2 || _o2.b.c, null === (_o21 = o2) || void 0 === _o21 || _o21.b.c, null === (_o3_b = o3.b) || void 0 === _o3_b || _o3_b.c, null === (_o3_b1 = o3.b) || void 0 === _o3_b1 || _o3_b1.c;
2+
var _o3_b, _o3_b1;
3+
null == o1 || o1.b, null == o2 || o2.b.c, null == o2 || o2.b.c, null === (_o3_b = o3.b) || void 0 === _o3_b || _o3_b.c, null === (_o3_b1 = o3.b) || void 0 === _o3_b1 || _o3_b1.c;

‎crates/swc/tests/tsc-references/elementAccessChain.2.minified.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎crates/swc/tests/tsc-references/exhaustiveSwitchStatements1.1.normal.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,8 @@ var Animal = /*#__PURE__*/ function(Animal) {
199199
return Animal;
200200
}(Animal || {});
201201
function expression() {
202-
var _zoo;
203202
var _zoo_animal;
204-
switch((_zoo_animal = (_zoo = zoo) === null || _zoo === void 0 ? void 0 : _zoo.animal) !== null && _zoo_animal !== void 0 ? _zoo_animal : 0){
203+
switch((_zoo_animal = zoo === null || zoo === void 0 ? void 0 : zoo.animal) !== null && _zoo_animal !== void 0 ? _zoo_animal : 0){
205204
case 0:
206205
return 0;
207206
case 1:
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
//// [logicalAssignment8.ts]
22
function foo1(results) {
3-
var _bar;
43
var _bar_value;
5-
(results || (results = (_bar_value = (_bar = bar) === null || _bar === void 0 ? void 0 : _bar.value) !== null && _bar_value !== void 0 ? _bar_value : [])).push(100);
4+
(results || (results = (_bar_value = bar === null || bar === void 0 ? void 0 : bar.value) !== null && _bar_value !== void 0 ? _bar_value : [])).push(100);
65
}
76
function foo2(results) {
8-
var _bar;
97
var _bar_value;
10-
(results !== null && results !== void 0 ? results : results = (_bar_value = (_bar = bar) === null || _bar === void 0 ? void 0 : _bar.value) !== null && _bar_value !== void 0 ? _bar_value : []).push(100);
8+
(results !== null && results !== void 0 ? results : results = (_bar_value = bar === null || bar === void 0 ? void 0 : bar.value) !== null && _bar_value !== void 0 ? _bar_value : []).push(100);
119
}
1210
function foo3(results) {
13-
var _bar;
1411
var _bar_value;
15-
(results && (results = (_bar_value = (_bar = bar) === null || _bar === void 0 ? void 0 : _bar.value) !== null && _bar_value !== void 0 ? _bar_value : [])).push(100);
12+
(results && (results = (_bar_value = bar === null || bar === void 0 ? void 0 : bar.value) !== null && _bar_value !== void 0 ? _bar_value : [])).push(100);
1613
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
//// [noPropertyAccessFromIndexSignature1.ts]
2-
var // optional access property
3-
_d, _d1, // optional access index signature
4-
_d2, _d3;
52
// access property
63
a.foo;
74
a["foo"];
@@ -14,7 +11,9 @@ c["foo"];
1411
// access index signature
1512
c.bar;
1613
c["bar"];
17-
(_d = d) === null || _d === void 0 ? void 0 : _d.foo;
18-
(_d1 = d) === null || _d1 === void 0 ? void 0 : _d1["foo"];
19-
(_d2 = d) === null || _d2 === void 0 ? void 0 : _d2.bar;
20-
(_d3 = d) === null || _d3 === void 0 ? void 0 : _d3["bar"];
14+
// optional access property
15+
d === null || d === void 0 ? void 0 : d.foo;
16+
d === null || d === void 0 ? void 0 : d["foo"];
17+
// optional access index signature
18+
d === null || d === void 0 ? void 0 : d.bar;
19+
d === null || d === void 0 ? void 0 : d["bar"];
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
//// [noPropertyAccessFromIndexSignature1.ts]
2-
var _d, _d1, _d2, _d3;
3-
a.foo, a.foo, b.foo, b.foo, c.foo, c.foo, c.bar, c.bar, null === (_d = d) || void 0 === _d || _d.foo, null === (_d1 = d) || void 0 === _d1 || _d1.foo, null === (_d2 = d) || void 0 === _d2 || _d2.bar, null === (_d3 = d) || void 0 === _d3 || _d3.bar;
2+
a.foo, a.foo, b.foo, b.foo, c.foo, c.foo, c.bar, c.bar, null == d || d.foo, null == d || d.foo, null == d || d.bar, null == d || d.bar;
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,34 @@
11
//// [optionalChainingInference.ts]
22
// https://github.com/microsoft/TypeScript/issues/34579
3-
var _su, _su1, _su2, _fnu, _su3, _osu, _osu1, _ofnu;
43
var b1 = {
5-
value: (_su = su) === null || _su === void 0 ? void 0 : _su.length
4+
value: su === null || su === void 0 ? void 0 : su.length
65
};
76
var v1 = unbox(b1);
87
var b2 = {
9-
value: (_su1 = su) === null || _su1 === void 0 ? void 0 : _su1.length
8+
value: su === null || su === void 0 ? void 0 : su.length
109
};
1110
var v2 = unbox(b2);
1211
var b3 = {
13-
value: (_su2 = su) === null || _su2 === void 0 ? void 0 : _su2.length
12+
value: su === null || su === void 0 ? void 0 : su.length
1413
};
1514
var v3 = unbox(b3);
1615
var b4 = {
17-
value: (_fnu = fnu) === null || _fnu === void 0 ? void 0 : _fnu()
16+
value: fnu === null || fnu === void 0 ? void 0 : fnu()
1817
};
1918
var v4 = unbox(b4);
2019
var b5 = {
21-
value: (_su3 = su) === null || _su3 === void 0 ? void 0 : _su3["length"]
20+
value: su === null || su === void 0 ? void 0 : su["length"]
2221
};
2322
var v5 = unbox(b5);
2423
var b6 = {
25-
value: (_osu = osu) === null || _osu === void 0 ? void 0 : _osu.prop.length
24+
value: osu === null || osu === void 0 ? void 0 : osu.prop.length
2625
};
2726
var v6 = unbox(b6);
2827
var b7 = {
29-
value: (_osu1 = osu) === null || _osu1 === void 0 ? void 0 : _osu1.prop["length"]
28+
value: osu === null || osu === void 0 ? void 0 : osu.prop["length"]
3029
};
3130
var v7 = unbox(b7);
3231
var b8 = {
33-
value: (_ofnu = ofnu) === null || _ofnu === void 0 ? void 0 : _ofnu.prop()
32+
value: ofnu === null || ofnu === void 0 ? void 0 : ofnu.prop()
3433
};
3534
var v8 = unbox(b8);
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
//// [optionalChainingInference.ts]
2-
var _su, _su1, _su2, _fnu, _su3, _osu, _osu1, _ofnu;
32
unbox({
4-
value: null === (_su = su) || void 0 === _su ? void 0 : _su.length
3+
value: null == su ? void 0 : su.length
54
}), unbox({
6-
value: null === (_su1 = su) || void 0 === _su1 ? void 0 : _su1.length
5+
value: null == su ? void 0 : su.length
76
}), unbox({
8-
value: null === (_su2 = su) || void 0 === _su2 ? void 0 : _su2.length
7+
value: null == su ? void 0 : su.length
98
}), unbox({
10-
value: null === (_fnu = fnu) || void 0 === _fnu ? void 0 : _fnu()
9+
value: null == fnu ? void 0 : fnu()
1110
}), unbox({
12-
value: null === (_su3 = su) || void 0 === _su3 ? void 0 : _su3.length
11+
value: null == su ? void 0 : su.length
1312
}), unbox({
14-
value: null === (_osu = osu) || void 0 === _osu ? void 0 : _osu.prop.length
13+
value: null == osu ? void 0 : osu.prop.length
1514
}), unbox({
16-
value: null === (_osu1 = osu) || void 0 === _osu1 ? void 0 : _osu1.prop.length
15+
value: null == osu ? void 0 : osu.prop.length
1716
}), unbox({
18-
value: null === (_ofnu = ofnu) || void 0 === _ofnu ? void 0 : _ofnu.prop()
17+
value: null == ofnu ? void 0 : ofnu.prop()
1918
});
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
//// [parentheses.ts]
2-
var _o2, _o3, _o4;
32
o1(o1 !== null && o1 !== void 0 ? o1 : 1);
4-
((_o2 = o2) === null || _o2 === void 0 ? void 0 : _o2.b)(o1 !== null && o1 !== void 0 ? o1 : 1);
5-
((_o3 = o3) === null || _o3 === void 0 ? void 0 : _o3.b())(o1 !== null && o1 !== void 0 ? o1 : 1);
6-
((_o4 = o4) === null || _o4 === void 0 ? void 0 : _o4.b().c)(o1 !== null && o1 !== void 0 ? o1 : 1);
3+
(o2 === null || o2 === void 0 ? void 0 : o2.b)(o1 !== null && o1 !== void 0 ? o1 : 1);
4+
(o3 === null || o3 === void 0 ? void 0 : o3.b())(o1 !== null && o1 !== void 0 ? o1 : 1);
5+
(o4 === null || o4 === void 0 ? void 0 : o4.b().c)(o1 !== null && o1 !== void 0 ? o1 : 1);
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
//// [parentheses.ts]
2-
var _o2, _o3, _o4;
3-
o1(null != o1 ? o1 : 1), (null === (_o2 = o2) || void 0 === _o2 ? void 0 : _o2.b)(null != o1 ? o1 : 1), (null === (_o3 = o3) || void 0 === _o3 ? void 0 : _o3.b())(null != o1 ? o1 : 1), (null === (_o4 = o4) || void 0 === _o4 ? void 0 : _o4.b().c)(null != o1 ? o1 : 1);
2+
o1(null != o1 ? o1 : 1), (null == o2 ? void 0 : o2.b)(null != o1 ? o1 : 1), (null == o3 ? void 0 : o3.b())(null != o1 ? o1 : 1), (null == o4 ? void 0 : o4.b().c)(null != o1 ? o1 : 1);
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
//// [propertyAccessChain.ts]
2-
var _o1, _o2, _o3_b, _o4_b_c_d, _o4_b, _o5_b_c_d, _o5_b, _o5, _o6, // GH#34109
3-
_o11, // GH#36031
4-
_o21, _o22;
5-
(_o1 = o1) === null || _o1 === void 0 ? void 0 : _o1.b;
6-
(_o2 = o2) === null || _o2 === void 0 ? void 0 : _o2.b.c;
2+
var _o3_b, _o4_b_c_d, _o4_b, _o5_b_c_d, _o5_b, _o6;
3+
o1 === null || o1 === void 0 ? void 0 : o1.b;
4+
o2 === null || o2 === void 0 ? void 0 : o2.b.c;
75
(_o3_b = o3.b) === null || _o3_b === void 0 ? void 0 : _o3_b.c;
86
(_o4_b = o4.b) === null || _o4_b === void 0 ? void 0 : (_o4_b_c_d = _o4_b.c.d) === null || _o4_b_c_d === void 0 ? void 0 : _o4_b_c_d.e;
9-
(_o5_b = (_o5 = o5).b) === null || _o5_b === void 0 ? void 0 : (_o5_b_c_d = _o5_b.call(_o5).c.d) === null || _o5_b_c_d === void 0 ? void 0 : _o5_b_c_d.e;
7+
(_o5_b = o5.b) === null || _o5_b === void 0 ? void 0 : (_o5_b_c_d = _o5_b.call(o5).c.d) === null || _o5_b_c_d === void 0 ? void 0 : _o5_b_c_d.e;
108
(_o6 = o6()) === null || _o6 === void 0 ? void 0 : _o6.x;
11-
((_o11 = o1) === null || _o11 === void 0 ? void 0 : _o11.b) ? 1 : 0;
12-
(_o21 = o2) === null || _o21 === void 0 ? void 0 : _o21.b.c;
13-
(_o22 = o2) === null || _o22 === void 0 ? void 0 : _o22.b.c;
9+
// GH#34109
10+
(o1 === null || o1 === void 0 ? void 0 : o1.b) ? 1 : 0;
11+
// GH#36031
12+
o2 === null || o2 === void 0 ? void 0 : o2.b.c;
13+
o2 === null || o2 === void 0 ? void 0 : o2.b.c;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//// [propertyAccessChain.2.ts]
2-
var _o1, _o2, _o3_b;
3-
(_o1 = o1) === null || _o1 === void 0 ? void 0 : _o1.b;
4-
(_o2 = o2) === null || _o2 === void 0 ? void 0 : _o2.b.c;
2+
var _o3_b;
3+
o1 === null || o1 === void 0 ? void 0 : o1.b;
4+
o2 === null || o2 === void 0 ? void 0 : o2.b.c;
55
(_o3_b = o3.b) === null || _o3_b === void 0 ? void 0 : _o3_b.c;
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
//// [propertyAccessChain.2.ts]
2-
var _o1, _o2, _o3_b;
3-
null === (_o1 = o1) || void 0 === _o1 || _o1.b, null === (_o2 = o2) || void 0 === _o2 || _o2.b.c, null === (_o3_b = o3.b) || void 0 === _o3_b || _o3_b.c;
2+
var _o3_b;
3+
null == o1 || o1.b, null == o2 || o2.b.c, null === (_o3_b = o3.b) || void 0 === _o3_b || _o3_b.c;

‎crates/swc/tests/tsc-references/propertyAccessChain.2.minified.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎crates/swc_ecma_transforms_base/src/resolver/mod.rs

+27-2
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,9 @@ impl VisitMut for Resolver<'_> {
643643
}
644644

645645
fn visit_mut_class_decl(&mut self, n: &mut ClassDecl) {
646+
if n.declare && !self.config.handle_types {
647+
return;
648+
}
646649
self.modify(&mut n.ident, DeclKind::Lexical);
647650

648651
n.class.decorators.visit_mut_with(self);
@@ -809,6 +812,10 @@ impl VisitMut for Resolver<'_> {
809812
}
810813

811814
fn visit_mut_fn_decl(&mut self, node: &mut FnDecl) {
815+
if node.declare && !self.config.handle_types {
816+
return;
817+
}
818+
812819
// We don't fold ident as Hoister handles this.
813820
node.function.decorators.visit_mut_with(self);
814821

@@ -1235,6 +1242,9 @@ impl VisitMut for Resolver<'_> {
12351242
}
12361243

12371244
fn visit_mut_ts_enum_decl(&mut self, decl: &mut TsEnumDecl) {
1245+
if decl.declare && !self.config.handle_types {
1246+
return;
1247+
}
12381248
self.modify(&mut decl.id, DeclKind::Lexical);
12391249

12401250
self.with_child(ScopeKind::Block, |child| {
@@ -1365,6 +1375,10 @@ impl VisitMut for Resolver<'_> {
13651375
}
13661376

13671377
fn visit_mut_ts_module_decl(&mut self, decl: &mut TsModuleDecl) {
1378+
if decl.declare && !self.config.handle_types {
1379+
return;
1380+
}
1381+
13681382
match &mut decl.id {
13691383
TsModuleName::Ident(i) => {
13701384
self.modify(i, DeclKind::Lexical);
@@ -1380,6 +1394,10 @@ impl VisitMut for Resolver<'_> {
13801394
}
13811395

13821396
fn visit_mut_ts_namespace_decl(&mut self, n: &mut TsNamespaceDecl) {
1397+
if n.declare && !self.config.handle_types {
1398+
return;
1399+
}
1400+
13831401
self.modify(&mut n.id, DeclKind::Lexical);
13841402

13851403
n.body.visit_mut_with(self);
@@ -1492,7 +1510,7 @@ impl VisitMut for Resolver<'_> {
14921510
}
14931511

14941512
fn visit_mut_var_decl(&mut self, decl: &mut VarDecl) {
1495-
if decl.declare {
1513+
if decl.declare && !self.config.handle_types {
14961514
return;
14971515
}
14981516

@@ -1648,6 +1666,9 @@ impl VisitMut for Hoister<'_, '_> {
16481666
}
16491667

16501668
fn visit_mut_class_decl(&mut self, node: &mut ClassDecl) {
1669+
if node.declare && !self.resolver.config.handle_types {
1670+
return;
1671+
}
16511672
if self.in_block {
16521673
return;
16531674
}
@@ -1748,6 +1769,10 @@ impl VisitMut for Hoister<'_, '_> {
17481769
fn visit_mut_expr(&mut self, _: &mut Expr) {}
17491770

17501771
fn visit_mut_fn_decl(&mut self, node: &mut FnDecl) {
1772+
if node.declare && !self.resolver.config.handle_types {
1773+
return;
1774+
}
1775+
17511776
if self.catch_param_decls.contains(&node.ident.sym) {
17521777
return;
17531778
}
@@ -1852,7 +1877,7 @@ impl VisitMut for Hoister<'_, '_> {
18521877
fn visit_mut_using_decl(&mut self, _: &mut UsingDecl) {}
18531878

18541879
fn visit_mut_var_decl(&mut self, node: &mut VarDecl) {
1855-
if node.declare {
1880+
if node.declare && !self.resolver.config.handle_types {
18561881
return;
18571882
}
18581883

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
declare const MY_MAGIC_VARIABLE: string;
2+
declare function myFunction(): string;
3+
declare enum MyEnum {
4+
Value = "value",
5+
}
6+
declare class MyClass {
7+
prop: string;
8+
}
9+
declare namespace MyNamespace {
10+
var value: string;
11+
}
12+
13+
export default function Page() {
14+
return `Server value: ${true ? MY_MAGIC_VARIABLE : "not set" + myFunction() + MyEnum.Value + new MyClass().prop + MyNamespace.value}`
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
declare const MY_MAGIC_VARIABLE__2: string;
2+
declare function myFunction__2(): string;
3+
declare enum MyEnum__2 {
4+
Value__0 = "value"
5+
}
6+
declare class MyClass__2 {
7+
prop: string;
8+
}
9+
declare namespace MyNamespace__2 {
10+
var value__4: string;
11+
}
12+
export default function Page__2() {
13+
return `Server value: ${true ? MY_MAGIC_VARIABLE__2 : "not set" + myFunction__2() + MyEnum__2.Value + new MyClass__2().prop + MyNamespace__2.value}`;
14+
}

‎crates/swc_ecma_transforms_base/tests/ts-resolver/next-72576-1/input.ts

-5
This file was deleted.

‎crates/swc_ecma_transforms_base/tests/ts-resolver/next-72576-1/output.ts

-4
This file was deleted.

‎crates/swc_ecma_transforms_base/tests/ts-resolver/next-72576-2/input.ts

-4
This file was deleted.

‎crates/swc_ecma_transforms_base/tests/ts-resolver/next-72576-2/output.ts

-3
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.