fix: emit useful error on invalid binding to derived state (#9497)

closes #9495
pull/9507/head
Rich Harris 2 years ago committed by GitHub
parent 37f249350c
commit ede1edd314
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,5 @@
---
'svelte': patch
---
fix: emit useful error on invalid binding to derived state

@ -187,6 +187,7 @@ const runes = {
: '' : ''
}`, }`,
'invalid-derived-assignment': () => `Invalid assignment to derived state`, 'invalid-derived-assignment': () => `Invalid assignment to derived state`,
'invalid-derived-binding': () => `Invalid binding to derived state`,
/** /**
* @param {string} rune * @param {string} rune
* @param {number[]} args * @param {number[]} args

@ -274,6 +274,10 @@ export const validation = {
error(node.expression, 'invalid-binding-value'); error(node.expression, 'invalid-binding-value');
} }
if (binding.kind === 'derived') {
error(node.expression, 'invalid-derived-binding');
}
// TODO handle mutations of non-state/props in runes mode // TODO handle mutations of non-state/props in runes mode
} }

@ -0,0 +1,8 @@
import { test } from '../../test';
export default test({
error: {
code: 'invalid-derived-binding',
message: 'Invalid binding to derived state'
}
});

@ -0,0 +1,6 @@
<script>
let a = $state(0);
let b = $derived({ a });
</script>
<input type="number" bind:value={b} />
Loading…
Cancel
Save