Home / File/ ExpressionTag.js — svelte Source File

ExpressionTag.js — svelte Source File

Architecture documentation for ExpressionTag.js, a javascript file in the svelte codebase. 6 imports, 1 dependents.

File javascript Compiler Transformer 6 imports 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  563e8414_1dd4_f5bf_e346_91afa5cea4b9["ExpressionTag.js"]
  302f84f3_ec7c_fd57_5b8e_e2f3ec2953b7["html-tree-validation.js"]
  563e8414_1dd4_f5bf_e346_91afa5cea4b9 --> 302f84f3_ec7c_fd57_5b8e_e2f3ec2953b7
  b52e7925_73b5_1187_beab_fb7eb59cc45d["is_tag_valid_with_parent"]
  563e8414_1dd4_f5bf_e346_91afa5cea4b9 --> b52e7925_73b5_1187_beab_fb7eb59cc45d
  495501a4_a342_6a4d_ac11_e3e2fee8b218["errors.js"]
  563e8414_1dd4_f5bf_e346_91afa5cea4b9 --> 495501a4_a342_6a4d_ac11_e3e2fee8b218
  a146f6ac_0088_8736_b6ce_318f9f115170["e"]
  563e8414_1dd4_f5bf_e346_91afa5cea4b9 --> a146f6ac_0088_8736_b6ce_318f9f115170
  c4b4ac8d_9914_5ede_1aea_723bf80d2e9b["fragment.js"]
  563e8414_1dd4_f5bf_e346_91afa5cea4b9 --> c4b4ac8d_9914_5ede_1aea_723bf80d2e9b
  313d2a82_30ea_3161_3aad_0cc2094979aa["mark_subtree_dynamic"]
  563e8414_1dd4_f5bf_e346_91afa5cea4b9 --> 313d2a82_30ea_3161_3aad_0cc2094979aa
  4aa8a188_84d4_0274_ed83_cac0ab1d3572["index.js"]
  4aa8a188_84d4_0274_ed83_cac0ab1d3572 --> 563e8414_1dd4_f5bf_e346_91afa5cea4b9
  style 563e8414_1dd4_f5bf_e346_91afa5cea4b9 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/** @import { AST } from '#compiler' */
/** @import { Context } from '../types' */
import { is_tag_valid_with_parent } from '../../../../html-tree-validation.js';
import * as e from '../../../errors.js';
import { mark_subtree_dynamic } from './shared/fragment.js';

/**
 * @param {AST.ExpressionTag} node
 * @param {Context} context
 */
export function ExpressionTag(node, context) {
	const in_template = context.path.at(-1)?.type === 'Fragment';

	if (in_template && context.state.parent_element) {
		const message = is_tag_valid_with_parent('#text', context.state.parent_element);
		if (message) {
			e.node_invalid_placement(node, message);
		}
	}

	// TODO ideally we wouldn't do this here, we'd just do it on encountering
	// an `Identifier` within the tag. But we currently need to handle `{42}` etc
	mark_subtree_dynamic(context.path);

	context.next({ ...context.state, expression: node.metadata.expression });
}

Domain

Subdomains

Functions

Frequently Asked Questions

What does ExpressionTag.js do?
ExpressionTag.js is a source file in the svelte codebase, written in javascript. It belongs to the Compiler domain, Transformer subdomain.
What functions are defined in ExpressionTag.js?
ExpressionTag.js defines 1 function(s): ExpressionTag.
What does ExpressionTag.js depend on?
ExpressionTag.js imports 6 module(s): e, errors.js, fragment.js, html-tree-validation.js, is_tag_valid_with_parent, mark_subtree_dynamic.
What files import ExpressionTag.js?
ExpressionTag.js is imported by 1 file(s): index.js.
Where is ExpressionTag.js in the architecture?
ExpressionTag.js is located at packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/2-analyze/visitors).

Analyze Your Own Codebase

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

Try Supermodel Free