pub struct ViewDef<'a> {
pub component: Option<Symbol>,
pub root: ViewRoot<'a>,
pub nodes: Vec<ViewNode<'a>>,
pub mentions: Vec<(Symbol, Span)>,
pub span: Span,
}Expand description
One complete view: a Render: block, a Render into <el>: block, or a component’s
View: — in source order they appear in crate::parser::Parser::views.
Fields§
§component: Option<Symbol>The component this view belongs to (None for a bare Render:).
root: ViewRoot<'a>Where the tree renders.
nodes: Vec<ViewNode<'a>>§mentions: Vec<(Symbol, Span)>Every identifier the template MENTIONS, with its span in the FILE.
★ THE ONE THING A TOKEN WALK CANNOT RECOVER. A View: body reaches the parser as a single
RawBlock token, so a name used only in a template is not in the token stream at all —
which is why an editor could not jump from {count} to the Let count be 0. it names,
the most common movement there is in an LGX file. The positions are known HERE and only
here: TExpr carries its offset in the template body, and the parser holds the map from
body offsets to file offsets. Recorded on the way past rather than re-derived, because a
second copy of that arithmetic is a second thing to get wrong.
span: SpanImplementations§
Source§impl<'a> ViewDef<'a>
impl<'a> ViewDef<'a>
Sourcepub fn exprs_and_blocks(&self) -> (Vec<&'a Expr<'a>>, Vec<Block<'a>>)
pub fn exprs_and_blocks(&self) -> (Vec<&'a Expr<'a>>, Vec<Block<'a>>)
Every expression and every statement block the tree references (holes, attribute values, conditions, iterables, keys, handler bodies) — the traversal surface for depth bounds, scope analysis and tooling walks.
Sourcepub fn shape(&self, interner: &Interner) -> String
pub fn shape(&self, interner: &Interner) -> String
A compact, deterministic one-line rendering of the tree — the snapshot surface
view_ir_lock pins and largo expand prints.
Sourcepub fn body_shape(&self, interner: &Interner) -> String
pub fn body_shape(&self, interner: &Interner) -> String
Just the node tree, without the view of <Name> head — what a component’s own
shape embeds.