diff --git a/crates/infact-normalize/src/lib.rs b/crates/infact-normalize/src/lib.rs index 079dc3e..de51cfa 100644 --- a/crates/infact-normalize/src/lib.rs +++ b/crates/infact-normalize/src/lib.rs @@ -233,6 +233,32 @@ pub enum Form { /// lets a reader of the form tell which they have. coverage: Coverage, }, + /// Repeating a body for as long as a condition holds. + /// + /// A `while` and a `loop` are one construct: the second is the first with + /// the condition written inside as a `break`. Held as syntax they were two, + /// and neither described work, so a library function that loops this way + /// yielded no behavior at all. + /// + /// Distinct from [`Form::Traverse`], which walks something. A repetition + /// has no sequence — what it visits, if anything, is whatever its body + /// advances. Where that is a counted index, simplification turns the whole + /// thing into the traversal it is written to be. + Repeat { + condition: Box