Sema: fix zirStoreNode crash
when other function's inferred error set is the return type of a function, it should not try to insert the error set into it. this implies that this branch fixes a bug in master branch.
This commit is contained in:
10
src/Sema.zig
10
src/Sema.zig
@@ -5282,12 +5282,10 @@ fn zirStoreNode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!v
|
||||
// %b = store(%a, %c)
|
||||
// Where %c is an error union or error set. In such case we need to add
|
||||
// to the current function's inferred error set, if any.
|
||||
if (is_ret and (sema.typeOf(operand).zigTypeTag(mod) == .ErrorUnion or
|
||||
sema.typeOf(operand).zigTypeTag(mod) == .ErrorSet) and
|
||||
sema.fn_ret_ty.zigTypeTag(mod) == .ErrorUnion)
|
||||
{
|
||||
try sema.addToInferredErrorSet(operand);
|
||||
}
|
||||
if (is_ret and sema.fn_ret_ty_ies != null) switch (sema.typeOf(operand).zigTypeTag(mod)) {
|
||||
.ErrorUnion, .ErrorSet => try sema.addToInferredErrorSet(operand),
|
||||
else => {},
|
||||
};
|
||||
|
||||
const ptr_src: LazySrcLoc = .{ .node_offset_store_ptr = inst_data.src_node };
|
||||
const operand_src: LazySrcLoc = .{ .node_offset_store_operand = inst_data.src_node };
|
||||
|
||||
Reference in New Issue
Block a user