Port two missing features from upstream AstGen.zig ret() function: 1. Add any_defer_node field to GenZir (AstGen.zig:11812) to track whether we're inside a defer expression. Set it in defer body generation and propagate via makeSubBlock. retExpr now checks this field and errors with "cannot return from defer expression" (AstGen.zig:8127-8135). Also reorder retExpr checks to match upstream: fn_block null check first, then any_defer_node check, then emitDbgNode. 2. Add reachableExpr wrapper (AstGen.zig:408-416) that calls exprRl and checks refIsNoReturn to detect unreachable code. Use it in retExpr instead of plain exprRl for the return operand (AstGen.zig:8185-8186). nameStratExpr is left as TODO since containerDecl does not yet accept a name_strategy parameter. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
412 KiB
412 KiB