-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Open
Description
Describe the bug
The warning state_referenced_locally does not show up consistently where I believe it should.
Consider this example:
<script lang="ts">
// state created from props should warn but doesn't
let { x } = $props()
let y = $state(x) // ❌ this should warn but doesn't
let z = $state(y) // ❌ this should warn but doesn't
// state created from other state only warns "one level deep"
let a = $state(0)
let b = $state(a) // ✅ this does warn
let c = $state(b) // ❌ this should warn but doesn't
// state created from implicitly undefined state (putting in `undefined`, `null`, `0`, `false` here does warn)
let h = $state()
let j = $state(h) // ❌ this should warn but doesn't
</script>As outlines in the comments above, the warnings are shown very inconsistently.
I believe in many cases (see ❌ above) warnings should be shown.
The main problems are:
$state(...)created from$props()does not warn$state(...)created from other$state(...)only warns "one level deep"$state(...)created from implicitly undefined state ($state()) does not warn
Maybe there are more cases that I did not cover that should warn as well.
Reproduction
https://svelte.dev/playground/62605b146a9e4c4f812b9f872ba21288?version=5.35.5
Logs
This reference only captures the initial value of a. Did you mean to reference it inside a closure instead?
https://svelte.dev/e/state_referenced_locally (state_referenced_locally)System Info
playgroundSeverity
annoyance
Metadata
Metadata
Assignees
Labels
No labels