pub fn resolve_value_reference(
expr: &str,
vars: &HashMap<String, String>,
) -> StringExpand description
v2.17.0 — resolve a VALUE-POSITION expression (a for … in <expr>
iterable, a return <expr>) against the runtime bindings. These positions
carry no frontend value_kind classification (unlike a v2.10.0 kwarg), so this
resolves the three reference forms a flow author writes, in order:
"${X}"/"${e.field}"/$name— string interpolation (incl. the v2.17.0 dotted field-access). Detected by a$anywhere in the expr.Step.output— a step’s output. Steps bind their output under their BARE NAME (pure_shape/ the v1.31.0 contract), so a trailing.outputmaps to the step-name key. This is the canonical form an author writes forfor e in ClassifyEdges.output/return Step.output(the same.outputsugarresolve_named_arg_valuehandles for kwargs).name— a barelet/ flow-param / step binding.
Falls back to the verbatim expr when nothing resolves (a genuine literal).
Mirrors the persist field-value resolution (store_row → interpolate_vars)
so a reference resolves identically in EVERY value position (the v2.17.0 fix:
a for-iterable + a return previously did a bare exact-key lookup, so
ClassifyEdges.output / ${Summarize} reached the runtime as the literal).