Skip to content

Commit cff6a64

Browse files
dsherretkdy1
andauthored
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/강동윤 <[email protected]>
1 parent dd019ea commit cff6a64

36 files changed

+239
-217
lines changed
Lines changed: 6 additions & 0 deletions
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`
Lines changed: 35 additions & 35 deletions
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;
Lines changed: 4 additions & 4 deletions
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;
Lines changed: 2 additions & 2 deletions
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;
Lines changed: 20 additions & 20 deletions
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

Lines changed: 6 additions & 6 deletions
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

Lines changed: 6 additions & 6 deletions
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
Lines changed: 2 additions & 4 deletions
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");
Lines changed: 1 addition & 2 deletions
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");

0 commit comments

Comments
 (0)