diff options
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index 504edfe97b..212db3a0e4 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -3737,8 +3737,12 @@ fn analyzeRet( if (need_coercion) { if (sema.func) |func| { const fn_ty = func.owner_decl.typed_value.most_recent.typed_value.ty; - const casted_operand = try sema.coerce(block, fn_ty.fnReturnType(), operand, src); - _ = try block.addUnOp(src, Type.initTag(.noreturn), .ret, casted_operand); + const fn_ret_ty = fn_ty.fnReturnType(); + const casted_operand = try sema.coerce(block, fn_ret_ty, operand, src); + if (fn_ret_ty.zigTypeTag() == .Void) + _ = try block.addNoOp(src, Type.initTag(.noreturn), .retvoid) + else + _ = try block.addUnOp(src, Type.initTag(.noreturn), .ret, casted_operand); return always_noreturn; } } |
