Skip to content

Commit d5167e7

Browse files
authored
fix: improve non state referenced warning (#9809)
* fix: improve non state referenced warning * add test
1 parent d793d57 commit d5167e7

File tree

5 files changed

+17
-2
lines changed

5 files changed

+17
-2
lines changed

.changeset/polite-dolphins-care.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: improve non state referenced warning

packages/svelte/src/compiler/phases/2-analyze/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,10 +409,10 @@ export function analyze_component(root, options) {
409409
analysis.reactive_statements = order_reactive_statements(analysis.reactive_statements);
410410
}
411411

412-
// warn on any nonstate declarations that are a) mutated and b) referenced in the template
412+
// warn on any nonstate declarations that are a) reassigned and mutated and b) referenced in the template
413413
for (const scope of [module.scope, instance.scope]) {
414414
outer: for (const [name, binding] of scope.declarations) {
415-
if (binding.kind === 'normal' && binding.mutated) {
415+
if (binding.kind === 'normal' && binding.reassigned && binding.mutated) {
416416
for (const { path } of binding.references) {
417417
if (path[0].type !== 'Fragment') continue;
418418
for (let i = 1; i < path.length; i += 1) {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { test } from '../../test';
2+
3+
export default test({});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<script>
2+
let a = $state({b: 0});
3+
</script>
4+
5+
<button onclick={() => a.b += 1}>a += 1</button>
6+
<p>{JSON.stringify(a)} + {a.b}</p>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

0 commit comments

Comments
 (0)