mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-08 19:42:12 +00:00
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