Skip to content

Commit a9a234f

Browse files
committed
Fix wrong scope for generic attribute
1 parent 2af9766 commit a9a234f

File tree

2 files changed

+35
-129
lines changed

2 files changed

+35
-129
lines changed

src/script/generic.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ export function extractGeneric(element: VElement): GenericProcessInfo | null {
9494
typeDefScope: Scope,
9595
isRemoveTarget: (nodeOrToken: HasLocation) => boolean,
9696
) {
97-
for (const variable of typeDefScope.variables) {
97+
// eslint-disable-next-line unicorn/no-useless-spread -- The original array is mutated
98+
for (const variable of [...typeDefScope.variables]) {
9899
let def = variable.defs.find((d) =>
99100
isRemoveTarget(d.name as HasLocation),
100101
)
@@ -105,13 +106,15 @@ export function extractGeneric(element: VElement): GenericProcessInfo | null {
105106
)
106107
}
107108
}
108-
for (const reference of typeDefScope.references) {
109+
// eslint-disable-next-line unicorn/no-useless-spread -- The original array is mutated
110+
for (const reference of [...typeDefScope.references]) {
109111
if (isRemoveTarget(reference.identifier as HasLocation)) {
110112
removeReference(reference, typeDefScope)
111113
}
112114
}
113115

114-
for (const scope of scopeManager.scopes) {
116+
// eslint-disable-next-line unicorn/no-useless-spread -- The original array is mutated
117+
for (const scope of [...scopeManager.scopes]) {
115118
if (isRemoveTarget(scope.block as HasLocation)) {
116119
removeScope(scopeManager, scope)
117120
}

test/fixtures/ast/vue3.3-generic-3/scope.json

+29-126
Original file line numberDiff line numberDiff line change
@@ -1160,28 +1160,35 @@
11601160
"references": []
11611161
},
11621162
{
1163-
"name": "T",
1163+
"name": "defineProps",
11641164
"identifiers": [],
11651165
"defs": [],
11661166
"references": [
11671167
{
11681168
"identifier": {
11691169
"type": "Identifier",
1170-
"name": "T",
1170+
"name": "defineProps",
11711171
"loc": {
11721172
"end": {
1173-
"column": 11,
1174-
"line": 8
1173+
"line": 5,
1174+
"column": 21
11751175
},
11761176
"start": {
1177-
"column": 10,
1178-
"line": 8
1177+
"line": 5,
1178+
"column": 10
11791179
}
11801180
}
11811181
},
11821182
"from": "module",
11831183
"init": null
1184-
},
1184+
}
1185+
]
1186+
},
1187+
{
1188+
"name": "T",
1189+
"identifiers": [],
1190+
"defs": [],
1191+
"references": [
11851192
{
11861193
"identifier": {
11871194
"type": "Identifier",
@@ -1203,22 +1210,22 @@
12031210
]
12041211
},
12051212
{
1206-
"name": "defineProps",
1213+
"name": "U",
12071214
"identifiers": [],
12081215
"defs": [],
12091216
"references": [
12101217
{
12111218
"identifier": {
12121219
"type": "Identifier",
1213-
"name": "defineProps",
1220+
"name": "U",
12141221
"loc": {
12151222
"end": {
12161223
"line": 5,
1217-
"column": 21
1224+
"column": 36
12181225
},
12191226
"start": {
12201227
"line": 5,
1221-
"column": 10
1228+
"column": 35
12221229
}
12231230
}
12241231
},
@@ -1306,78 +1313,6 @@
13061313
}
13071314
]
13081315
},
1309-
{
1310-
"name": "U",
1311-
"identifiers": [
1312-
{
1313-
"type": "Identifier",
1314-
"name": "U",
1315-
"loc": {
1316-
"end": {
1317-
"column": 6,
1318-
"line": 8
1319-
},
1320-
"start": {
1321-
"column": 5,
1322-
"line": 8
1323-
}
1324-
}
1325-
}
1326-
],
1327-
"defs": [
1328-
{
1329-
"type": "Type",
1330-
"node": {
1331-
"type": "TSTypeAliasDeclaration",
1332-
"loc": {
1333-
"end": {
1334-
"column": 1,
1335-
"line": 9
1336-
},
1337-
"start": {
1338-
"column": 0,
1339-
"line": 8
1340-
}
1341-
}
1342-
},
1343-
"name": "U"
1344-
}
1345-
],
1346-
"references": [
1347-
{
1348-
"identifier": {
1349-
"type": "Identifier",
1350-
"name": "U",
1351-
"loc": {
1352-
"end": {
1353-
"line": 5,
1354-
"column": 36
1355-
},
1356-
"start": {
1357-
"line": 5,
1358-
"column": 35
1359-
}
1360-
}
1361-
},
1362-
"from": "module",
1363-
"resolved": {
1364-
"type": "Identifier",
1365-
"name": "U",
1366-
"loc": {
1367-
"end": {
1368-
"column": 6,
1369-
"line": 8
1370-
},
1371-
"start": {
1372-
"column": 5,
1373-
"line": 8
1374-
}
1375-
}
1376-
},
1377-
"init": null
1378-
}
1379-
]
1380-
},
13811316
{
13821317
"name": "p",
13831318
"identifiers": [
@@ -1621,24 +1556,6 @@
16211556
}
16221557
],
16231558
"references": [
1624-
{
1625-
"identifier": {
1626-
"type": "Identifier",
1627-
"name": "T",
1628-
"loc": {
1629-
"end": {
1630-
"column": 11,
1631-
"line": 8
1632-
},
1633-
"start": {
1634-
"column": 10,
1635-
"line": 8
1636-
}
1637-
}
1638-
},
1639-
"from": "module",
1640-
"init": null
1641-
},
16421559
{
16431560
"identifier": {
16441561
"type": "Identifier",
@@ -1723,20 +1640,6 @@
17231640
}
17241641
},
17251642
"from": "module",
1726-
"resolved": {
1727-
"type": "Identifier",
1728-
"name": "U",
1729-
"loc": {
1730-
"end": {
1731-
"column": 6,
1732-
"line": 8
1733-
},
1734-
"start": {
1735-
"column": 5,
1736-
"line": 8
1737-
}
1738-
}
1739-
},
17401643
"init": null
17411644
},
17421645
{
@@ -1860,15 +1763,15 @@
18601763
{
18611764
"identifier": {
18621765
"type": "Identifier",
1863-
"name": "T",
1766+
"name": "defineProps",
18641767
"loc": {
18651768
"end": {
1866-
"column": 11,
1867-
"line": 8
1769+
"line": 5,
1770+
"column": 21
18681771
},
18691772
"start": {
1870-
"column": 10,
1871-
"line": 8
1773+
"line": 5,
1774+
"column": 10
18721775
}
18731776
}
18741777
},
@@ -1878,15 +1781,15 @@
18781781
{
18791782
"identifier": {
18801783
"type": "Identifier",
1881-
"name": "defineProps",
1784+
"name": "T",
18821785
"loc": {
18831786
"end": {
18841787
"line": 5,
1885-
"column": 21
1788+
"column": 28
18861789
},
18871790
"start": {
18881791
"line": 5,
1889-
"column": 10
1792+
"column": 27
18901793
}
18911794
}
18921795
},
@@ -1896,15 +1799,15 @@
18961799
{
18971800
"identifier": {
18981801
"type": "Identifier",
1899-
"name": "T",
1802+
"name": "U",
19001803
"loc": {
19011804
"end": {
19021805
"line": 5,
1903-
"column": 28
1806+
"column": 36
19041807
},
19051808
"start": {
19061809
"line": 5,
1907-
"column": 27
1810+
"column": 35
19081811
}
19091812
}
19101813
},

0 commit comments

Comments
 (0)