Home / Function/ CallExpression() — svelte Function Reference

CallExpression() — svelte Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  2b2701d7_6862_c3e7_cf6f_c1178e1b956b["CallExpression()"]
  9b602c9d_5997_b07e_dd5c_2413153d525f["CallExpression.js"]
  2b2701d7_6862_c3e7_cf6f_c1178e1b956b -->|defined in| 9b602c9d_5997_b07e_dd5c_2413153d525f
  bed91719_d047_2256_e199_ee875d5f49b9["get_rune()"]
  2b2701d7_6862_c3e7_cf6f_c1178e1b956b -->|calls| bed91719_d047_2256_e199_ee875d5f49b9
  7a7783f8_ffa6_0cc3_61b0_031882649535["is_ignored()"]
  2b2701d7_6862_c3e7_cf6f_c1178e1b956b -->|calls| 7a7783f8_ffa6_0cc3_61b0_031882649535
  57534fa7_7bfd_c029_75ae_4c5950d5e65c["get_inspect_args()"]
  2b2701d7_6862_c3e7_cf6f_c1178e1b956b -->|calls| 57534fa7_7bfd_c029_75ae_4c5950d5e65c
  style 2b2701d7_6862_c3e7_cf6f_c1178e1b956b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js lines 12–71

export function CallExpression(node, context) {
	const rune = get_rune(node, context.state.scope);

	if (
		rune === '$host' ||
		rune === '$effect' ||
		rune === '$effect.pre' ||
		rune === '$inspect.trace'
	) {
		// we will only encounter `$effect` etc if they are top-level statements in the <script>
		// following an `await`, otherwise they are removed by the ExpressionStatement visitor
		return b.void0;
	}

	if (rune === '$effect.tracking') {
		return b.false;
	}

	if (rune === '$effect.root') {
		// ignore $effect.root() calls, just return a noop which mimics the cleanup function
		return b.arrow([], b.block([]));
	}

	if (rune === '$effect.pending') {
		return b.literal(0);
	}

	if (rune === '$state' || rune === '$state.raw') {
		return node.arguments[0] ? context.visit(node.arguments[0]) : b.void0;
	}

	if (rune === '$derived' || rune === '$derived.by') {
		const fn = /** @type {Expression} */ (context.visit(node.arguments[0]));
		return b.call('$.derived', rune === '$derived' ? b.thunk(fn) : fn);
	}

	if (rune === '$state.eager') {
		return node.arguments[0];
	}

	if (rune === '$state.snapshot') {
		return b.call(
			'$.snapshot',
			/** @type {Expression} */ (context.visit(node.arguments[0])),
			is_ignored(node, 'state_snapshot_uncloneable') && b.true
		);
	}

	if (rune === '$inspect' || rune === '$inspect().with') {
		if (!dev) return b.empty;

		const { args, inspector } = get_inspect_args(rune, node, context.visit);

		return rune === '$inspect'
			? b.call(inspector, b.literal('$inspect('), ...args, b.literal(')'))
			: b.call(inspector, b.literal('init'), ...args);
	}

	context.next();
}

Domain

Subdomains

Frequently Asked Questions

What does CallExpression() do?
CallExpression() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js.
Where is CallExpression() defined?
CallExpression() is defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js at line 12.
What does CallExpression() call?
CallExpression() calls 3 function(s): get_inspect_args, get_rune, is_ignored.

Analyze Your Own Codebase

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

Try Supermodel Free