7c5463c7d9d39be0b1f6555aa964bab128b7d33f
contains(haystack, needle: (str|rune)) -> contains(haystack: str, needles: (str|rune)...) bool per ref/hare/strings/contains.ha:9. Body: for-loop over needles.len; inner match (needles[i]) dispatches byteindex(haystack, s|r); early return true on hit; fall-through return false. Hare's match-yield + if (matched) return true collapses naturally given byteindex's (i32|void) shape (Hare uses bytes::contains -> bool). 0-arg returns false per Hare spec. Unblocked by: #8 (5ed6293varargseq per cgcall), #12 (cbf1042sum-tag forward), #15 (5609d04frame-strategy), #16 (d9b0c90callee_variadic_ param N_DOT). All four landed this session; #9 exercises every unblocker. The cross-module same-leaf collision with bytes.contains (non-variadic) is closed by #16's fnparamslookupmod re-routing — existing 750 sentinel row bytes_strings_contains continues to pass. contains_cases adds 6 variadic rows (signalled 1600+i): 0-arg, 1-arg str, 1-arg rune, 3-arg mixed (middle hits), 3-arg all-miss, multibyte mixed (heart-é via 0xE9u32: rune per single-byte lexrune precedent at hasprefix_cases:115). Module-header divergence note for contains removed; lib/bytes whitespace-default note retained for future bytes graduation. make test 126/126; ww2==ww3==ww4 byte-id holds via 995_self_rebuild.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%