build_expression() — svelte Function Reference
Architecture documentation for the build_expression() function in utils.js from the svelte codebase.
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
Calls
Called By
Source
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