Files
craft-libs/crates
janis luksandClaude Sonnet 5.5 425ae605ca Hunspell: no empty forms, and a circumfix suffix inside a chain needs its prefix
Two more cases the forms() checks missed.

- With FULLSTRIP a suffix can strip a stem down to nothing, so forms()
  could list an empty form that contains() never accepts. Empty forms
  are no longer listed, at the first suffix, in a chain or with a prefix.
- A circumfix suffix at the start of a suffix chain was only checked
  for the outermost rule, so work/A, SFX A able/Bc, SFX B s was
  accepted as "workables" without the prefix. A circumfix suffix under
  another suffix is no longer a way to a word without its prefix, and
  forms() does not chain a form that ends in one.

New tests cover both. Over the whole hunspell-lv lv_LV dictionary
(66,480 stems, 4.5 million forms) every form forms() lists is still
accepted by the checker.

Ported from storytold/wordcraft#5012 (d655b3188) onto craft-proof.
Adapted to flag ids; the form_has_flag circumfix filter already came in with the first port.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FypgCX8LsYYE8fsj4byBm2
2026-11-01 22:34:32 +00:00
..
…
…
…
…