diff --git a/src/Sema.zig b/src/Sema.zig index 0e7188a6c9..64db6a9bed 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -2439,9 +2439,9 @@ fn zirEnumDecl( const field_src = enumFieldSrcLoc(sema.mod.declPtr(block.src_decl), tree.*, src.node_offset.x, field_i); const other_tag_src = enumFieldSrcLoc(sema.mod.declPtr(block.src_decl), tree.*, src.node_offset.x, gop.index); const msg = msg: { - const msg = try sema.errMsg(block, field_src, "duplicate enum tag", .{}); + const msg = try sema.errMsg(block, field_src, "duplicate enum field '{s}'", .{field_name}); errdefer msg.destroy(gpa); - try sema.errNote(block, other_tag_src, msg, "other tag here", .{}); + try sema.errNote(block, other_tag_src, msg, "other field here", .{}); break :msg msg; }; return sema.failWithOwnedErrorMsg(block, msg); @@ -2751,7 +2751,7 @@ fn zirEnsureResultNonError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Com const src = inst_data.src(); const operand_ty = sema.typeOf(operand); switch (operand_ty.zigTypeTag()) { - .ErrorSet, .ErrorUnion => return sema.fail(block, src, "error is discarded", .{}), + .ErrorSet, .ErrorUnion => return sema.fail(block, src, "error is discardederror is discarded. consider using `try`, `catch`, or `if`", .{}), else => return, } } @@ -6444,6 +6444,7 @@ fn zirIntToEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A if (dest_ty.zigTypeTag() != .Enum) { return sema.fail(block, dest_ty_src, "expected enum, found '{}'", .{dest_ty.fmt(sema.mod)}); } + _ = try sema.checkIntType(block, operand_src, sema.typeOf(operand)); if (try sema.resolveMaybeUndefVal(block, operand_src, operand)) |int_val| { if (dest_ty.isNonexhaustiveEnum()) { diff --git a/test/cases/compile_errors/stage1/obj/discarding_error_value.zig b/test/cases/compile_errors/discarding_error_value.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/discarding_error_value.zig rename to test/cases/compile_errors/discarding_error_value.zig index dcfa22e8cb..f74fc4ea29 100644 --- a/test/cases/compile_errors/stage1/obj/discarding_error_value.zig +++ b/test/cases/compile_errors/discarding_error_value.zig @@ -6,7 +6,7 @@ fn foo() !void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:12: error: error is discarded. consider using `try`, `catch`, or `if` +// :2:12: error: error is discarded. consider using `try`, `catch`, or `if` diff --git a/test/cases/compile_errors/stage1/obj/duplicate_enum_field.zig b/test/cases/compile_errors/duplicate_enum_field.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/duplicate_enum_field.zig rename to test/cases/compile_errors/duplicate_enum_field.zig index cd024270bd..ebf01f99a7 100644 --- a/test/cases/compile_errors/stage1/obj/duplicate_enum_field.zig +++ b/test/cases/compile_errors/duplicate_enum_field.zig @@ -9,8 +9,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:5: error: duplicate enum field: 'Bar' -// tmp.zig:2:5: note: other field here +// :3:5: error: duplicate enum field 'Bar' +// :2:5: note: other field here diff --git a/test/cases/compile_errors/stage1/obj/duplicate_error_in_switch.zig b/test/cases/compile_errors/duplicate_error_in_switch.zig similarity index 65% rename from test/cases/compile_errors/stage1/obj/duplicate_error_in_switch.zig rename to test/cases/compile_errors/duplicate_error_in_switch.zig index 140a14ec81..6e9b1e9099 100644 --- a/test/cases/compile_errors/stage1/obj/duplicate_error_in_switch.zig +++ b/test/cases/compile_errors/duplicate_error_in_switch.zig @@ -15,8 +15,8 @@ fn foo(x: i32) !void { } // error -// backend=stage1 +// backend=llvm // target=native // -// tmp.zig:5:14: error: duplicate switch value: '@typeInfo(@typeInfo(@TypeOf(foo)).Fn.return_type.?).ErrorUnion.error_set.Foo' -// tmp.zig:3:14: note: other value here +// :5:9: error: duplicate switch value +// :3:9: note: other value here diff --git a/test/cases/compile_errors/stage1/obj/explicitly_casting_non_tag_type_to_enum.zig b/test/cases/compile_errors/explicitly_casting_non_tag_type_to_enum.zig similarity index 71% rename from test/cases/compile_errors/stage1/obj/explicitly_casting_non_tag_type_to_enum.zig rename to test/cases/compile_errors/explicitly_casting_non_tag_type_to_enum.zig index 1999fd70a7..aac876e614 100644 --- a/test/cases/compile_errors/stage1/obj/explicitly_casting_non_tag_type_to_enum.zig +++ b/test/cases/compile_errors/explicitly_casting_non_tag_type_to_enum.zig @@ -12,7 +12,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:10:31: error: expected integer type, found 'f32' +// :10:31: error: expected integer type, found 'f32' diff --git a/test/stage2/cbe.zig b/test/stage2/cbe.zig index f602c49885..4817f0502f 100644 --- a/test/stage2/cbe.zig +++ b/test/stage2/cbe.zig @@ -729,8 +729,8 @@ pub fn addCases(ctx: *TestContext) !void { \\ _ = E1.a; \\} , &.{ - ":1:28: error: duplicate enum tag", - ":1:22: note: other tag here", + ":1:28: error: duplicate enum field 'b'", + ":1:22: note: other field here", }); case.addError(