The callers a return-type assist leaves behind A September 23, 2026 Rust implementation in PR #110 to the prod-code project added a return-type wrapping assist that updates callers by proposing a `?` after each call when the calling function's written return type name ends in `Option` or `Result`, and reports call sites it cannot propagate. The tool, described at source revision 0517151c, uses a textual test rather than full type resolution and sends proposed texts to an analyzer overlay to report remaining error diagnostics, which the author notes is not compiler proof. For callers that return anything else, `code_wrap_return` names the caller, its return type and the line rather than choosing a recovery policy such as a default, panic or early return. The callers a return-type assist leaves behind A September rust-analyzer probe wrapped a function’s return type without updating its callers. The first prod-code implementation added propagation candidates and a report of unresolved calls. Its limits show why the caller side needs a separate check. On this page · 4 sections This post describes the Rust implementation introduced on September 23, 2026 in PR 110 https://github.com/alex09x/prod-code/pull/110 , at source revision 0517151c https://github.com/alex09x/prod-code/blob/0517151c6f37fc6b923d04cd1a638362b38d6389/crates/prod-code-mcp/src/wrap return.rs . The development checks and timings below are reported in the linked PRs; they were not independently reproduced for this post. Later versions changed this tool. The roadmap for this project listed five refactorings as “probed and not offered”: point rust-analyzer at the obvious place and nothing comes back. It also said the probe might have missed a trigger. PR 108 https://github.com/alex09x/prod-code/pull/108 records a second probe, with one example of each shape in a scratch crate: two of the five were offered. Selected output follows; other assists and probe cases are omitted, and the labels are shortened: == line 2 col 5 an if let that ends the function convert to guarded return RefactorRewrite Convert to guarded return == line 21 col 18 the return type of pub fn plain - u32 wrap return type in option RefactorRewrite Wrap return type in Option wrap return type in result RefactorRewrite Wrap return type in Result The first was recorded as reachable through the assists tool. The second was half done in that probe, and it is the more instructive half to look at. What the assist does php -pub fn plain - u32 { - 5 +pub fn plain - Option