You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
Originally scoped as bookkeeping ("real + tested, close-as-done"), but
re-auditing caught the same trap STDLIB-04c removed: `string_to_int`
declared in `stdlib/effects.affine:33` was **unwired dead surface** — no
entry in `interp.ml`, `codegen_deno.ml`, `resolve.ml` seed, or
`typecheck.ml` binding. Any caller of `use effects::{string_to_int}`
would compile and fail at run.
## Fix
Wire `string_to_int` as the typed-alias of `parse_int` (canonical name)
— same `String -> Option<Int>` signature, same OCaml impl, same
`__as_parseInt` host shim. Touches all four registration points so the
alias is first-class.
## Tests
4 hermetic tests in `E2E STDLIB-04e Pure #332` locking the round-trip
semantics for all three pure externs:
| Test | Assertion |
|---|---|
| `int_to_string(42)` | == `"42"` |
| `string_to_int("123")` | == `Some(123)` |
| `string_to_int("abc")` | == `None` |
| `string_length("hello")` | == `5` |
## Test plan
- [x] 4 new hermetic tests added
- [ ] CI: `dune runtest` green (stdlib AOT gate untouched; e2e gate +4)
- [ ] Hypatia DOC-FORMAT: no `.md` introduced
Updates `docs/TECH-DEBT.adoc` row 04e → DONE (notes the dead-surface
discovery for posterity).
Closes#332. Refs #175.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01NUHL3MH3yKKQAEhSZn4Thu)_
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments