break and continue say they do not exist

They came back as "unknown function break", which reads as a typo rather than
as a missing feature. plan.org's loop story is settled as imperative while/for
with break, continue and return, so these are named, planned and absent - and
they alter control flow, which is the first thing the house rule says must be
recognised explicitly rather than left to fall through to a call.

Found by the lane writing the documentation site, which had to describe the
loop forms and discovered two of them were neither implemented nor refused.
This commit is contained in:
Joseph Ferano 2026-09-12 04:02:24 +07:00
parent 8cb9654b52
commit c8c3074a27

View File

@ -333,6 +333,12 @@ and form f mk (head : Form.t) (args : Form.t list) : Ast.expr =
the restart stack without committing to one. *)
| "find-restart" | "compute-restarts"
| "errdefer" | "with-allocator" | "loop" | "recur"
(* plan.org's loop story is settled as imperative while/for with these
two and [return]. Neither exists, and both *alter control flow*
the first thing the house rule says must be recognised explicitly.
Falling through to Call answered "unknown function break", which
reads as a typo rather than as a missing feature. *)
| "break" | "continue"
| "await" as name) ->
fail f "%s is not implemented yet (see the build sequence in plan.org)" name