Files
zig/astgen.c
Motiejus Jakštys ff99a5157e astgen: add any_defer_node check and reachableExpr to retExpr
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>
2026-02-13 22:34:37 +00:00

412 KiB