authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-08-26 16:59:24-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-08-28 17:25:39-04:00
logfe737d7a8f9a801e2db103c085a200a7477cfb08
tree125e0398e6eed6f957af55a76e48efc8cf52f3b7
parentacd35a1aa75c78dc24859fa658f6d3e25e330b8a

Sema: refactor to add a `block` param to `failWithOwnedErrorMsg`

We will need this in a bit...

1 files changed, 180 insertions(+), 179 deletions(-)

src/Sema.zig+180-179
...@@ -1460,7 +1460,7 @@ fn analyzeBodyInner(...@@ -1460,7 +1460,7 @@ fn analyzeBodyInner(
1460 try sema.errNote(block, runtime_src, msg, "runtime control flow here", .{});1460 try sema.errNote(block, runtime_src, msg, "runtime control flow here", .{});
1461 break :msg msg;1461 break :msg msg;
1462 };1462 };
1463 return sema.failWithOwnedErrorMsg(msg);1463 return sema.failWithOwnedErrorMsg(block, msg);
1464 }1464 }
1465 }1465 }
1466 i += 1;1466 i += 1;
...@@ -1910,7 +1910,7 @@ fn resolveDestType(...@@ -1910,7 +1910,7 @@ fn resolveDestType(
1910 try sema.errNote(block, src, msg, "use @as to provide explicit result type", .{});1910 try sema.errNote(block, src, msg, "use @as to provide explicit result type", .{});
1911 break :msg msg;1911 break :msg msg;
1912 };1912 };
1913 return sema.failWithOwnedErrorMsg(msg);1913 return sema.failWithOwnedErrorMsg(block, msg);
1914 },1914 },
1915 else => |e| return e,1915 else => |e| return e,
1916 };1916 };
...@@ -2158,7 +2158,7 @@ fn failWithNeededComptime(sema: *Sema, block: *Block, src: LazySrcLoc, reason: N...@@ -2158,7 +2158,7 @@ fn failWithNeededComptime(sema: *Sema, block: *Block, src: LazySrcLoc, reason: N
2158 }2158 }
2159 break :msg msg;2159 break :msg msg;
2160 };2160 };
2161 return sema.failWithOwnedErrorMsg(msg);2161 return sema.failWithOwnedErrorMsg(block, msg);
2162}2162}
21632163
2164fn failWithUseOfUndef(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError {2164fn failWithUseOfUndef(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError {
...@@ -2191,7 +2191,7 @@ fn failWithArrayInitNotSupported(sema: *Sema, block: *Block, src: LazySrcLoc, ty...@@ -2191,7 +2191,7 @@ fn failWithArrayInitNotSupported(sema: *Sema, block: *Block, src: LazySrcLoc, ty
2191 }2191 }
2192 break :msg msg;2192 break :msg msg;
2193 };2193 };
2194 return sema.failWithOwnedErrorMsg(msg);2194 return sema.failWithOwnedErrorMsg(block, msg);
2195}2195}
21962196
2197fn failWithStructInitNotSupported(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) CompileError {2197fn failWithStructInitNotSupported(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) CompileError {
...@@ -2223,7 +2223,7 @@ fn failWithIntegerOverflow(sema: *Sema, block: *Block, src: LazySrcLoc, int_ty:...@@ -2223,7 +2223,7 @@ fn failWithIntegerOverflow(sema: *Sema, block: *Block, src: LazySrcLoc, int_ty:
2223 try sema.errNote(block, src, msg, "when computing vector element at index '{d}'", .{vector_index});2223 try sema.errNote(block, src, msg, "when computing vector element at index '{d}'", .{vector_index});
2224 break :msg msg;2224 break :msg msg;
2225 };2225 };
2226 return sema.failWithOwnedErrorMsg(msg);2226 return sema.failWithOwnedErrorMsg(block, msg);
2227 }2227 }
2228 return sema.fail(block, src, "overflow of integer type '{}' with value '{}'", .{2228 return sema.fail(block, src, "overflow of integer type '{}' with value '{}'", .{
2229 int_ty.fmt(sema.mod), val.fmtValue(int_ty, sema.mod),2229 int_ty.fmt(sema.mod), val.fmtValue(int_ty, sema.mod),
...@@ -2244,7 +2244,7 @@ fn failWithInvalidComptimeFieldStore(sema: *Sema, block: *Block, init_src: LazyS...@@ -2244,7 +2244,7 @@ fn failWithInvalidComptimeFieldStore(sema: *Sema, block: *Block, init_src: LazyS
2244 try mod.errNoteNonLazy(default_value_src, msg, "default value set here", .{});2244 try mod.errNoteNonLazy(default_value_src, msg, "default value set here", .{});
2245 break :msg msg;2245 break :msg msg;
2246 };2246 };
2247 return sema.failWithOwnedErrorMsg(msg);2247 return sema.failWithOwnedErrorMsg(block, msg);
2248}2248}
22492249
2250fn failWithUseOfAsync(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError {2250fn failWithUseOfAsync(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError {
...@@ -2253,7 +2253,7 @@ fn failWithUseOfAsync(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError...@@ -2253,7 +2253,7 @@ fn failWithUseOfAsync(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError
2253 errdefer msg.destroy(sema.gpa);2253 errdefer msg.destroy(sema.gpa);
2254 break :msg msg;2254 break :msg msg;
2255 };2255 };
2256 return sema.failWithOwnedErrorMsg(msg);2256 return sema.failWithOwnedErrorMsg(block, msg);
2257}2257}
22582258
2259fn failWithInvalidFieldAccess(2259fn failWithInvalidFieldAccess(
...@@ -2275,7 +2275,7 @@ fn failWithInvalidFieldAccess(...@@ -2275,7 +2275,7 @@ fn failWithInvalidFieldAccess(
2275 try sema.errNote(block, src, msg, "consider using '.?', 'orelse', or 'if'", .{});2275 try sema.errNote(block, src, msg, "consider using '.?', 'orelse', or 'if'", .{});
2276 break :msg msg;2276 break :msg msg;
2277 };2277 };
2278 return sema.failWithOwnedErrorMsg(msg);2278 return sema.failWithOwnedErrorMsg(block, msg);
2279 } else if (inner_ty.zigTypeTag(mod) == .ErrorUnion) err: {2279 } else if (inner_ty.zigTypeTag(mod) == .ErrorUnion) err: {
2280 const child_ty = inner_ty.errorUnionPayload(mod);2280 const child_ty = inner_ty.errorUnionPayload(mod);
2281 if (!typeSupportsFieldAccess(mod, child_ty, field_name)) break :err;2281 if (!typeSupportsFieldAccess(mod, child_ty, field_name)) break :err;
...@@ -2285,7 +2285,7 @@ fn failWithInvalidFieldAccess(...@@ -2285,7 +2285,7 @@ fn failWithInvalidFieldAccess(
2285 try sema.errNote(block, src, msg, "consider using 'try', 'catch', or 'if'", .{});2285 try sema.errNote(block, src, msg, "consider using 'try', 'catch', or 'if'", .{});
2286 break :msg msg;2286 break :msg msg;
2287 };2287 };
2288 return sema.failWithOwnedErrorMsg(msg);2288 return sema.failWithOwnedErrorMsg(block, msg);
2289 }2289 }
2290 return sema.fail(block, src, "type '{}' does not support field access", .{object_ty.fmt(sema.mod)});2290 return sema.fail(block, src, "type '{}' does not support field access", .{object_ty.fmt(sema.mod)});
2291}2291}
...@@ -2386,10 +2386,11 @@ pub fn fail(...@@ -2386,10 +2386,11 @@ pub fn fail(
2386 args: anytype,2386 args: anytype,
2387) CompileError {2387) CompileError {
2388 const err_msg = try sema.errMsg(block, src, format, args);2388 const err_msg = try sema.errMsg(block, src, format, args);
2389 return sema.failWithOwnedErrorMsg(err_msg);2389 return sema.failWithOwnedErrorMsg(block, err_msg);
2390}2390}
23912391
2392fn failWithOwnedErrorMsg(sema: *Sema, err_msg: *Module.ErrorMsg) CompileError {2392fn failWithOwnedErrorMsg(sema: *Sema, block: ?*Block, err_msg: *Module.ErrorMsg) CompileError {
2393 _ = block;
2393 @setCold(true);2394 @setCold(true);
2394 const gpa = sema.gpa;2395 const gpa = sema.gpa;
2395 const mod = sema.mod;2396 const mod = sema.mod;
...@@ -3226,7 +3227,7 @@ fn zirEnumDecl(...@@ -3226,7 +3227,7 @@ fn zirEnumDecl(
3226 try sema.errNote(block, other_field_src, msg, "other field here", .{});3227 try sema.errNote(block, other_field_src, msg, "other field here", .{});
3227 break :msg msg;3228 break :msg msg;
3228 };3229 };
3229 return sema.failWithOwnedErrorMsg(msg);3230 return sema.failWithOwnedErrorMsg(block, msg);
3230 }3231 }
32313232
3232 const tag_overflow = if (has_tag_value) overflow: {3233 const tag_overflow = if (has_tag_value) overflow: {
...@@ -3260,7 +3261,7 @@ fn zirEnumDecl(...@@ -3260,7 +3261,7 @@ fn zirEnumDecl(
3260 try sema.errNote(block, other_field_src, msg, "other occurrence here", .{});3261 try sema.errNote(block, other_field_src, msg, "other occurrence here", .{});
3261 break :msg msg;3262 break :msg msg;
3262 };3263 };
3263 return sema.failWithOwnedErrorMsg(msg);3264 return sema.failWithOwnedErrorMsg(block, msg);
3264 }3265 }
3265 break :overflow false;3266 break :overflow false;
3266 } else if (any_values) overflow: {3267 } else if (any_values) overflow: {
...@@ -3279,7 +3280,7 @@ fn zirEnumDecl(...@@ -3279,7 +3280,7 @@ fn zirEnumDecl(
3279 try sema.errNote(block, other_field_src, msg, "other occurrence here", .{});3280 try sema.errNote(block, other_field_src, msg, "other occurrence here", .{});
3280 break :msg msg;3281 break :msg msg;
3281 };3282 };
3282 return sema.failWithOwnedErrorMsg(msg);3283 return sema.failWithOwnedErrorMsg(block, msg);
3283 }3284 }
3284 break :overflow false;3285 break :overflow false;
3285 } else overflow: {3286 } else overflow: {
...@@ -3297,7 +3298,7 @@ fn zirEnumDecl(...@@ -3297,7 +3298,7 @@ fn zirEnumDecl(
3297 const msg = try sema.errMsg(block, value_src, "enumeration value '{}' too large for type '{}'", .{3298 const msg = try sema.errMsg(block, value_src, "enumeration value '{}' too large for type '{}'", .{
3298 last_tag_val.?.fmtValue(int_tag_ty, mod), int_tag_ty.fmt(mod),3299 last_tag_val.?.fmtValue(int_tag_ty, mod), int_tag_ty.fmt(mod),
3299 });3300 });
3300 return sema.failWithOwnedErrorMsg(msg);3301 return sema.failWithOwnedErrorMsg(block, msg);
3301 }3302 }
3302 }3303 }
3303 return decl_val;3304 return decl_val;
...@@ -3570,7 +3571,7 @@ fn ensureResultUsed(...@@ -3570,7 +3571,7 @@ fn ensureResultUsed(
3570 try sema.errNote(block, src, msg, "consider using 'try', 'catch', or 'if'", .{});3571 try sema.errNote(block, src, msg, "consider using 'try', 'catch', or 'if'", .{});
3571 break :msg msg;3572 break :msg msg;
3572 };3573 };
3573 return sema.failWithOwnedErrorMsg(msg);3574 return sema.failWithOwnedErrorMsg(block, msg);
3574 },3575 },
3575 else => {3576 else => {
3576 const msg = msg: {3577 const msg = msg: {
...@@ -3580,7 +3581,7 @@ fn ensureResultUsed(...@@ -3580,7 +3581,7 @@ fn ensureResultUsed(
3580 try sema.errNote(block, src, msg, "this error can be suppressed by assigning the value to '_'", .{});3581 try sema.errNote(block, src, msg, "this error can be suppressed by assigning the value to '_'", .{});
3581 break :msg msg;3582 break :msg msg;
3582 };3583 };
3583 return sema.failWithOwnedErrorMsg(msg);3584 return sema.failWithOwnedErrorMsg(block, msg);
3584 },3585 },
3585 }3586 }
3586}3587}
...@@ -3602,7 +3603,7 @@ fn zirEnsureResultNonError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Com...@@ -3602,7 +3603,7 @@ fn zirEnsureResultNonError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Com
3602 try sema.errNote(block, src, msg, "consider using 'try', 'catch', or 'if'", .{});3603 try sema.errNote(block, src, msg, "consider using 'try', 'catch', or 'if'", .{});
3603 break :msg msg;3604 break :msg msg;
3604 };3605 };
3605 return sema.failWithOwnedErrorMsg(msg);3606 return sema.failWithOwnedErrorMsg(block, msg);
3606 },3607 },
3607 else => return,3608 else => return,
3608 }3609 }
...@@ -3630,7 +3631,7 @@ fn zirEnsureErrUnionPayloadVoid(sema: *Sema, block: *Block, inst: Zir.Inst.Index...@@ -3630,7 +3631,7 @@ fn zirEnsureErrUnionPayloadVoid(sema: *Sema, block: *Block, inst: Zir.Inst.Index
3630 try sema.errNote(block, src, msg, "payload value can be explicitly ignored with '|_|'", .{});3631 try sema.errNote(block, src, msg, "payload value can be explicitly ignored with '|_|'", .{});
3631 break :msg msg;3632 break :msg msg;
3632 };3633 };
3633 return sema.failWithOwnedErrorMsg(msg);3634 return sema.failWithOwnedErrorMsg(block, msg);
3634 }3635 }
3635}3636}
36363637
...@@ -4269,7 +4270,7 @@ fn zirForLen(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air....@@ -4269,7 +4270,7 @@ fn zirForLen(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
4269 try sema.errNote(block, arg_src, msg, "for loop operand must be a range, array, slice, tuple, or vector", .{});4270 try sema.errNote(block, arg_src, msg, "for loop operand must be a range, array, slice, tuple, or vector", .{});
4270 break :msg msg;4271 break :msg msg;
4271 };4272 };
4272 return sema.failWithOwnedErrorMsg(msg);4273 return sema.failWithOwnedErrorMsg(block, msg);
4273 }4274 }
4274 if (!object_ty.indexableHasLen(mod)) continue;4275 if (!object_ty.indexableHasLen(mod)) continue;
42754276
...@@ -4298,7 +4299,7 @@ fn zirForLen(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air....@@ -4298,7 +4299,7 @@ fn zirForLen(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
4298 });4299 });
4299 break :msg msg;4300 break :msg msg;
4300 };4301 };
4301 return sema.failWithOwnedErrorMsg(msg);4302 return sema.failWithOwnedErrorMsg(block, msg);
4302 }4303 }
4303 } else {4304 } else {
4304 len = arg_len;4305 len = arg_len;
...@@ -4336,7 +4337,7 @@ fn zirForLen(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air....@@ -4336,7 +4337,7 @@ fn zirForLen(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
4336 }4337 }
4337 break :msg msg;4338 break :msg msg;
4338 };4339 };
4339 return sema.failWithOwnedErrorMsg(msg);4340 return sema.failWithOwnedErrorMsg(block, msg);
4340 }4341 }
43414342
4342 // Now for the runtime checks.4343 // Now for the runtime checks.
...@@ -4511,7 +4512,7 @@ fn validateUnionInit(...@@ -4511,7 +4512,7 @@ fn validateUnionInit(
4511 try sema.addDeclaredHereNote(msg, union_ty);4512 try sema.addDeclaredHereNote(msg, union_ty);
4512 break :msg msg;4513 break :msg msg;
4513 };4514 };
4514 return sema.failWithOwnedErrorMsg(msg);4515 return sema.failWithOwnedErrorMsg(block, msg);
4515 }4516 }
45164517
4517 if (block.is_comptime and4518 if (block.is_comptime and
...@@ -4678,7 +4679,7 @@ fn validateStructInit(...@@ -4678,7 +4679,7 @@ fn validateStructInit(
4678 try sema.errNote(block, other_field_src, msg, "other field here", .{});4679 try sema.errNote(block, other_field_src, msg, "other field here", .{});
4679 break :msg msg;4680 break :msg msg;
4680 };4681 };
4681 return sema.failWithOwnedErrorMsg(msg);4682 return sema.failWithOwnedErrorMsg(block, msg);
4682 }4683 }
4683 found_fields[field_index.*] = field_ptr;4684 found_fields[field_index.*] = field_ptr;
4684 }4685 }
...@@ -4739,7 +4740,7 @@ fn validateStructInit(...@@ -4739,7 +4740,7 @@ fn validateStructInit(
4739 );4740 );
4740 }4741 }
4741 root_msg = null;4742 root_msg = null;
4742 return sema.failWithOwnedErrorMsg(msg);4743 return sema.failWithOwnedErrorMsg(block, msg);
4743 }4744 }
47444745
4745 return;4746 return;
...@@ -4869,7 +4870,7 @@ fn validateStructInit(...@@ -4869,7 +4870,7 @@ fn validateStructInit(
4869 );4870 );
4870 }4871 }
4871 root_msg = null;4872 root_msg = null;
4872 return sema.failWithOwnedErrorMsg(msg);4873 return sema.failWithOwnedErrorMsg(block, msg);
4873 }4874 }
48744875
4875 if (struct_is_comptime) {4876 if (struct_is_comptime) {
...@@ -4973,7 +4974,7 @@ fn zirValidateArrayInit(...@@ -4973,7 +4974,7 @@ fn zirValidateArrayInit(
49734974
4974 if (root_msg) |msg| {4975 if (root_msg) |msg| {
4975 root_msg = null;4976 root_msg = null;
4976 return sema.failWithOwnedErrorMsg(msg);4977 return sema.failWithOwnedErrorMsg(block, msg);
4977 }4978 }
4978 },4979 },
4979 .Array => {4980 .Array => {
...@@ -5186,7 +5187,7 @@ fn zirValidateDeref(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr...@@ -5186,7 +5187,7 @@ fn zirValidateDeref(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr
5186 try sema.explainWhyTypeIsComptime(msg, src.toSrcLoc(src_decl, mod), elem_ty);5187 try sema.explainWhyTypeIsComptime(msg, src.toSrcLoc(src_decl, mod), elem_ty);
5187 break :msg msg;5188 break :msg msg;
5188 };5189 };
5189 return sema.failWithOwnedErrorMsg(msg);5190 return sema.failWithOwnedErrorMsg(block, msg);
5190 }5191 }
5191}5192}
51925193
...@@ -5218,7 +5219,7 @@ fn failWithBadMemberAccess(...@@ -5218,7 +5219,7 @@ fn failWithBadMemberAccess(
5218 try sema.addDeclaredHereNote(msg, agg_ty);5219 try sema.addDeclaredHereNote(msg, agg_ty);
5219 break :msg msg;5220 break :msg msg;
5220 };5221 };
5221 return sema.failWithOwnedErrorMsg(msg);5222 return sema.failWithOwnedErrorMsg(block, msg);
5222}5223}
52235224
5224fn failWithBadStructFieldAccess(5225fn failWithBadStructFieldAccess(
...@@ -5244,7 +5245,7 @@ fn failWithBadStructFieldAccess(...@@ -5244,7 +5245,7 @@ fn failWithBadStructFieldAccess(
5244 try mod.errNoteNonLazy(struct_obj.srcLoc(mod), msg, "struct declared here", .{});5245 try mod.errNoteNonLazy(struct_obj.srcLoc(mod), msg, "struct declared here", .{});
5245 break :msg msg;5246 break :msg msg;
5246 };5247 };
5247 return sema.failWithOwnedErrorMsg(msg);5248 return sema.failWithOwnedErrorMsg(block, msg);
5248}5249}
52495250
5250fn failWithBadUnionFieldAccess(5251fn failWithBadUnionFieldAccess(
...@@ -5271,7 +5272,7 @@ fn failWithBadUnionFieldAccess(...@@ -5271,7 +5272,7 @@ fn failWithBadUnionFieldAccess(
5271 try mod.errNoteNonLazy(decl.srcLoc(mod), msg, "union declared here", .{});5272 try mod.errNoteNonLazy(decl.srcLoc(mod), msg, "union declared here", .{});
5272 break :msg msg;5273 break :msg msg;
5273 };5274 };
5274 return sema.failWithOwnedErrorMsg(msg);5275 return sema.failWithOwnedErrorMsg(block, msg);
5275}5276}
52765277
5277fn addDeclaredHereNote(sema: *Sema, parent: *Module.ErrorMsg, decl_ty: Type) !void {5278fn addDeclaredHereNote(sema: *Sema, parent: *Module.ErrorMsg, decl_ty: Type) !void {
...@@ -5737,7 +5738,7 @@ fn zirCImport(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileEr...@@ -5737,7 +5738,7 @@ fn zirCImport(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileEr
5737 }5738 }
5738 break :msg msg;5739 break :msg msg;
5739 };5740 };
5740 return sema.failWithOwnedErrorMsg(msg);5741 return sema.failWithOwnedErrorMsg(&child_block, msg);
5741 }5742 }
5742 const c_import_pkg = Package.create(5743 const c_import_pkg = Package.create(
5743 sema.gpa,5744 sema.gpa,
...@@ -5918,7 +5919,7 @@ fn analyzeBlockBody(...@@ -5918,7 +5919,7 @@ fn analyzeBlockBody(
59185919
5919 break :msg msg;5920 break :msg msg;
5920 };5921 };
5921 return sema.failWithOwnedErrorMsg(msg);5922 return sema.failWithOwnedErrorMsg(child_block, msg);
5922 }5923 }
5923 const ty_inst = Air.internedToRef(resolved_ty.toIntern());5924 const ty_inst = Air.internedToRef(resolved_ty.toIntern());
5924 try sema.air_extra.ensureUnusedCapacity(gpa, @typeInfo(Air.Block).Struct.fields.len +5925 try sema.air_extra.ensureUnusedCapacity(gpa, @typeInfo(Air.Block).Struct.fields.len +
...@@ -6071,7 +6072,7 @@ pub fn analyzeExport(...@@ -6071,7 +6072,7 @@ pub fn analyzeExport(
6071 try sema.addDeclaredHereNote(msg, exported_decl.ty);6072 try sema.addDeclaredHereNote(msg, exported_decl.ty);
6072 break :msg msg;6073 break :msg msg;
6073 };6074 };
6074 return sema.failWithOwnedErrorMsg(msg);6075 return sema.failWithOwnedErrorMsg(block, msg);
6075 }6076 }
60766077
6077 // TODO: some backends might support re-exporting extern decls6078 // TODO: some backends might support re-exporting extern decls
...@@ -6148,7 +6149,7 @@ fn zirSetAlignStack(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.Inst...@@ -6148,7 +6149,7 @@ fn zirSetAlignStack(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.Inst
6148 try sema.errNote(block, prev_src, msg, "other instance here", .{});6149 try sema.errNote(block, prev_src, msg, "other instance here", .{});
6149 break :msg msg;6150 break :msg msg;
6150 };6151 };
6151 return sema.failWithOwnedErrorMsg(msg);6152 return sema.failWithOwnedErrorMsg(block, msg);
6152 }6153 }
61536154
6154 const ip = &mod.intern_pool;6155 const ip = &mod.intern_pool;
...@@ -6465,7 +6466,7 @@ fn lookupInNamespace(...@@ -6465,7 +6466,7 @@ fn lookupInNamespace(
6465 }6466 }
6466 break :msg msg;6467 break :msg msg;
6467 };6468 };
6468 return sema.failWithOwnedErrorMsg(msg);6469 return sema.failWithOwnedErrorMsg(block, msg);
6469 },6470 },
6470 }6471 }
6471 } else if (namespace.decls.getKeyAdapted(ident_name, Module.DeclAdapter{ .mod = mod })) |decl_index| {6472 } else if (namespace.decls.getKeyAdapted(ident_name, Module.DeclAdapter{ .mod = mod })) |decl_index| {
...@@ -6759,7 +6760,7 @@ fn checkCallArgumentCount(...@@ -6759,7 +6760,7 @@ fn checkCallArgumentCount(
6759 try sema.errNote(block, func_src, msg, "consider using '.?', 'orelse' or 'if'", .{});6760 try sema.errNote(block, func_src, msg, "consider using '.?', 'orelse' or 'if'", .{});
6760 break :msg msg;6761 break :msg msg;
6761 };6762 };
6762 return sema.failWithOwnedErrorMsg(msg);6763 return sema.failWithOwnedErrorMsg(block, msg);
6763 }6764 }
6764 },6765 },
6765 else => {},6766 else => {},
...@@ -6797,7 +6798,7 @@ fn checkCallArgumentCount(...@@ -6797,7 +6798,7 @@ fn checkCallArgumentCount(
6797 if (maybe_decl) |fn_decl| try mod.errNoteNonLazy(fn_decl.srcLoc(mod), msg, "function declared here", .{});6798 if (maybe_decl) |fn_decl| try mod.errNoteNonLazy(fn_decl.srcLoc(mod), msg, "function declared here", .{});
6798 break :msg msg;6799 break :msg msg;
6799 };6800 };
6800 return sema.failWithOwnedErrorMsg(msg);6801 return sema.failWithOwnedErrorMsg(block, msg);
6801}6802}
68026803
6803fn callBuiltin(6804fn callBuiltin(
...@@ -7131,7 +7132,7 @@ fn analyzeCall(...@@ -7131,7 +7132,7 @@ fn analyzeCall(
7131 if (maybe_decl) |fn_decl| try mod.errNoteNonLazy(fn_decl.srcLoc(mod), msg, "function declared here", .{});7132 if (maybe_decl) |fn_decl| try mod.errNoteNonLazy(fn_decl.srcLoc(mod), msg, "function declared here", .{});
7132 break :msg msg;7133 break :msg msg;
7133 };7134 };
7134 return sema.failWithOwnedErrorMsg(msg);7135 return sema.failWithOwnedErrorMsg(block, msg);
7135 }7136 }
71367137
7137 const call_tag: Air.Inst.Tag = switch (modifier) {7138 const call_tag: Air.Inst.Tag = switch (modifier) {
...@@ -7190,7 +7191,7 @@ fn analyzeCall(...@@ -7190,7 +7191,7 @@ fn analyzeCall(
7190 }7191 }
7191 break :msg msg;7192 break :msg msg;
7192 };7193 };
7193 return sema.failWithOwnedErrorMsg(msg);7194 return sema.failWithOwnedErrorMsg(block, msg);
7194 }7195 }
71957196
7196 if (!is_inline_call and is_generic_call) {7197 if (!is_inline_call and is_generic_call) {
...@@ -7931,7 +7932,7 @@ fn instantiateGenericCall(...@@ -7931,7 +7932,7 @@ fn instantiateGenericCall(
7931 } else switch (param_tag) {7932 } else switch (param_tag) {
7932 .param_comptime,7933 .param_comptime,
7933 .param_anytype_comptime,7934 .param_anytype_comptime,
7934 => return sema.failWithOwnedErrorMsg(msg: {7935 => return sema.failWithOwnedErrorMsg(block, msg: {
7935 const arg_src = args_info.argSrc(block, arg_index);7936 const arg_src = args_info.argSrc(block, arg_index);
7936 const msg = try sema.errMsg(block, arg_src, "runtime-known argument passed to comptime parameter", .{});7937 const msg = try sema.errMsg(block, arg_src, "runtime-known argument passed to comptime parameter", .{});
7937 errdefer msg.destroy(sema.gpa);7938 errdefer msg.destroy(sema.gpa);
...@@ -7946,7 +7947,7 @@ fn instantiateGenericCall(...@@ -7946,7 +7947,7 @@ fn instantiateGenericCall(
79467947
7947 .param,7948 .param,
7948 .param_anytype,7949 .param_anytype,
7949 => return sema.failWithOwnedErrorMsg(msg: {7950 => return sema.failWithOwnedErrorMsg(block, msg: {
7950 const arg_src = args_info.argSrc(block, arg_index);7951 const arg_src = args_info.argSrc(block, arg_index);
7951 const msg = try sema.errMsg(block, arg_src, "runtime-known argument passed to parameter of comptime-only type", .{});7952 const msg = try sema.errMsg(block, arg_src, "runtime-known argument passed to parameter of comptime-only type", .{});
7952 errdefer msg.destroy(sema.gpa);7953 errdefer msg.destroy(sema.gpa);
...@@ -8421,7 +8422,7 @@ fn zirMergeErrorSets(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr...@@ -8421,7 +8422,7 @@ fn zirMergeErrorSets(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr
8421 try sema.errNote(block, src, msg, "'||' merges error sets; 'or' performs boolean OR", .{});8422 try sema.errNote(block, src, msg, "'||' merges error sets; 'or' performs boolean OR", .{});
8422 break :msg msg;8423 break :msg msg;
8423 };8424 };
8424 return sema.failWithOwnedErrorMsg(msg);8425 return sema.failWithOwnedErrorMsg(block, msg);
8425 }8426 }
8426 const lhs_ty = try sema.analyzeAsType(block, lhs_src, lhs);8427 const lhs_ty = try sema.analyzeAsType(block, lhs_src, lhs);
8427 const rhs_ty = try sema.analyzeAsType(block, rhs_src, rhs);8428 const rhs_ty = try sema.analyzeAsType(block, rhs_src, rhs);
...@@ -8545,7 +8546,7 @@ fn zirEnumFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError...@@ -8545,7 +8546,7 @@ fn zirEnumFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
8545 try sema.addDeclaredHereNote(msg, dest_ty);8546 try sema.addDeclaredHereNote(msg, dest_ty);
8546 break :msg msg;8547 break :msg msg;
8547 };8548 };
8548 return sema.failWithOwnedErrorMsg(msg);8549 return sema.failWithOwnedErrorMsg(block, msg);
8549 }8550 }
8550 if (int_val.isUndef(mod)) {8551 if (int_val.isUndef(mod)) {
8551 return sema.failWithUseOfUndef(block, operand_src);8552 return sema.failWithUseOfUndef(block, operand_src);
...@@ -8562,7 +8563,7 @@ fn zirEnumFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError...@@ -8562,7 +8563,7 @@ fn zirEnumFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
8562 try sema.addDeclaredHereNote(msg, dest_ty);8563 try sema.addDeclaredHereNote(msg, dest_ty);
8563 break :msg msg;8564 break :msg msg;
8564 };8565 };
8565 return sema.failWithOwnedErrorMsg(msg);8566 return sema.failWithOwnedErrorMsg(block, msg);
8566 }8567 }
8567 return Air.internedToRef((try mod.getCoerced(int_val, dest_ty)).toIntern());8568 return Air.internedToRef((try mod.getCoerced(int_val, dest_ty)).toIntern());
8568 }8569 }
...@@ -9139,7 +9140,7 @@ fn checkCallConvSupportsVarArgs(sema: *Sema, block: *Block, src: LazySrcLoc, cc:...@@ -9139,7 +9140,7 @@ fn checkCallConvSupportsVarArgs(sema: *Sema, block: *Block, src: LazySrcLoc, cc:
9139 try sema.errNote(block, src, msg, "supported calling conventions: {}", .{CallingConventionsSupportingVarArgsList{}});9140 try sema.errNote(block, src, msg, "supported calling conventions: {}", .{CallingConventionsSupportingVarArgsList{}});
9140 break :msg msg;9141 break :msg msg;
9141 };9142 };
9142 return sema.failWithOwnedErrorMsg(msg);9143 return sema.failWithOwnedErrorMsg(block, msg);
9143 }9144 }
9144}9145}
91459146
...@@ -9235,7 +9236,7 @@ fn funcCommon(...@@ -9235,7 +9236,7 @@ fn funcCommon(
9235 try sema.addDeclaredHereNote(msg, param_ty);9236 try sema.addDeclaredHereNote(msg, param_ty);
9236 break :msg msg;9237 break :msg msg;
9237 };9238 };
9238 return sema.failWithOwnedErrorMsg(msg);9239 return sema.failWithOwnedErrorMsg(block, msg);
9239 }9240 }
9240 if (!this_generic and !target_util.fnCallConvAllowsZigTypes(target, cc_resolved) and !try sema.validateExternType(param_ty, .param_ty)) {9241 if (!this_generic and !target_util.fnCallConvAllowsZigTypes(target, cc_resolved) and !try sema.validateExternType(param_ty, .param_ty)) {
9241 const msg = msg: {9242 const msg = msg: {
...@@ -9250,7 +9251,7 @@ fn funcCommon(...@@ -9250,7 +9251,7 @@ fn funcCommon(
9250 try sema.addDeclaredHereNote(msg, param_ty);9251 try sema.addDeclaredHereNote(msg, param_ty);
9251 break :msg msg;9252 break :msg msg;
9252 };9253 };
9253 return sema.failWithOwnedErrorMsg(msg);9254 return sema.failWithOwnedErrorMsg(block, msg);
9254 }9255 }
9255 if (is_source_decl and requires_comptime and !param_is_comptime and has_body) {9256 if (is_source_decl and requires_comptime and !param_is_comptime and has_body) {
9256 const msg = msg: {9257 const msg = msg: {
...@@ -9265,7 +9266,7 @@ fn funcCommon(...@@ -9265,7 +9266,7 @@ fn funcCommon(
9265 try sema.addDeclaredHereNote(msg, param_ty);9266 try sema.addDeclaredHereNote(msg, param_ty);
9266 break :msg msg;9267 break :msg msg;
9267 };9268 };
9268 return sema.failWithOwnedErrorMsg(msg);9269 return sema.failWithOwnedErrorMsg(block, msg);
9269 }9270 }
9270 if (is_source_decl and !this_generic and is_noalias and9271 if (is_source_decl and !this_generic and is_noalias and
9271 !(param_ty.zigTypeTag(mod) == .Pointer or param_ty.isPtrLikeOptional(mod)))9272 !(param_ty.zigTypeTag(mod) == .Pointer or param_ty.isPtrLikeOptional(mod)))
...@@ -9527,7 +9528,7 @@ fn finishFunc(...@@ -9527,7 +9528,7 @@ fn finishFunc(
9527 try sema.addDeclaredHereNote(msg, return_type);9528 try sema.addDeclaredHereNote(msg, return_type);
9528 break :msg msg;9529 break :msg msg;
9529 };9530 };
9530 return sema.failWithOwnedErrorMsg(msg);9531 return sema.failWithOwnedErrorMsg(block, msg);
9531 }9532 }
9532 if (!ret_poison and !target_util.fnCallConvAllowsZigTypes(target, cc_resolved) and9533 if (!ret_poison and !target_util.fnCallConvAllowsZigTypes(target, cc_resolved) and
9533 !try sema.validateExternType(return_type, .ret_ty))9534 !try sema.validateExternType(return_type, .ret_ty))
...@@ -9544,7 +9545,7 @@ fn finishFunc(...@@ -9544,7 +9545,7 @@ fn finishFunc(
9544 try sema.addDeclaredHereNote(msg, return_type);9545 try sema.addDeclaredHereNote(msg, return_type);
9545 break :msg msg;9546 break :msg msg;
9546 };9547 };
9547 return sema.failWithOwnedErrorMsg(msg);9548 return sema.failWithOwnedErrorMsg(block, msg);
9548 }9549 }
95499550
9550 // If the return type is comptime-only but not dependent on parameters then9551 // If the return type is comptime-only but not dependent on parameters then
...@@ -9584,7 +9585,7 @@ fn finishFunc(...@@ -9584,7 +9585,7 @@ fn finishFunc(
9584 }9585 }
9585 }9586 }
9586 }9587 }
9587 return sema.failWithOwnedErrorMsg(msg);9588 return sema.failWithOwnedErrorMsg(block, msg);
9588 }9589 }
95899590
9590 const arch = target.cpu.arch;9591 const arch = target.cpu.arch;
...@@ -10125,7 +10126,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air...@@ -10125,7 +10126,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
1012510126
10126 break :msg msg;10127 break :msg msg;
10127 };10128 };
10128 return sema.failWithOwnedErrorMsg(msg);10129 return sema.failWithOwnedErrorMsg(block, msg);
10129 },10130 },
1013010131
10131 .Pointer => {10132 .Pointer => {
...@@ -10140,7 +10141,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air...@@ -10140,7 +10141,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
1014010141
10141 break :msg msg;10142 break :msg msg;
10142 };10143 };
10143 return sema.failWithOwnedErrorMsg(msg);10144 return sema.failWithOwnedErrorMsg(block, msg);
10144 },10145 },
10145 .Struct, .Union => if (dest_ty.containerLayout(mod) == .Auto) {10146 .Struct, .Union => if (dest_ty.containerLayout(mod) == .Auto) {
10146 const container = switch (dest_ty.zigTypeTag(mod)) {10147 const container = switch (dest_ty.zigTypeTag(mod)) {
...@@ -10189,7 +10190,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air...@@ -10189,7 +10190,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
1018910190
10190 break :msg msg;10191 break :msg msg;
10191 };10192 };
10192 return sema.failWithOwnedErrorMsg(msg);10193 return sema.failWithOwnedErrorMsg(block, msg);
10193 },10194 },
10194 .Pointer => {10195 .Pointer => {
10195 const msg = msg: {10196 const msg = msg: {
...@@ -10203,7 +10204,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air...@@ -10203,7 +10204,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
1020310204
10204 break :msg msg;10205 break :msg msg;
10205 };10206 };
10206 return sema.failWithOwnedErrorMsg(msg);10207 return sema.failWithOwnedErrorMsg(block, msg);
10207 },10208 },
10208 .Struct, .Union => if (operand_ty.containerLayout(mod) == .Auto) {10209 .Struct, .Union => if (operand_ty.containerLayout(mod) == .Auto) {
10209 const container = switch (operand_ty.zigTypeTag(mod)) {10210 const container = switch (operand_ty.zigTypeTag(mod)) {
...@@ -10354,7 +10355,7 @@ fn zirElemPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air...@@ -10354,7 +10355,7 @@ fn zirElemPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
10354 }10355 }
10355 break :msg msg;10356 break :msg msg;
10356 };10357 };
10357 return sema.failWithOwnedErrorMsg(msg);10358 return sema.failWithOwnedErrorMsg(block, msg);
10358 }10359 }
10359 return sema.elemPtrOneLayerOnly(block, src, array_ptr, elem_index, src, false, false);10360 return sema.elemPtrOneLayerOnly(block, src, array_ptr, elem_index, src, false, false);
10360}10361}
...@@ -10620,7 +10621,7 @@ const SwitchProngAnalysis = struct {...@@ -10620,7 +10621,7 @@ const SwitchProngAnalysis = struct {
10620 try sema.addDeclaredHereNote(msg, operand_ty);10621 try sema.addDeclaredHereNote(msg, operand_ty);
10621 break :msg msg;10622 break :msg msg;
10622 };10623 };
10623 return sema.failWithOwnedErrorMsg(msg);10624 return sema.failWithOwnedErrorMsg(block, msg);
10624 }10625 }
10625 assert(inline_case_capture != .none);10626 assert(inline_case_capture != .none);
10626 return inline_case_capture;10627 return inline_case_capture;
...@@ -10798,7 +10799,7 @@ const SwitchProngAnalysis = struct {...@@ -10798,7 +10799,7 @@ const SwitchProngAnalysis = struct {
10798 try sema.errNote(block, capture_src, msg, "this coercion is only possible when capturing by value", .{});10799 try sema.errNote(block, capture_src, msg, "this coercion is only possible when capturing by value", .{});
10799 break :msg msg;10800 break :msg msg;
10800 };10801 };
10801 return sema.failWithOwnedErrorMsg(msg);10802 return sema.failWithOwnedErrorMsg(block, msg);
10802 }10803 }
10803 }10804 }
10804 }10805 }
...@@ -11029,7 +11030,7 @@ fn switchCond(...@@ -11029,7 +11030,7 @@ fn switchCond(
11029 }11030 }
11030 break :msg msg;11031 break :msg msg;
11031 };11032 };
11032 return sema.failWithOwnedErrorMsg(msg);11033 return sema.failWithOwnedErrorMsg(block, msg);
11033 };11034 };
11034 return sema.unionToTag(block, enum_ty, operand, src);11035 return sema.unionToTag(block, enum_ty, operand, src);
11035 },11036 },
...@@ -11182,7 +11183,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r...@@ -11182,7 +11183,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
11182 );11183 );
11183 break :msg msg;11184 break :msg msg;
11184 };11185 };
11185 return sema.failWithOwnedErrorMsg(msg);11186 return sema.failWithOwnedErrorMsg(block, msg);
11186 }11187 }
1118711188
11188 // Validate for duplicate items, missing else prong, and invalid range.11189 // Validate for duplicate items, missing else prong, and invalid range.
...@@ -11282,7 +11283,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r...@@ -11282,7 +11283,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
11282 );11283 );
11283 break :msg msg;11284 break :msg msg;
11284 };11285 };
11285 return sema.failWithOwnedErrorMsg(msg);11286 return sema.failWithOwnedErrorMsg(block, msg);
11286 } else if (special_prong == .none and operand_ty.isNonexhaustiveEnum(mod) and !union_originally) {11287 } else if (special_prong == .none and operand_ty.isNonexhaustiveEnum(mod) and !union_originally) {
11287 return sema.fail(11288 return sema.fail(
11288 block,11289 block,
...@@ -11382,7 +11383,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r...@@ -11382,7 +11383,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r
11382 if (maybe_msg) |msg| {11383 if (maybe_msg) |msg| {
11383 maybe_msg = null;11384 maybe_msg = null;
11384 try sema.addDeclaredHereNote(msg, operand_ty);11385 try sema.addDeclaredHereNote(msg, operand_ty);
11385 return sema.failWithOwnedErrorMsg(msg);11386 return sema.failWithOwnedErrorMsg(block, msg);
11386 }11387 }
1138711388
11388 if (special_prong == .@"else" and11389 if (special_prong == .@"else" and
...@@ -12722,7 +12723,7 @@ fn validateSwitchDupe(...@@ -12722,7 +12723,7 @@ fn validateSwitchDupe(
12722 );12723 );
12723 break :msg msg;12724 break :msg msg;
12724 };12725 };
12725 return sema.failWithOwnedErrorMsg(msg);12726 return sema.failWithOwnedErrorMsg(block, msg);
12726}12727}
1272712728
12728fn validateSwitchItemBool(12729fn validateSwitchItemBool(
...@@ -12796,7 +12797,7 @@ fn validateSwitchNoRange(...@@ -12796,7 +12797,7 @@ fn validateSwitchNoRange(
12796 );12797 );
12797 break :msg msg;12798 break :msg msg;
12798 };12799 };
12799 return sema.failWithOwnedErrorMsg(msg);12800 return sema.failWithOwnedErrorMsg(block, msg);
12800}12801}
1280112802
12802fn maybeErrorUnwrap(sema: *Sema, block: *Block, body: []const Zir.Inst.Index, operand: Air.Inst.Ref, operand_src: LazySrcLoc) !bool {12803fn maybeErrorUnwrap(sema: *Sema, block: *Block, body: []const Zir.Inst.Index, operand: Air.Inst.Ref, operand_src: LazySrcLoc) !bool {
...@@ -13960,7 +13961,7 @@ fn zirArrayMul(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -13960,7 +13961,7 @@ fn zirArrayMul(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
13960 }13961 }
13961 break :msg msg;13962 break :msg msg;
13962 };13963 };
13963 return sema.failWithOwnedErrorMsg(msg);13964 return sema.failWithOwnedErrorMsg(block, msg);
13964 };13965 };
1396513966
13966 // In `**` rhs must be comptime-known, but lhs can be runtime-known13967 // In `**` rhs must be comptime-known, but lhs can be runtime-known
...@@ -16293,7 +16294,7 @@ fn analyzeCmpUnionTag(...@@ -16293,7 +16294,7 @@ fn analyzeCmpUnionTag(
16293 try mod.errNoteNonLazy(union_ty.declSrcLoc(mod), msg, "union '{}' is not a tagged union", .{union_ty.fmt(mod)});16294 try mod.errNoteNonLazy(union_ty.declSrcLoc(mod), msg, "union '{}' is not a tagged union", .{union_ty.fmt(mod)});
16294 break :msg msg;16295 break :msg msg;
16295 };16296 };
16296 return sema.failWithOwnedErrorMsg(msg);16297 return sema.failWithOwnedErrorMsg(block, msg);
16297 };16298 };
16298 // Coerce both the union and the tag to the union's tag type, and then execute the16299 // Coerce both the union and the tag to the union's tag type, and then execute the
16299 // enum comparison codepath.16300 // enum comparison codepath.
...@@ -16628,7 +16629,7 @@ fn zirClosureGet(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!...@@ -16628,7 +16629,7 @@ fn zirClosureGet(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
16628 // TODO add "declared here" note16629 // TODO add "declared here" note
16629 break :msg msg;16630 break :msg msg;
16630 };16631 };
16631 return sema.failWithOwnedErrorMsg(msg);16632 return sema.failWithOwnedErrorMsg(block, msg);
16632 }16633 }
1663316634
16634 if (capture == .runtime_val and !block.is_typeof and !block.is_comptime and sema.func_index != .none) {16635 if (capture == .runtime_val and !block.is_typeof and !block.is_comptime and sema.func_index != .none) {
...@@ -16658,7 +16659,7 @@ fn zirClosureGet(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!...@@ -16658,7 +16659,7 @@ fn zirClosureGet(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
16658 // TODO add "declared here" note16659 // TODO add "declared here" note
16659 break :msg msg;16660 break :msg msg;
16660 };16661 };
16661 return sema.failWithOwnedErrorMsg(msg);16662 return sema.failWithOwnedErrorMsg(block, msg);
16662 }16663 }
1666316664
16664 switch (capture) {16665 switch (capture) {
...@@ -18582,7 +18583,7 @@ fn zirRetImplicit(...@@ -18582,7 +18583,7 @@ fn zirRetImplicit(
18582 try sema.errNote(block, r_brace_src, msg, "control flow reaches end of body here", .{});18583 try sema.errNote(block, r_brace_src, msg, "control flow reaches end of body here", .{});
18583 break :msg msg;18584 break :msg msg;
18584 };18585 };
18585 return sema.failWithOwnedErrorMsg(msg);18586 return sema.failWithOwnedErrorMsg(block, msg);
18586 } else if (base_tag != .Void) {18587 } else if (base_tag != .Void) {
18587 const msg = msg: {18588 const msg = msg: {
18588 const msg = try sema.errMsg(block, ret_ty_src, "function with non-void return type '{}' implicitly returns", .{18589 const msg = try sema.errMsg(block, ret_ty_src, "function with non-void return type '{}' implicitly returns", .{
...@@ -18592,7 +18593,7 @@ fn zirRetImplicit(...@@ -18592,7 +18593,7 @@ fn zirRetImplicit(
18592 try sema.errNote(block, r_brace_src, msg, "control flow reaches end of body here", .{});18593 try sema.errNote(block, r_brace_src, msg, "control flow reaches end of body here", .{});
18593 break :msg msg;18594 break :msg msg;
18594 };18595 };
18595 return sema.failWithOwnedErrorMsg(msg);18596 return sema.failWithOwnedErrorMsg(block, msg);
18596 }18597 }
1859718598
18598 return sema.analyzeRet(block, operand, r_brace_src);18599 return sema.analyzeRet(block, operand, r_brace_src);
...@@ -18834,7 +18835,7 @@ fn analyzeRet(...@@ -18834,7 +18835,7 @@ fn analyzeRet(
18834 try sema.errNote(block, src, msg, "can only return using assembly", .{});18835 try sema.errNote(block, src, msg, "can only return using assembly", .{});
18835 break :msg msg;18836 break :msg msg;
18836 };18837 };
18837 return sema.failWithOwnedErrorMsg(msg);18838 return sema.failWithOwnedErrorMsg(block, msg);
18838 }18839 }
1883918840
18840 try sema.resolveTypeLayout(sema.fn_ret_ty);18841 try sema.resolveTypeLayout(sema.fn_ret_ty);
...@@ -18975,7 +18976,7 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air...@@ -18975,7 +18976,7 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
18975 try sema.addDeclaredHereNote(msg, elem_ty);18976 try sema.addDeclaredHereNote(msg, elem_ty);
18976 break :msg msg;18977 break :msg msg;
18977 };18978 };
18978 return sema.failWithOwnedErrorMsg(msg);18979 return sema.failWithOwnedErrorMsg(block, msg);
18979 }18980 }
18980 if (elem_ty.zigTypeTag(mod) == .Opaque) {18981 if (elem_ty.zigTypeTag(mod) == .Opaque) {
18981 return sema.fail(block, elem_ty_src, "C pointers cannot point to opaque types", .{});18982 return sema.fail(block, elem_ty_src, "C pointers cannot point to opaque types", .{});
...@@ -19069,7 +19070,7 @@ fn zirUnionInit(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A...@@ -19069,7 +19070,7 @@ fn zirUnionInit(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
19069 try sema.addDeclaredHereNote(msg, union_ty);19070 try sema.addDeclaredHereNote(msg, union_ty);
19070 break :msg msg;19071 break :msg msg;
19071 };19072 };
19072 return sema.failWithOwnedErrorMsg(msg);19073 return sema.failWithOwnedErrorMsg(block, msg);
19073 }19074 }
19074 const field_name = try sema.resolveConstStringIntern(block, field_src, extra.field_name, .{19075 const field_name = try sema.resolveConstStringIntern(block, field_src, extra.field_name, .{
19075 .needed_comptime_reason = "name of field being initialized must be comptime-known",19076 .needed_comptime_reason = "name of field being initialized must be comptime-known",
...@@ -19175,7 +19176,7 @@ fn zirStructInit(...@@ -19175,7 +19176,7 @@ fn zirStructInit(
19175 try sema.errNote(block, other_field_src, msg, "other field here", .{});19176 try sema.errNote(block, other_field_src, msg, "other field here", .{});
19176 break :msg msg;19177 break :msg msg;
19177 };19178 };
19178 return sema.failWithOwnedErrorMsg(msg);19179 return sema.failWithOwnedErrorMsg(block, msg);
19179 }19180 }
19180 found_fields[field_index] = item.data.field_type;19181 found_fields[field_index] = item.data.field_type;
19181 field_inits[field_index] = try sema.resolveInst(item.data.init);19182 field_inits[field_index] = try sema.resolveInst(item.data.init);
...@@ -19317,7 +19318,7 @@ fn finishStructInit(...@@ -19317,7 +19318,7 @@ fn finishStructInit(
19317 );19318 );
19318 }19319 }
19319 root_msg = null;19320 root_msg = null;
19320 return sema.failWithOwnedErrorMsg(msg);19321 return sema.failWithOwnedErrorMsg(block, msg);
19321 }19322 }
1932219323
19323 // Find which field forces the expression to be runtime, if any.19324 // Find which field forces the expression to be runtime, if any.
...@@ -19441,7 +19442,7 @@ fn structInitAnon(...@@ -19441,7 +19442,7 @@ fn structInitAnon(
19441 try sema.errNote(block, prev_source, msg, "other field here", .{});19442 try sema.errNote(block, prev_source, msg, "other field here", .{});
19442 break :msg msg;19443 break :msg msg;
19443 };19444 };
19444 return sema.failWithOwnedErrorMsg(msg);19445 return sema.failWithOwnedErrorMsg(block, msg);
19445 }19446 }
19446 gop.value_ptr.* = i;19447 gop.value_ptr.* = i;
1944719448
...@@ -19457,7 +19458,7 @@ fn structInitAnon(...@@ -19457,7 +19458,7 @@ fn structInitAnon(
19457 try sema.addDeclaredHereNote(msg, field_ty.toType());19458 try sema.addDeclaredHereNote(msg, field_ty.toType());
19458 break :msg msg;19459 break :msg msg;
19459 };19460 };
19460 return sema.failWithOwnedErrorMsg(msg);19461 return sema.failWithOwnedErrorMsg(block, msg);
19461 }19462 }
19462 if (try sema.resolveMaybeUndefVal(init)) |init_val| {19463 if (try sema.resolveMaybeUndefVal(init)) |init_val| {
19463 values[i] = try init_val.intern(field_ty.toType(), mod);19464 values[i] = try init_val.intern(field_ty.toType(), mod);
...@@ -19710,7 +19711,7 @@ fn arrayInitAnon(...@@ -19710,7 +19711,7 @@ fn arrayInitAnon(
19710 try sema.addDeclaredHereNote(msg, types[i].toType());19711 try sema.addDeclaredHereNote(msg, types[i].toType());
19711 break :msg msg;19712 break :msg msg;
19712 };19713 };
19713 return sema.failWithOwnedErrorMsg(msg);19714 return sema.failWithOwnedErrorMsg(block, msg);
19714 }19715 }
19715 if (try sema.resolveMaybeUndefVal(elem)) |val| {19716 if (try sema.resolveMaybeUndefVal(elem)) |val| {
19716 values[i] = val.toIntern();19717 values[i] = val.toIntern();
...@@ -20080,7 +20081,7 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air...@@ -20080,7 +20081,7 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
20080 try sema.addDeclaredHereNote(msg, operand_ty);20081 try sema.addDeclaredHereNote(msg, operand_ty);
20081 break :msg msg;20082 break :msg msg;
20082 };20083 };
20083 return sema.failWithOwnedErrorMsg(msg);20084 return sema.failWithOwnedErrorMsg(block, msg);
20084 },20085 },
20085 else => return sema.fail(block, operand_src, "expected enum or union; found '{}'", .{20086 else => return sema.fail(block, operand_src, "expected enum or union; found '{}'", .{
20086 operand_ty.fmt(mod),20087 operand_ty.fmt(mod),
...@@ -20106,7 +20107,7 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air...@@ -20106,7 +20107,7 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
20106 try mod.errNoteNonLazy(enum_decl.srcLoc(mod), msg, "declared here", .{});20107 try mod.errNoteNonLazy(enum_decl.srcLoc(mod), msg, "declared here", .{});
20107 break :msg msg;20108 break :msg msg;
20108 };20109 };
20109 return sema.failWithOwnedErrorMsg(msg);20110 return sema.failWithOwnedErrorMsg(block, msg);
20110 };20111 };
20111 // TODO: write something like getCoercedInts to avoid needing to dupe20112 // TODO: write something like getCoercedInts to avoid needing to dupe
20112 const field_name = enum_ty.enumFieldName(field_index, mod);20113 const field_name = enum_ty.enumFieldName(field_index, mod);
...@@ -20291,7 +20292,7 @@ fn zirReify(...@@ -20291,7 +20292,7 @@ fn zirReify(
20291 try sema.addDeclaredHereNote(msg, elem_ty);20292 try sema.addDeclaredHereNote(msg, elem_ty);
20292 break :msg msg;20293 break :msg msg;
20293 };20294 };
20294 return sema.failWithOwnedErrorMsg(msg);20295 return sema.failWithOwnedErrorMsg(block, msg);
20295 }20296 }
20296 if (elem_ty.zigTypeTag(mod) == .Opaque) {20297 if (elem_ty.zigTypeTag(mod) == .Opaque) {
20297 return sema.fail(block, src, "C pointers cannot point to opaque types", .{});20298 return sema.fail(block, src, "C pointers cannot point to opaque types", .{});
...@@ -20516,7 +20517,7 @@ fn zirReify(...@@ -20516,7 +20517,7 @@ fn zirReify(
20516 try sema.errNote(block, src, msg, "other field here", .{});20517 try sema.errNote(block, src, msg, "other field here", .{});
20517 break :msg msg;20518 break :msg msg;
20518 };20519 };
20519 return sema.failWithOwnedErrorMsg(msg);20520 return sema.failWithOwnedErrorMsg(block, msg);
20520 }20521 }
2052120522
20522 if (try incomplete_enum.addFieldValue(ip, gpa, (try mod.getCoerced(value_val, int_tag_ty)).toIntern())) |other| {20523 if (try incomplete_enum.addFieldValue(ip, gpa, (try mod.getCoerced(value_val, int_tag_ty)).toIntern())) |other| {
...@@ -20527,7 +20528,7 @@ fn zirReify(...@@ -20527,7 +20528,7 @@ fn zirReify(
20527 try sema.errNote(block, src, msg, "other enum tag value here", .{});20528 try sema.errNote(block, src, msg, "other enum tag value here", .{});
20528 break :msg msg;20529 break :msg msg;
20529 };20530 };
20530 return sema.failWithOwnedErrorMsg(msg);20531 return sema.failWithOwnedErrorMsg(block, msg);
20531 }20532 }
20532 }20533 }
2053320534
...@@ -20664,7 +20665,7 @@ fn zirReify(...@@ -20664,7 +20665,7 @@ fn zirReify(
20664 try sema.addDeclaredHereNote(msg, enum_tag_ty.toType());20665 try sema.addDeclaredHereNote(msg, enum_tag_ty.toType());
20665 break :msg msg;20666 break :msg msg;
20666 };20667 };
20667 return sema.failWithOwnedErrorMsg(msg);20668 return sema.failWithOwnedErrorMsg(block, msg);
20668 };20669 };
20669 // No check for duplicate because the check already happened in order20670 // No check for duplicate because the check already happened in order
20670 // to create the enum type in the first place.20671 // to create the enum type in the first place.
...@@ -20695,7 +20696,7 @@ fn zirReify(...@@ -20695,7 +20696,7 @@ fn zirReify(
20695 try sema.addDeclaredHereNote(msg, field_ty);20696 try sema.addDeclaredHereNote(msg, field_ty);
20696 break :msg msg;20697 break :msg msg;
20697 };20698 };
20698 return sema.failWithOwnedErrorMsg(msg);20699 return sema.failWithOwnedErrorMsg(block, msg);
20699 }20700 }
20700 if (layout == .Extern and !try sema.validateExternType(field_ty, .union_field)) {20701 if (layout == .Extern and !try sema.validateExternType(field_ty, .union_field)) {
20701 const msg = msg: {20702 const msg = msg: {
...@@ -20708,7 +20709,7 @@ fn zirReify(...@@ -20708,7 +20709,7 @@ fn zirReify(
20708 try sema.addDeclaredHereNote(msg, field_ty);20709 try sema.addDeclaredHereNote(msg, field_ty);
20709 break :msg msg;20710 break :msg msg;
20710 };20711 };
20711 return sema.failWithOwnedErrorMsg(msg);20712 return sema.failWithOwnedErrorMsg(block, msg);
20712 } else if (layout == .Packed and !(validatePackedType(field_ty, mod))) {20713 } else if (layout == .Packed and !(validatePackedType(field_ty, mod))) {
20713 const msg = msg: {20714 const msg = msg: {
20714 const msg = try sema.errMsg(block, src, "packed unions cannot contain fields of type '{}'", .{field_ty.fmt(mod)});20715 const msg = try sema.errMsg(block, src, "packed unions cannot contain fields of type '{}'", .{field_ty.fmt(mod)});
...@@ -20720,7 +20721,7 @@ fn zirReify(...@@ -20720,7 +20721,7 @@ fn zirReify(
20720 try sema.addDeclaredHereNote(msg, field_ty);20721 try sema.addDeclaredHereNote(msg, field_ty);
20721 break :msg msg;20722 break :msg msg;
20722 };20723 };
20723 return sema.failWithOwnedErrorMsg(msg);20724 return sema.failWithOwnedErrorMsg(block, msg);
20724 }20725 }
20725 }20726 }
2072620727
...@@ -20740,7 +20741,7 @@ fn zirReify(...@@ -20740,7 +20741,7 @@ fn zirReify(
20740 try sema.addDeclaredHereNote(msg, enum_tag_ty.toType());20741 try sema.addDeclaredHereNote(msg, enum_tag_ty.toType());
20741 break :msg msg;20742 break :msg msg;
20742 };20743 };
20743 return sema.failWithOwnedErrorMsg(msg);20744 return sema.failWithOwnedErrorMsg(block, msg);
20744 }20745 }
20745 } else {20746 } else {
20746 enum_tag_ty = try sema.generateUnionTagTypeSimple(block, enum_field_names, .none);20747 enum_tag_ty = try sema.generateUnionTagTypeSimple(block, enum_field_names, .none);
...@@ -21058,7 +21059,7 @@ fn reifyStruct(...@@ -21058,7 +21059,7 @@ fn reifyStruct(
21058 try sema.addDeclaredHereNote(msg, field_ty);21059 try sema.addDeclaredHereNote(msg, field_ty);
21059 break :msg msg;21060 break :msg msg;
21060 };21061 };
21061 return sema.failWithOwnedErrorMsg(msg);21062 return sema.failWithOwnedErrorMsg(block, msg);
21062 }21063 }
21063 if (field_ty.zigTypeTag(mod) == .NoReturn) {21064 if (field_ty.zigTypeTag(mod) == .NoReturn) {
21064 const msg = msg: {21065 const msg = msg: {
...@@ -21068,7 +21069,7 @@ fn reifyStruct(...@@ -21068,7 +21069,7 @@ fn reifyStruct(
21068 try sema.addDeclaredHereNote(msg, field_ty);21069 try sema.addDeclaredHereNote(msg, field_ty);
21069 break :msg msg;21070 break :msg msg;
21070 };21071 };
21071 return sema.failWithOwnedErrorMsg(msg);21072 return sema.failWithOwnedErrorMsg(block, msg);
21072 }21073 }
21073 if (struct_obj.layout == .Extern and !try sema.validateExternType(field_ty, .struct_field)) {21074 if (struct_obj.layout == .Extern and !try sema.validateExternType(field_ty, .struct_field)) {
21074 const msg = msg: {21075 const msg = msg: {
...@@ -21081,7 +21082,7 @@ fn reifyStruct(...@@ -21081,7 +21082,7 @@ fn reifyStruct(
21081 try sema.addDeclaredHereNote(msg, field_ty);21082 try sema.addDeclaredHereNote(msg, field_ty);
21082 break :msg msg;21083 break :msg msg;
21083 };21084 };
21084 return sema.failWithOwnedErrorMsg(msg);21085 return sema.failWithOwnedErrorMsg(block, msg);
21085 } else if (struct_obj.layout == .Packed and !(validatePackedType(field_ty, mod))) {21086 } else if (struct_obj.layout == .Packed and !(validatePackedType(field_ty, mod))) {
21086 const msg = msg: {21087 const msg = msg: {
21087 const msg = try sema.errMsg(block, src, "packed structs cannot contain fields of type '{}'", .{field_ty.fmt(sema.mod)});21088 const msg = try sema.errMsg(block, src, "packed structs cannot contain fields of type '{}'", .{field_ty.fmt(sema.mod)});
...@@ -21093,7 +21094,7 @@ fn reifyStruct(...@@ -21093,7 +21094,7 @@ fn reifyStruct(
21093 try sema.addDeclaredHereNote(msg, field_ty);21094 try sema.addDeclaredHereNote(msg, field_ty);
21094 break :msg msg;21095 break :msg msg;
21095 };21096 };
21096 return sema.failWithOwnedErrorMsg(msg);21097 return sema.failWithOwnedErrorMsg(block, msg);
21097 }21098 }
21098 }21099 }
2109921100
...@@ -21161,7 +21162,7 @@ fn zirCVaArg(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) C...@@ -21161,7 +21162,7 @@ fn zirCVaArg(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) C
21161 try sema.addDeclaredHereNote(msg, arg_ty);21162 try sema.addDeclaredHereNote(msg, arg_ty);
21162 break :msg msg;21163 break :msg msg;
21163 };21164 };
21164 return sema.failWithOwnedErrorMsg(msg);21165 return sema.failWithOwnedErrorMsg(block, msg);
21165 }21166 }
2116621167
21167 try sema.requireRuntimeBlock(block, src, null);21168 try sema.requireRuntimeBlock(block, src, null);
...@@ -21402,7 +21403,7 @@ fn zirPtrFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!...@@ -21402,7 +21403,7 @@ fn zirPtrFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
21402 try sema.errNote(block, src, msg, "slice length cannot be inferred from address", .{});21403 try sema.errNote(block, src, msg, "slice length cannot be inferred from address", .{});
21403 break :msg msg;21404 break :msg msg;
21404 };21405 };
21405 return sema.failWithOwnedErrorMsg(msg);21406 return sema.failWithOwnedErrorMsg(block, msg);
21406 }21407 }
2140721408
21408 if (try sema.resolveDefinedValue(block, operand_src, operand_coerced)) |val| {21409 if (try sema.resolveDefinedValue(block, operand_src, operand_coerced)) |val| {
...@@ -21538,7 +21539,7 @@ fn zirErrSetCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat...@@ -21538,7 +21539,7 @@ fn zirErrSetCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat
21538 try sema.addDeclaredHereNote(msg, dest_ty);21539 try sema.addDeclaredHereNote(msg, dest_ty);
21539 break :msg msg;21540 break :msg msg;
21540 };21541 };
21541 return sema.failWithOwnedErrorMsg(msg);21542 return sema.failWithOwnedErrorMsg(block, msg);
21542 }21543 }
2154321544
21544 if (maybe_operand_val) |val| {21545 if (maybe_operand_val) |val| {
...@@ -21556,7 +21557,7 @@ fn zirErrSetCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat...@@ -21556,7 +21557,7 @@ fn zirErrSetCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat
21556 try sema.addDeclaredHereNote(msg, dest_ty);21557 try sema.addDeclaredHereNote(msg, dest_ty);
21557 break :msg msg;21558 break :msg msg;
21558 };21559 };
21559 return sema.failWithOwnedErrorMsg(msg);21560 return sema.failWithOwnedErrorMsg(block, msg);
21560 }21561 }
21561 }21562 }
2156221563
...@@ -21662,7 +21663,7 @@ fn ptrCastFull(...@@ -21662,7 +21663,7 @@ fn ptrCastFull(
21662 if (src_slice_like and dest_slice_like) break :check_size;21663 if (src_slice_like and dest_slice_like) break :check_size;
21663 if (src_info.flags.size == .C) break :check_size;21664 if (src_info.flags.size == .C) break :check_size;
21664 if (dest_info.flags.size == .C) break :check_size;21665 if (dest_info.flags.size == .C) break :check_size;
21665 return sema.failWithOwnedErrorMsg(msg: {21666 return sema.failWithOwnedErrorMsg(block, msg: {
21666 const msg = try sema.errMsg(block, src, "cannot implicitly convert {s} pointer to {s} pointer", .{21667 const msg = try sema.errMsg(block, src, "cannot implicitly convert {s} pointer to {s} pointer", .{
21667 pointerSizeString(src_info.flags.size),21668 pointerSizeString(src_info.flags.size),
21668 pointerSizeString(dest_info.flags.size),21669 pointerSizeString(dest_info.flags.size),
...@@ -21698,7 +21699,7 @@ fn ptrCastFull(...@@ -21698,7 +21699,7 @@ fn ptrCastFull(
21698 operand_src,21699 operand_src,
21699 );21700 );
21700 if (imc_res == .ok) break :check_child;21701 if (imc_res == .ok) break :check_child;
21701 return sema.failWithOwnedErrorMsg(msg: {21702 return sema.failWithOwnedErrorMsg(block, msg: {
21702 const msg = try sema.errMsg(block, src, "pointer element type '{}' cannot coerce into element type '{}'", .{21703 const msg = try sema.errMsg(block, src, "pointer element type '{}' cannot coerce into element type '{}'", .{
21703 src_child.fmt(mod),21704 src_child.fmt(mod),
21704 dest_child.fmt(mod),21705 dest_child.fmt(mod),
...@@ -21725,7 +21726,7 @@ fn ptrCastFull(...@@ -21725,7 +21726,7 @@ fn ptrCastFull(
21725 if (dest_info.sentinel == coerced_sent) break :check_sent;21726 if (dest_info.sentinel == coerced_sent) break :check_sent;
21726 }21727 }
21727 }21728 }
21728 return sema.failWithOwnedErrorMsg(msg: {21729 return sema.failWithOwnedErrorMsg(block, msg: {
21729 const msg = if (src_info.sentinel == .none) blk: {21730 const msg = if (src_info.sentinel == .none) blk: {
21730 break :blk try sema.errMsg(block, src, "destination pointer requires '{}' sentinel", .{21731 break :blk try sema.errMsg(block, src, "destination pointer requires '{}' sentinel", .{
21731 dest_info.sentinel.toValue().fmtValue(dest_info.child.toType(), mod),21732 dest_info.sentinel.toValue().fmtValue(dest_info.child.toType(), mod),
...@@ -21743,7 +21744,7 @@ fn ptrCastFull(...@@ -21743,7 +21744,7 @@ fn ptrCastFull(
21743 }21744 }
2174421745
21745 if (src_info.packed_offset.host_size != dest_info.packed_offset.host_size) {21746 if (src_info.packed_offset.host_size != dest_info.packed_offset.host_size) {
21746 return sema.failWithOwnedErrorMsg(msg: {21747 return sema.failWithOwnedErrorMsg(block, msg: {
21747 const msg = try sema.errMsg(block, src, "pointer host size '{}' cannot coerce into pointer host size '{}'", .{21748 const msg = try sema.errMsg(block, src, "pointer host size '{}' cannot coerce into pointer host size '{}'", .{
21748 src_info.packed_offset.host_size,21749 src_info.packed_offset.host_size,
21749 dest_info.packed_offset.host_size,21750 dest_info.packed_offset.host_size,
...@@ -21755,7 +21756,7 @@ fn ptrCastFull(...@@ -21755,7 +21756,7 @@ fn ptrCastFull(
21755 }21756 }
2175621757
21757 if (src_info.packed_offset.bit_offset != dest_info.packed_offset.bit_offset) {21758 if (src_info.packed_offset.bit_offset != dest_info.packed_offset.bit_offset) {
21758 return sema.failWithOwnedErrorMsg(msg: {21759 return sema.failWithOwnedErrorMsg(block, msg: {
21759 const msg = try sema.errMsg(block, src, "pointer bit offset '{}' cannot coerce into pointer bit offset '{}'", .{21760 const msg = try sema.errMsg(block, src, "pointer bit offset '{}' cannot coerce into pointer bit offset '{}'", .{
21760 src_info.packed_offset.bit_offset,21761 src_info.packed_offset.bit_offset,
21761 dest_info.packed_offset.bit_offset,21762 dest_info.packed_offset.bit_offset,
...@@ -21772,7 +21773,7 @@ fn ptrCastFull(...@@ -21772,7 +21773,7 @@ fn ptrCastFull(
21772 if (!src_allows_zero) break :check_allowzero;21773 if (!src_allows_zero) break :check_allowzero;
21773 if (dest_allows_zero) break :check_allowzero;21774 if (dest_allows_zero) break :check_allowzero;
2177421775
21775 return sema.failWithOwnedErrorMsg(msg: {21776 return sema.failWithOwnedErrorMsg(block, msg: {
21776 const msg = try sema.errMsg(block, src, "'{}' could have null values which are illegal in type '{}'", .{21777 const msg = try sema.errMsg(block, src, "'{}' could have null values which are illegal in type '{}'", .{
21777 operand_ty.fmt(mod),21778 operand_ty.fmt(mod),
21778 dest_ty.fmt(mod),21779 dest_ty.fmt(mod),
...@@ -21790,7 +21791,7 @@ fn ptrCastFull(...@@ -21790,7 +21791,7 @@ fn ptrCastFull(
21790 const dest_align = dest_info.flags.alignment.toByteUnitsOptional() orelse dest_info.child.toType().abiAlignment(mod);21791 const dest_align = dest_info.flags.alignment.toByteUnitsOptional() orelse dest_info.child.toType().abiAlignment(mod);
21791 if (!flags.align_cast) {21792 if (!flags.align_cast) {
21792 if (dest_align > src_align) {21793 if (dest_align > src_align) {
21793 return sema.failWithOwnedErrorMsg(msg: {21794 return sema.failWithOwnedErrorMsg(block, msg: {
21794 const msg = try sema.errMsg(block, src, "cast increases pointer alignment", .{});21795 const msg = try sema.errMsg(block, src, "cast increases pointer alignment", .{});
21795 errdefer msg.destroy(sema.gpa);21796 errdefer msg.destroy(sema.gpa);
21796 try sema.errNote(block, operand_src, msg, "'{}' has alignment '{d}'", .{21797 try sema.errNote(block, operand_src, msg, "'{}' has alignment '{d}'", .{
...@@ -21807,7 +21808,7 @@ fn ptrCastFull(...@@ -21807,7 +21808,7 @@ fn ptrCastFull(
2180721808
21808 if (!flags.addrspace_cast) {21809 if (!flags.addrspace_cast) {
21809 if (src_info.flags.address_space != dest_info.flags.address_space) {21810 if (src_info.flags.address_space != dest_info.flags.address_space) {
21810 return sema.failWithOwnedErrorMsg(msg: {21811 return sema.failWithOwnedErrorMsg(block, msg: {
21811 const msg = try sema.errMsg(block, src, "cast changes pointer address space", .{});21812 const msg = try sema.errMsg(block, src, "cast changes pointer address space", .{});
21812 errdefer msg.destroy(sema.gpa);21813 errdefer msg.destroy(sema.gpa);
21813 try sema.errNote(block, operand_src, msg, "'{}' has address space '{s}'", .{21814 try sema.errNote(block, operand_src, msg, "'{}' has address space '{s}'", .{
...@@ -21823,7 +21824,7 @@ fn ptrCastFull(...@@ -21823,7 +21824,7 @@ fn ptrCastFull(
21823 } else {21824 } else {
21824 // Some address space casts are always disallowed21825 // Some address space casts are always disallowed
21825 if (!target_util.addrSpaceCastIsValid(mod.getTarget(), src_info.flags.address_space, dest_info.flags.address_space)) {21826 if (!target_util.addrSpaceCastIsValid(mod.getTarget(), src_info.flags.address_space, dest_info.flags.address_space)) {
21826 return sema.failWithOwnedErrorMsg(msg: {21827 return sema.failWithOwnedErrorMsg(block, msg: {
21827 const msg = try sema.errMsg(block, src, "invalid address space cast", .{});21828 const msg = try sema.errMsg(block, src, "invalid address space cast", .{});
21828 errdefer msg.destroy(sema.gpa);21829 errdefer msg.destroy(sema.gpa);
21829 try sema.errNote(block, operand_src, msg, "address space '{s}' is not compatible with address space '{s}'", .{21830 try sema.errNote(block, operand_src, msg, "address space '{s}' is not compatible with address space '{s}'", .{
...@@ -21837,7 +21838,7 @@ fn ptrCastFull(...@@ -21837,7 +21838,7 @@ fn ptrCastFull(
2183721838
21838 if (!flags.const_cast) {21839 if (!flags.const_cast) {
21839 if (src_info.flags.is_const and !dest_info.flags.is_const) {21840 if (src_info.flags.is_const and !dest_info.flags.is_const) {
21840 return sema.failWithOwnedErrorMsg(msg: {21841 return sema.failWithOwnedErrorMsg(block, msg: {
21841 const msg = try sema.errMsg(block, src, "cast discards const qualifier", .{});21842 const msg = try sema.errMsg(block, src, "cast discards const qualifier", .{});
21842 errdefer msg.destroy(sema.gpa);21843 errdefer msg.destroy(sema.gpa);
21843 try sema.errNote(block, src, msg, "use @constCast to discard const qualifier", .{});21844 try sema.errNote(block, src, msg, "use @constCast to discard const qualifier", .{});
...@@ -21848,7 +21849,7 @@ fn ptrCastFull(...@@ -21848,7 +21849,7 @@ fn ptrCastFull(
2184821849
21849 if (!flags.volatile_cast) {21850 if (!flags.volatile_cast) {
21850 if (src_info.flags.is_volatile and !dest_info.flags.is_volatile) {21851 if (src_info.flags.is_volatile and !dest_info.flags.is_volatile) {
21851 return sema.failWithOwnedErrorMsg(msg: {21852 return sema.failWithOwnedErrorMsg(block, msg: {
21852 const msg = try sema.errMsg(block, src, "cast discards volatile qualifier", .{});21853 const msg = try sema.errMsg(block, src, "cast discards volatile qualifier", .{});
21853 errdefer msg.destroy(sema.gpa);21854 errdefer msg.destroy(sema.gpa);
21854 try sema.errNote(block, src, msg, "use @volatileCast to discard volatile qualifier", .{});21855 try sema.errNote(block, src, msg, "use @volatileCast to discard volatile qualifier", .{});
...@@ -22059,7 +22060,7 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -22059,7 +22060,7 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
22059 });22060 });
22060 break :msg msg;22061 break :msg msg;
22061 };22062 };
22062 return sema.failWithOwnedErrorMsg(msg);22063 return sema.failWithOwnedErrorMsg(block, msg);
22063 }22064 }
22064 }22065 }
2206522066
...@@ -22286,7 +22287,7 @@ fn bitOffsetOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!u6...@@ -22286,7 +22287,7 @@ fn bitOffsetOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!u6
22286 try sema.addDeclaredHereNote(msg, ty);22287 try sema.addDeclaredHereNote(msg, ty);
22287 break :msg msg;22288 break :msg msg;
22288 };22289 };
22289 return sema.failWithOwnedErrorMsg(msg);22290 return sema.failWithOwnedErrorMsg(block, msg);
22290 },22291 },
22291 }22292 }
2229222293
...@@ -22397,7 +22398,7 @@ fn checkPtrOperand(...@@ -22397,7 +22398,7 @@ fn checkPtrOperand(
2239722398
22398 break :msg msg;22399 break :msg msg;
22399 };22400 };
22400 return sema.failWithOwnedErrorMsg(msg);22401 return sema.failWithOwnedErrorMsg(block, msg);
22401 },22402 },
22402 .Optional => if (ty.childType(mod).zigTypeTag(mod) == .Pointer) return,22403 .Optional => if (ty.childType(mod).zigTypeTag(mod) == .Pointer) return,
22403 else => {},22404 else => {},
...@@ -22428,7 +22429,7 @@ fn checkPtrType(...@@ -22428,7 +22429,7 @@ fn checkPtrType(
2242822429
22429 break :msg msg;22430 break :msg msg;
22430 };22431 };
22431 return sema.failWithOwnedErrorMsg(msg);22432 return sema.failWithOwnedErrorMsg(block, msg);
22432 },22433 },
22433 .Optional => if (ty.childType(mod).zigTypeTag(mod) == .Pointer) return,22434 .Optional => if (ty.childType(mod).zigTypeTag(mod) == .Pointer) return,
22434 else => {},22435 else => {},
...@@ -22569,7 +22570,7 @@ fn checkComptimeVarStore(...@@ -22569,7 +22570,7 @@ fn checkComptimeVarStore(
22569 try sema.errNote(block, cond_src, msg, "runtime condition here", .{});22570 try sema.errNote(block, cond_src, msg, "runtime condition here", .{});
22570 break :msg msg;22571 break :msg msg;
22571 };22572 };
22572 return sema.failWithOwnedErrorMsg(msg);22573 return sema.failWithOwnedErrorMsg(block, msg);
22573 }22574 }
22574 if (block.runtime_loop) |loop_src| {22575 if (block.runtime_loop) |loop_src| {
22575 const msg = msg: {22576 const msg = msg: {
...@@ -22578,7 +22579,7 @@ fn checkComptimeVarStore(...@@ -22578,7 +22579,7 @@ fn checkComptimeVarStore(
22578 try sema.errNote(block, loop_src, msg, "non-inline loop here", .{});22579 try sema.errNote(block, loop_src, msg, "non-inline loop here", .{});
22579 break :msg msg;22580 break :msg msg;
22580 };22581 };
22581 return sema.failWithOwnedErrorMsg(msg);22582 return sema.failWithOwnedErrorMsg(block, msg);
22582 }22583 }
22583 unreachable;22584 unreachable;
22584 }22585 }
...@@ -22720,7 +22721,7 @@ fn checkVectorizableBinaryOperands(...@@ -22720,7 +22721,7 @@ fn checkVectorizableBinaryOperands(
22720 try sema.errNote(block, rhs_src, msg, "length {d} here", .{rhs_len});22721 try sema.errNote(block, rhs_src, msg, "length {d} here", .{rhs_len});
22721 break :msg msg;22722 break :msg msg;
22722 };22723 };
22723 return sema.failWithOwnedErrorMsg(msg);22724 return sema.failWithOwnedErrorMsg(block, msg);
22724 }22725 }
22725 } else {22726 } else {
22726 const msg = msg: {22727 const msg = msg: {
...@@ -22737,7 +22738,7 @@ fn checkVectorizableBinaryOperands(...@@ -22737,7 +22738,7 @@ fn checkVectorizableBinaryOperands(
22737 }22738 }
22738 break :msg msg;22739 break :msg msg;
22739 };22740 };
22740 return sema.failWithOwnedErrorMsg(msg);22741 return sema.failWithOwnedErrorMsg(block, msg);
22741 }22742 }
22742}22743}
2274322744
...@@ -23165,7 +23166,7 @@ fn analyzeShuffle(...@@ -23165,7 +23166,7 @@ fn analyzeShuffle(
2316523166
23166 break :msg msg;23167 break :msg msg;
23167 };23168 };
23168 return sema.failWithOwnedErrorMsg(msg);23169 return sema.failWithOwnedErrorMsg(block, msg);
23169 }23170 }
23170 }23171 }
2317123172
...@@ -23750,7 +23751,7 @@ fn zirFieldParentPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr...@@ -23750,7 +23751,7 @@ fn zirFieldParentPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr
23750 try sema.addDeclaredHereNote(msg, parent_ty);23751 try sema.addDeclaredHereNote(msg, parent_ty);
23751 break :msg msg;23752 break :msg msg;
23752 };23753 };
23753 return sema.failWithOwnedErrorMsg(msg);23754 return sema.failWithOwnedErrorMsg(block, msg);
23754 }23755 }
23755 return Air.internedToRef(field.base);23756 return Air.internedToRef(field.base);
23756 }23757 }
...@@ -24104,7 +24105,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void...@@ -24104,7 +24105,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void
24104 });24105 });
24105 break :msg msg;24106 break :msg msg;
24106 };24107 };
24107 return sema.failWithOwnedErrorMsg(msg);24108 return sema.failWithOwnedErrorMsg(block, msg);
24108 }24109 }
2410924110
24110 var len_val: ?Value = null;24111 var len_val: ?Value = null;
...@@ -24126,7 +24127,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void...@@ -24126,7 +24127,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void
24126 });24127 });
24127 break :msg msg;24128 break :msg msg;
24128 };24129 };
24129 return sema.failWithOwnedErrorMsg(msg);24130 return sema.failWithOwnedErrorMsg(block, msg);
24130 }24131 }
24131 break :check;24132 break :check;
24132 }24133 }
...@@ -24319,7 +24320,7 @@ fn zirMemset(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void...@@ -24319,7 +24320,7 @@ fn zirMemset(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void
24319 },24320 },
24320 .Many, .C => {},24321 .Many, .C => {},
24321 }24322 }
24322 return sema.failWithOwnedErrorMsg(msg: {24323 return sema.failWithOwnedErrorMsg(block, msg: {
24323 const msg = try sema.errMsg(block, src, "unknown @memset length", .{});24324 const msg = try sema.errMsg(block, src, "unknown @memset length", .{});
24324 errdefer msg.destroy(sema.gpa);24325 errdefer msg.destroy(sema.gpa);
24325 try sema.errNote(block, dest_src, msg, "destination type '{}' provides no length", .{24326 try sema.errNote(block, dest_src, msg, "destination type '{}' provides no length", .{
...@@ -24969,7 +24970,7 @@ fn zirBuiltinExtern(...@@ -24969,7 +24970,7 @@ fn zirBuiltinExtern(
24969 try sema.explainWhyTypeIsNotExtern(msg, ty_src.toSrcLoc(src_decl, mod), ty, .other);24970 try sema.explainWhyTypeIsNotExtern(msg, ty_src.toSrcLoc(src_decl, mod), ty, .other);
24970 break :msg msg;24971 break :msg msg;
24971 };24972 };
24972 return sema.failWithOwnedErrorMsg(msg);24973 return sema.failWithOwnedErrorMsg(block, msg);
24973 }24974 }
2497424975
24975 const options = sema.resolveExternOptions(block, .unneeded, extra.rhs) catch |err| switch (err) {24976 const options = sema.resolveExternOptions(block, .unneeded, extra.rhs) catch |err| switch (err) {
...@@ -25087,7 +25088,7 @@ fn requireRuntimeBlock(sema: *Sema, block: *Block, src: LazySrcLoc, runtime_src:...@@ -25087,7 +25088,7 @@ fn requireRuntimeBlock(sema: *Sema, block: *Block, src: LazySrcLoc, runtime_src:
25087 }25088 }
25088 break :msg msg;25089 break :msg msg;
25089 };25090 };
25090 return sema.failWithOwnedErrorMsg(msg);25091 return sema.failWithOwnedErrorMsg(block, msg);
25091 }25092 }
25092}25093}
2509325094
...@@ -25109,7 +25110,7 @@ fn validateVarType(...@@ -25109,7 +25110,7 @@ fn validateVarType(
25109 try sema.explainWhyTypeIsNotExtern(msg, src.toSrcLoc(src_decl, mod), var_ty, .other);25110 try sema.explainWhyTypeIsNotExtern(msg, src.toSrcLoc(src_decl, mod), var_ty, .other);
25110 break :msg msg;25111 break :msg msg;
25111 };25112 };
25112 return sema.failWithOwnedErrorMsg(msg);25113 return sema.failWithOwnedErrorMsg(block, msg);
25113 }25114 }
25114 } else {25115 } else {
25115 if (var_ty.zigTypeTag(mod) == .Opaque) {25116 if (var_ty.zigTypeTag(mod) == .Opaque) {
...@@ -25136,7 +25137,7 @@ fn validateVarType(...@@ -25136,7 +25137,7 @@ fn validateVarType(
2513625137
25137 break :msg msg;25138 break :msg msg;
25138 };25139 };
25139 return sema.failWithOwnedErrorMsg(msg);25140 return sema.failWithOwnedErrorMsg(block, msg);
25140}25141}
2514125142
25142const TypeSet = std.AutoHashMapUnmanaged(InternPool.Index, void);25143const TypeSet = std.AutoHashMapUnmanaged(InternPool.Index, void);
...@@ -25822,7 +25823,7 @@ fn emitBackwardBranch(sema: *Sema, block: *Block, src: LazySrcLoc) !void {...@@ -25822,7 +25823,7 @@ fn emitBackwardBranch(sema: *Sema, block: *Block, src: LazySrcLoc) !void {
25822 "use @setEvalBranchQuota() to raise the branch limit from {d}",25823 "use @setEvalBranchQuota() to raise the branch limit from {d}",
25823 .{sema.branch_quota},25824 .{sema.branch_quota},
25824 );25825 );
25825 return sema.failWithOwnedErrorMsg(msg);25826 return sema.failWithOwnedErrorMsg(block, msg);
25826 }25827 }
25827}25828}
2582825829
...@@ -25929,7 +25930,7 @@ fn fieldVal(...@@ -25929,7 +25930,7 @@ fn fieldVal(
25929 try sema.addDeclaredHereNote(msg, child_type);25930 try sema.addDeclaredHereNote(msg, child_type);
25930 break :msg msg;25931 break :msg msg;
25931 };25932 };
25932 return sema.failWithOwnedErrorMsg(msg);25933 return sema.failWithOwnedErrorMsg(block, msg);
25933 },25934 },
25934 .inferred_error_set_type => {25935 .inferred_error_set_type => {
25935 return sema.fail(block, src, "TODO handle inferred error sets here", .{});25936 return sema.fail(block, src, "TODO handle inferred error sets here", .{});
...@@ -25993,7 +25994,7 @@ fn fieldVal(...@@ -25993,7 +25994,7 @@ fn fieldVal(
25993 if (child_type.zigTypeTag(mod) == .Array) try sema.errNote(block, src, msg, "array values have 'len' member", .{});25994 if (child_type.zigTypeTag(mod) == .Array) try sema.errNote(block, src, msg, "array values have 'len' member", .{});
25994 break :msg msg;25995 break :msg msg;
25995 };25996 };
25996 return sema.failWithOwnedErrorMsg(msg);25997 return sema.failWithOwnedErrorMsg(block, msg);
25997 },25998 },
25998 }25999 }
25999 },26000 },
...@@ -26412,7 +26413,7 @@ fn fieldCallBind(...@@ -26412,7 +26413,7 @@ fn fieldCallBind(
26412 }26413 }
26413 break :msg msg;26414 break :msg msg;
26414 };26415 };
26415 return sema.failWithOwnedErrorMsg(msg);26416 return sema.failWithOwnedErrorMsg(block, msg);
26416}26417}
2641726418
26418fn finishFieldCallBind(26419fn finishFieldCallBind(
...@@ -26476,7 +26477,7 @@ fn namespaceLookup(...@@ -26476,7 +26477,7 @@ fn namespaceLookup(
26476 try mod.errNoteNonLazy(decl.srcLoc(mod), msg, "declared here", .{});26477 try mod.errNoteNonLazy(decl.srcLoc(mod), msg, "declared here", .{});
26477 break :msg msg;26478 break :msg msg;
26478 };26479 };
26479 return sema.failWithOwnedErrorMsg(msg);26480 return sema.failWithOwnedErrorMsg(block, msg);
26480 }26481 }
26481 return decl_index;26482 return decl_index;
26482 }26483 }
...@@ -26834,7 +26835,7 @@ fn unionFieldPtr(...@@ -26834,7 +26835,7 @@ fn unionFieldPtr(
26834 try sema.addDeclaredHereNote(msg, union_ty);26835 try sema.addDeclaredHereNote(msg, union_ty);
26835 break :msg msg;26836 break :msg msg;
26836 };26837 };
26837 return sema.failWithOwnedErrorMsg(msg);26838 return sema.failWithOwnedErrorMsg(block, msg);
26838 }26839 }
2683926840
26840 if (try sema.resolveDefinedValue(block, src, union_ptr)) |union_ptr_val| ct: {26841 if (try sema.resolveDefinedValue(block, src, union_ptr)) |union_ptr_val| ct: {
...@@ -26860,7 +26861,7 @@ fn unionFieldPtr(...@@ -26860,7 +26861,7 @@ fn unionFieldPtr(
26860 try sema.addDeclaredHereNote(msg, union_ty);26861 try sema.addDeclaredHereNote(msg, union_ty);
26861 break :msg msg;26862 break :msg msg;
26862 };26863 };
26863 return sema.failWithOwnedErrorMsg(msg);26864 return sema.failWithOwnedErrorMsg(block, msg);
26864 }26865 }
26865 },26866 },
26866 .Packed, .Extern => {},26867 .Packed, .Extern => {},
...@@ -26932,7 +26933,7 @@ fn unionFieldVal(...@@ -26932,7 +26933,7 @@ fn unionFieldVal(
26932 try sema.addDeclaredHereNote(msg, union_ty);26933 try sema.addDeclaredHereNote(msg, union_ty);
26933 break :msg msg;26934 break :msg msg;
26934 };26935 };
26935 return sema.failWithOwnedErrorMsg(msg);26936 return sema.failWithOwnedErrorMsg(block, msg);
26936 }26937 }
26937 },26938 },
26938 .Packed, .Extern => {26939 .Packed, .Extern => {
...@@ -27155,7 +27156,7 @@ fn validateRuntimeElemAccess(...@@ -27155,7 +27156,7 @@ fn validateRuntimeElemAccess(
2715527156
27156 break :msg msg;27157 break :msg msg;
27157 };27158 };
27158 return sema.failWithOwnedErrorMsg(msg);27159 return sema.failWithOwnedErrorMsg(block, msg);
27159 }27160 }
27160}27161}
2716127162
...@@ -27886,7 +27887,7 @@ fn coerceExtra(...@@ -27886,7 +27887,7 @@ fn coerceExtra(
27886 try sema.errNote(block, dest_ty_src, err_msg, "pointers to tuples can only coerce to constant pointers", .{});27887 try sema.errNote(block, dest_ty_src, err_msg, "pointers to tuples can only coerce to constant pointers", .{});
27887 break :err_msg err_msg;27888 break :err_msg err_msg;
27888 };27889 };
27889 return sema.failWithOwnedErrorMsg(err_msg);27890 return sema.failWithOwnedErrorMsg(block, err_msg);
27890 }27891 }
27891 return sema.coerceTupleToSlicePtrs(block, dest_ty, dest_ty_src, inst, inst_src);27892 return sema.coerceTupleToSlicePtrs(block, dest_ty, dest_ty_src, inst, inst_src);
27892 },27893 },
...@@ -28064,7 +28065,7 @@ fn coerceExtra(...@@ -28064,7 +28065,7 @@ fn coerceExtra(
28064 try sema.addDeclaredHereNote(msg, dest_ty);28065 try sema.addDeclaredHereNote(msg, dest_ty);
28065 break :msg msg;28066 break :msg msg;
28066 };28067 };
28067 return sema.failWithOwnedErrorMsg(msg);28068 return sema.failWithOwnedErrorMsg(block, msg);
28068 };28069 };
28069 return Air.internedToRef((try mod.enumValueFieldIndex(dest_ty, @intCast(field_index))).toIntern());28070 return Air.internedToRef((try mod.enumValueFieldIndex(dest_ty, @intCast(field_index))).toIntern());
28070 },28071 },
...@@ -28195,7 +28196,7 @@ fn coerceExtra(...@@ -28195,7 +28196,7 @@ fn coerceExtra(
28195 try mod.errNoteNonLazy(ret_ty_src.toSrcLoc(src_decl, mod), msg, "'noreturn' declared here", .{});28196 try mod.errNoteNonLazy(ret_ty_src.toSrcLoc(src_decl, mod), msg, "'noreturn' declared here", .{});
28196 break :msg msg;28197 break :msg msg;
28197 };28198 };
28198 return sema.failWithOwnedErrorMsg(msg);28199 return sema.failWithOwnedErrorMsg(block, msg);
28199 }28200 }
2820028201
28201 const msg = msg: {28202 const msg = msg: {
...@@ -28241,7 +28242,7 @@ fn coerceExtra(...@@ -28241,7 +28242,7 @@ fn coerceExtra(
2824128242
28242 break :msg msg;28243 break :msg msg;
28243 };28244 };
28244 return sema.failWithOwnedErrorMsg(msg);28245 return sema.failWithOwnedErrorMsg(block, msg);
28245}28246}
2824628247
28247fn coerceInMemory(28248fn coerceInMemory(
...@@ -29217,7 +29218,7 @@ fn coerceVarArgParam(...@@ -29217,7 +29218,7 @@ fn coerceVarArgParam(
29217 try sema.addDeclaredHereNote(msg, coerced_ty);29218 try sema.addDeclaredHereNote(msg, coerced_ty);
29218 break :msg msg;29219 break :msg msg;
29219 };29220 };
29220 return sema.failWithOwnedErrorMsg(msg);29221 return sema.failWithOwnedErrorMsg(block, msg);
29221 }29222 }
29222 return coerced;29223 return coerced;
29223}29224}
...@@ -30472,7 +30473,7 @@ fn coerceEnumToUnion(...@@ -30472,7 +30473,7 @@ fn coerceEnumToUnion(
30472 try sema.addDeclaredHereNote(msg, union_ty);30473 try sema.addDeclaredHereNote(msg, union_ty);
30473 break :msg msg;30474 break :msg msg;
30474 };30475 };
30475 return sema.failWithOwnedErrorMsg(msg);30476 return sema.failWithOwnedErrorMsg(block, msg);
30476 };30477 };
3047730478
30478 const enum_tag = try sema.coerce(block, tag_ty, inst, inst_src);30479 const enum_tag = try sema.coerce(block, tag_ty, inst, inst_src);
...@@ -30486,7 +30487,7 @@ fn coerceEnumToUnion(...@@ -30486,7 +30487,7 @@ fn coerceEnumToUnion(
30486 try sema.addDeclaredHereNote(msg, union_ty);30487 try sema.addDeclaredHereNote(msg, union_ty);
30487 break :msg msg;30488 break :msg msg;
30488 };30489 };
30489 return sema.failWithOwnedErrorMsg(msg);30490 return sema.failWithOwnedErrorMsg(block, msg);
30490 };30491 };
3049130492
30492 const union_obj = mod.typeToUnion(union_ty).?;30493 const union_obj = mod.typeToUnion(union_ty).?;
...@@ -30504,7 +30505,7 @@ fn coerceEnumToUnion(...@@ -30504,7 +30505,7 @@ fn coerceEnumToUnion(
30504 try sema.addDeclaredHereNote(msg, union_ty);30505 try sema.addDeclaredHereNote(msg, union_ty);
30505 break :msg msg;30506 break :msg msg;
30506 };30507 };
30507 return sema.failWithOwnedErrorMsg(msg);30508 return sema.failWithOwnedErrorMsg(block, msg);
30508 }30509 }
30509 const opv = (try sema.typeHasOnePossibleValue(field_ty)) orelse {30510 const opv = (try sema.typeHasOnePossibleValue(field_ty)) orelse {
30510 const msg = msg: {30511 const msg = msg: {
...@@ -30521,7 +30522,7 @@ fn coerceEnumToUnion(...@@ -30521,7 +30522,7 @@ fn coerceEnumToUnion(
30521 try sema.addDeclaredHereNote(msg, union_ty);30522 try sema.addDeclaredHereNote(msg, union_ty);
30522 break :msg msg;30523 break :msg msg;
30523 };30524 };
30524 return sema.failWithOwnedErrorMsg(msg);30525 return sema.failWithOwnedErrorMsg(block, msg);
30525 };30526 };
3052630527
30527 return Air.internedToRef((try mod.unionValue(union_ty, val, opv)).toIntern());30528 return Air.internedToRef((try mod.unionValue(union_ty, val, opv)).toIntern());
...@@ -30538,7 +30539,7 @@ fn coerceEnumToUnion(...@@ -30538,7 +30539,7 @@ fn coerceEnumToUnion(
30538 try sema.addDeclaredHereNote(msg, tag_ty);30539 try sema.addDeclaredHereNote(msg, tag_ty);
30539 break :msg msg;30540 break :msg msg;
30540 };30541 };
30541 return sema.failWithOwnedErrorMsg(msg);30542 return sema.failWithOwnedErrorMsg(block, msg);
30542 }30543 }
3054330544
30544 const union_obj = mod.typeToUnion(union_ty).?;30545 const union_obj = mod.typeToUnion(union_ty).?;
...@@ -30562,7 +30563,7 @@ fn coerceEnumToUnion(...@@ -30562,7 +30563,7 @@ fn coerceEnumToUnion(
30562 if (msg) |some| {30563 if (msg) |some| {
30563 msg = null;30564 msg = null;
30564 try sema.addDeclaredHereNote(some, union_ty);30565 try sema.addDeclaredHereNote(some, union_ty);
30565 return sema.failWithOwnedErrorMsg(some);30566 return sema.failWithOwnedErrorMsg(block, some);
30566 }30567 }
30567 }30568 }
3056830569
...@@ -30592,7 +30593,7 @@ fn coerceEnumToUnion(...@@ -30592,7 +30593,7 @@ fn coerceEnumToUnion(
30592 try sema.addDeclaredHereNote(msg, union_ty);30593 try sema.addDeclaredHereNote(msg, union_ty);
30593 break :msg msg;30594 break :msg msg;
30594 };30595 };
30595 return sema.failWithOwnedErrorMsg(msg);30596 return sema.failWithOwnedErrorMsg(block, msg);
30596}30597}
3059730598
30598fn coerceAnonStructToUnion(30599fn coerceAnonStructToUnion(
...@@ -30649,7 +30650,7 @@ fn coerceAnonStructToUnion(...@@ -30649,7 +30650,7 @@ fn coerceAnonStructToUnion(
30649 try sema.addDeclaredHereNote(msg, union_ty);30650 try sema.addDeclaredHereNote(msg, union_ty);
30650 break :msg msg;30651 break :msg msg;
30651 };30652 };
30652 return sema.failWithOwnedErrorMsg(msg);30653 return sema.failWithOwnedErrorMsg(block, msg);
30653 },30654 },
30654 }30655 }
30655}30656}
...@@ -30721,7 +30722,7 @@ fn coerceArrayLike(...@@ -30721,7 +30722,7 @@ fn coerceArrayLike(
30721 try sema.errNote(block, inst_src, msg, "source has length {d}", .{inst_len});30722 try sema.errNote(block, inst_src, msg, "source has length {d}", .{inst_len});
30722 break :msg msg;30723 break :msg msg;
30723 };30724 };
30724 return sema.failWithOwnedErrorMsg(msg);30725 return sema.failWithOwnedErrorMsg(block, msg);
30725 }30726 }
3072630727
30727 const dest_elem_ty = dest_ty.childType(mod);30728 const dest_elem_ty = dest_ty.childType(mod);
...@@ -30780,7 +30781,7 @@ fn coerceTupleToArray(...@@ -30780,7 +30781,7 @@ fn coerceTupleToArray(
30780 try sema.errNote(block, inst_src, msg, "source has length {d}", .{inst_len});30781 try sema.errNote(block, inst_src, msg, "source has length {d}", .{inst_len});
30781 break :msg msg;30782 break :msg msg;
30782 };30783 };
30783 return sema.failWithOwnedErrorMsg(msg);30784 return sema.failWithOwnedErrorMsg(block, msg);
30784 }30785 }
3078530786
30786 const dest_elems = try sema.usizeCast(block, dest_ty_src, dest_len);30787 const dest_elems = try sema.usizeCast(block, dest_ty_src, dest_len);
...@@ -30967,7 +30968,7 @@ fn coerceTupleToStruct(...@@ -30967,7 +30968,7 @@ fn coerceTupleToStruct(
30967 if (root_msg) |msg| {30968 if (root_msg) |msg| {
30968 try sema.addDeclaredHereNote(msg, struct_ty);30969 try sema.addDeclaredHereNote(msg, struct_ty);
30969 root_msg = null;30970 root_msg = null;
30970 return sema.failWithOwnedErrorMsg(msg);30971 return sema.failWithOwnedErrorMsg(block, msg);
30971 }30972 }
3097230973
30973 if (runtime_src) |rs| {30974 if (runtime_src) |rs| {
...@@ -31113,7 +31114,7 @@ fn coerceTupleToTuple(...@@ -31113,7 +31114,7 @@ fn coerceTupleToTuple(
31113 if (root_msg) |msg| {31114 if (root_msg) |msg| {
31114 try sema.addDeclaredHereNote(msg, tuple_ty);31115 try sema.addDeclaredHereNote(msg, tuple_ty);
31115 root_msg = null;31116 root_msg = null;
31116 return sema.failWithOwnedErrorMsg(msg);31117 return sema.failWithOwnedErrorMsg(block, msg);
31117 }31118 }
3111831119
31119 if (runtime_src) |rs| {31120 if (runtime_src) |rs| {
...@@ -31174,7 +31175,7 @@ fn ensureDeclAnalyzed(sema: *Sema, decl_index: Decl.Index) CompileError!void {...@@ -31174,7 +31175,7 @@ fn ensureDeclAnalyzed(sema: *Sema, decl_index: Decl.Index) CompileError!void {
31174 const decl = mod.declPtr(decl_index);31175 const decl = mod.declPtr(decl_index);
31175 if (decl.analysis == .in_progress) {31176 if (decl.analysis == .in_progress) {
31176 const msg = try Module.ErrorMsg.create(sema.gpa, decl.srcLoc(mod), "dependency loop detected", .{});31177 const msg = try Module.ErrorMsg.create(sema.gpa, decl.srcLoc(mod), "dependency loop detected", .{});
31177 return sema.failWithOwnedErrorMsg(msg);31178 return sema.failWithOwnedErrorMsg(null, msg);
31178 }31179 }
3117931180
31180 mod.ensureDeclAnalyzed(decl_index) catch |err| {31181 mod.ensureDeclAnalyzed(decl_index) catch |err| {
...@@ -31866,7 +31867,7 @@ fn analyzeSlice(...@@ -31866,7 +31867,7 @@ fn analyzeSlice(
3186631867
31867 break :msg msg;31868 break :msg msg;
31868 };31869 };
31869 return sema.failWithOwnedErrorMsg(msg);31870 return sema.failWithOwnedErrorMsg(block, msg);
31870 }31871 }
31871 } else {31872 } else {
31872 runtime_src = ptr_src;31873 runtime_src = ptr_src;
...@@ -32872,7 +32873,7 @@ fn resolvePeerTypes(...@@ -32872,7 +32873,7 @@ fn resolvePeerTypes(
32872 .success => |ty| return ty,32873 .success => |ty| return ty,
32873 else => |result| {32874 else => |result| {
32874 const msg = try result.report(sema, block, src, instructions, candidate_srcs);32875 const msg = try result.report(sema, block, src, instructions, candidate_srcs);
32875 return sema.failWithOwnedErrorMsg(msg);32876 return sema.failWithOwnedErrorMsg(block, msg);
32876 },32877 },
32877 }32878 }
32878}32879}
...@@ -34230,7 +34231,7 @@ fn resolveStructLayout(sema: *Sema, ty: Type) CompileError!void {...@@ -34230,7 +34231,7 @@ fn resolveStructLayout(sema: *Sema, ty: Type) CompileError!void {
34230 "struct '{}' depends on itself",34231 "struct '{}' depends on itself",
34231 .{ty.fmt(mod)},34232 .{ty.fmt(mod)},
34232 );34233 );
34233 return sema.failWithOwnedErrorMsg(msg);34234 return sema.failWithOwnedErrorMsg(null, msg);
34234 },34235 },
34235 .have_layout, .fully_resolved_wip, .fully_resolved => return,34236 .have_layout, .fully_resolved_wip, .fully_resolved => return,
34236 }34237 }
...@@ -34265,7 +34266,7 @@ fn resolveStructLayout(sema: *Sema, ty: Type) CompileError!void {...@@ -34265,7 +34266,7 @@ fn resolveStructLayout(sema: *Sema, ty: Type) CompileError!void {
34265 "struct layout depends on it having runtime bits",34266 "struct layout depends on it having runtime bits",
34266 .{},34267 .{},
34267 );34268 );
34268 return sema.failWithOwnedErrorMsg(msg);34269 return sema.failWithOwnedErrorMsg(null, msg);
34269 }34270 }
3427034271
34271 if (struct_obj.layout == .Auto and !struct_obj.is_tuple and34272 if (struct_obj.layout == .Auto and !struct_obj.is_tuple and
...@@ -34442,7 +34443,7 @@ fn checkIndexable(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) !void {...@@ -34442,7 +34443,7 @@ fn checkIndexable(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) !void {
34442 try sema.errNote(block, src, msg, "operand must be an array, slice, tuple, or vector", .{});34443 try sema.errNote(block, src, msg, "operand must be an array, slice, tuple, or vector", .{});
34443 break :msg msg;34444 break :msg msg;
34444 };34445 };
34445 return sema.failWithOwnedErrorMsg(msg);34446 return sema.failWithOwnedErrorMsg(block, msg);
34446 }34447 }
34447}34448}
3444834449
...@@ -34465,7 +34466,7 @@ fn checkMemOperand(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) !void...@@ -34465,7 +34466,7 @@ fn checkMemOperand(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) !void
34465 try sema.errNote(block, src, msg, "operand must be a slice, a many pointer or a pointer to an array", .{});34466 try sema.errNote(block, src, msg, "operand must be a slice, a many pointer or a pointer to an array", .{});
34466 break :msg msg;34467 break :msg msg;
34467 };34468 };
34468 return sema.failWithOwnedErrorMsg(msg);34469 return sema.failWithOwnedErrorMsg(block, msg);
34469}34470}
3447034471
34471fn resolveUnionLayout(sema: *Sema, ty: Type) CompileError!void {34472fn resolveUnionLayout(sema: *Sema, ty: Type) CompileError!void {
...@@ -34482,7 +34483,7 @@ fn resolveUnionLayout(sema: *Sema, ty: Type) CompileError!void {...@@ -34482,7 +34483,7 @@ fn resolveUnionLayout(sema: *Sema, ty: Type) CompileError!void {
34482 "union '{}' depends on itself",34483 "union '{}' depends on itself",
34483 .{ty.fmt(mod)},34484 .{ty.fmt(mod)},
34484 );34485 );
34485 return sema.failWithOwnedErrorMsg(msg);34486 return sema.failWithOwnedErrorMsg(null, msg);
34486 },34487 },
34487 .have_layout, .fully_resolved_wip, .fully_resolved => return,34488 .have_layout, .fully_resolved_wip, .fully_resolved => return,
34488 }34489 }
...@@ -34513,7 +34514,7 @@ fn resolveUnionLayout(sema: *Sema, ty: Type) CompileError!void {...@@ -34513,7 +34514,7 @@ fn resolveUnionLayout(sema: *Sema, ty: Type) CompileError!void {
34513 "union layout depends on it having runtime bits",34514 "union layout depends on it having runtime bits",
34514 .{},34515 .{},
34515 );34516 );
34516 return sema.failWithOwnedErrorMsg(msg);34517 return sema.failWithOwnedErrorMsg(null, msg);
34517 }34518 }
34518}34519}
3451934520
...@@ -34771,7 +34772,7 @@ fn resolveTypeFieldsStruct(...@@ -34771,7 +34772,7 @@ fn resolveTypeFieldsStruct(
34771 "struct '{}' depends on itself",34772 "struct '{}' depends on itself",
34772 .{ty.fmt(sema.mod)},34773 .{ty.fmt(sema.mod)},
34773 );34774 );
34774 return sema.failWithOwnedErrorMsg(msg);34775 return sema.failWithOwnedErrorMsg(null, msg);
34775 },34776 },
34776 .have_field_types,34777 .have_field_types,
34777 .have_layout,34778 .have_layout,
...@@ -34811,7 +34812,7 @@ fn resolveTypeFieldsUnion(sema: *Sema, ty: Type, union_type: InternPool.Key.Unio...@@ -34811,7 +34812,7 @@ fn resolveTypeFieldsUnion(sema: *Sema, ty: Type, union_type: InternPool.Key.Unio
34811 "union '{}' depends on itself",34812 "union '{}' depends on itself",
34812 .{ty.fmt(mod)},34813 .{ty.fmt(mod)},
34813 );34814 );
34814 return sema.failWithOwnedErrorMsg(msg);34815 return sema.failWithOwnedErrorMsg(null, msg);
34815 },34816 },
34816 .have_field_types,34817 .have_field_types,
34817 .have_layout,34818 .have_layout,
...@@ -34865,7 +34866,7 @@ fn resolveInferredErrorSet(...@@ -34865,7 +34866,7 @@ fn resolveInferredErrorSet(
34865 try sema.mod.errNoteNonLazy(ies_func_owner_decl.srcLoc(mod), msg, "generic function declared here", .{});34866 try sema.mod.errNoteNonLazy(ies_func_owner_decl.srcLoc(mod), msg, "generic function declared here", .{});
34866 break :msg msg;34867 break :msg msg;
34867 };34868 };
34868 return sema.failWithOwnedErrorMsg(msg);34869 return sema.failWithOwnedErrorMsg(block, msg);
34869 }34870 }
34870 // In this case we are dealing with the actual InferredErrorSet object that34871 // In this case we are dealing with the actual InferredErrorSet object that
34871 // corresponds to the function, not one created to track an inline/comptime call.34872 // corresponds to the function, not one created to track an inline/comptime call.
...@@ -35125,7 +35126,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void...@@ -35125,7 +35126,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void
35125 try sema.errNote(&block_scope, src, msg, "struct declared here", .{});35126 try sema.errNote(&block_scope, src, msg, "struct declared here", .{});
35126 break :msg msg;35127 break :msg msg;
35127 };35128 };
35128 return sema.failWithOwnedErrorMsg(msg);35129 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35129 }35130 }
35130 gop.value_ptr.* = .{35131 gop.value_ptr.* = .{
35131 .ty = Type.noreturn,35132 .ty = Type.noreturn,
...@@ -35201,7 +35202,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void...@@ -35201,7 +35202,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void
35201 try sema.addDeclaredHereNote(msg, field_ty);35202 try sema.addDeclaredHereNote(msg, field_ty);
35202 break :msg msg;35203 break :msg msg;
35203 };35204 };
35204 return sema.failWithOwnedErrorMsg(msg);35205 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35205 }35206 }
35206 if (field_ty.zigTypeTag(mod) == .NoReturn) {35207 if (field_ty.zigTypeTag(mod) == .NoReturn) {
35207 const msg = msg: {35208 const msg = msg: {
...@@ -35215,7 +35216,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void...@@ -35215,7 +35216,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void
35215 try sema.addDeclaredHereNote(msg, field_ty);35216 try sema.addDeclaredHereNote(msg, field_ty);
35216 break :msg msg;35217 break :msg msg;
35217 };35218 };
35218 return sema.failWithOwnedErrorMsg(msg);35219 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35219 }35220 }
35220 if (struct_obj.layout == .Extern and !try sema.validateExternType(field.ty, .struct_field)) {35221 if (struct_obj.layout == .Extern and !try sema.validateExternType(field.ty, .struct_field)) {
35221 const msg = msg: {35222 const msg = msg: {
...@@ -35231,7 +35232,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void...@@ -35231,7 +35232,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void
35231 try sema.addDeclaredHereNote(msg, field.ty);35232 try sema.addDeclaredHereNote(msg, field.ty);
35232 break :msg msg;35233 break :msg msg;
35233 };35234 };
35234 return sema.failWithOwnedErrorMsg(msg);35235 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35235 } else if (struct_obj.layout == .Packed and !(validatePackedType(field.ty, mod))) {35236 } else if (struct_obj.layout == .Packed and !(validatePackedType(field.ty, mod))) {
35236 const msg = msg: {35237 const msg = msg: {
35237 const ty_src = mod.fieldSrcLoc(struct_obj.owner_decl, .{35238 const ty_src = mod.fieldSrcLoc(struct_obj.owner_decl, .{
...@@ -35246,7 +35247,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void...@@ -35246,7 +35247,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void
35246 try sema.addDeclaredHereNote(msg, field.ty);35247 try sema.addDeclaredHereNote(msg, field.ty);
35247 break :msg msg;35248 break :msg msg;
35248 };35249 };
35249 return sema.failWithOwnedErrorMsg(msg);35250 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35250 }35251 }
3525135252
35252 if (zir_field.align_body_len > 0) {35253 if (zir_field.align_body_len > 0) {
...@@ -35434,7 +35435,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un...@@ -35434,7 +35435,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un
35434 });35435 });
35435 break :msg msg;35436 break :msg msg;
35436 };35437 };
35437 return sema.failWithOwnedErrorMsg(msg);35438 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35438 }35439 }
35439 enum_field_names = try sema.arena.alloc(InternPool.NullTerminatedString, fields_len);35440 enum_field_names = try sema.arena.alloc(InternPool.NullTerminatedString, fields_len);
35440 try enum_field_vals.ensureTotalCapacity(sema.arena, fields_len);35441 try enum_field_vals.ensureTotalCapacity(sema.arena, fields_len);
...@@ -35549,7 +35550,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un...@@ -35549,7 +35550,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un
35549 try sema.errNote(&block_scope, other_field_src, msg, "other occurrence here", .{});35550 try sema.errNote(&block_scope, other_field_src, msg, "other occurrence here", .{});
35550 break :msg msg;35551 break :msg msg;
35551 };35552 };
35552 return sema.failWithOwnedErrorMsg(msg);35553 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35553 }35554 }
35554 }35555 }
3555535556
...@@ -35594,7 +35595,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un...@@ -35594,7 +35595,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un
35594 try sema.errNote(&block_scope, src, msg, "union declared here", .{});35595 try sema.errNote(&block_scope, src, msg, "union declared here", .{});
35595 break :msg msg;35596 break :msg msg;
35596 };35597 };
35597 return sema.failWithOwnedErrorMsg(msg);35598 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35598 }35599 }
3559935600
35600 if (explicit_tags_seen.len > 0) {35601 if (explicit_tags_seen.len > 0) {
...@@ -35612,7 +35613,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un...@@ -35612,7 +35613,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un
35612 try sema.addDeclaredHereNote(msg, union_type.tagTypePtr(ip).toType());35613 try sema.addDeclaredHereNote(msg, union_type.tagTypePtr(ip).toType());
35613 break :msg msg;35614 break :msg msg;
35614 };35615 };
35615 return sema.failWithOwnedErrorMsg(msg);35616 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35616 };35617 };
35617 // No check for duplicate because the check already happened in order35618 // No check for duplicate because the check already happened in order
35618 // to create the enum type in the first place.35619 // to create the enum type in the first place.
...@@ -35634,7 +35635,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un...@@ -35634,7 +35635,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un
35634 try sema.errNote(&block_scope, enum_field_src, msg, "enum field here", .{});35635 try sema.errNote(&block_scope, enum_field_src, msg, "enum field here", .{});
35635 break :msg msg;35636 break :msg msg;
35636 };35637 };
35637 return sema.failWithOwnedErrorMsg(msg);35638 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35638 }35639 }
35639 }35640 }
3564035641
...@@ -35650,7 +35651,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un...@@ -35650,7 +35651,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un
35650 try sema.addDeclaredHereNote(msg, field_ty);35651 try sema.addDeclaredHereNote(msg, field_ty);
35651 break :msg msg;35652 break :msg msg;
35652 };35653 };
35653 return sema.failWithOwnedErrorMsg(msg);35654 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35654 }35655 }
35655 const layout = union_type.getLayout(ip);35656 const layout = union_type.getLayout(ip);
35656 if (layout == .Extern and35657 if (layout == .Extern and
...@@ -35669,7 +35670,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un...@@ -35669,7 +35670,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un
35669 try sema.addDeclaredHereNote(msg, field_ty);35670 try sema.addDeclaredHereNote(msg, field_ty);
35670 break :msg msg;35671 break :msg msg;
35671 };35672 };
35672 return sema.failWithOwnedErrorMsg(msg);35673 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35673 } else if (layout == .Packed and !validatePackedType(field_ty, mod)) {35674 } else if (layout == .Packed and !validatePackedType(field_ty, mod)) {
35674 const msg = msg: {35675 const msg = msg: {
35675 const ty_src = mod.fieldSrcLoc(union_type.decl, .{35676 const ty_src = mod.fieldSrcLoc(union_type.decl, .{
...@@ -35684,7 +35685,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un...@@ -35684,7 +35685,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un
35684 try sema.addDeclaredHereNote(msg, field_ty);35685 try sema.addDeclaredHereNote(msg, field_ty);
35685 break :msg msg;35686 break :msg msg;
35686 };35687 };
35687 return sema.failWithOwnedErrorMsg(msg);35688 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35688 }35689 }
3568935690
35690 field_types.appendAssumeCapacity(field_ty.toIntern());35691 field_types.appendAssumeCapacity(field_ty.toIntern());
...@@ -35728,7 +35729,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un...@@ -35728,7 +35729,7 @@ fn semaUnionFields(mod: *Module, arena: Allocator, union_type: InternPool.Key.Un
35728 try sema.addDeclaredHereNote(msg, union_type.tagTypePtr(ip).toType());35729 try sema.addDeclaredHereNote(msg, union_type.tagTypePtr(ip).toType());
35729 break :msg msg;35730 break :msg msg;
35730 };35731 };
35731 return sema.failWithOwnedErrorMsg(msg);35732 return sema.failWithOwnedErrorMsg(&block_scope, msg);
35732 }35733 }
35733 } else if (enum_field_vals.count() > 0) {35734 } else if (enum_field_vals.count() > 0) {
35734 const enum_ty = try sema.generateUnionTagTypeNumbered(&block_scope, enum_field_names, enum_field_vals.keys(), mod.declPtr(union_type.decl));35735 const enum_ty = try sema.generateUnionTagTypeNumbered(&block_scope, enum_field_names, enum_field_vals.keys(), mod.declPtr(union_type.decl));
...@@ -36139,7 +36140,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {...@@ -36139,7 +36140,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {
36139 .{ty.fmt(mod)},36140 .{ty.fmt(mod)},
36140 );36141 );
36141 try sema.addFieldErrNote(ty, i, msg, "while checking this field", .{});36142 try sema.addFieldErrNote(ty, i, msg, "while checking this field", .{});
36142 return sema.failWithOwnedErrorMsg(msg);36143 return sema.failWithOwnedErrorMsg(null, msg);
36143 }36144 }
36144 if (try sema.typeHasOnePossibleValue(field.ty)) |field_opv| {36145 if (try sema.typeHasOnePossibleValue(field.ty)) |field_opv| {
36145 field_val.* = try field_opv.intern(field.ty, mod);36146 field_val.* = try field_opv.intern(field.ty, mod);
...@@ -36193,7 +36194,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {...@@ -36193,7 +36194,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {
36193 .{ty.fmt(mod)},36194 .{ty.fmt(mod)},
36194 );36195 );
36195 try sema.addFieldErrNote(ty, 0, msg, "while checking this field", .{});36196 try sema.addFieldErrNote(ty, 0, msg, "while checking this field", .{});
36196 return sema.failWithOwnedErrorMsg(msg);36197 return sema.failWithOwnedErrorMsg(null, msg);
36197 }36198 }
36198 const val_val = (try sema.typeHasOnePossibleValue(only_field_ty)) orelse36199 const val_val = (try sema.typeHasOnePossibleValue(only_field_ty)) orelse
36199 return null;36200 return null;