From 71a0f8855ad1e8081c62e3db9bcfc70ed40845f9 Mon Sep 17 00:00:00 2001 From: Gert Pellin Date: Fri, 16 Oct 2026 05:45:47 +0200 Subject: [PATCH] Expressions: find an ancestor's index by uid, not by formatted path --- crates/expr/src/host.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/expr/src/host.rs b/crates/expr/src/host.rs index e87070f2b..f98b895a5 100644 --- a/crates/expr/src/host.rs +++ b/crates/expr/src/host.rs @@ -369,7 +369,7 @@ impl<'a> Resolver<'a> { let l = self.layer(*comp, *layer)?; let g = if group.is_empty() { &l.props } else { l.props.group(group)? }; let n = find_child(g, key)?; - let index = g.children.iter().position(|c| c.uid() == n.uid()).map_or(1, |i| i + 1); + let index = g.children.iter().position(|c| c.uid() == n.uid()).unwrap_or(0) + 1; let path = if group.is_empty() { format!("@{}", n.uid()) } else { format!("{group}/@{}", n.uid()) }; node_resp(path, n, index) } @@ -392,8 +392,8 @@ impl<'a> Resolver<'a> { 1 => &l.props, _ => l.props.group(&segs.get(..keep - 1)?.join("/"))?, }; - let last = segs.get(keep - 1)?; - let index = parent.children.iter().position(|c| format!("@{}", c.uid()) == *last)?; + let uid = segs.get(keep - 1)?.strip_prefix('@')?.parse::().ok()?; + let index = parent.children.iter().position(|c| c.uid() == uid)?; let n = parent.children.get(index)?; node_resp(group_path, n, index + 1) }