diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js index a46b318601..1b276e6128 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js @@ -67,11 +67,13 @@ function build_assignment(operator, left, right, context) { in_constructor: rune !== '$derived' && rune !== '$derived.by' }; - return b.assignment( - operator, - b.member(b.this, field.key), - /** @type {Expression} */ (context.visit(right, child_state)) - ); + let value = /** @type {Expression} */ (context.visit(right, child_state)); + + if (dev) { + value = b.call('$.tag', value, b.literal(name)); + } + + return b.assignment(operator, b.member(b.this, field.key), value); } } diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js index 2bceeef6af..c3abb99207 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js @@ -1,4 +1,4 @@ -/** @import { CallExpression, ClassDeclaration, ClassExpression, Expression } from 'estree' */ +/** @import { AssignmentExpression, CallExpression, Expression } from 'estree' */ /** @import { Context } from '../types' */ import { dev, is_ignored } from '../../../../state.js'; import * as b from '#compiler/builders'; @@ -39,44 +39,16 @@ export function CallExpression(node, context) { value = b.call('$.proxy', value); } } - let source_tag; - const parent = context.path.at(-1); - if ( - dev && - parent?.type === 'AssignmentExpression' && - parent?.left?.type === 'MemberExpression' && - context.state.in_constructor - ) { - const constructor = context.path.findLast( - (parent) => parent.type === 'ClassDeclaration' || parent.type === 'ClassExpression' - ); - const property = get_name(parent.left.property); - source_tag = `${constructor?.id?.name ?? '[class]'}.${property}`; - } - const call = b.call('$.state', value); - return dev ? b.call('$.tag', call, b.literal(/** @type {string} */ (source_tag))) : call; + + return b.call('$.state', value); } case '$derived': case '$derived.by': { let fn = /** @type {Expression} */ (context.visit(node.arguments[0])); if (rune === '$derived') fn = b.thunk(fn); - let source_tag; - const parent = context.path.at(-1); - if ( - dev && - parent?.type === 'AssignmentExpression' && - parent?.left?.type === 'MemberExpression' && - context.state.in_constructor - ) { - const constructor = context.path.findLast( - (parent) => parent.type === 'ClassDeclaration' || parent.type === 'ClassExpression' - ); - const property = get_name(parent.left.property); - source_tag = `${constructor?.id?.name ?? '[class]'}.${property}`; - } - const call = b.call('$.derived', fn); - return dev ? b.call('$.tag', call, b.literal(/** @type {string} */ (source_tag))) : call; + + return b.call('$.derived', fn); } case '$state.snapshot':