pub fn durables(
signals: &[SignalDecl],
resolve: &mut dyn FnMut(&Ty) -> Ty,
) -> Vec<(Arc<str>, Ty)>Expand description
Every durable a set of signal declarations holds, labelled exactly as Graph::build labels
it, in declaration order.
crate::split reads this off the graph. The checker has to answer the same question
before a graph exists, because a test block’s state is typed against the accumulator and a
fused one is a type the program did not write. Both go through here so the two cannot disagree
about how many folds there are or what their fields are called.
resolve is the caller’s substitution: mid-check a declaration’s type is still a variable, and
after checking it is not.