inferGenericReturnType resolved a generic call's return-type AST ($R, !E) in the CALL-SITE module context. For a re-exported fn the error-set name (LE / IoErr, re-exported as LE :: lib.LE) resolved through the call-site alias to a TypeId NOT tagged .error_set, so the planned result was a tuple whose last field wasn't an error set — errorChannelOf saw a plain tuple and the value- failable's ! channel was lost (try/or rejected it / built a malformed i1 PHI). monomorphizeFunction already pins the source to the fn's defining module before resolving the return type; inferGenericReturnType did not, so the planned call-result type disagreed with the instance's real signature. Fix: pin the source to fd.body.source_file around the return-type resolution (binding-build stays in the call-site context — its args are typed there). Regression test examples/1058-errors-reexport-value-failable-channel.sx (+ companion lib.sx). Suite green 732/0.
2 lines
5 B
Plaintext
2 lines
5 B
Plaintext
r=42
|