fibers B1.2: record review findings — async surface blocked on 0151 (widened)
Adversarial review of 45d869d: the Io infrastructure (both materializers,
push-inherit, 37 .ir regens, !-lint) is correct + landed; but await/cancel
(*Future($R)) are uncallable in EVERY form because sx can't infer a generic
$T from a pointer-wrapped arg. Widened issue 0151 to that root (repro:
unbox(b: *Box($T)) -> $T). Checkpoint: B1.2 partially landed; next = fix 0151
generic inference -> make await/cancel callable -> add 1805/1806 -> B1.3.
This commit is contained in:
@@ -1,4 +1,20 @@
|
||||
# 0151 — UFCS dot-call: `$R` inferred from a closure's RETURN type via a variadic pack is left unresolved (LLVM SIGTRAP)
|
||||
# 0151 — generic type-var not inferred through a pointer / via UFCS (LLVM SIGTRAP / "cannot infer")
|
||||
|
||||
## WIDENED (adversarial review of B1.2, 2026-06-21)
|
||||
The UFCS-closure-return-pack case below is one symptom of a BROADER generic-inference
|
||||
gap: **sx cannot infer a generic `$T` from a POINTER-wrapped argument.** Minimal repro,
|
||||
no UFCS / no pack / no closure involved:
|
||||
```sx
|
||||
Box :: struct ($T: Type) { v: T; }
|
||||
unbox :: (b: *Box($T)) -> $T { return b.v; }
|
||||
// unbox(@b) → error: cannot infer generic type parameter 'T' for 'unbox'
|
||||
```
|
||||
This blocks `await`/`cancel` in `library/modules/std/io.sx` (both take `*Future($R)`) —
|
||||
they are **uncallable in EVERY form** (explicit `await(@f)` → "cannot infer 'R'"; UFCS
|
||||
`f.await()` → SIGTRAP). So B1.2's async layer can CREATE a Future (`async(...)` works) but
|
||||
cannot AWAIT it. Fix scope is the generic-inference engine (infer `$T` from `*T`-wrapped
|
||||
params, and from closure-return-via-pack, and through UFCS dot-dispatch) — not the Io lib.
|
||||
The two symptoms below + the `*Box($T)` repro above are the acceptance cases.
|
||||
|
||||
## Symptom
|
||||
|
||||
|
||||
Reference in New Issue
Block a user