Home / Function/ UpdateExpression() — svelte Function Reference

UpdateExpression() — svelte Function Reference

Architecture documentation for the UpdateExpression() function in UpdateExpression.js from the svelte codebase.

Entity Profile

Dependency Diagram

graph TD
  68cf0c33_ad3f_da48_7ecf_ca63584ef620["UpdateExpression()"]
  5ec95d09_9bd6_c503_274b_b0589008b7ac["UpdateExpression.js"]
  68cf0c33_ad3f_da48_7ecf_ca63584ef620 -->|defined in| 5ec95d09_9bd6_c503_274b_b0589008b7ac
  804afe56_25d1_9f41_dafe_adc75e952134["object()"]
  68cf0c33_ad3f_da48_7ecf_ca63584ef620 -->|calls| 804afe56_25d1_9f41_dafe_adc75e952134
  dcd117e6_7004_e4da_f4a2_f82f6e43060c["validate_mutation()"]
  68cf0c33_ad3f_da48_7ecf_ca63584ef620 -->|calls| dcd117e6_7004_e4da_f4a2_f82f6e43060c
  style 68cf0c33_ad3f_da48_7ecf_ca63584ef620 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/3-transform/client/visitors/UpdateExpression.js lines 11–55

export function UpdateExpression(node, context) {
	const argument = node.argument;

	if (
		argument.type === 'MemberExpression' &&
		argument.object.type === 'ThisExpression' &&
		argument.property.type === 'PrivateIdentifier' &&
		context.state.state_fields.has('#' + argument.property.name)
	) {
		let fn = '$.update';
		if (node.prefix) fn += '_pre';

		/** @type {Expression[]} */
		const args = [argument];
		if (node.operator === '--') {
			args.push(b.literal(-1));
		}

		return b.call(fn, ...args);
	}

	if (argument.type !== 'Identifier' && argument.type !== 'MemberExpression') {
		throw new Error('An impossible state was reached');
	}

	const left = object(argument);
	const transformers = left && context.state.transform[left.name];

	if (left === argument && transformers?.update) {
		// we don't need to worry about ownership_invalid_mutation here, because
		// we're not mutating but reassigning
		return transformers.update(node);
	}

	let update = /** @type {Expression} */ (context.next());

	if (left && transformers?.mutate) {
		update = transformers.mutate(
			left,
			/** @type {AssignmentExpression | UpdateExpression} */ (update)
		);
	}

	return validate_mutation(node, context, update);
}

Domain

Subdomains

Frequently Asked Questions

What does UpdateExpression() do?
UpdateExpression() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/UpdateExpression.js.
Where is UpdateExpression() defined?
UpdateExpression() is defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/UpdateExpression.js at line 11.
What does UpdateExpression() call?
UpdateExpression() calls 2 function(s): object, validate_mutation.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free