| ... | @@ -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 | } |
| 2163 | | 2163 | |
| 2164 | fn failWithUseOfUndef(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError { | 2164 | fn 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 | } |
| 2196 | | 2196 | |
| 2197 | fn failWithStructInitNotSupported(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) CompileError { | 2197 | fn 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 | } |
| 2249 | | 2249 | |
| 2250 | fn failWithUseOfAsync(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError { | 2250 | fn 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 | } |
| 2258 | | 2258 | |
| 2259 | fn failWithInvalidFieldAccess( | 2259 | fn 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 | } |
| 2391 | | 2391 | |
| 2392 | fn failWithOwnedErrorMsg(sema: *Sema, err_msg: *Module.ErrorMsg) CompileError { | 2392 | fn 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 | } |
| 3231 | | 3232 | |
| 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 | } |
| 3636 | | 3637 | |
| ... | @@ -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; |
| 4275 | | 4276 | |
| ... | @@ -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 | } |
| 4341 | | 4342 | |
| 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 | } |
| 4516 | | 4517 | |
| 4517 | if (block.is_comptime and | 4518 | 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 | } |
| 4744 | | 4745 | |
| 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 | } |
| 4874 | | 4875 | |
| 4875 | if (struct_is_comptime) { | 4876 | if (struct_is_comptime) { |
| ... | @@ -4973,7 +4974,7 @@ fn zirValidateArrayInit( | ... | @@ -4973,7 +4974,7 @@ fn zirValidateArrayInit( |
| 4973 | | 4974 | |
| 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 | } |
| 5192 | | 5193 | |
| ... | @@ -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 | } |
| 5223 | | 5224 | |
| 5224 | fn failWithBadStructFieldAccess( | 5225 | fn 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 | } |
| 5249 | | 5250 | |
| 5250 | fn failWithBadUnionFieldAccess( | 5251 | fn 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 | } |
| 5276 | | 5277 | |
| 5277 | fn addDeclaredHereNote(sema: *Sema, parent: *Module.ErrorMsg, decl_ty: Type) !void { | 5278 | fn 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( |
| 5918 | | 5919 | |
| 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 | } |
| 6076 | | 6077 | |
| 6077 | // TODO: some backends might support re-exporting extern decls | 6078 | // 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 | } |
| 6153 | | 6154 | |
| 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 | } |
| 6802 | | 6803 | |
| 6803 | fn callBuiltin( | 6804 | fn 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 | } |
| 7136 | | 7137 | |
| 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 | } |
| 7195 | | 7196 | |
| 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( |
| 7946 | | 7947 | |
| 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 | } |
| 9145 | | 9146 | |
| ... | @@ -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 and | 9271 | 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) and | 9533 | 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 | } |
| 9549 | | 9550 | |
| 9550 | // If the return type is comptime-only but not dependent on parameters then | 9551 | // 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 | } |
| 9589 | | 9590 | |
| 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 |
| 10125 | | 10126 | |
| 10126 | break :msg msg; | 10127 | break :msg msg; |
| 10127 | }; | 10128 | }; |
| 10128 | return sema.failWithOwnedErrorMsg(msg); | 10129 | return sema.failWithOwnedErrorMsg(block, msg); |
| 10129 | }, | 10130 | }, |
| 10130 | | 10131 | |
| 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 |
| 10140 | | 10141 | |
| 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 |
| 10189 | | 10190 | |
| 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 |
| 10203 | | 10204 | |
| 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 | } |
| 11187 | | 11188 | |
| 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 | } |
| 11387 | | 11388 | |
| 11388 | if (special_prong == .@"else" and | 11389 | 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 | } |
| 12727 | | 12728 | |
| 12728 | fn validateSwitchItemBool( | 12729 | fn 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 | } |
| 12801 | | 12802 | |
| 12802 | fn maybeErrorUnwrap(sema: *Sema, block: *Block, body: []const Zir.Inst.Index, operand: Air.Inst.Ref, operand_src: LazySrcLoc) !bool { | 12803 | fn 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 | }; |
| 13965 | | 13966 | |
| 13966 | // In `**` rhs must be comptime-known, but lhs can be runtime-known | 13967 | // 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 the | 16299 | // 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" note | 16629 | // 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 | } |
| 16633 | | 16634 | |
| 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" note | 16659 | // 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 | } |
| 16663 | | 16664 | |
| 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 | } |
| 18597 | | 18598 | |
| 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 | } |
| 18839 | | 18840 | |
| 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 | } |
| 19322 | | 19323 | |
| 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; |
| 19447 | | 19448 | |
| ... | @@ -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 dupe | 20112 | // 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 | } |
| 20521 | | 20522 | |
| 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 | } |
| 20533 | | 20534 | |
| ... | @@ -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 order | 20670 | // 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 | } |
| 20726 | | 20727 | |
| ... | @@ -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 | } |
| 21099 | | 21100 | |
| ... | @@ -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 | } |
| 21166 | | 21167 | |
| 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 | } |
| 21407 | | 21408 | |
| 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 | } |
| 21543 | | 21544 | |
| 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 | } |
| 21562 | | 21563 | |
| ... | @@ -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 | } |
| 21744 | | 21745 | |
| 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 | } |
| 21756 | | 21757 | |
| 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; |
| 21774 | | 21775 | |
| 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( |
| 21807 | | 21808 | |
| 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 disallowed | 21825 | // 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( |
| 21837 | | 21838 | |
| 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( |
| 21848 | | 21849 | |
| 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 | } |
| 22065 | | 22066 | |
| ... | @@ -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 | } |
| 22292 | | 22293 | |
| ... | @@ -22397,7 +22398,7 @@ fn checkPtrOperand( | ... | @@ -22397,7 +22398,7 @@ fn checkPtrOperand( |
| 22397 | | 22398 | |
| 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( |
| 22428 | | 22429 | |
| 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 | } |
| 22743 | | 22744 | |
| ... | @@ -23165,7 +23166,7 @@ fn analyzeShuffle( | ... | @@ -23165,7 +23166,7 @@ fn analyzeShuffle( |
| 23165 | | 23166 | |
| 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 | } |
| 23171 | | 23172 | |
| ... | @@ -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 | } |
| 24109 | | 24110 | |
| 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 | } |
| 24974 | | 24975 | |
| 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 | } |
| 25093 | | 25094 | |
| ... | @@ -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( |
| 25136 | | 25137 | |
| 25137 | break :msg msg; | 25138 | break :msg msg; |
| 25138 | }; | 25139 | }; |
| 25139 | return sema.failWithOwnedErrorMsg(msg); | 25140 | return sema.failWithOwnedErrorMsg(block, msg); |
| 25140 | } | 25141 | } |
| 25141 | | 25142 | |
| 25142 | const TypeSet = std.AutoHashMapUnmanaged(InternPool.Index, void); | 25143 | const 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 | } |
| 25828 | | 25829 | |
| ... | @@ -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 | } |
| 26417 | | 26418 | |
| 26418 | fn finishFieldCallBind( | 26419 | fn 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 | } |
| 26839 | | 26840 | |
| 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( |
| 27155 | | 27156 | |
| 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 | } |
| 27161 | | 27162 | |
| ... | @@ -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 | } |
| 28200 | | 28201 | |
| 28201 | const msg = msg: { | 28202 | const msg = msg: { |
| ... | @@ -28241,7 +28242,7 @@ fn coerceExtra( | ... | @@ -28241,7 +28242,7 @@ fn coerceExtra( |
| 28241 | | 28242 | |
| 28242 | break :msg msg; | 28243 | break :msg msg; |
| 28243 | }; | 28244 | }; |
| 28244 | return sema.failWithOwnedErrorMsg(msg); | 28245 | return sema.failWithOwnedErrorMsg(block, msg); |
| 28245 | } | 28246 | } |
| 28246 | | 28247 | |
| 28247 | fn coerceInMemory( | 28248 | fn 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 | }; |
| 30477 | | 30478 | |
| 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 | }; |
| 30491 | | 30492 | |
| 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 | }; |
| 30526 | | 30527 | |
| 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 | } |
| 30543 | | 30544 | |
| 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 | } |
| 30568 | | 30569 | |
| ... | @@ -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 | } |
| 30597 | | 30598 | |
| 30598 | fn coerceAnonStructToUnion( | 30599 | fn 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 | } |
| 30726 | | 30727 | |
| 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 | } |
| 30785 | | 30786 | |
| 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 | } |
| 30972 | | 30973 | |
| 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 | } |
| 31118 | | 31119 | |
| 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 | } |
| 31179 | | 31180 | |
| 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( |
| 31866 | | 31867 | |
| 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 | } |
| 34270 | | 34271 | |
| 34271 | if (struct_obj.layout == .Auto and !struct_obj.is_tuple and | 34272 | 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 | } |
| 34448 | | 34449 | |
| ... | @@ -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 | } |
| 34470 | | 34471 | |
| 34471 | fn resolveUnionLayout(sema: *Sema, ty: Type) CompileError!void { | 34472 | fn 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 | } |
| 34519 | | 34520 | |
| ... | @@ -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 that | 34871 | // 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 | } |
| 35251 | | 35252 | |
| 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 | } |
| 35555 | | 35556 | |
| ... | @@ -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 | } |
| 35599 | | 35600 | |
| 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 order | 35618 | // 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 | } |
| 35640 | | 35641 | |
| ... | @@ -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 and | 35657 | 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 | } |
| 35689 | | 35690 | |
| 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)) orelse | 36199 | const val_val = (try sema.typeHasOnePossibleValue(only_field_ty)) orelse |
| 36199 | return null; | 36200 | return null; |