Skip to content

Commit c8c98d4

Browse files
authored
fix: false positives for builtin $$ vars in svelte/no-immutable-reactive-statements (#465)
1 parent fcb7226 commit c8c98d4

File tree

4 files changed

+36
-9
lines changed

4 files changed

+36
-9
lines changed

.changeset/empty-badgers-learn.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"eslint-plugin-svelte": patch
3+
---
4+
5+
fix: false positives for builtin `$$` vars in `svelte/no-immutable-reactive-statements`

src/rules/no-immutable-reactive-statements.ts

+13-9
Original file line numberDiff line numberDiff line change
@@ -136,15 +136,19 @@ export default createRule("no-immutable-reactive-statements", {
136136
return
137137
}
138138
}
139-
if (
140-
globalScope.through.some(
141-
(reference) =>
142-
node.range[0] <= reference.identifier.range[0] &&
143-
reference.identifier.range[1] <= node.range[1],
144-
)
145-
) {
146-
// Do not report if there are missing references.
147-
return
139+
for (const through of toplevelScope.through.filter(
140+
(reference) =>
141+
node.range[0] <= reference.identifier.range[0] &&
142+
reference.identifier.range[1] <= node.range[1],
143+
)) {
144+
if (through.identifier.name.startsWith("$$")) {
145+
// Builtin `$$` vars
146+
return
147+
}
148+
if (through.resolved == null) {
149+
// Do not report if there are missing references.
150+
return
151+
}
148152
}
149153

150154
context.report({
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<script>
2+
$: desc = $$slots.description
3+
</script>
4+
5+
<div>
6+
<slot name="title" />
7+
{#if desc}
8+
<hr />
9+
<slot name="description" />
10+
{/if}
11+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script>
2+
$: prop = $$props.prop
3+
$: type = $$restProps.type
4+
</script>
5+
6+
<Widget {prop} />
7+
<input {type} />

0 commit comments

Comments
 (0)