Home / Function/ build_expression() — svelte Function Reference

build_expression() — svelte Function Reference

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

Function javascript Compiler Transformer calls 1 called by 10

Entity Profile

Dependency Diagram

graph TD
  66243dec_e2be_a66d_3992_3ea42cf964b5["build_expression()"]
  d04d7971_88df_542d_dd4f_26170ce6f581["utils.js"]
  66243dec_e2be_a66d_3992_3ea42cf964b5 -->|defined in| d04d7971_88df_542d_dd4f_26170ce6f581
  424243c8_8885_4e93_123b_842ee250cdd1["AttachTag()"]
  424243c8_8885_4e93_123b_842ee250cdd1 -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  49a90e76_8bb2_2524_8ee4_abb5bc5df675["AwaitBlock()"]
  49a90e76_8bb2_2524_8ee4_abb5bc5df675 -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  5e885faa_389a_5da2_c8e7_33dd0668923e["ConstTag()"]
  5e885faa_389a_5da2_c8e7_33dd0668923e -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  7271af10_6d98_1164_127d_943c5a469db9["EachBlock()"]
  7271af10_6d98_1164_127d_943c5a469db9 -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  5a06e8b3_7491_1847_a1ca_ee1217d2f726["HtmlTag()"]
  5a06e8b3_7491_1847_a1ca_ee1217d2f726 -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  be5b2cec_4124_43eb_dc20_ad924f727b6d["IfBlock()"]
  be5b2cec_4124_43eb_dc20_ad924f727b6d -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  77fae965_8000_87f6_c16f_71bb53f744f8["KeyBlock()"]
  77fae965_8000_87f6_c16f_71bb53f744f8 -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  ed06b79a_37ce_dcd0_328f_d06d5b99809c["RenderTag()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  e31bc2c2_91c1_b9a9_f78a_2832bddce6c5["build_attribute_value()"]
  e31bc2c2_91c1_b9a9_f78a_2832bddce6c5 -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  f3280f06_553d_66c3_8ca2_c3c36dcdda64["build_template_chunk()"]
  f3280f06_553d_66c3_8ca2_c3c36dcdda64 -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  27fded45_bc11_247b_d3fe_94831379f9ed["build_getter()"]
  66243dec_e2be_a66d_3992_3ea42cf964b5 -->|calls| 27fded45_bc11_247b_d3fe_94831379f9ed
  style 66243dec_e2be_a66d_3992_3ea42cf964b5 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js lines 442–482

export function build_expression(context, expression, metadata, state = context.state) {
	const value = /** @type {Expression} */ (context.visit(expression, state));

	// Components not explicitly in legacy mode might be expected to be in runes mode (especially since we didn't
	// adjust this behavior until recently, which broke people's existing components), so we also bail in this case.
	// Kind of an in-between-mode.
	if (context.state.analysis.runes || context.state.analysis.maybe_runes) {
		return value;
	}

	if (!metadata.has_call && !metadata.has_member_expression && !metadata.has_assignment) {
		return value;
	}

	// Legacy reactivity is coarse-grained, looking at the statically visible dependencies. Replicate that here
	const sequence = b.sequence([]);

	for (const binding of metadata.references) {
		if (binding.kind === 'normal' && binding.declaration_kind !== 'import') {
			continue;
		}

		var getter = build_getter({ ...binding.node }, state);

		if (
			binding.kind === 'bindable_prop' ||
			binding.kind === 'template' ||
			binding.declaration_kind === 'import' ||
			binding.node.name === '$$props' ||
			binding.node.name === '$$restProps'
		) {
			getter = b.call('$.deep_read_state', getter);
		}

		sequence.expressions.push(getter);
	}

	sequence.expressions.push(b.call('$.untrack', b.thunk(value)));

	return sequence;
}

Domain

Subdomains

Frequently Asked Questions

What does build_expression() do?
build_expression() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js.
Where is build_expression() defined?
build_expression() is defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js at line 442.
What does build_expression() call?
build_expression() calls 1 function(s): build_getter.
What calls build_expression()?
build_expression() is called by 10 function(s): AttachTag, AwaitBlock, ConstTag, EachBlock, HtmlTag, IfBlock, KeyBlock, RenderTag, and 2 more.

Analyze Your Own Codebase

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

Try Supermodel Free