| ... | @@ -26017,13 +26017,12 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A | ... | @@ -26017,13 +26017,12 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A |
| 26017 | break :cc .auto; | 26017 | break :cc .auto; |
| 26018 | }; | 26018 | }; |
| 26019 | | 26019 | |
| 26020 | const ret_ty: Type = if (extra.data.bits.ret_ty_is_generic) | 26020 | const ret_ty: Type = if (extra.data.bits.has_ret_ty_body) blk: { |
| 26021 | .generic_poison | | |
| 26022 | else if (extra.data.bits.has_ret_ty_body) blk: { | | |
| 26023 | const body_len = sema.code.extra[extra_index]; | 26021 | const body_len = sema.code.extra[extra_index]; |
| 26024 | extra_index += 1; | 26022 | extra_index += 1; |
| 26025 | const body = sema.code.bodySlice(extra_index, body_len); | 26023 | const body = sema.code.bodySlice(extra_index, body_len); |
| 26026 | extra_index += body.len; | 26024 | extra_index += body.len; |
| | 26025 | if (extra.data.bits.ret_ty_is_generic) break :blk .generic_poison; |
| 26027 | | 26026 | |
| 26028 | const val = try sema.resolveGenericBody(block, ret_src, body, inst, Type.type, .{ .simple = .function_ret_ty }); | 26027 | const val = try sema.resolveGenericBody(block, ret_src, body, inst, Type.type, .{ .simple = .function_ret_ty }); |
| 26029 | const ty = val.toType(); | 26028 | const ty = val.toType(); |
| ... | @@ -26031,6 +26030,8 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A | ... | @@ -26031,6 +26030,8 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A |
| 26031 | } else if (extra.data.bits.has_ret_ty_ref) blk: { | 26030 | } else if (extra.data.bits.has_ret_ty_ref) blk: { |
| 26032 | const ret_ty_ref: Zir.Inst.Ref = @enumFromInt(sema.code.extra[extra_index]); | 26031 | const ret_ty_ref: Zir.Inst.Ref = @enumFromInt(sema.code.extra[extra_index]); |
| 26033 | extra_index += 1; | 26032 | extra_index += 1; |
| | 26033 | if (extra.data.bits.ret_ty_is_generic) break :blk .generic_poison; |
| | 26034 | |
| 26034 | const ret_ty_air_ref = try sema.resolveInst(ret_ty_ref); | 26035 | const ret_ty_air_ref = try sema.resolveInst(ret_ty_ref); |
| 26035 | const ret_ty_val = try sema.resolveConstDefinedValue(block, ret_src, ret_ty_air_ref, .{ .simple = .function_ret_ty }); | 26036 | const ret_ty_val = try sema.resolveConstDefinedValue(block, ret_src, ret_ty_air_ref, .{ .simple = .function_ret_ty }); |
| 26036 | break :blk ret_ty_val.toType(); | 26037 | break :blk ret_ty_val.toType(); |