diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js index 5596ccf70d..75cd1a4466 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js @@ -253,11 +253,12 @@ export function build_component(node, component_name, context, anchor = context. } } } else if (attribute.type === 'AttachTag') { + // TODO do we need to create a derived here? push_prop( b.prop( - 'init', + 'get', b.call('Symbol', b.literal('@attach')), - b.thunk(/** @type {Expression} */ (context.visit(attribute.expression))), + /** @type {Expression} */ (context.visit(attribute.expression)), true ) ); diff --git a/packages/svelte/src/internal/client/dom/elements/attributes.js b/packages/svelte/src/internal/client/dom/elements/attributes.js index dedba81031..5cc1286662 100644 --- a/packages/svelte/src/internal/client/dom/elements/attributes.js +++ b/packages/svelte/src/internal/client/dom/elements/attributes.js @@ -409,7 +409,7 @@ export function set_attributes( } for (let symbol of Object.getOwnPropertySymbols(next)) { - attach(element, next[symbol]); + attach(element, () => next[symbol]); } return current; diff --git a/packages/svelte/tests/runtime-runes/samples/attachment-spread/_config.js b/packages/svelte/tests/runtime-runes/samples/attachment-spread/_config.js new file mode 100644 index 0000000000..96fc207450 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/attachment-spread/_config.js @@ -0,0 +1,8 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + test({ assert, logs, target }) { + assert.deepEqual(logs, ['hello']); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/attachment-spread/main.svelte b/packages/svelte/tests/runtime-runes/samples/attachment-spread/main.svelte new file mode 100644 index 0000000000..804c9cfede --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/attachment-spread/main.svelte @@ -0,0 +1,7 @@ + + +