| ... | @@ -4666,20 +4666,18 @@ fn analyzeCall( | ... | @@ -4666,20 +4666,18 @@ fn analyzeCall( |
| 4666 | const bare_return_type = try sema.analyzeAsType(&child_block, ret_ty_src, ret_ty_inst); | 4666 | const bare_return_type = try sema.analyzeAsType(&child_block, ret_ty_src, ret_ty_inst); |
| 4667 | // Create a fresh inferred error set type for inline/comptime calls. | 4667 | // Create a fresh inferred error set type for inline/comptime calls. |
| 4668 | const fn_ret_ty = blk: { | 4668 | const fn_ret_ty = blk: { |
| 4669 | if (func_ty_info.return_type.castTag(.error_union)) |payload| { | 4669 | if (module_fn.hasInferredErrorSet()) { |
| 4670 | if (payload.data.error_set.tag() == .error_set_inferred) { | 4670 | const node = try sema.gpa.create(Module.Fn.InferredErrorSetListNode); |
| 4671 | const node = try sema.gpa.create(Module.Fn.InferredErrorSetListNode); | 4671 | node.data = .{ .func = module_fn }; |
| 4672 | node.data = .{ .func = module_fn }; | 4672 | if (parent_func) |some| { |
| 4673 | if (parent_func) |some| { | 4673 | some.inferred_error_sets.prepend(node); |
| 4674 | some.inferred_error_sets.prepend(node); | | |
| 4675 | } | | |
| 4676 | | | |
| 4677 | const error_set_ty = try Type.Tag.error_set_inferred.create(sema.arena, &node.data); | | |
| 4678 | break :blk try Type.Tag.error_union.create(sema.arena, .{ | | |
| 4679 | .error_set = error_set_ty, | | |
| 4680 | .payload = bare_return_type, | | |
| 4681 | }); | | |
| 4682 | } | 4674 | } |
| | 4675 | |
| | 4676 | const error_set_ty = try Type.Tag.error_set_inferred.create(sema.arena, &node.data); |
| | 4677 | break :blk try Type.Tag.error_union.create(sema.arena, .{ |
| | 4678 | .error_set = error_set_ty, |
| | 4679 | .payload = bare_return_type, |
| | 4680 | }); |
| 4683 | } | 4681 | } |
| 4684 | break :blk bare_return_type; | 4682 | break :blk bare_return_type; |
| 4685 | }; | 4683 | }; |