pull/15678/head
Simon Holthausen 1 year ago
parent 7c95a0e98e
commit 0dbba03c33

@ -179,20 +179,29 @@ export function build_component(node, component_name, context, anchor = context.
} else if (attribute.type === 'BindDirective') { } else if (attribute.type === 'BindDirective') {
const expression = /** @type {Expression} */ (context.visit(attribute.expression)); const expression = /** @type {Expression} */ (context.visit(attribute.expression));
if (dev && attribute.name !== 'this' && !is_ignored(node, 'ownership_invalid_binding')) { if (
context.state.analysis.needs_mutation_validation = true; dev &&
binding_initializers.push( attribute.name !== 'this' &&
b.stmt( !is_ignored(node, 'ownership_invalid_binding') &&
b.call( // bind:x={() => x.y, y => x.y = y} will be handled by the assignment expression binding validation
b.id('$$ownership_validator.binding'), attribute.expression.type !== 'SequenceExpression'
b.literal(attribute.name), ) {
b.id(component_name), const left = object(attribute.expression);
expression.type === 'SequenceExpression' const binding = left && context.state.scope.get(left.name);
? expression.expressions[0]
: b.thunk(expression) if (binding?.kind === 'bindable_prop' || binding?.kind === 'prop') {
context.state.analysis.needs_mutation_validation = true;
binding_initializers.push(
b.stmt(
b.call(
b.id('$$ownership_validator.binding'),
b.literal(binding.node.name),
b.id(component_name),
b.thunk(expression)
)
) )
) );
); }
} }
if (expression.type === 'SequenceExpression') { if (expression.type === 'SequenceExpression') {

Loading…
Cancel
Save