Browse Source
The stringstartswith(*) arm of get_dict_can_assign_value''s multi-member tail-clause reservation walk compared the prefix against $tp (the type string) instead of $rv (the candidate value). Consequences (pinned pre-fix in the previous commit): - a later optional clause mixing literal(...) and stringstartswith(...) members never had genuinely matching trailing words reserved - a greedy -multiple argument swallowed them and the tail clause was silently lost - a prefix text that happened to prefix the literal type string (e.g str vs stringstartswith(str)) wrongly reserved NON-matching words, raising a spurious toomanyarguments overflow One-token fix; allocation_tailclause_ssw_reservation_GAP flipped to the correct expectations (matching words reserved; non-matching words left to the -multiple argument with no error); literal-only and no-match guards unchanged. Known remaining approximation (pre-existing, noted in the buildversion changelog): the walk still requires a literal* member in the tail clause''s typelist to run at all - a stringstartswith-only tail clause is not reserved. Verified: full punk/args suite 231 total / 227 passed / 0 failed (4 intended skips), punk/ns 57/57 under Tcl 9.0.3; allocation.test 10/10 under Tcl 8.7. punk::args buildversion 0.12.2 -> 0.12.3; project 0.12.30 + CHANGELOG. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.commaster
5 changed files with 27 additions and 24 deletions
@ -1,4 +1,4 @@
|
||||
[project] |
||||
name = "punkshell" |
||||
version = "0.12.29" |
||||
version = "0.12.30" |
||||
license = "BSD-2-Clause" |
||||
|
||||
Loading…
Reference in new issue