tame/tamer/src/xir
Mike Gerwitz aec3b97e3f tamer: parse::parser::Parser: Prevent infinite iteration on finalize
This was a rather frustrating thing to encounter.  I was working on
refactoring `AirAggregate`, and found that my tests were hanging despite no
apparent cause in the parser itself.

As it turns out, rather than failing with a `FinalizeError` as I
expected (since I was mid-refactor), `collect()` was allocating space for an
endless stream of errors.  This was easily verified by adding a `take(x)`
and observing the assertion failure (in this case, in `close_pkg_mid_expr`).

This happens to be the first time in a long time that I actually had to
debug---the combination of robust types as proofs and tests to fill in the
gaps means that runtime issues are caught at build time in all but
exceptional cases (like this one).

It's also worth noting that, because of my policy of iterating only at the
higher levels of the program, it was clear that this must somehow be
Parser-related, since that's the only part of the system that has the
potential for unbounded recursion due to its cyclic state machines.

DEV-13708
2023-03-10 14:27:58 -05:00
..
attr Copyright year and name update 2023-01-20 23:37:30 -05:00
autoclose tamer: xir::autoclose: New lowering operation 2023-03-10 14:27:57 -05:00
flat tamer: xir::flat::XirfToXir: New lowering operation 2023-03-10 14:27:57 -05:00
parse tamer: parse::parser::Parser: Prevent infinite iteration on finalize 2023-03-10 14:27:58 -05:00
reader tamer: xir::reader: Divorce from `parse` 2023-03-10 14:27:57 -05:00
tree Copyright year and name update 2023-01-20 23:37:30 -05:00
attr.rs Copyright year and name update 2023-01-20 23:37:30 -05:00
autoclose.rs tamer: tamec: POC lowering pipeline with XirfAutoClose and XirfToXir 2023-03-10 14:27:57 -05:00
error.rs Copyright year and name update 2023-01-20 23:37:30 -05:00
escape.rs Copyright year and name update 2023-01-20 23:37:30 -05:00
flat.rs tamer: asg::graph::object::xir: Initial rate element reconstruction 2023-03-10 14:27:58 -05:00
fmt.rs Copyright year and name update 2023-01-20 23:37:30 -05:00
iter.rs Copyright year and name update 2023-01-20 23:37:30 -05:00
parse.rs Copyright year and name update 2023-01-20 23:37:30 -05:00
pred.rs Copyright year and name update 2023-01-20 23:37:30 -05:00
reader.rs tamer: xir::reader: Divorce from `parse` 2023-03-10 14:27:57 -05:00
st.rs Copyright year and name update 2023-01-20 23:37:30 -05:00
tree.rs Copyright year and name update 2023-01-20 23:37:30 -05:00
writer.rs Copyright year and name update 2023-01-20 23:37:30 -05:00