Skip to content

Commit 8c7e72b

Browse files
authored
Fix unnecessary references in scope (#122)
* Fix unnecessary references in scope * fix
1 parent 4e4e85d commit 8c7e72b

9 files changed

+14184
-1033
lines changed

src/context/script-let.ts

+18-12
Original file line numberDiff line numberDiff line change
@@ -922,18 +922,24 @@ function removeIdentifierReference(
922922

923923
/** Remove reference */
924924
function removeReference(reference: Reference, baseScope: Scope) {
925-
if (
926-
reference.resolved &&
927-
reference.resolved.defs.some((d) => d.name === reference.identifier)
928-
) {
929-
// remove var
930-
const varIndex = baseScope.variables.indexOf(reference.resolved)
931-
if (varIndex >= 0) {
932-
baseScope.variables.splice(varIndex, 1)
933-
}
934-
const name = reference.identifier.name
935-
if (reference.resolved === baseScope.set.get(name)) {
936-
baseScope.set.delete(name)
925+
if (reference.resolved) {
926+
if (
927+
reference.resolved.defs.some((d) => d.name === reference.identifier)
928+
) {
929+
// remove var
930+
const varIndex = baseScope.variables.indexOf(reference.resolved)
931+
if (varIndex >= 0) {
932+
baseScope.variables.splice(varIndex, 1)
933+
}
934+
const name = reference.identifier.name
935+
if (reference.resolved === baseScope.set.get(name)) {
936+
baseScope.set.delete(name)
937+
}
938+
} else {
939+
const refIndex = reference.resolved.references.indexOf(reference)
940+
if (refIndex >= 0) {
941+
reference.resolved.references.splice(refIndex, 1)
942+
}
937943
}
938944
}
939945

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script lang="ts">
2+
const list: number[] = []
3+
const items: {id:number, name:string}[] = []
4+
</script>
5+
{#each list as e}
6+
{e}
7+
{/each}
8+
{#each items as item, index (item.id)}
9+
{index}{item.name}
10+
{/each}

0 commit comments

Comments
 (0)