check_finite already walked a union's cases, so a union containing itself by value was refused before the emitter could try to lay it out -- which it would have done forever, since payload_lay calls lay calls payload_lay. Asserted both ways round: directly, and two unions through each other. Through a pointer it works, and that is the shape a Form has, so it is in the program rather than only in the prose: a Tree with a (Ptr Tree) field, matched through a deref, summed recursively. BUILT.md also records why match's fall-through is still unreachable rather than a trap. It is only sound because no reachable program can hold a tag no case names: Zero is tag 0, every construction writes a tag the checker resolved, and uninit -- the one way to get bytes nobody wrote -- is refused on a union for exactly this reason. The refusal is what pays for the unreachable.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%