From bec570891a3bf640ddf7a5d1cb349ff7b5bf6565 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 14 Jan 2025 17:19:04 -0500 Subject: [PATCH] fix spreading of symbol properties onto component --- packages/svelte/src/internal/client/reactivity/props.js | 5 +++++ .../samples/attachment-component-spread/Child.svelte | 5 +++++ .../samples/attachment-component-spread/_config.js | 6 ++++++ .../samples/attachment-component-spread/main.svelte | 9 +++++++++ 4 files changed, 25 insertions(+) create mode 100644 packages/svelte/tests/runtime-runes/samples/attachment-component-spread/Child.svelte create mode 100644 packages/svelte/tests/runtime-runes/samples/attachment-component-spread/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/attachment-component-spread/main.svelte diff --git a/packages/svelte/src/internal/client/reactivity/props.js b/packages/svelte/src/internal/client/reactivity/props.js index 3e5a0258c7..4017be56ab 100644 --- a/packages/svelte/src/internal/client/reactivity/props.js +++ b/packages/svelte/src/internal/client/reactivity/props.js @@ -231,9 +231,14 @@ const spread_props_handler = { for (let p of target.props) { if (is_function(p)) p = p(); + for (const key in p) { if (!keys.includes(key)) keys.push(key); } + + for (const key of Object.getOwnPropertySymbols(p)) { + if (!keys.includes(key)) keys.push(key); + } } return keys; diff --git a/packages/svelte/tests/runtime-runes/samples/attachment-component-spread/Child.svelte b/packages/svelte/tests/runtime-runes/samples/attachment-component-spread/Child.svelte new file mode 100644 index 0000000000..6760da61fa --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/attachment-component-spread/Child.svelte @@ -0,0 +1,5 @@ + + +
diff --git a/packages/svelte/tests/runtime-runes/samples/attachment-component-spread/_config.js b/packages/svelte/tests/runtime-runes/samples/attachment-component-spread/_config.js new file mode 100644 index 0000000000..fa1c9b0599 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/attachment-component-spread/_config.js @@ -0,0 +1,6 @@ +import { test } from '../../test'; + +export default test({ + ssrHtml: `
`, + html: `
set from component
` +}); diff --git a/packages/svelte/tests/runtime-runes/samples/attachment-component-spread/main.svelte b/packages/svelte/tests/runtime-runes/samples/attachment-component-spread/main.svelte new file mode 100644 index 0000000000..cf2551a8cf --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/attachment-component-spread/main.svelte @@ -0,0 +1,9 @@ + + +