diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js index ed1c1ade08..e9a1fec0c6 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js @@ -131,7 +131,7 @@ export function ClassBody(node, context) { ? b.call('$.assignable_proxy', init, options) : b.call('$.state', init, options) : field.kind === 'raw_state' - ? b.call('$.state', init) + ? b.call('$.state', init, options) : field.kind === 'derived_by' ? b.call('$.derived', init) : b.call('$.derived', b.thunk(init)); diff --git a/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/_config.js b/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/_config.js new file mode 100644 index 0000000000..49b367f787 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/_config.js @@ -0,0 +1,58 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + async test({ assert, target, logs }) { + const [btn, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10] = + target.querySelectorAll('button'); + flushSync(() => { + btn.click(); + }); + assert.deepEqual(logs, ['count']); + + flushSync(() => { + btn2.click(); + }); + assert.deepEqual(logs, ['count']); + + flushSync(() => { + btn3.click(); + }); + assert.deepEqual(logs, ['count', 'proxy']); + + flushSync(() => { + btn4.click(); + }); + assert.deepEqual(logs, ['count', 'proxy', 'class count']); + + flushSync(() => { + btn5.click(); + }); + assert.deepEqual(logs, ['count', 'proxy', 'class count']); + + flushSync(() => { + btn6.click(); + }); + assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy']); + + flushSync(() => { + btn7.click(); + }); + assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy']); + + flushSync(() => { + btn8.click(); + }); + assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy']); + + flushSync(() => { + btn9.click(); + }); + assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy']); + + flushSync(() => { + btn10.click(); + }); + assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy', 'arr']); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/main.svelte new file mode 100644 index 0000000000..5f05dd7d0a --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/main.svelte @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + \ No newline at end of file