diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js index aac15cc03d..b5f6fb3806 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js @@ -163,13 +163,26 @@ export function build_element_attributes(node, context) { ]) ); } else { + /** @type {Expression} */ + let expression = attribute.expression; + + if (attribute.type === 'BindDirective' && expression.type === 'SequenceExpression') { + const getter = expression.expressions[0]; + expression = + getter.type === 'ArrowFunctionExpression' && + getter.params.length === 0 && + getter.body.type !== 'BlockStatement' + ? getter.body + : b.call(getter); + } + attributes.push( create_attribute(attribute.name, -1, -1, [ { type: 'ExpressionTag', start: -1, end: -1, - expression: attribute.expression, + expression, metadata: { expression: create_expression_metadata() }