Commit 3204d00a5e

Veikka Tuominen <git@vexu.eu>
2022-06-27 17:32:59
move passing stage1 compile error tests to stage2
1 parent c248af3
Changed files (421)
src
test
cases
aarch64-macos
compile_errors
stage1
obj
test
x86_64-linux
x86_64-macos
stage2
src/AstGen.zig
@@ -4464,6 +4464,7 @@ fn containerDecl(
                 var total_fields: usize = 0;
                 var decls: usize = 0;
                 var nonexhaustive_node: Ast.Node.Index = 0;
+                var nonfinal_nonexhaustive = false;
                 for (container_decl.ast.members) |member_node| {
                     const member = switch (node_tags[member_node]) {
                         .container_field_init => tree.containerFieldInit(member_node),
@@ -4515,6 +4516,8 @@ fn containerDecl(
                             return astgen.failNode(member.ast.value_expr, "'_' is used to mark an enum as non-exhaustive and cannot be assigned a value", .{});
                         }
                         continue;
+                    } else if (nonexhaustive_node != 0) {
+                        nonfinal_nonexhaustive = true;
                     }
                     total_fields += 1;
                     if (member.ast.value_expr != 0) {
@@ -4524,6 +4527,9 @@ fn containerDecl(
                         values += 1;
                     }
                 }
+                if (nonfinal_nonexhaustive) {
+                    return astgen.failNode(nonexhaustive_node, "'_' field of non-exhaustive enum must be last", .{});
+                }
                 break :blk .{
                     .total_fields = total_fields,
                     .values = values,
src/Sema.zig
@@ -1707,7 +1707,7 @@ fn failWithModRemNegative(sema: *Sema, block: *Block, src: LazySrcLoc, lhs_ty: T
 }
 
 fn failWithExpectedOptionalType(sema: *Sema, block: *Block, src: LazySrcLoc, optional_ty: Type) CompileError {
-    return sema.fail(block, src, "expected optional type, found {}", .{optional_ty.fmt(sema.mod)});
+    return sema.fail(block, src, "expected optional type, found '{}'", .{optional_ty.fmt(sema.mod)});
 }
 
 fn failWithArrayInitNotSupported(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) CompileError {
@@ -1844,7 +1844,7 @@ pub fn resolveAlign(
     const alignment = @intCast(u32, alignment_big); // We coerce to u16 in the prev line.
     if (alignment == 0) return sema.fail(block, src, "alignment must be >= 1", .{});
     if (!std.math.isPowerOfTwo(alignment)) {
-        return sema.fail(block, src, "alignment value {d} is not a power of two", .{
+        return sema.fail(block, src, "alignment value '{d}' is not a power of two", .{
             alignment,
         });
     }
@@ -2376,6 +2376,12 @@ fn zirEnumDecl(
         }
     }
 
+    if (small.nonexhaustive) {
+        if (fields_len > 1 and std.math.log2_int(u64, fields_len) == enum_obj.tag_ty.bitSize(sema.mod.getTarget())) {
+            return sema.fail(block, src, "non-exhaustive enum specifies every value", .{});
+        }
+    }
+
     try enum_obj.fields.ensureTotalCapacity(new_decl_arena_allocator, fields_len);
     const any_values = for (sema.code.extra[body_end..][0..bit_bags_count]) |bag| {
         if (bag != 0) break true;
@@ -4540,6 +4546,7 @@ fn analyzeBlockBody(
     // to emit a jump instruction to after the block when it encounters the break.
     try parent_block.instructions.append(gpa, merges.block_inst);
     const resolved_ty = try sema.resolvePeerTypes(parent_block, src, merges.results.items, .none);
+    // TODO add note "missing else causes void value"
 
     const type_src = src; // TODO: better source location
     const valid_rt = try sema.validateRunTimeType(child_block, type_src, resolved_ty, false);
@@ -4761,7 +4768,7 @@ fn zirSetAlignStack(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.Inst
         const msg = msg: {
             const msg = try sema.errMsg(block, src, "multiple @setAlignStack in the same function body", .{});
             errdefer msg.destroy(sema.gpa);
-            try sema.errNote(block, src, msg, "other instance here", .{});
+            try sema.errNote(block, gop.value_ptr.src, msg, "other instance here", .{});
             break :msg msg;
         };
         return sema.failWithOwnedErrorMsg(block, msg);
@@ -6155,7 +6162,7 @@ fn zirErrorUnionType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr
     const payload = try sema.resolveType(block, rhs_src, extra.rhs);
 
     if (error_set.zigTypeTag() != .ErrorSet) {
-        return sema.fail(block, lhs_src, "expected error set type, found {}", .{
+        return sema.fail(block, lhs_src, "expected error set type, found '{}'", .{
             error_set.fmt(sema.mod),
         });
     }
@@ -6243,7 +6250,7 @@ fn zirIntToError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
     if (try sema.resolveDefinedValue(block, operand_src, operand)) |value| {
         const int = try sema.usizeCast(block, operand_src, value.toUnsignedInt(target));
         if (int > sema.mod.global_error_set.count() or int == 0)
-            return sema.fail(block, operand_src, "integer value {d} represents no error", .{int});
+            return sema.fail(block, operand_src, "integer value '{d}' represents no error", .{int});
         const payload = try sema.arena.create(Value.Payload.Error);
         payload.* = .{
             .base = .{ .tag = .@"error" },
@@ -6288,9 +6295,9 @@ fn zirMergeErrorSets(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr
     const lhs_ty = try sema.analyzeAsType(block, lhs_src, lhs);
     const rhs_ty = try sema.analyzeAsType(block, rhs_src, rhs);
     if (lhs_ty.zigTypeTag() != .ErrorSet)
-        return sema.fail(block, lhs_src, "expected error set type, found {}", .{lhs_ty.fmt(sema.mod)});
+        return sema.fail(block, lhs_src, "expected error set type, found '{}'", .{lhs_ty.fmt(sema.mod)});
     if (rhs_ty.zigTypeTag() != .ErrorSet)
-        return sema.fail(block, rhs_src, "expected error set type, found {}", .{rhs_ty.fmt(sema.mod)});
+        return sema.fail(block, rhs_src, "expected error set type, found '{}'", .{rhs_ty.fmt(sema.mod)});
 
     // Anything merged with anyerror is anyerror.
     if (lhs_ty.tag() == .anyerror or rhs_ty.tag() == .anyerror) {
@@ -6351,7 +6358,7 @@ fn zirEnumToInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
             break :blk try sema.unionToTag(block, tag_ty, operand, operand_src);
         },
         else => {
-            return sema.fail(block, operand_src, "expected enum or tagged union, found {}", .{
+            return sema.fail(block, operand_src, "expected enum or tagged union, found '{}'", .{
                 operand_ty.fmt(sema.mod),
             });
         },
@@ -6385,7 +6392,7 @@ fn zirIntToEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
     const operand = try sema.resolveInst(extra.rhs);
 
     if (dest_ty.zigTypeTag() != .Enum) {
-        return sema.fail(block, dest_ty_src, "expected enum, found {}", .{dest_ty.fmt(sema.mod)});
+        return sema.fail(block, dest_ty_src, "expected enum, found '{}'", .{dest_ty.fmt(sema.mod)});
     }
 
     if (try sema.resolveMaybeUndefVal(block, operand_src, operand)) |int_val| {
@@ -6400,7 +6407,7 @@ fn zirIntToEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
                 const msg = try sema.errMsg(
                     block,
                     src,
-                    "enum '{}' has no tag with value {}",
+                    "enum '{}' has no tag with value '{}'",
                     .{ dest_ty.fmt(sema.mod), int_val.fmtValue(sema.typeOf(operand), sema.mod) },
                 );
                 errdefer msg.destroy(sema.gpa);
@@ -6452,7 +6459,7 @@ fn analyzeOptionalPayloadPtr(
 
     const opt_type = optional_ptr_ty.elemType();
     if (opt_type.zigTypeTag() != .Optional) {
-        return sema.fail(block, src, "expected optional type, found {}", .{opt_type.fmt(sema.mod)});
+        return sema.fail(block, src, "expected optional type, found '{}'", .{opt_type.fmt(sema.mod)});
     }
 
     const child_type = try opt_type.optionalChildAlloc(sema.arena);
@@ -6640,7 +6647,7 @@ fn analyzeErrUnionPayloadPtr(
     assert(operand_ty.zigTypeTag() == .Pointer);
 
     if (operand_ty.elemType().zigTypeTag() != .ErrorUnion) {
-        return sema.fail(block, src, "expected error union type, found {}", .{
+        return sema.fail(block, src, "expected error union type, found '{}'", .{
             operand_ty.elemType().fmt(sema.mod),
         });
     }
@@ -6739,7 +6746,7 @@ fn zirErrUnionCodePtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE
     assert(operand_ty.zigTypeTag() == .Pointer);
 
     if (operand_ty.elemType().zigTypeTag() != .ErrorUnion) {
-        return sema.fail(block, src, "expected error union type, found {}", .{
+        return sema.fail(block, src, "expected error union type, found '{}'", .{
             operand_ty.elemType().fmt(sema.mod),
         });
     }
@@ -7639,7 +7646,6 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
     defer tracy.end();
 
     const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
-    const src = inst_data.src();
     const dest_ty_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
     const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
     const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
@@ -7674,7 +7680,7 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
         return sema.addConstant(dest_ty, try operand_val.floatCast(sema.arena, dest_ty, target));
     }
     if (dest_is_comptime_float) {
-        return sema.fail(block, src, "unable to cast runtime value to 'comptime_float'", .{});
+        return sema.fail(block, operand_src, "unable to cast runtime value to 'comptime_float'", .{});
     }
     const src_bits = operand_ty.floatBits(target);
     const dst_bits = dest_ty.floatBits(target);
@@ -11664,8 +11670,8 @@ fn analyzeCmp(
     const instructions = &[_]Air.Inst.Ref{ lhs, rhs };
     const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{ .override = &[_]LazySrcLoc{ lhs_src, rhs_src } });
     if (!resolved_type.isSelfComparable(is_equality_cmp)) {
-        return sema.fail(block, src, "{s} operator not allowed for type '{}'", .{
-            @tagName(op), resolved_type.fmt(sema.mod),
+        return sema.fail(block, src, "operator {s} not allowed for type '{}'", .{
+            compareOperatorName(op), resolved_type.fmt(sema.mod),
         });
     }
     const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
@@ -11673,6 +11679,17 @@ fn analyzeCmp(
     return sema.cmpSelf(block, casted_lhs, casted_rhs, op, lhs_src, rhs_src);
 }
 
+fn compareOperatorName(comp: std.math.CompareOperator) []const u8 {
+    return switch (comp) {
+        .lt => "<",
+        .lte => "<=",
+        .eq => "==",
+        .gte => ">=",
+        .gt => ">",
+        .neq => "!=",
+    };
+}
+
 fn cmpSelf(
     sema: *Sema,
     block: *Block,
@@ -14382,7 +14399,7 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
             };
             return sema.failWithOwnedErrorMsg(block, msg);
         },
-        else => return sema.fail(block, operand_src, "expected enum or union; found {}", .{
+        else => return sema.fail(block, operand_src, "expected enum or union; found '{}'", .{
             operand_ty.fmt(mod),
         }),
     };
@@ -14392,8 +14409,8 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
         const field_index = enum_ty.enumTagFieldIndex(val, mod) orelse {
             const enum_decl = mod.declPtr(enum_decl_index);
             const msg = msg: {
-                const msg = try sema.errMsg(block, src, "no field with value {} in enum '{s}'", .{
-                    casted_operand, enum_decl.name,
+                const msg = try sema.errMsg(block, src, "no field with value '{}' in enum '{s}'", .{
+                    val.fmtValue(enum_ty, sema.mod), enum_decl.name,
                 });
                 errdefer msg.destroy(sema.gpa);
                 try mod.errNoteNonLazy(enum_decl.srcLoc(), msg, "declared here", .{});
@@ -14458,6 +14475,8 @@ fn zirReify(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I
             var buffer: Value.ToTypeBuffer = undefined;
             const child_ty = child_val.toType(&buffer);
 
+            try sema.checkVectorElemType(block, src, child_ty);
+
             const ty = try Type.vector(sema.arena, len, try child_ty.copy(sema.arena));
             return sema.addType(ty);
         },
@@ -15099,6 +15118,8 @@ fn zirFloatToInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
     if (try sema.resolveMaybeUndefVal(block, operand_src, operand)) |val| {
         const result_val = try sema.floatToInt(block, operand_src, val, operand_ty, dest_ty);
         return sema.addConstant(dest_ty, result_val);
+    } else if (dest_ty.zigTypeTag() == .ComptimeInt) {
+        return sema.failWithNeededComptime(block, operand_src);
     }
 
     try sema.requireRuntimeBlock(block, operand_src);
@@ -15121,6 +15142,8 @@ fn zirIntToFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
         const target = sema.mod.getTarget();
         const result_val = try val.intToFloat(sema.arena, operand_ty, dest_ty, target);
         return sema.addConstant(dest_ty, result_val);
+    } else if (dest_ty.zigTypeTag() == .ComptimeFloat) {
+        return sema.failWithNeededComptime(block, operand_src);
     }
 
     try sema.requireRuntimeBlock(block, operand_src);
@@ -15242,7 +15265,7 @@ fn zirErrSetCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat
                     const msg = try sema.errMsg(
                         block,
                         src,
-                        "error.{s} not a member of error set '{}'",
+                        "'error.{s}' not a member of error set '{}'",
                         .{ error_name, dest_ty.fmt(sema.mod) },
                     );
                     errdefer msg.destroy(sema.gpa);
@@ -15633,22 +15656,29 @@ fn bitOffsetOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!u6
 
     try sema.resolveTypeLayout(block, lhs_src, ty);
     if (ty.tag() != .@"struct") {
-        return sema.fail(
-            block,
-            lhs_src,
-            "expected struct type, found '{}'",
-            .{ty.fmt(sema.mod)},
-        );
+        const msg = msg: {
+            const msg = try sema.errMsg(block, lhs_src, "expected struct type, found '{}'", .{ty.fmt(sema.mod)});
+            errdefer msg.destroy(sema.gpa);
+            try sema.addDeclaredHereNote(msg, ty);
+            break :msg msg;
+        };
+        return sema.failWithOwnedErrorMsg(block, msg);
     }
 
     const fields = ty.structFields();
     const index = fields.getIndex(field_name) orelse {
-        return sema.fail(
-            block,
-            rhs_src,
-            "struct '{}' has no field '{s}'",
-            .{ ty.fmt(sema.mod), field_name },
-        );
+        const msg = msg: {
+            const msg = try sema.errMsg(
+                block,
+                rhs_src,
+                "struct '{}' has no field '{s}'",
+                .{ ty.fmt(sema.mod), field_name },
+            );
+            errdefer msg.destroy(sema.gpa);
+            try sema.addDeclaredHereNote(msg, ty);
+            break :msg msg;
+        };
+        return sema.failWithOwnedErrorMsg(block, msg);
     };
 
     switch (ty.containerLayout()) {
@@ -15701,7 +15731,7 @@ fn checkPtrOperand(
                 const msg = try sema.errMsg(
                     block,
                     ty_src,
-                    "expected pointer, found {}",
+                    "expected pointer, found '{}'",
                     .{ty.fmt(sema.mod)},
                 );
                 errdefer msg.destroy(sema.gpa);
@@ -15817,7 +15847,7 @@ fn checkAtomicPtrOperand(
         error.BadType => return sema.fail(
             block,
             elem_ty_src,
-            "expected bool, integer, float, enum, or pointer type; found {}",
+            "expected bool, integer, float, enum, or pointer type; found '{}'",
             .{elem_ty.fmt(sema.mod)},
         ),
     };
@@ -16026,7 +16056,7 @@ fn checkVectorizableBinaryOperands(
         }
     } else {
         const msg = msg: {
-            const msg = try sema.errMsg(block, src, "mixed scalar and vector operands: {} and {}", .{
+            const msg = try sema.errMsg(block, src, "mixed scalar and vector operands: '{}' and '{}'", .{
                 lhs_ty.fmt(sema.mod), rhs_ty.fmt(sema.mod),
             });
             errdefer msg.destroy(sema.gpa);
@@ -16069,6 +16099,10 @@ fn resolveExportOptions(
     const visibility_val = try sema.resolveConstValue(block, src, visibility_operand);
     const visibility = visibility_val.toEnum(std.builtin.SymbolVisibility);
 
+    if (name.len < 1) {
+        return sema.fail(block, src, "exported symbol name cannot be empty", .{});
+    }
+
     if (visibility != .default and linkage == .Internal) {
         return sema.fail(block, src, "symbol '{s}' exported with internal linkage has non-default visibility {s}", .{
             name, @tagName(visibility),
@@ -16247,7 +16281,7 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
     const target = sema.mod.getTarget();
 
     if (operand_ty.zigTypeTag() != .Vector) {
-        return sema.fail(block, operand_src, "expected vector, found {}", .{operand_ty.fmt(sema.mod)});
+        return sema.fail(block, operand_src, "expected vector, found '{}'", .{operand_ty.fmt(sema.mod)});
     }
 
     const scalar_ty = operand_ty.childType();
@@ -16256,13 +16290,13 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
     switch (operation) {
         .And, .Or, .Xor => switch (scalar_ty.zigTypeTag()) {
             .Int, .Bool => {},
-            else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or boolean operand; found {}", .{
+            else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or boolean operand; found '{}'", .{
                 @tagName(operation), operand_ty.fmt(sema.mod),
             }),
         },
         .Min, .Max, .Add, .Mul => switch (scalar_ty.zigTypeTag()) {
             .Int, .Float => {},
-            else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or float operand; found {}", .{
+            else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or float operand; found '{}'", .{
                 @tagName(operation), operand_ty.fmt(sema.mod),
             }),
         },
@@ -16321,7 +16355,7 @@ fn zirShuffle(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
 
     const mask_len = switch (sema.typeOf(mask).zigTypeTag()) {
         .Array, .Vector => sema.typeOf(mask).arrayLen(),
-        else => return sema.fail(block, mask_src, "expected vector or array, found {}", .{sema.typeOf(mask).fmt(sema.mod)}),
+        else => return sema.fail(block, mask_src, "expected vector or array, found '{}'", .{sema.typeOf(mask).fmt(sema.mod)}),
     };
     mask_ty = try Type.Tag.vector.create(sema.arena, .{
         .len = mask_len,
@@ -16356,7 +16390,7 @@ fn analyzeShuffle(
     var maybe_a_len = switch (sema.typeOf(a).zigTypeTag()) {
         .Array, .Vector => sema.typeOf(a).arrayLen(),
         .Undefined => null,
-        else => return sema.fail(block, a_src, "expected vector or array with element type {}, found {}", .{
+        else => return sema.fail(block, a_src, "expected vector or array with element type '{}', found '{}'", .{
             elem_ty.fmt(sema.mod),
             sema.typeOf(a).fmt(sema.mod),
         }),
@@ -16364,7 +16398,7 @@ fn analyzeShuffle(
     var maybe_b_len = switch (sema.typeOf(b).zigTypeTag()) {
         .Array, .Vector => sema.typeOf(b).arrayLen(),
         .Undefined => null,
-        else => return sema.fail(block, b_src, "expected vector or array with element type {}, found {}", .{
+        else => return sema.fail(block, b_src, "expected vector or array with element type '{}', found '{}'", .{
             elem_ty.fmt(sema.mod),
             sema.typeOf(b).fmt(sema.mod),
         }),
@@ -16412,7 +16446,7 @@ fn analyzeShuffle(
                 const msg = try sema.errMsg(block, mask_src, "mask index {d} has out-of-bounds selection", .{i});
                 errdefer msg.destroy(sema.gpa);
 
-                try sema.errNote(block, operand_info[chosen][1], msg, "selected index {d} out of bounds of {}", .{
+                try sema.errNote(block, operand_info[chosen][1], msg, "selected index {d} out of bounds of '{}'", .{
                     unsigned,
                     operand_info[chosen][2].fmt(sema.mod),
                 });
@@ -16881,7 +16915,7 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
 
     const args_ty = sema.typeOf(args);
     if (!args_ty.isTuple() and args_ty.tag() != .empty_struct_literal) {
-        return sema.fail(block, args_src, "expected a tuple, found {}", .{args_ty.fmt(sema.mod)});
+        return sema.fail(block, args_src, "expected a tuple, found '{}'", .{args_ty.fmt(sema.mod)});
     }
 
     var resolved_args: []Air.Inst.Ref = undefined;
@@ -18217,9 +18251,15 @@ fn fieldVal(
                         if (payload.data.names.getEntry(field_name)) |entry| {
                             break :blk entry.key_ptr.*;
                         }
-                        return sema.fail(block, src, "no error named '{s}' in '{}'", .{
-                            field_name, child_type.fmt(sema.mod),
-                        });
+                        const msg = msg: {
+                            const msg = try sema.errMsg(block, src, "no error named '{s}' in '{}'", .{
+                                field_name, child_type.fmt(sema.mod),
+                            });
+                            errdefer msg.destroy(sema.gpa);
+                            try sema.addDeclaredHereNote(msg, child_type);
+                            break :msg msg;
+                        };
+                        return sema.failWithOwnedErrorMsg(block, msg);
                     } else (try sema.mod.getErrorValue(field_name)).key;
 
                     return sema.addConstant(
@@ -18894,12 +18934,12 @@ fn tupleFieldIndex(
     field_name_src: LazySrcLoc,
 ) CompileError!u32 {
     const field_index = std.fmt.parseUnsigned(u32, field_name, 10) catch |err| {
-        return sema.fail(block, field_name_src, "tuple {} has no such field '{s}': {s}", .{
+        return sema.fail(block, field_name_src, "tuple '{}' has no such field '{s}': {s}", .{
             tuple_ty.fmt(sema.mod), field_name, @errorName(err),
         });
     };
     if (field_index >= tuple_ty.structFieldCount()) {
-        return sema.fail(block, field_name_src, "tuple {} has no such field '{s}'", .{
+        return sema.fail(block, field_name_src, "tuple '{}' has no such field '{s}'", .{
             tuple_ty.fmt(sema.mod), field_name,
         });
     }
@@ -19809,7 +19849,7 @@ fn coerce(
                     return sema.fail(
                         block,
                         inst_src,
-                        "fractional component prevents float value {} from coercion to type '{}'",
+                        "fractional component prevents float value '{}' from coercion to type '{}'",
                         .{ val.fmtValue(inst_ty, sema.mod), dest_ty.fmt(sema.mod) },
                     );
                 }
@@ -19820,7 +19860,7 @@ fn coerce(
                 if (try sema.resolveDefinedValue(block, inst_src, inst)) |val| {
                     // comptime known integer to other number
                     if (!(try sema.intFitsInType(block, inst_src, val, dest_ty))) {
-                        return sema.fail(block, inst_src, "type {} cannot represent integer value {}", .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) });
+                        return sema.fail(block, inst_src, "type '{}' cannot represent integer value '{}'", .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) });
                     }
                     return try sema.addConstant(dest_ty, val);
                 }
@@ -19854,7 +19894,7 @@ fn coerce(
                         return sema.fail(
                             block,
                             inst_src,
-                            "type {} cannot represent float value {}",
+                            "type '{}' cannot represent float value '{}'",
                             .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) },
                         );
                     }
@@ -19878,7 +19918,7 @@ fn coerce(
                 //    return sema.fail(
                 //        block,
                 //        inst_src,
-                //        "type {} cannot represent integer value {}",
+                //        "type '{}' cannot represent integer value '{}'",
                 //        .{ dest_ty.fmt(sema.mod), val },
                 //    );
                 //}
@@ -20021,7 +20061,7 @@ fn coerce(
         return sema.addConstUndef(dest_ty);
     }
 
-    return sema.fail(block, inst_src, "expected {}, found {}", .{ dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod) });
+    return sema.fail(block, inst_src, "expected type '{}', found '{}'", .{ dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod) });
 }
 
 const InMemoryCoercionResult = enum {
@@ -21541,7 +21581,7 @@ fn coerceEnumToUnion(
 
     const tag_ty = union_ty.unionTagType() orelse {
         const msg = msg: {
-            const msg = try sema.errMsg(block, inst_src, "expected {}, found {}", .{
+            const msg = try sema.errMsg(block, inst_src, "expected type '{}', found '{}'", .{
                 union_ty.fmt(sema.mod), inst_ty.fmt(sema.mod),
             });
             errdefer msg.destroy(sema.gpa);
@@ -21557,7 +21597,7 @@ fn coerceEnumToUnion(
         const union_obj = union_ty.cast(Type.Payload.Union).?.data;
         const field_index = union_obj.tag_ty.enumTagFieldIndex(val, sema.mod) orelse {
             const msg = msg: {
-                const msg = try sema.errMsg(block, inst_src, "union {} has no tag with value {}", .{
+                const msg = try sema.errMsg(block, inst_src, "union '{}' has no tag with value '{}'", .{
                     union_ty.fmt(sema.mod), val.fmtValue(tag_ty, sema.mod),
                 });
                 errdefer msg.destroy(sema.gpa);
@@ -21593,7 +21633,7 @@ fn coerceEnumToUnion(
 
     if (tag_ty.isNonexhaustiveEnum()) {
         const msg = msg: {
-            const msg = try sema.errMsg(block, inst_src, "runtime coercion to union {} from non-exhaustive enum", .{
+            const msg = try sema.errMsg(block, inst_src, "runtime coercion to union '{}' from non-exhaustive enum", .{
                 union_ty.fmt(sema.mod),
             });
             errdefer msg.destroy(sema.gpa);
@@ -21710,7 +21750,7 @@ fn coerceArrayLike(
 
     if (dest_len != inst_len) {
         const msg = msg: {
-            const msg = try sema.errMsg(block, inst_src, "expected {}, found {}", .{
+            const msg = try sema.errMsg(block, inst_src, "expected type '{}', found '{}'", .{
                 dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod),
             });
             errdefer msg.destroy(sema.gpa);
@@ -21781,7 +21821,7 @@ fn coerceTupleToArray(
 
     if (dest_len != inst_len) {
         const msg = msg: {
-            const msg = try sema.errMsg(block, inst_src, "expected {}, found {}", .{
+            const msg = try sema.errMsg(block, inst_src, "expected type '{}', found '{}'", .{
                 dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod),
             });
             errdefer msg.destroy(sema.gpa);
@@ -23553,7 +23593,7 @@ fn resolveStructLayout(
         switch (struct_obj.status) {
             .none, .have_field_types => {},
             .field_types_wip, .layout_wip => {
-                return sema.fail(block, src, "struct {} depends on itself", .{ty.fmt(sema.mod)});
+                return sema.fail(block, src, "struct '{}' depends on itself", .{ty.fmt(sema.mod)});
             },
             .have_layout, .fully_resolved_wip, .fully_resolved => return,
         }
@@ -23584,7 +23624,7 @@ fn resolveUnionLayout(
     switch (union_obj.status) {
         .none, .have_field_types => {},
         .field_types_wip, .layout_wip => {
-            return sema.fail(block, src, "union {} depends on itself", .{ty.fmt(sema.mod)});
+            return sema.fail(block, src, "union '{}' depends on itself", .{ty.fmt(sema.mod)});
         },
         .have_layout, .fully_resolved_wip, .fully_resolved => return,
     }
@@ -23752,7 +23792,7 @@ fn resolveTypeFieldsStruct(
     switch (struct_obj.status) {
         .none => {},
         .field_types_wip => {
-            return sema.fail(block, src, "struct {} depends on itself", .{ty.fmt(sema.mod)});
+            return sema.fail(block, src, "struct '{}' depends on itself", .{ty.fmt(sema.mod)});
         },
         .have_field_types,
         .have_layout,
@@ -23782,7 +23822,7 @@ fn resolveTypeFieldsUnion(
     switch (union_obj.status) {
         .none => {},
         .field_types_wip => {
-            return sema.fail(block, src, "union {} depends on itself", .{ty.fmt(sema.mod)});
+            return sema.fail(block, src, "union '{}' depends on itself", .{ty.fmt(sema.mod)});
         },
         .have_field_types,
         .have_layout,
@@ -25005,7 +25045,7 @@ fn pointerDeref(sema: *Sema, block: *Block, src: LazySrcLoc, ptr_val: Value, ptr
     // The type is not in-memory coercible or the direct dereference failed, so it must
     // be bitcast according to the pointer type we are performing the load through.
     if (!load_ty.hasWellDefinedLayout())
-        return sema.fail(block, src, "comptime dereference requires {} to have a well-defined layout, but it does not.", .{load_ty.fmt(sema.mod)});
+        return sema.fail(block, src, "comptime dereference requires '{}' to have a well-defined layout, but it does not.", .{load_ty.fmt(sema.mod)});
 
     const load_sz = try sema.typeAbiSize(block, src, load_ty);
 
@@ -25020,11 +25060,11 @@ fn pointerDeref(sema: *Sema, block: *Block, src: LazySrcLoc, ptr_val: Value, ptr
     if (deref.ty_without_well_defined_layout) |bad_ty| {
         // We got no parent for bit-casting, or the parent we got was too small. Either way, the problem
         // is that some type we encountered when de-referencing does not have a well-defined layout.
-        return sema.fail(block, src, "comptime dereference requires {} to have a well-defined layout, but it does not.", .{bad_ty.fmt(sema.mod)});
+        return sema.fail(block, src, "comptime dereference requires '{}' to have a well-defined layout, but it does not.", .{bad_ty.fmt(sema.mod)});
     } else {
         // If all encountered types had well-defined layouts, the parent is the root decl and it just
         // wasn't big enough for the load.
-        return sema.fail(block, src, "dereference of {} exceeds bounds of containing decl of type {}", .{ ptr_ty.fmt(sema.mod), deref.parent.?.tv.ty.fmt(sema.mod) });
+        return sema.fail(block, src, "dereference of '{}' exceeds bounds of containing decl of type '{}'", .{ ptr_ty.fmt(sema.mod), deref.parent.?.tv.ty.fmt(sema.mod) });
     }
 }
 
@@ -25032,7 +25072,7 @@ fn pointerDeref(sema: *Sema, block: *Block, src: LazySrcLoc, ptr_val: Value, ptr
 /// is too big to fit.
 fn usizeCast(sema: *Sema, block: *Block, src: LazySrcLoc, int: u64) CompileError!usize {
     if (@bitSizeOf(u64) <= @bitSizeOf(usize)) return int;
-    return std.math.cast(usize, int) orelse return sema.fail(block, src, "expression produces integer value {d} which is too big for this compiler implementation to handle", .{int});
+    return std.math.cast(usize, int) orelse return sema.fail(block, src, "expression produces integer value '{d}' which is too big for this compiler implementation to handle", .{int});
 }
 
 /// For pointer-like optionals, it returns the pointer type. For pointers,
@@ -25387,7 +25427,7 @@ fn anonStructFieldIndex(
             return @intCast(u32, i);
         }
     }
-    return sema.fail(block, field_src, "anonymous struct {} has no such field '{s}'", .{
+    return sema.fail(block, field_src, "anonymous struct '{}' has no such field '{s}'", .{
         struct_ty.fmt(sema.mod), field_name,
     });
 }
@@ -25768,7 +25808,7 @@ fn floatToIntScalar(
         try Value.Tag.int_big_positive.create(sema.arena, result_limbs);
 
     if (!(try sema.intFitsInType(block, src, result, int_ty))) {
-        return sema.fail(block, src, "float value {} cannot be stored in integer type '{}'", .{
+        return sema.fail(block, src, "float value '{}' cannot be stored in integer type '{}'", .{
             val.fmtValue(float_ty, sema.mod), int_ty.fmt(sema.mod),
         });
     }
src/TypedValue.zig
@@ -409,11 +409,11 @@ pub fn print(
             }
             return writer.writeAll(" }");
         },
-        .float_16 => return writer.print("{}", .{val.castTag(.float_16).?.data}),
-        .float_32 => return writer.print("{}", .{val.castTag(.float_32).?.data}),
-        .float_64 => return writer.print("{}", .{val.castTag(.float_64).?.data}),
-        .float_80 => return writer.print("{}", .{val.castTag(.float_80).?.data}),
-        .float_128 => return writer.print("{}", .{val.castTag(.float_128).?.data}),
+        .float_16 => return writer.print("{d}", .{val.castTag(.float_16).?.data}),
+        .float_32 => return writer.print("{d}", .{val.castTag(.float_32).?.data}),
+        .float_64 => return writer.print("{d}", .{val.castTag(.float_64).?.data}),
+        .float_80 => return writer.print("{d}", .{@floatCast(f64, val.castTag(.float_80).?.data)}),
+        .float_128 => return writer.print("{d}", .{@floatCast(f64, val.castTag(.float_128).?.data)}),
         .@"error" => return writer.print("error.{s}", .{val.castTag(.@"error").?.data.name}),
         .eu_payload => {
             val = val.castTag(.eu_payload).?.data;
test/cases/aarch64-macos/hello_world_with_updates.1.zig
@@ -2,4 +2,4 @@ pub export fn main() noreturn {}
 
 // error
 //
-// :1:32: error: expected noreturn, found void
+// :1:32: error: expected type 'noreturn', found 'void'
test/cases/compile_errors/stage1/obj/access_non-existent_member_of_error_set.zig
@@ -1,11 +0,0 @@
-const Foo = error{A};
-comptime {
-    const z = Foo.Bar;
-    _ = z;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:18: error: no error named 'Bar' in 'Foo'
test/cases/compile_errors/stage1/obj/add_assign_on_undefined_value.zig
@@ -1,10 +0,0 @@
-comptime {
-    var a: i64 = undefined;
-    a += a;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:5: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/add_on_undefined_value.zig
@@ -1,10 +0,0 @@
-comptime {
-    var a: i64 = undefined;
-    _ = a + a;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:9: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/address_of_number_literal.zig
@@ -1,10 +0,0 @@
-const x = 3;
-const y = &x;
-fn foo() *const i32 { return y; }
-export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:30: error: expected type '*const i32', found '*const comptime_int'
test/cases/compile_errors/stage1/obj/array_access_of_undeclared_identifier.zig
@@ -1,9 +0,0 @@
-export fn f() void {
-    i[i] = i[i];
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: use of undeclared identifier 'i'
test/cases/compile_errors/stage1/obj/assign_unreachable.zig
@@ -1,10 +0,0 @@
-export fn f() void {
-    const a = return;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: unreachable code
-// tmp.zig:2:15: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/atomic_orderings_of_fence_Acquire_or_stricter.zig
@@ -1,9 +0,0 @@
-export fn entry() void {
-    @fence(.Monotonic);
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:12: error: atomic ordering must be Acquire or stricter
test/cases/compile_errors/stage1/obj/attempt_to_close_over_comptime_variable_from_outer_scope.zig
@@ -1,14 +0,0 @@
-fn SimpleList(comptime L: usize) type {
-    var T = u8;
-    return struct {
-        array: [L]T,
-    };
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:4:19: error: mutable 'T' not accessible from here
-// tmp.zig:2:9: note: declared mutable here
-// tmp.zig:3:12: note: crosses namespace boundary here
test/cases/compile_errors/stage1/obj/attempted_double_ampersand.zig
@@ -1,12 +0,0 @@
-export fn entry(a: bool, b: bool) i32 {
-    if (a && b) {
-        return 1234;
-    }
-    return 5678;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:11: error: ambiguous use of '&&'; use 'and' for logical AND, or change whitespace to ' & &' for bitwise AND
test/cases/compile_errors/stage1/obj/attempted_double_pipe_on_boolean_values.zig
@@ -1,13 +0,0 @@
-export fn entry(a: bool, b: bool) i32 {
-    if (a || b) {
-        return 1234;
-    }
-    return 5678;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:9: error: expected error set type, found 'bool'
-// tmp.zig:2:11: note: `||` merges error sets; `or` performs boolean OR
test/cases/compile_errors/stage1/obj/bad_import.zig
@@ -1,7 +0,0 @@
-const bogus = @import("bogus-does-not-exist.zig",);
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:23: error: unable to load '${DIR}bogus-does-not-exist.zig': FileNotFound
test/cases/compile_errors/stage1/obj/bit_shifting_only_works_on_integer_types.zig
@@ -1,10 +0,0 @@
-export fn entry() void {
-    const x = &@as(u8, 1) << 10;
-    _ = x;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:16: error: bit shifting operation expected integer type, found '*const u8'
test/cases/compile_errors/stage1/obj/bitCast_same_size_but_bit_count_mismatch.zig
@@ -1,10 +0,0 @@
-export fn entry(byte: u8) void {
-    var oops = @bitCast(u7, byte);
-    _ = oops;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:25: error: destination type 'u7' has 7 bits but source type 'u8' has 8 bits
test/cases/compile_errors/stage1/obj/bitCast_with_different_sizes_inside_an_expression.zig
@@ -1,10 +0,0 @@
-export fn entry() void {
-    var foo = (@bitCast(u8, @as(f32, 1.0)) == 0xf);
-    _ = foo;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:25: error: destination type 'u8' has size 1 but source type 'f32' has size 4
test/cases/compile_errors/stage1/obj/bogus_method_call_on_slice.zig
@@ -1,11 +0,0 @@
-var self = "aoeu";
-fn f(m: []const u8) void {
-    m.copy(u8, self[0..], m);
-}
-export fn entry() usize { return @sizeOf(@TypeOf(f)); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:6: error: no member named 'copy' in '[]const u8'
test/cases/compile_errors/stage1/obj/cast_negative_integer_literal_to_usize.zig
@@ -1,10 +0,0 @@
-export fn entry() void {
-    const x = @as(usize, -10);
-    _ = x;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:26: error: cannot cast negative value -10 to unsigned integer type 'usize'
test/cases/compile_errors/stage1/obj/cast_unreachable.zig
@@ -1,11 +0,0 @@
-fn f() i32 {
-    return @as(i32, return 1);
-}
-export fn entry() void { _ = f(); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:12: error: unreachable code
-// tmp.zig:2:21: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/colliding_invalid_top_level_functions.zig
@@ -1,10 +0,0 @@
-fn func() bogus {}
-fn func() bogus {}
-export fn entry() usize { return @sizeOf(@TypeOf(func)); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:1: error: redeclaration of 'func'
-// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/comptime_cast_enum_to_union_but_field_has_payload.zig
@@ -1,17 +0,0 @@
-const Letter = enum { A, B, C };
-const Value = union(Letter) {
-    A: i32,
-    B,
-    C,
-};
-export fn entry() void {
-    var x: Value = Letter.A;
-    _ = x;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:8:26: error: cast to union 'Value' must initialize 'i32' field 'A'
-// tmp.zig:3:5: note: field 'A' declared here
test/cases/compile_errors/stage1/obj/const_is_a_statement_not_an_expression.zig
@@ -1,9 +0,0 @@
-export fn f() void {
-    (const a = 0);
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:6: error: expected expression, found 'const'
test/cases/compile_errors/stage1/obj/control_flow_uses_comptime_var_at_runtime.zig
@@ -1,15 +0,0 @@
-export fn foo() void {
-    comptime var i = 0;
-    while (i < 5) : (i += 1) {
-        bar();
-    }
-}
-
-fn bar() void { }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:5: error: control flow attempts to use compile-time variable at runtime
-// tmp.zig:3:24: note: compile-time variable assigned here
test/cases/compile_errors/stage1/obj/declaration_with_same_name_as_primitive_must_use_special_syntax.zig
@@ -1,12 +0,0 @@
-const u8 = u16;
-export fn entry() void {
-    const a: u8 = 300;
-    _ = a;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:7: error: name shadows primitive 'u8'
-// tmp.zig:1:7: note: consider using @"u8" to disambiguate
test/cases/compile_errors/stage1/obj/deduplicate_undeclared_identifier.zig
@@ -1,12 +0,0 @@
-export fn a() void {
-    x += 1;
-}
-export fn b() void {
-    x += 1;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: use of undeclared identifier 'x'
test/cases/compile_errors/stage1/obj/empty_for_loop_body.zig
@@ -1,9 +0,0 @@
-export fn a() void {
-    for(undefined) |x|;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:23: error: expected block or assignment, found ';'
test/cases/compile_errors/stage1/obj/empty_if_body.zig
@@ -1,9 +0,0 @@
-export fn a() void {
-    if(true);
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:13: error: expected block or assignment, found ';'
test/cases/compile_errors/stage1/obj/empty_while_loop_body.zig
@@ -1,9 +0,0 @@
-export fn a() void {
-    while(true);
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:16: error: expected block or assignment, found ';'
test/cases/compile_errors/stage1/obj/enum_with_0_fields.zig
@@ -1,7 +0,0 @@
-const Foo = enum {};
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:13: error: enum declarations must have at least one tag
test/cases/compile_errors/stage1/obj/exceeded_maximum_bit_width_of_integer.zig
@@ -1,15 +0,0 @@
-export fn entry1() void {
-    const T = u65536;
-    _ = T;
-}
-export fn entry2() void {
-    var x: i65536 = 1;
-    _ = x;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:15: error: primitive integer type 'u65536' exceeds maximum bit width of 65535
-// tmp.zig:6:12: error: primitive integer type 'i65536' exceeds maximum bit width of 65535
test/cases/compile_errors/stage1/obj/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig
@@ -1,9 +0,0 @@
-export fn entry() i32 {
-    return @as(i32, 12.34);
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: fractional component prevents float value 12.340000 from being casted to type 'i32'
test/cases/compile_errors/stage1/obj/field_type_supplied_in_an_enum.zig
@@ -1,12 +0,0 @@
-const Letter = enum {
-    A: void,
-    B,
-    C,
-};
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:8: error: enum fields do not have types
-// tmp.zig:1:16: note: consider 'union(enum)' here to make it a tagged union
test/cases/compile_errors/stage1/obj/function_with_invalid_return_type.zig
@@ -1,7 +0,0 @@
-export fn foo() boid {}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:17: error: use of undeclared identifier 'boid'
test/cases/compile_errors/stage1/obj/hasDecl_with_non-container.zig
@@ -1,9 +0,0 @@
-export fn entry() void {
-    _ = @hasDecl(i32, "hi");
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:18: error: expected struct, enum, or union; found 'i32'
test/cases/compile_errors/stage1/obj/if_condition_is_bool_not_int.zig
@@ -1,9 +0,0 @@
-export fn f() void {
-    if (0) {}
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:9: error: expected type 'bool', found 'comptime_int'
test/cases/compile_errors/stage1/obj/ignored_statement_value.zig
@@ -1,9 +0,0 @@
-export fn foo() void {
-    1;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: expression value is ignored
test/cases/compile_errors/stage1/obj/import_outside_package_path.zig
@@ -1,9 +0,0 @@
-comptime{
-    _ = @import("../a.zig");
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:9: error: import of file outside package path: '../a.zig'
test/cases/compile_errors/stage1/obj/inferring_error_set_of_function_pointer.zig
@@ -1,9 +0,0 @@
-comptime {
-    const z: ?fn()!void = null;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:19: error: function prototype may not have inferred error set
test/cases/compile_errors/stage1/obj/invalid_break_expression.zig
@@ -1,9 +0,0 @@
-export fn f() void {
-    break;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: break expression outside loop
test/cases/compile_errors/stage1/obj/invalid_continue_expression.zig
@@ -1,9 +0,0 @@
-export fn f() void {
-    continue;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: continue expression outside loop
test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-1.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 0x1.0p1ab1;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:28: note: invalid byte: 'a'
test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-2.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 0x1.0p50F;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:29: note: invalid byte: 'F'
test/cases/compile_errors/stage1/obj/invalid_field_access_in_comptime.zig
@@ -1,7 +0,0 @@
-comptime { var x = doesnt_exist.whatever; _ = x; }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:20: error: use of undeclared identifier 'doesnt_exist'
test/cases/compile_errors/stage1/obj/invalid_legacy_unicode_escape.zig
@@ -1,10 +0,0 @@
-export fn entry() void {
-    const a = '\U1234';
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:15: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:18: note: invalid byte: '1'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-1.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 0._0;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:23: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-10.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 1.0__0e-1;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:25: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-11.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 1.0e-1__0;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:28: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-12.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 0_x0.0;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:23: note: invalid byte: 'x'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-13.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 0x_0.0;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:23: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-14.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 0x0.0_p1;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:27: note: invalid byte: 'p'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-2.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 0_.0;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:23: note: invalid byte: '.'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-3.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 0.0_;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:25: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-4.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 1.0e_1;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:25: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-5.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 1.0e+_1;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:26: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-6.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 1.0e-_1;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:26: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-7.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 1.0e-1_;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:28: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-9.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: f128 = 1__0.0e-1;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:23: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-1.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: u128 = 0010_;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:26: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-2.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: u128 = 0b0010_;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:28: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-3.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: u128 = 0o0010_;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:28: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-4.zig
@@ -1,11 +0,0 @@
-fn main() void {
-    var bad: u128 = 0x0010_;
-    _ = bad;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
-// tmp.zig:2:28: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_union_field_access_in_comptime.zig
@@ -1,15 +0,0 @@
-const Foo = union {
-    Bar: u8,
-    Baz: void,
-};
-comptime {
-    var foo = Foo {.Baz = {}};
-    const bar_val = foo.Bar;
-    _ = bar_val;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:7:24: error: accessing union field 'Bar' while field 'Baz' is set
test/cases/compile_errors/stage1/obj/issue_9346_return_outside_of_function_scope.zig
@@ -1,7 +0,0 @@
-pub const empty = return 1;
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:19: error: 'return' outside function scope
test/cases/compile_errors/stage1/obj/local_shadows_global_that_occurs_later.zig
@@ -1,12 +0,0 @@
-pub fn main() void {
-    var foo = true;
-    _ = foo;
-}
-fn foo() void {}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:9: error: local shadows declaration of 'foo'
-// tmp.zig:5:1: note: declared here
test/cases/compile_errors/stage1/obj/local_variable_redeclaration.zig
@@ -1,11 +0,0 @@
-export fn f() void {
-    const a : i32 = 0;
-    var a = 0;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:9: error: redeclaration of local constant 'a'
-// tmp.zig:2:11: note: previous declaration here
test/cases/compile_errors/stage1/obj/local_variable_redeclares_parameter.zig
@@ -1,11 +0,0 @@
-fn f(a : i32) void {
-    const a = 0;
-}
-export fn entry() void { f(1); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:11: error: redeclaration of function parameter 'a'
-// tmp.zig:1:6: note: previous declaration here
test/cases/compile_errors/stage1/obj/locally_shadowing_a_primitive_type.zig
@@ -1,12 +0,0 @@
-export fn foo() void {
-    const u8 = u16;
-    const a: u8 = 300;
-    _ = a;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:11: error: name shadows primitive 'u8'
-// tmp.zig:2:11: note: consider using @"u8" to disambiguate
test/cases/compile_errors/stage1/obj/main_function_with_bogus_args_type.zig
@@ -1,7 +0,0 @@
-pub fn main(args: [][]bogus) !void {_ = args;}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:23: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/stage1/obj/missing_function_name.zig
@@ -1,8 +0,0 @@
-fn () void {}
-export fn entry() usize { return @sizeOf(@TypeOf(f)); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:1: error: missing function name
test/cases/compile_errors/stage1/obj/multiple_function_definitions.zig
@@ -1,10 +0,0 @@
-fn a() void {}
-fn a() void {}
-export fn entry() void { a(); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:1: error: redeclaration of 'a'
-// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/normal_string_with_newline.zig
@@ -1,9 +0,0 @@
-const foo = "a
-b";
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:13: error: expected expression, found 'invalid bytes'
-// tmp.zig:1:15: note: invalid byte: '\n'
test/cases/compile_errors/stage1/obj/parameter_redeclaration.zig
@@ -1,10 +0,0 @@
-fn f(a : i32, a : i32) void {
-}
-export fn entry() void { f(1, 2); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:15: error: redeclaration of function parameter 'a'
-// tmp.zig:1:6: note: previous declaration here
test/cases/compile_errors/stage1/obj/pointer_arithmetic_on_pointer-to-array.zig
@@ -1,12 +0,0 @@
-export fn foo() void {
-    var x: [10]u8 = undefined;
-    var y = &x;
-    var z = y + 1;
-    _ = z;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:4:17: error: integer value 1 cannot be coerced to type '*[10]u8'
test/cases/compile_errors/stage1/obj/prevent_bad_implicit_casting_of_anyframe_types.zig
@@ -19,6 +19,6 @@ fn func() void {}
 // backend=stage1
 // target=native
 //
-// tmp.zig:3:28: error: expected type 'anyframe->i32', found 'anyframe'
-// tmp.zig:8:28: error: expected type 'anyframe->i32', found 'i32'
-// tmp.zig:13:29: error: expected type 'anyframe->i32', found '*@Frame(func)'
+// :3:28: error: expected type 'anyframe->i32', found 'anyframe'
+// :8:28: error: expected type 'anyframe->i32', found 'i32'
+// tmp.zig:13:29: error: expected type 'anyframe->i32', found '*@Frame(func)'
\ No newline at end of file
test/cases/compile_errors/stage1/obj/redefinition_of_enums.zig
@@ -1,9 +0,0 @@
-const A = enum {x};
-const A = enum {x};
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:1: error: redeclaration of 'A'
-// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/redefinition_of_global_variables.zig
@@ -1,9 +0,0 @@
-var a : i32 = 1;
-var a : i32 = 2;
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:1: error: redeclaration of 'a'
-// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/redefinition_of_struct.zig
@@ -1,9 +0,0 @@
-const A = struct { x : i32, };
-const A = struct { y : i32, };
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:1: error: redeclaration of 'A'
-// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/runtime_cast_to_union_which_has_non-void_fields.zig
@@ -1,20 +0,0 @@
-const Letter = enum { A, B, C };
-const Value = union(Letter) {
-    A: i32,
-    B,
-    C,
-};
-export fn entry() void {
-    foo(Letter.A);
-}
-fn foo(l: Letter) void {
-    var x: Value = l;
-    _ = x;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:11:20: error: runtime cast to union 'Value' which has non-void fields
-// tmp.zig:3:5: note: field 'A' has type 'i32'
test/cases/compile_errors/stage1/obj/saturating_arithmetic_does_not_allow_floats.zig
@@ -1,9 +0,0 @@
-export fn a() void {
-    _ = @as(f32, 1.0) +| @as(f32, 1.0);
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// error: invalid operands to binary expression: 'f32' and 'f32'
test/cases/compile_errors/stage1/obj/setAlignStack_outside_function.zig
@@ -1,9 +0,0 @@
-comptime {
-    @setAlignStack(16);
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: @setAlignStack outside function
test/cases/compile_errors/stage1/obj/setAlignStack_set_twice.zig
@@ -1,11 +0,0 @@
-export fn entry() void {
-    @setAlignStack(16);
-    @setAlignStack(16);
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:5: error: alignstack set twice
-// tmp.zig:2:5: note: first set here
test/cases/compile_errors/stage1/obj/setAlignStack_too_big.zig
@@ -1,9 +0,0 @@
-export fn entry() void {
-    @setAlignStack(511 + 1);
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: attempt to @setAlignStack(512); maximum is 256
test/cases/compile_errors/stage1/obj/switch_expression-non_exhaustive_integer_prongs.zig
@@ -1,12 +0,0 @@
-fn foo(x: u8) void {
-    switch (x) {
-        0 => {},
-    }
-}
-export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: switch must handle all possibilities
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u1.zig
@@ -1,14 +0,0 @@
-fn foo(x: u1) void {
-    switch (x) {
-        0 => {},
-        1 => {},
-        else => {},
-    }
-}
-export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:5:9: error: unreachable else prong, all cases already handled
test/cases/compile_errors/stage1/obj/switch_on_enum_with_1_field_with_no_prongs.zig
@@ -1,12 +0,0 @@
-const Foo = enum { M };
-
-export fn entry() void {
-    var f = Foo.M;
-    switch (f) {}
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:5:5: error: enumeration value 'Foo.M' not handled in switch
test/cases/compile_errors/stage1/obj/type_variables_must_be_constant.zig
@@ -7,4 +7,4 @@ export fn entry() foo {
 // backend=stage1
 // target=native
 //
-// tmp.zig:1:1: error: variable of type 'type' must be constant
+// :1:1: error: variable of type 'type' must be constant
test/cases/compile_errors/stage1/obj/undefined_as_field_type_is_rejected.zig
@@ -1,13 +0,0 @@
-const Foo = struct {
-    a: undefined,
-};
-export fn entry1() void {
-    const foo: Foo = undefined;
-    _ = foo;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:8: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/undefined_function_call.zig
@@ -1,9 +0,0 @@
-export fn a() void {
-    b();
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/stage1/obj/union_fields_with_value_assignments.zig
@@ -1,14 +0,0 @@
-const MultipleChoice = union {
-    A: i32 = 20,
-};
-export fn entry() void {
-    var x: MultipleChoice = undefined;
-    _ = x;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:24: error: explicitly valued tagged union missing integer tag type
-// tmp.zig:2:14: note: tag value specified here
test/cases/compile_errors/stage1/obj/union_with_0_fields.zig
@@ -1,7 +0,0 @@
-const Foo = union {};
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:13: error: union declarations must have at least one tag
test/cases/compile_errors/stage1/obj/unreachable_code-nested_returns.zig
@@ -1,10 +0,0 @@
-export fn a() i32 {
-    return return 1;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: unreachable code
-// tmp.zig:2:12: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/unreachable_code.zig
@@ -1,13 +0,0 @@
-export fn a() void {
-    return;
-    b();
-}
-
-fn b() void {}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:6: error: unreachable code
-// tmp.zig:2:5: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/use_of_undeclared_identifier.zig
@@ -1,9 +0,0 @@
-export fn f() void {
-    b = 3;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/stage1/obj/usingnamespace_with_wrong_type.zig
@@ -1,7 +0,0 @@
-usingnamespace void;
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:1:1: error: expected struct, enum, or union; found 'void'
test/cases/compile_errors/stage1/obj/variable_has_wrong_type.zig
@@ -1,10 +0,0 @@
-export fn f() i32 {
-    const a = "a";
-    return a;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:3:12: error: expected type 'i32', found '*const [1:0]u8'
test/cases/compile_errors/stage1/obj/variable_with_type_noreturn.zig
@@ -1,10 +0,0 @@
-export fn entry9() void {
-    var z: noreturn = return;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:5: error: unreachable code
-// tmp.zig:2:23: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/volatile_on_global_assembly.zig
@@ -1,9 +0,0 @@
-comptime {
-    asm volatile ("");
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:9: error: volatile is meaningless on global assembly
test/cases/compile_errors/stage1/test/bad_splat_type.zig
@@ -1,12 +0,0 @@
-export fn entry() void {
-    const c = 4;
-    var v = @splat(4, c);
-    _ = v;
-}
-
-// error
-// backend=stage1
-// target=native
-// is_test=1
-//
-// tmp.zig:3:23: error: vector element type must be integer, float, bool, or pointer; 'comptime_int' is invalid
test/cases/compile_errors/stage1/test/non-exhaustive_enum_marker_assigned_a_value.zig
@@ -1,20 +0,0 @@
-const A = enum {
-    a,
-    b,
-    _ = 1,
-};
-const B = enum {
-    a,
-    b,
-    _,
-};
-comptime { _ = A; _ = B; }
-
-// error
-// backend=stage1
-// target=native
-// is_test=1
-//
-// tmp.zig:4:9: error: '_' is used to mark an enum as non-exhaustive and cannot be assigned a value
-// tmp.zig:6:11: error: non-exhaustive enum missing integer tag type
-// tmp.zig:9:5: note: marked non-exhaustive here
test/cases/compile_errors/stage1/test/non-exhaustive_enums.zig
@@ -1,22 +0,0 @@
-const B = enum(u1) {
-    a,
-    _,
-    b,
-};
-const C = enum(u1) {
-    a,
-    b,
-    _,
-};
-pub export fn entry() void {
-    _ = B;
-    _ = C;
-}
-
-// error
-// backend=stage1
-// target=native
-// is_test=1
-//
-// tmp.zig:3:5: error: '_' field of non-exhaustive enum must be last
-// tmp.zig:6:11: error: non-exhaustive enum specifies every value
test/cases/compile_errors/stage1/test/reify_typeOf_with_no_arguments.zig
@@ -1,10 +0,0 @@
-export fn entry() void {
-    _ = @TypeOf();
-}
-
-// error
-// backend=stage1
-// target=native
-// is_test=1
-//
-// tmp.zig:2:9: error: expected at least 1 argument, found 0
test/cases/compile_errors/stage1/test/reject_extern_variables_with_initializers.zig
@@ -1,8 +0,0 @@
-extern var foo: int = 2;
-
-// error
-// backend=stage1
-// target=native
-// is_test=1
-//
-// tmp.zig:1:23: error: extern variables have no initializers
test/cases/compile_errors/stage1/test/return_invalid_type_from_test.zig
@@ -1,8 +0,0 @@
-test "example" { return 1; }
-
-// error
-// backend=stage1
-// target=native
-// is_test=1
-//
-// tmp.zig:1:25: error: expected type 'void', found 'comptime_int'
test/cases/compile_errors/stage1/test/access_invalid_typeInfo_decl.zig → test/cases/compile_errors/access_invalid_typeInfo_decl.zig
@@ -4,8 +4,8 @@ test "Crash" {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 // is_test=1
 //
-// tmp.zig:1:11: error: use of undeclared identifier 'B'
+// :1:11: error: use of undeclared identifier 'B'
test/cases/compile_errors/access_non-existent_member_of_error_set.zig
@@ -0,0 +1,12 @@
+const Foo = error{A};
+comptime {
+    const z = Foo.Bar;
+    _ = z;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:18: error: no error named 'Bar' in 'error{A}'
+// :1:13: note: error set declared here
test/cases/compile_errors/add_assign_on_undefined_value.zig
@@ -0,0 +1,10 @@
+comptime {
+    var a: i64 = undefined;
+    a += a;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:10: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/add_on_undefined_value.zig
@@ -0,0 +1,10 @@
+comptime {
+    var a: i64 = undefined;
+    _ = a + a;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:13: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/add_overflow_in_function_evaluation.zig → test/cases/compile_errors/add_overflow_in_function_evaluation.zig
@@ -6,7 +6,8 @@ fn add(a: u16, b: u16) u16 {
 export fn entry() usize { return @sizeOf(@TypeOf(y)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:14: error: operation caused overflow
+// :3:14: error: overflow of integer type 'u16' with value '65540'
+// :1:14: note: called from here
test/cases/compile_errors/stage1/obj/addition_with_non_numbers.zig → test/cases/compile_errors/addition_with_non_numbers.zig
@@ -6,7 +6,7 @@ const x = Foo {.field = 1} + Foo {.field = 2};
 export fn entry() usize { return @sizeOf(@TypeOf(x)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:28: error: invalid operands to binary expression: 'Foo' and 'Foo'
+// :4:28: error: invalid operands to binary expression: 'Struct' and 'Struct'
test/cases/compile_errors/address_of_number_literal.zig
@@ -0,0 +1,10 @@
+const x = 3;
+const y = &x;
+fn foo() *const i32 { return y; }
+export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:30: error: expected type '*const i32', found '*const comptime_int'
test/cases/compile_errors/stage1/obj/alignCast_expects_pointer_or_slice.zig → test/cases/compile_errors/alignCast_expects_pointer_or_slice.zig
@@ -3,7 +3,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:19: error: expected pointer or slice, found 'u32'
+// :2:19: error: expected pointer type, found 'u32'
test/cases/compile_errors/stage1/obj/alignment_of_enum_field_specified.zig → test/cases/compile_errors/alignment_of_enum_field_specified.zig
@@ -8,7 +8,7 @@ export fn entry1() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:7: error: expected ',' after field
+// :3:7: error: expected ',' after field
test/cases/compile_errors/stage1/obj/ambiguous_decl_reference.zig → test/cases/compile_errors/ambiguous_decl_reference.zig
@@ -13,9 +13,9 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:13: error: ambiguous reference
-// tmp.zig:7:9: note: declared here
-// tmp.zig:1:1: note: also declared here
+// :5:13: error: ambiguous reference
+// :7:9: note: declared here
+// :1:1: note: also declared here
test/cases/llvm/any_typed_null_to_any_typed_optional.zig → test/cases/compile_errors/any_typed_null_to_any_typed_optional.zig
@@ -8,4 +8,4 @@ pub fn main() void {
 // backend=stage2,llvm
 // target=x86_64-linux,x86_64-macos
 //
-// :3:21: error: expected *anyopaque, found ?usize
+// :3:21: error: expected type '*anyopaque', found '?usize'
test/cases/compile_errors/array_access_of_undeclared_identifier.zig
@@ -0,0 +1,9 @@
+export fn f() void {
+    i[i] = i[i];
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: use of undeclared identifier 'i'
test/cases/compile_errors/stage1/obj/array_concatenation_with_wrong_type.zig → test/cases/compile_errors/array_concatenation_with_wrong_type.zig
@@ -5,7 +5,7 @@ const a = derp ++ "foo";
 export fn entry() usize { return @sizeOf(@TypeOf(a)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:11: error: expected array, found 'usize'
+// :3:11: error: expected indexable; found 'usize'
test/cases/compile_errors/stage1/obj/asm_at_compile_time.zig → test/cases/compile_errors/asm_at_compile_time.zig
@@ -11,7 +11,7 @@ fn doSomeAsm() void {
 }
 
 // error
-// backend=stage1
+// backend=llvm
 // target=native
 //
-// tmp.zig:6:5: error: unable to evaluate constant expression
+// :6:5: error: unable to evaluate constant expression
test/cases/compile_errors/stage1/obj/assign_null_to_non-optional_pointer.zig → test/cases/compile_errors/assign_null_to_non-optional_pointer.zig
@@ -3,7 +3,7 @@ const a: *u8 = null;
 export fn entry() usize { return @sizeOf(@TypeOf(a)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:16: error: expected type '*u8', found '@Type(.Null)'
+// :1:16: error: expected type '*u8', found '@TypeOf(null)'
test/cases/compile_errors/stage1/obj/assign_through_constant_pointer.zig → test/cases/compile_errors/assign_through_constant_pointer.zig
@@ -4,7 +4,7 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:13: error: cannot assign to constant
+// :3:13: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/assign_through_constant_slice.zig → test/cases/compile_errors/assign_through_constant_slice.zig
@@ -4,7 +4,7 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:13: error: cannot assign to constant
+// :3:13: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/assign_to_constant_field.zig → test/cases/compile_errors/assign_to_constant_field.zig
@@ -7,7 +7,7 @@ export fn derp() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:6:15: error: cannot assign to constant
+// :6:15: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/assign_to_constant_variable.zig → test/cases/compile_errors/assign_to_constant_variable.zig
@@ -4,7 +4,7 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:9: error: cannot assign to constant
+// :3:9: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/assign_too_big_number_to_u16.zig → test/cases/compile_errors/assign_too_big_number_to_u16.zig
@@ -4,7 +4,7 @@ export fn foo() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:24: error: integer value 753664 cannot be coerced to type 'u16'
+// :2:24: error: type 'u16' cannot represent integer value '753664'
test/cases/compile_errors/assign_unreachable.zig
@@ -0,0 +1,11 @@
+export fn f() void {
+    const a = return;
+    _ = a;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: unreachable code
+// :2:15: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig → test/cases/compile_errors/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:30: error: @atomicStore atomic ordering must not be Acquire or AcqRel
+// :3:31: error: @atomicStore atomic ordering must not be Acquire or AcqRel
test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig → test/cases/compile_errors/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig
@@ -5,7 +5,7 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:81: error: failure atomic ordering must be no stricter than success
+// :4:81: error: failure atomic ordering must be no stricter than success
test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig → test/cases/compile_errors/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig
@@ -5,7 +5,7 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:58: error: success atomic ordering must be Monotonic or stricter
+// :4:58: error: success atomic ordering must be Monotonic or stricter
test/cases/compile_errors/atomic_orderings_of_fence_Acquire_or_stricter.zig
@@ -0,0 +1,9 @@
+export fn entry() void {
+    @fence(.Monotonic);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:13: error: atomic ordering must be Acquire or stricter
test/cases/compile_errors/stage1/obj/atomicrmw_with_bool_op_not_.Xchg.zig → test/cases/compile_errors/atomicrmw_with_bool_op_not_.Xchg.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:30: error: @atomicRmw with bool only allowed with .Xchg
+// :3:31: error: @atomicRmw with bool only allowed with .Xchg
test/cases/compile_errors/stage1/obj/atomicrmw_with_enum_op_not_.Xchg.zig → test/cases/compile_errors/atomicrmw_with_enum_op_not_.Xchg.zig
@@ -10,7 +10,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:9:27: error: @atomicRmw with enum only allowed with .Xchg
+// :9:28: error: @atomicRmw with enum only allowed with .Xchg
test/cases/compile_errors/stage1/obj/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig → test/cases/compile_errors/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:29: error: @atomicRmw with float only allowed with .Xchg, .Add and .Sub
+// :3:30: error: @atomicRmw with float only allowed with .Xchg, .Add, and .Sub
test/cases/compile_errors/stage1/obj/attempt_to_cast_enum_literal_to_error.zig → test/cases/compile_errors/attempt_to_cast_enum_literal_to_error.zig
@@ -5,7 +5,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:9: error: expected type 'error{Hi}', found '@Type(.EnumLiteral)'
+// :3:10: error: expected type 'error{Hi}', found '@TypeOf(.enum_literal)'
test/cases/compile_errors/attempt_to_close_over_comptime_variable_from_outer_scope.zig
@@ -0,0 +1,14 @@
+fn SimpleList(comptime L: usize) type {
+    var T = u8;
+    return struct {
+        array: [L]T,
+    };
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :4:19: error: mutable 'T' not accessible from here
+// :2:9: note: declared mutable here
+// :3:12: note: crosses namespace boundary here
test/cases/compile_errors/stage1/obj/attempt_to_create_17_bit_float_type.zig → test/cases/compile_errors/attempt_to_create_17_bit_float_type.zig
@@ -4,7 +4,7 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:16: error: 17-bit float unsupported
+// :3:9: error: 17-bit float unsupported
test/cases/compile_errors/attempted_double_ampersand.zig
@@ -0,0 +1,12 @@
+export fn entry(a: bool, b: bool) i32 {
+    if (a && b) {
+        return 1234;
+    }
+    return 5678;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:11: error: ambiguous use of '&&'; use 'and' for logical AND, or change whitespace to ' & &' for bitwise AND
test/cases/compile_errors/attempted_double_pipe_on_boolean_values.zig
@@ -0,0 +1,13 @@
+export fn entry(a: bool, b: bool) i32 {
+    if (a || b) {
+        return 1234;
+    }
+    return 5678;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:9: error: expected error set type, found 'bool'
+// :2:11: note: '||' merges error sets; 'or' performs boolean OR
test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_const_T_to_sliceT.zig → test/cases/compile_errors/attempted_implicit_cast_from_const_T_to_sliceT.zig
@@ -5,7 +5,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:23: error: expected type '[]u32', found '*const u32'
+// :3:22: error: expected type '[]u32', found '*const u32'
test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_T_to_slice_const_T.zig → test/cases/compile_errors/attempted_implicit_cast_from_T_to_slice_const_T.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:30: error: expected type '[*]const bool', found 'bool'
+// :2:30: error: expected type '[*]const bool', found 'bool'
test/cases/compile_errors/stage1/obj/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig → test/cases/compile_errors/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig
@@ -11,7 +11,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:8:5: error: use of undeclared identifier 'bogus'
+// :8:5: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/bad_import.zig
@@ -0,0 +1,7 @@
+const bogus = @import("bogus-does-not-exist.zig",);
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:23: error: unable to load '${DIR}bogus-does-not-exist.zig': FileNotFound
test/cases/compile_errors/bad_splat_type.zig
@@ -0,0 +1,11 @@
+export fn entry() void {
+    const c = 4;
+    var v = @splat(4, c);
+    _ = v;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:23: error: expected integer, float, bool, or pointer for the vector element type; found 'comptime_int'
test/cases/compile_errors/stage1/obj/binary_not_on_number_literal.zig → test/cases/compile_errors/binary_not_on_number_literal.zig
@@ -5,7 +5,7 @@ var block_aligned_stuff: usize = (4 + TINY_QUANTUM_SIZE) & ~(TINY_QUANTUM_SIZE -
 export fn entry() usize { return @sizeOf(@TypeOf(block_aligned_stuff)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:60: error: unable to perform binary not operation on type 'comptime_int'
+// :3:60: error: unable to perform binary not operation on type 'comptime_int'
test/cases/compile_errors/stage1/test/binary_OR_operator_on_error_sets.zig → test/cases/compile_errors/binary_OR_operator_on_error_sets.zig
@@ -6,8 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:2:18: error: invalid operands to binary expression: 'error{A}' and 'error{B}'
+// :2:18: error: invalid operands to binary bitwise expression: 'ErrorSet' and 'ErrorSet'
test/cases/compile_errors/bit_shifting_only_works_on_integer_types.zig
@@ -0,0 +1,10 @@
+export fn entry() void {
+    const x = &@as(u8, 1) << 10;
+    _ = x;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:15: error: bit shifting operation expected integer type, found '*const u8'
test/cases/compile_errors/bitCast_same_size_but_bit_count_mismatch.zig
@@ -0,0 +1,10 @@
+export fn entry(byte: u8) void {
+    var oops = @bitCast(u7, byte);
+    _ = oops;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:29: error: @bitCast size mismatch: destination type 'u7' has 7 bits but source type 'u8' has 8 bits
test/cases/compile_errors/bitCast_with_different_sizes_inside_an_expression.zig
@@ -0,0 +1,10 @@
+export fn entry() void {
+    var foo = (@bitCast(u8, @as(f32, 1.0)) == 0xf);
+    _ = foo;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:29: error: @bitCast size mismatch: destination type 'u8' has 8 bits but source type 'f32' has 32 bits
test/cases/compile_errors/bogus_method_call_on_slice.zig
@@ -0,0 +1,11 @@
+var self = "aoeu";
+fn f(m: []const u8) void {
+    m.copy(u8, self[0..], m);
+}
+export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:6: error: type '[]const u8' has no field or member function named 'copy'
test/cases/compile_errors/stage1/obj/branch_on_undefined_value.zig → test/cases/compile_errors/branch_on_undefined_value.zig
@@ -3,7 +3,7 @@ const x = if (undefined) true else false;
 export fn entry() usize { return @sizeOf(@TypeOf(x)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:15: error: use of undefined value here causes undefined behavior
+// :1:15: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/call_assigned_to_constant.zig → test/cases/compile_errors/call_assigned_to_constant.zig
@@ -17,8 +17,8 @@ export fn entry1() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:12:14: error: cannot assign to constant
-// tmp.zig:16:14: error: cannot assign to constant
+// :12:14: error: cannot assign to constant
+// :16:14: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/calling_var_args_extern_function_passing_array_instead_of_pointer.zig → test/cases/compile_errors/calling_var_args_extern_function_passing_array_instead_of_pointer.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 pub extern fn foo(format: *const u8, ...) void;
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:16: error: expected type '*const u8', found '[5:0]u8'
+// :2:8: error: expected type '*const u8', found '[5:0]u8'
test/cases/compile_errors/stage1/obj/cast_enum_literal_to_enum_but_it_doesnt_match.zig → test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig
@@ -8,8 +8,8 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:6:20: error: enum 'Foo' has no field named 'c'
-// tmp.zig:1:13: note: 'Foo' declared here
+// :6:21: error: enum 'tmp.Foo' has no field named 'c'
+// :1:13: note: enum declared here
test/cases/compile_errors/cast_negative_integer_literal_to_usize.zig
@@ -0,0 +1,10 @@
+export fn entry() void {
+    const x = @as(usize, -10);
+    _ = x;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:26: error: type 'usize' cannot represent integer value '-10'
test/cases/compile_errors/stage1/obj/cast_negative_value_to_unsigned_integer.zig → test/cases/compile_errors/cast_negative_value_to_unsigned_integer.zig
@@ -10,8 +10,8 @@ export fn entry1() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:22: error: attempt to cast negative value to unsigned integer
-// tmp.zig:8:27: error: cannot cast negative value -1 to unsigned integer type 'u32'
+// :3:36: error: type 'u32' cannot represent integer value '-1'
+// :8:27: error: type 'u32' cannot represent integer value '-1'
test/cases/compile_errors/cast_unreachable.zig
@@ -0,0 +1,13 @@
+fn f() i32 {
+    return @as(i32, return 1);
+}
+export fn entry() void { _ = f(); }
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:12: error: unreachable code
+// :2:21: note: control flow is diverted here
+// :2:5: error: unreachable code
+// :2:12: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/casting_bit_offset_pointer_to_regular_pointer.zig → test/cases/compile_errors/casting_bit_offset_pointer_to_regular_pointer.zig
@@ -12,10 +12,10 @@ fn bar(x: *const u3) u3 {
     return x.*;
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
+export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:8:26: error: expected type '*const u3', found '*align(:3:1) const u3'
+// :8:15: error: expected type '*const u3', found '*align(0:3:1) const u3'
test/cases/compile_errors/stage1/obj/chained_comparison_operators.zig → test/cases/compile_errors/chained_comparison_operators.zig
@@ -3,7 +3,7 @@ export fn a(value: u32) bool {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:22: error: comparison operators cannot be chained
+// :2:22: error: comparison operators cannot be chained
test/cases/compile_errors/stage1/obj/cmpxchg_with_float.zig → test/cases/compile_errors/cmpxchg_with_float.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:22: error: expected bool, integer, enum or pointer type, found 'f32'
+// :3:22: error: expected bool, integer, enum, or pointer type; found 'f32'
test/cases/compile_errors/colliding_invalid_top_level_functions.zig
@@ -0,0 +1,12 @@
+fn func() bogus {}
+fn func() bogus {}
+export fn entry() usize { return @sizeOf(@TypeOf(func)); }
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:1: error: redeclaration of 'func'
+// :1:1: note: other declaration here
+// :1:11: error: use of undeclared identifier 'bogus'
+// :2:11: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/stage1/test/combination_of_nosuspend_and_async.zig → test/cases/compile_errors/combination_of_nosuspend_and_async.zig
@@ -8,9 +8,8 @@ export fn entry() void {
 fn foo() void {}
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:4:9: error: suspend inside nosuspend block
-// tmp.zig:2:5: note: nosuspend block here
+// :4:9: error: suspend inside nosuspend block
+// :2:5: note: nosuspend block here
test/cases/compile_errors/stage1/obj/comparing_a_non-optional_pointer_against_null.zig → test/cases/compile_errors/comparing_a_non-optional_pointer_against_null.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:12: error: comparison of '*i32' with null
+// :3:12: error: comparison of '*i32' with null
test/cases/compile_errors/stage1/obj/comparison_operators_with_undefined_value.zig → test/cases/compile_errors/comparison_operators_with_undefined_value.zig
@@ -36,12 +36,12 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:11: error: use of undefined value here causes undefined behavior
-// tmp.zig:11:11: error: use of undefined value here causes undefined behavior
-// tmp.zig:17:11: error: use of undefined value here causes undefined behavior
-// tmp.zig:23:11: error: use of undefined value here causes undefined behavior
-// tmp.zig:29:11: error: use of undefined value here causes undefined behavior
-// tmp.zig:35:11: error: use of undefined value here causes undefined behavior
+// :5:11: error: use of undefined value here causes undefined behavior
+// :11:11: error: use of undefined value here causes undefined behavior
+// :17:11: error: use of undefined value here causes undefined behavior
+// :23:11: error: use of undefined value here causes undefined behavior
+// :29:11: error: use of undefined value here causes undefined behavior
+// :35:11: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/comparison_with_error_union_and_error_value.zig → test/cases/compile_errors/comparison_with_error_union_and_error_value.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:25: error: operator not allowed for type 'anyerror!i32'
+// :3:25: error: operator == not allowed for type 'anyerror!i32'
test/cases/compile_errors/stage1/obj/compile_error_in_struct_init_expression.zig → test/cases/compile_errors/compile_error_in_struct_init_expression.zig
@@ -10,7 +10,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:14: error: use of undeclared identifier 'crap'
+// :2:14: error: use of undeclared identifier 'crap'
test/cases/compile_errors/stage1/obj/compile_error_when_evaluating_return_type_of_inferred_error_set.zig → test/cases/compile_errors/compile_error_when_evaluating_return_type_of_inferred_error_set.zig
@@ -8,7 +8,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist'
+// :2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist'
test/cases/compile_errors/stage1/obj/compile_log_a_pointer_to_an_opaque_value.zig → test/cases/compile_errors/compile_log_a_pointer_to_an_opaque_value.zig
@@ -3,7 +3,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:5: error: found compile log statement
+// :2:5: error: found compile log statement
test/cases/compile_errors/stage1/obj/compile_log_statement_warning_deduplication_in_generic_fn.zig → test/cases/compile_errors/compile_log_statement_warning_deduplication_in_generic_fn.zig
@@ -8,7 +8,8 @@ fn inner(comptime n: usize) void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:7:39: error: found compile log statement
+// :7:39: error: found compile log statement
+// :7:39: note: also here
test/cases/compile_errors/stage1/obj/compileError_shows_traceback_of_references_that_caused_it.zig → test/cases/compile_errors/compileError_shows_traceback_of_references_that_caused_it.zig
@@ -8,7 +8,7 @@ export fn entry() i32 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:13: error: aoeu
+// :1:13: error: aoeu
test/cases/compile_errors/comptime_cast_enum_to_union_but_field_has_payload.zig
@@ -0,0 +1,18 @@
+const Letter = enum { A, B, C };
+const Value = union(Letter) {
+    A: i32,
+    B,
+    C,
+};
+export fn entry() void {
+    var x: Value = Letter.A;
+    _ = x;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :8:26: error: coercion from enum 'tmp.Letter' to union 'tmp.Value' must initialize 'i32' field 'A'
+// :3:5: note: field 'A' declared here
+// :2:15: note: union declared here
test/cases/compile_errors/stage1/obj/comptime_slice_of_undefined_pointer_non-zero_len.zig → test/cases/compile_errors/comptime_slice_of_undefined_pointer_non-zero_len.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:41: error: non-zero length slice of undefined pointer
+// :2:41: error: non-zero length slice of undefined pointer
test/cases/compile_errors/stage1/obj/comptime_struct_field_no_init_value.zig → test/cases/compile_errors/comptime_struct_field_no_init_value.zig
@@ -7,7 +7,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:5: error: comptime field without default initialization value
+// :2:5: error: comptime field without default initialization value
test/cases/compile_errors/const_is_a_statement_not_an_expression.zig
@@ -0,0 +1,9 @@
+export fn f() void {
+    (const a = 0);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:6: error: expected expression, found 'const'
test/cases/compile_errors/stage1/obj/container_init_with_non-type.zig → test/cases/compile_errors/container_init_with_non-type.zig
@@ -4,7 +4,7 @@ const a = zero{1};
 export fn entry() usize { return @sizeOf(@TypeOf(a)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:11: error: expected type 'type', found 'i32'
+// :2:15: error: expected type 'type', found 'i32'
test/cases/compile_errors/control_flow_uses_comptime_var_at_runtime.zig
@@ -0,0 +1,15 @@
+export fn foo() void {
+    comptime var i = 0;
+    while (i < 5) : (i += 1) {
+        bar();
+    }
+}
+
+fn bar() void { }
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:24: error: cannot store to comptime variable in non-inline loop
+// :3:5: note: non-inline loop here
test/cases/compile_errors/stage1/obj/declaration_between_fields.zig → test/cases/compile_errors/declaration_between_fields.zig
@@ -16,9 +16,9 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:9:5: error: declarations are not allowed between container fields
-// tmp.zig:5:5: note: field before declarations here
-// tmp.zig:12:5: note: field after declarations here
+// :9:5: error: declarations are not allowed between container fields
+// :5:5: note: field before declarations here
+// :12:5: note: field after declarations here
test/cases/compile_errors/declaration_with_same_name_as_primitive_must_use_special_syntax.zig
@@ -0,0 +1,12 @@
+const u8 = u16;
+export fn entry() void {
+    const a: u8 = 300;
+    _ = a;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:7: error: name shadows primitive 'u8'
+// :1:7: note: consider using @"u8" to disambiguate
test/cases/compile_errors/deduplicate_undeclared_identifier.zig
@@ -0,0 +1,13 @@
+export fn a() void {
+    x += 1;
+}
+export fn b() void {
+    x += 1;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: use of undeclared identifier 'x'
+// :5:5: error: use of undeclared identifier 'x'
test/cases/compile_errors/stage1/obj/dont_implicit_cast_double_pointer_to_anyopaque.zig → test/cases/compile_errors/dont_implicit_cast_double_pointer_to_anyopaque.zig
@@ -7,7 +7,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:29: error: expected type '*anyopaque', found '**u32'
+// :5:28: error: expected type '*anyopaque', found '**u32'
test/cases/compile_errors/stage1/obj/duplicate_boolean_switch_value.zig → test/cases/compile_errors/duplicate_boolean_switch_value.zig
@@ -16,8 +16,8 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:9: error: duplicate switch value
-// tmp.zig:13:9: error: duplicate switch value
+// :5:9: error: duplicate switch value
+// :13:9: error: duplicate switch value
test/cases/compile_errors/stage1/obj/duplicate_error_value_in_error_set.zig → test/cases/compile_errors/duplicate_error_value_in_error_set.zig
@@ -8,8 +8,8 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:5: error: duplicate error set field 'Bar'
-// tmp.zig:2:5: note: previous declaration here
+// :3:5: error: duplicate error set field 'Bar'
+// :2:5: note: previous declaration here
test/cases/compile_errors/stage1/obj/duplicate_field_in_struct_value_expression.zig → test/cases/compile_errors/duplicate_field_in_struct_value_expression.zig
@@ -14,7 +14,8 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:11:9: error: duplicate field
+// :11:10: error: duplicate field
+// :8:10: note: other field here
test/cases/compile_errors/stage1/obj/duplicate_struct_field.zig → test/cases/compile_errors/duplicate_struct_field.zig
@@ -8,8 +8,9 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:5: error: duplicate struct field: 'Bar'
-// tmp.zig:2:5: note: other field here
+// :3:5: error: duplicate struct field: 'Bar'
+// :2:5: note: other field here
+// :1:13: note: struct declared here
test/cases/compile_errors/stage1/obj/duplicate_union_field.zig → test/cases/compile_errors/duplicate_union_field.zig
@@ -8,8 +8,9 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:5: error: duplicate union field: 'Bar'
-// tmp.zig:2:5: note: other field here
+// :3:5: error: duplicate union field: 'Bar'
+// :2:5: note: other field here
+// :1:13: note: union declared here
test/cases/compile_errors/stage1/obj/embedFile_with_bogus_file.zig → test/cases/compile_errors/embedFile_with_bogus_file.zig
@@ -3,7 +3,7 @@ const resource = @embedFile("bogus.txt",);
 export fn entry() usize { return @sizeOf(@TypeOf(resource)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:29: error: unable to find '
+// :1:29: error: unable to open 'bogus.txt': FileNotFound
test/cases/compile_errors/empty_for_loop_body.zig
@@ -0,0 +1,9 @@
+export fn a() void {
+    for(undefined) |x|;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:23: error: expected block or assignment, found ';'
test/cases/compile_errors/empty_if_body.zig
@@ -0,0 +1,9 @@
+export fn a() void {
+    if(true);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:13: error: expected block or assignment, found ';'
test/cases/compile_errors/stage1/obj/empty_switch_on_an_integer.zig → test/cases/compile_errors/empty_switch_on_an_integer.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:5: error: switch must handle all possibilities
+// :3:5: error: switch must handle all possibilities
test/cases/compile_errors/empty_while_loop_body.zig
@@ -0,0 +1,9 @@
+export fn a() void {
+    while(true);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:16: error: expected block or assignment, found ';'
test/cases/compile_errors/stage1/obj/endless_loop_in_function_evaluation.zig → test/cases/compile_errors/endless_loop_in_function_evaluation.zig
@@ -6,7 +6,9 @@ fn fibonacci(x: i32) i32 {
 export fn entry() usize { return @sizeOf(@TypeOf(seventh_fib_number)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:21: error: evaluation exceeded 1000 backwards branches
+// :3:21: error: evaluation exceeded 1000 backwards branches
+// :3:21: note: called from here (999 times)
+// :1:37: note: called from here
test/cases/compile_errors/stage1/obj/enum_in_field_count_range_but_not_matching_tag.zig → test/cases/compile_errors/enum_in_field_count_range_but_not_matching_tag.zig
@@ -8,8 +8,8 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:6:13: error: enum 'Foo' has no tag matching integer value 0
-// tmp.zig:1:13: note: 'Foo' declared here
+// :6:13: error: enum 'tmp.Foo' has no tag with value '0'
+// :1:13: note: enum declared here
test/cases/compile_errors/enum_with_0_fields.zig
@@ -0,0 +1,7 @@
+const Foo = enum {};
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:13: error: enum declarations must have at least one tag
test/cases/compile_errors/stage1/obj/enum_with_declarations_unavailable_for_reify_type.zig → test/cases/compile_errors/enum_with_declarations_unavailable_for_reify_type.zig
@@ -3,7 +3,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:15: error: Type.Enum.decls must be empty for @Type
+// :2:9: error: reified enums must have no decls
test/cases/compile_errors/stage1/test/error_in_struct_initializer_doesnt_crash_the_compiler.zig → test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig
@@ -8,8 +8,9 @@ pub export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:4:9: error: duplicate struct field: 'e'
+// :4:9: error: duplicate struct field: 'e'
+// :3:9: note: other field here
+// :2:22: note: struct declared here
test/cases/compile_errors/stage1/obj/error_union_operator_with_non_error_set_LHS.zig → test/cases/compile_errors/error_union_operator_with_non_error_set_LHS.zig
@@ -5,7 +5,7 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:15: error: expected error set type, found type 'i32'
+// :2:15: error: expected error set type, found 'i32'
test/cases/compile_errors/stage1/test/errors_in_for_loop_bodies_are_propagated.zig → test/cases/compile_errors/errors_in_for_loop_bodies_are_propagated.zig
@@ -4,8 +4,7 @@ pub export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:3:26: error: expected 2 arguments, found 1
+// :3:26: error: expected 2 arguments, found 1
test/cases/compile_errors/exceeded_maximum_bit_width_of_integer.zig
@@ -0,0 +1,15 @@
+export fn entry1() void {
+    const T = u65536;
+    _ = T;
+}
+export fn entry2() void {
+    var x: i65536 = 1;
+    _ = x;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:15: error: primitive integer type 'u65536' exceeds maximum bit width of 65535
+// :6:12: error: primitive integer type 'i65536' exceeds maximum bit width of 65535
test/cases/compile_errors/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig
@@ -0,0 +1,9 @@
+export fn entry() i32 {
+    return @as(i32, 12.34);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: fractional component prevents float value '12.34' from coercion to type 'i32'
test/cases/compile_errors/stage1/obj/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig → test/cases/compile_errors/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig
@@ -7,7 +7,8 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:13: error: error.B not a member of error set 'Set2'
+// :5:13: error: 'error.B' not a member of error set 'error{A,C}'
+// :2:14: note: error set declared here
test/cases/compile_errors/stage1/test/export_with_empty_name_string.zig → test/cases/compile_errors/export_with_empty_name_string.zig
@@ -4,8 +4,7 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:3:5: error: exported symbol name cannot be empty
+// :3:21: error: exported symbol name cannot be empty
test/cases/compile_errors/stage1/obj/extern_union_field_missing_type.zig → test/cases/compile_errors/extern_union_field_missing_type.zig
@@ -7,7 +7,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:5: error: union field missing type
+// :2:5: error: union field missing type
test/cases/compile_errors/stage1/obj/extern_variable_has_no_type.zig → test/cases/compile_errors/extern_variable_has_no_type.zig
@@ -4,7 +4,7 @@ pub export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:8: error: unable to infer variable type
+// :1:8: error: unable to infer variable type
test/cases/compile_errors/field_type_supplied_in_an_enum.zig
@@ -0,0 +1,12 @@
+const Letter = enum {
+    A: void,
+    B,
+    C,
+};
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:8: error: enum fields do not have types
+// :1:16: note: consider 'union(enum)' here to make it a tagged union
test/cases/compile_errors/stage1/obj/fieldParentPtr-bad_field_name.zig → test/cases/compile_errors/fieldParentPtr-bad_field_name.zig
@@ -6,7 +6,8 @@ export fn foo(a: *i32) *Foo {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:33: error: struct 'Foo' has no field 'a'
+// :5:33: error: no field named 'a' in struct 'tmp.Foo'
+// :1:20: note: struct declared here
test/cases/compile_errors/stage1/obj/fieldParentPtr-non_struct.zig → test/cases/compile_errors/fieldParentPtr-non_struct.zig
@@ -4,7 +4,7 @@ export fn foo(a: *i32) *Foo {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:28: error: expected struct type, found 'i32'
+// :3:28: error: expected struct type, found 'i32'
test/cases/compile_errors/stage1/obj/function_call_assigned_to_incorrect_type.zig → test/cases/compile_errors/function_call_assigned_to_incorrect_type.zig
@@ -7,7 +7,7 @@ fn concat() [16]f32 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:17: error: expected type '[4]f32', found '[16]f32'
+// :3:17: error: expected type '[4]f32', found '[16]f32'
test/cases/compile_errors/stage1/obj/function_prototype_with_no_body.zig → test/cases/compile_errors/function_prototype_with_no_body.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:1: error: non-extern function has no body
+// :1:1: error: non-extern function has no body
test/cases/compile_errors/function_with_invalid_return_type.zig
@@ -0,0 +1,7 @@
+export fn foo() boid {}
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:17: error: use of undeclared identifier 'boid'
test/cases/compile_errors/stage1/obj/generic_function_call_assigned_to_incorrect_type.zig → test/cases/compile_errors/generic_function_call_assigned_to_incorrect_type.zig
@@ -7,7 +7,7 @@ fn myAlloc(comptime arg: type) anyerror!arg{
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:18: error: expected type '[]i32', found 'anyerror!i32
+// :3:18: error: expected type '[]i32', found 'anyerror!i32'
test/cases/compile_errors/stage1/obj/global_variable_initializer_must_be_constant_expression.zig → test/cases/compile_errors/global_variable_initializer_must_be_constant_expression.zig
@@ -3,7 +3,7 @@ const x = foo();
 export fn entry() i32 { return x; }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:11: error: unable to evaluate constant expression
+// :2:14: error: comptime call of extern function
test/cases/compile_errors/hasDecl_with_non-container.zig
@@ -0,0 +1,9 @@
+export fn entry() void {
+    _ = @hasDecl(i32, "hi");
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:18: error: expected struct, enum, union, or opaque; found 'i32'
test/cases/compile_errors/if_condition_is_bool_not_int.zig
@@ -0,0 +1,9 @@
+export fn f() void {
+    if (0) {}
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:9: error: expected type 'bool', found 'comptime_int'
test/cases/compile_errors/stage1/obj/ignored_assert-err-ok_return_value.zig → test/cases/compile_errors/ignored_assert-err-ok_return_value.zig
@@ -4,7 +4,7 @@ export fn foo() void {
 fn bar() anyerror!i32 { return 0; }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:11: error: expression value is ignored
+// :2:11: error: expression value is ignored
test/cases/compile_errors/stage1/obj/ignored_comptime_statement_value.zig → test/cases/compile_errors/ignored_comptime_statement_value.zig
@@ -3,7 +3,7 @@ export fn foo() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:15: error: expression value is ignored
+// :2:15: error: expression value is ignored
test/cases/compile_errors/stage1/obj/ignored_comptime_value.zig → test/cases/compile_errors/ignored_comptime_value.zig
@@ -3,7 +3,7 @@ export fn foo() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:5: error: expression value is ignored
+// :2:5: error: expression value is ignored
test/cases/compile_errors/stage1/obj/ignored_deferred_statement_value.zig → test/cases/compile_errors/ignored_deferred_statement_value.zig
@@ -3,7 +3,7 @@ export fn foo() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:12: error: expression value is ignored
+// :2:12: error: expression value is ignored
test/cases/compile_errors/stage1/obj/ignored_return_value.zig → test/cases/compile_errors/ignored_return_value.zig
@@ -4,7 +4,7 @@ export fn foo() void {
 fn bar() i32 { return 0; }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:8: error: expression value is ignored
+// :2:8: error: expression value is ignored
test/cases/compile_errors/ignored_statement_value.zig
@@ -0,0 +1,9 @@
+export fn foo() void {
+    1;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: expression value is ignored
test/cases/compile_errors/stage1/obj/implicit_semicolon-block_expr.zig → test/cases/compile_errors/implicit_semicolon-block_expr.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:11: error: expected ';' after statement
+// :4:11: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-block_statement.zig → test/cases/compile_errors/implicit_semicolon-block_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:9: error: expected ';' after statement
+// :4:9: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_expression.zig → test/cases/compile_errors/implicit_semicolon-comptime_expression.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:20: error: expected ';' after statement
+// :4:20: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_statement.zig → test/cases/compile_errors/implicit_semicolon-comptime_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:18: error: expected ';' after statement
+// :4:18: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-defer.zig → test/cases/compile_errors/implicit_semicolon-defer.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:15: error: expected ';' after statement
+// :4:15: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-for_expression.zig → test/cases/compile_errors/implicit_semicolon-for_expression.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:26: error: expected ';' after statement
+// :4:26: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-for_statement.zig → test/cases/compile_errors/implicit_semicolon-for_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:24: error: expected ';' or 'else' after statement
+// :4:24: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_expression.zig → test/cases/compile_errors/implicit_semicolon-if-else-if-else_expression.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:45: error: expected ';' after statement
+// :4:45: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_statement.zig → test/cases/compile_errors/implicit_semicolon-if-else-if-else_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:47: error: expected ';' after statement
+// :4:47: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_expression.zig → test/cases/compile_errors/implicit_semicolon-if-else-if_expression.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:37: error: expected ';' after statement
+// :4:37: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_statement.zig → test/cases/compile_errors/implicit_semicolon-if-else-if_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:37: error: expected ';' or 'else' after statement
+// :4:37: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_expression.zig → test/cases/compile_errors/implicit_semicolon-if-else_expression.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:28: error: expected ';' after statement
+// :4:28: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_statement.zig → test/cases/compile_errors/implicit_semicolon-if-else_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:28: error: expected ';' after statement
+// :4:28: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if_expression.zig → test/cases/compile_errors/implicit_semicolon-if_expression.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:20: error: expected ';' after statement
+// :4:20: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if_statement.zig → test/cases/compile_errors/implicit_semicolon-if_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:18: error: expected ';' or 'else' after statement
+// :4:18: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-test_expression.zig → test/cases/compile_errors/implicit_semicolon-test_expression.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:26: error: expected ';' after statement
+// :4:26: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-test_statement.zig → test/cases/compile_errors/implicit_semicolon-test_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:24: error: expected ';' or 'else' after statement
+// :4:24: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_expression.zig → test/cases/compile_errors/implicit_semicolon-while-continue_expression.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:28: error: expected ';' after statement
+// :4:28: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_statement.zig → test/cases/compile_errors/implicit_semicolon-while-continue_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:26: error: expected ';' or 'else' after statement
+// :4:26: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-while_expression.zig → test/cases/compile_errors/implicit_semicolon-while_expression.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:23: error: expected ';' after statement
+// :4:23: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-while_statement.zig → test/cases/compile_errors/implicit_semicolon-while_statement.zig
@@ -6,7 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:18: error: expected ';' or 'else' after statement
+// :4:18: error: expected ';' or 'else' after statement
test/cases/compile_errors/import_outside_package_path.zig
@@ -0,0 +1,9 @@
+comptime{
+    _ = @import("../a.zig");
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:17: error: import of file outside package path: '../a.zig'
test/cases/compile_errors/stage1/obj/inferred_array_size_invalid_here.zig → test/cases/compile_errors/inferred_array_size_invalid_here.zig
@@ -9,8 +9,8 @@ export fn entry2() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:16: error: unable to infer array size
-// tmp.zig:6:35: error: unable to infer array size
+// :2:16: error: unable to infer array size
+// :6:35: error: unable to infer array size
test/cases/compile_errors/inferring_error_set_of_function_pointer.zig
@@ -0,0 +1,9 @@
+comptime {
+    const z: ?fn()!void = null;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:19: error: function prototype may not have inferred error set
test/cases/compile_errors/stage1/obj/initializing_array_with_struct_syntax.zig → test/cases/compile_errors/initializing_array_with_struct_syntax.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:15: error: initializing array with struct syntax
+// :2:15: error: initializing array with struct syntax
test/cases/compile_errors/stage1/test/int-float_conversion_to_comptime_int-float.zig → test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig
@@ -8,9 +8,8 @@ export fn bar() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:3:35: error: unable to evaluate constant expression
-// tmp.zig:7:37: error: unable to evaluate constant expression
+// :3:35: error: unable to resolve comptime value
+// :7:37: error: unable to resolve comptime value
test/cases/compile_errors/stage1/obj/int_to_err_global_invalid_number.zig → test/cases/compile_errors/int_to_err_global_invalid_number.zig
@@ -9,7 +9,7 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:7:13: error: integer value 3 represents no error
+// :7:25: error: integer value '3' represents no error
test/cases/compile_errors/stage1/obj/int_to_err_non_global_invalid_number.zig → test/cases/compile_errors/int_to_err_non_global_invalid_number.zig
@@ -13,7 +13,8 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:11:13: error: error.B not a member of error set 'Set2'
+// :11:13: error: 'error.B' not a member of error set 'error{A,C}'
+// :5:14: note: error set declared here
test/cases/compile_errors/stage1/obj/integer_overflow_error.zig → test/cases/compile_errors/integer_overflow_error.zig
@@ -2,7 +2,7 @@ const x : u8 = 300;
 export fn entry() usize { return @sizeOf(@TypeOf(x)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:16: error: integer value 300 cannot be coerced to type 'u8'
+// :1:16: error: type 'u8' cannot represent integer value '300'
test/cases/compile_errors/stage1/obj/integer_underflow_error.zig → test/cases/compile_errors/integer_underflow_error.zig
@@ -3,7 +3,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// :2:78: error: operation caused overflow
+// :2:78: error: overflow of integer type 'usize' with value '-1'
test/cases/llvm/invalid_address_space_coercion.zig → test/cases/compile_errors/invalid_address_space_coercion.zig
@@ -10,4 +10,4 @@ pub fn main() void {
 // backend=stage2,llvm
 // target=x86_64-linux,x86_64-macos
 //
-// :2:12: error: expected *i32, found *addrspace(.gs) i32
+// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32'
test/cases/compile_errors/invalid_array_elem_ty.zig
@@ -9,4 +9,4 @@ pub export fn entry() void {
 // target=native
 // backend=stage2
 //
-// :4:1: error: expected type, found fn() type
+// :4:1: error: expected type 'type', found 'fn() type'
test/cases/compile_errors/stage1/test/invalid_assignments.zig → test/cases/compile_errors/invalid_assignments.zig
@@ -11,10 +11,9 @@ export fn entry4() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:3:6: error: invalid left-hand side to assignment
-// tmp.zig:7:7: error: invalid left-hand side to assignment
-// tmp.zig:10:7: error: invalid left-hand side to assignment
+// :3:6: error: invalid left-hand side to assignment
+// :7:7: error: invalid left-hand side to assignment
+// :10:7: error: invalid left-hand side to assignment
test/cases/compile_errors/invalid_break_expression.zig
@@ -0,0 +1,9 @@
+export fn f() void {
+    break;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: break expression outside loop
test/cases/compile_errors/stage1/obj/invalid_builtin_fn.zig → test/cases/compile_errors/invalid_builtin_fn.zig
@@ -3,7 +3,7 @@ fn f() @bogus(foo) {
 export fn entry() void { _ = f(); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:8: error: invalid builtin function: '@bogus'
+// :1:8: error: invalid builtin function: '@bogus'
test/cases/compile_errors/stage1/obj/invalid_comparison_for_function_pointers.zig → test/cases/compile_errors/invalid_comparison_for_function_pointers.zig
@@ -4,7 +4,7 @@ const invalid = foo > foo;
 export fn entry() usize { return @sizeOf(@TypeOf(invalid)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:21: error: operator not allowed for type 'fn() void'
+// :2:21: error: operator > not allowed for type 'fn() void'
test/cases/compile_errors/invalid_continue_expression.zig
@@ -0,0 +1,9 @@
+export fn f() void {
+    continue;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: continue expression outside loop
test/cases/compile_errors/stage1/obj/invalid_empty_unicode_escape.zig → test/cases/compile_errors/invalid_empty_unicode_escape.zig
@@ -3,7 +3,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:19: error: empty unicode escape sequence
+// :2:19: error: empty unicode escape sequence
test/cases/compile_errors/invalid_exponent_in_float_literal-1.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 0x1.0p1ab1;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:28: note: invalid byte: 'a'
test/cases/compile_errors/invalid_exponent_in_float_literal-2.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 0x1.0p50F;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:29: note: invalid byte: 'F'
test/cases/compile_errors/invalid_field_access_in_comptime.zig
@@ -0,0 +1,7 @@
+comptime { var x = doesnt_exist.whatever; _ = x; }
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:20: error: use of undeclared identifier 'doesnt_exist'
test/cases/compile_errors/stage1/obj/invalid_field_in_struct_value_expression.zig → test/cases/compile_errors/invalid_field_in_struct_value_expression.zig
@@ -13,7 +13,8 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:10:9: error: no member named 'foo' in struct 'A'
+// :10:10: error: no field named 'foo' in struct 'tmp.A'
+// :1:11: note: struct declared here
test/cases/compile_errors/stage1/test/invalid_float_casts.zig → test/cases/compile_errors/invalid_float_casts.zig
@@ -16,11 +16,10 @@ export fn qux() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:3:36: error: unable to evaluate constant expression
-// tmp.zig:7:21: error: expected integer type, found 'f32'
-// tmp.zig:11:26: error: expected int type, found 'f32'
-// tmp.zig:15:25: error: expected float type, found 'u32'
+// :3:36: error: unable to cast runtime value to 'comptime_float'
+// :7:21: error: expected integer type, found 'f32'
+// :11:26: error: expected integer type, found 'f32'
+// :15:25: error: expected float type, found 'u32'
test/cases/compile_errors/stage1/obj/invalid_float_literal.zig → test/cases/compile_errors/invalid_float_literal.zig
@@ -7,7 +7,7 @@ pub fn main() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:29: error: expected expression, found '.'
+// :5:29: error: expected expression, found '.'
test/cases/compile_errors/stage1/test/invalid_int_casts.zig → test/cases/compile_errors/invalid_int_casts.zig
@@ -16,11 +16,10 @@ export fn qux() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:3:32: error: unable to evaluate constant expression
-// tmp.zig:7:21: error: expected float type, found 'u32'
-// tmp.zig:11:26: error: expected float type, found 'u32'
-// tmp.zig:15:23: error: expected integer type, found 'f32'
+// :3:32: error: unable to cast runtime value to 'comptime_int'
+// :7:21: error: expected float type, found 'u32'
+// :11:26: error: expected float type, found 'u32'
+// :15:23: error: expected integer or vector, found 'f32'
test/cases/compile_errors/invalid_legacy_unicode_escape.zig
@@ -0,0 +1,10 @@
+export fn entry() void {
+    const a = '\U1234';
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:15: error: expected expression, found 'invalid bytes'
+// :2:18: note: invalid byte: '1'
test/cases/compile_errors/stage1/obj/invalid_member_of_builtin_enum.zig → test/cases/compile_errors/invalid_member_of_builtin_enum.zig
@@ -5,7 +5,8 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:29: error: container 'std.builtin.Mode' has no member called 'x86'
+// :3:30: error: enum 'builtin.Mode' has no member named 'x86'
+// :?:18: note: enum declared here
test/cases/compile_errors/stage1/test/invalid_non-exhaustive_enum_to_union.zig → test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig
@@ -19,9 +19,10 @@ export fn bar() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:12:16: error: runtime cast to union 'U' from non-exhaustive enum
-// tmp.zig:17:16: error: no tag by value 15
+// :12:16: error: runtime coercion to union 'tmp.U' from non-exhaustive enum
+// :1:11: note: enum declared here
+// :17:16: error: union 'tmp.U' has no tag with value '15'
+// :6:11: note: union declared here
test/cases/compile_errors/stage1/obj/invalid_pointer_for_var_type.zig → test/cases/compile_errors/invalid_pointer_for_var_type.zig
@@ -7,7 +7,7 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:13: error: unable to evaluate constant expression
+// :2:16: error: comptime call of extern function
test/cases/llvm/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig → test/cases/compile_errors/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig
@@ -10,4 +10,4 @@ pub fn main() void {
 // backend=stage2,llvm
 // target=x86_64-linux,x86_64-macos
 //
-// :2:12: error: expected *i32, found *addrspace(.gs) i32
+// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32'
test/cases/compile_errors/stage1/obj/invalid_pointer_syntax.zig → test/cases/compile_errors/invalid_pointer_syntax.zig
@@ -3,7 +3,7 @@ export fn foo() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:16: error: expected type expression, found ':'
+// :2:16: error: expected type expression, found ':'
test/cases/compile_errors/stage1/test/invalid_pointer_with_reify_type.zig → test/cases/compile_errors/invalid_pointer_with_reify_type.zig
@@ -12,8 +12,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:2:16: error: sentinels are only allowed on slices and unknown-length pointers
+// :2:9: error: sentinels are only allowed on slices and unknown-length pointers
test/cases/compile_errors/stage1/obj/invalid_shift_amount_error.zig → test/cases/compile_errors/invalid_shift_amount_error.zig
@@ -5,7 +5,7 @@ fn f() u16 {
 export fn entry() u16 { return f(); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:17: error: integer value 8 cannot be coerced to type 'u3'
+// :3:17: error: type 'u3' cannot represent integer value '8'
test/cases/compile_errors/stage1/obj/invalid_struct_field.zig → test/cases/compile_errors/invalid_struct_field.zig
@@ -12,8 +12,10 @@ export fn g() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:6: error: no member named 'foo' in struct 'A'
-// tmp.zig:10:16: error: no member named 'bar' in struct 'A'
+// :4:7: error: no field named 'foo' in struct 'tmp.A'
+// :1:11: note: struct declared here
+// :10:17: error: no field named 'bar' in struct 'tmp.A'
+// :1:11: note: struct declared here
test/cases/compile_errors/stage1/obj/invalid_type.zig → test/cases/compile_errors/invalid_type.zig
@@ -2,7 +2,7 @@ fn a() bogus {}
 export fn entry() void { _ = a(); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:8: error: use of undeclared identifier 'bogus'
+// :1:8: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/stage1/obj/invalid_type_used_in_array_type.zig → test/cases/compile_errors/invalid_type_used_in_array_type.zig
@@ -8,7 +8,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:12: error: use of undeclared identifier 'SomeNonexistentType'
+// :2:12: error: use of undeclared identifier 'SomeNonexistentType'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-1.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 0._0;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:23: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-10.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 1.0__0e-1;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:25: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-11.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 1.0e-1__0;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:28: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-12.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 0_x0.0;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:23: note: invalid byte: 'x'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-13.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 0x_0.0;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:23: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-14.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 0x0.0_p1;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:27: note: invalid byte: 'p'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-2.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 0_.0;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:23: note: invalid byte: '.'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-3.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 0.0_;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:25: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-4.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 1.0e_1;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:25: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-5.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 1.0e+_1;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:26: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-6.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 1.0e-_1;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:26: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-7.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 1.0e-1_;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:28: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-9.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: f128 = 1__0.0e-1;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:23: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_int_literal-1.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: u128 = 0010_;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:26: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_int_literal-2.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: u128 = 0b0010_;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:28: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_int_literal-3.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: u128 = 0o0010_;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:28: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_int_literal-4.zig
@@ -0,0 +1,11 @@
+fn main() void {
+    var bad: u128 = 0x0010_;
+    _ = bad;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:21: error: expected expression, found 'invalid bytes'
+// :2:28: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig → test/cases/compile_errors/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig
@@ -9,8 +9,8 @@ export fn f2(x: V(4, u32)) V(4, u32) {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:12: error: negation of type 'u32'
-// tmp.zig:8:12: error: negation of type 'u32'
+// :3:12: error: negation of type 'u32'
+// :8:12: error: negation of type '@Vector(4, u32)'
test/cases/compile_errors/stage1/obj/Issue_6823_dont_allow_._to_be_followed_by_.zig → test/cases/compile_errors/Issue_6823_dont_allow_._to_be_followed_by_.zig
@@ -4,7 +4,7 @@ fn foo() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:28: error: '.*' cannot be followed by '*'. Are you missing a space?
+// :2:28: error: '.*' cannot be followed by '*'. Are you missing a space?
test/cases/compile_errors/issue_9346_return_outside_of_function_scope.zig
@@ -0,0 +1,7 @@
+pub const empty = return 1;
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:19: error: 'return' outside function scope
test/cases/compile_errors/stage1/obj/labeled_break_not_found.zig → test/cases/compile_errors/labeled_break_not_found.zig
@@ -7,7 +7,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:20: error: label not found: 'outer'
+// :4:20: error: label not found: 'outer'
test/cases/compile_errors/stage1/obj/labeled_continue_not_found.zig → test/cases/compile_errors/labeled_continue_not_found.zig
@@ -8,7 +8,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:23: error: label not found: 'outer'
+// :5:23: error: label not found: 'outer'
test/cases/compile_errors/local_shadows_global_that_occurs_later.zig
@@ -0,0 +1,12 @@
+pub fn main() void {
+    var foo = true;
+    _ = foo;
+}
+fn foo() void {}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:9: error: local shadows declaration of 'foo'
+// :5:1: note: declared here
test/cases/compile_errors/local_variable_redeclaration.zig
@@ -0,0 +1,11 @@
+export fn f() void {
+    const a : i32 = 0;
+    var a = 0;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:9: error: redeclaration of local constant 'a'
+// :2:11: note: previous declaration here
test/cases/compile_errors/local_variable_redeclares_parameter.zig
@@ -0,0 +1,11 @@
+fn f(a : i32) void {
+    const a = 0;
+}
+export fn entry() void { f(1); }
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:11: error: redeclaration of function parameter 'a'
+// :1:6: note: previous declaration here
test/cases/compile_errors/stage1/obj/local_variable_shadowing_global.zig → test/cases/compile_errors/local_variable_shadowing_global.zig
@@ -7,8 +7,8 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:9: error: local shadows declaration of 'Bar'
-// tmp.zig:2:1: note: declared here
+// :5:9: error: local shadows declaration of 'Bar'
+// :2:1: note: declared here
test/cases/compile_errors/locally_shadowing_a_primitive_type.zig
@@ -0,0 +1,12 @@
+export fn foo() void {
+    const u8 = u16;
+    const a: u8 = 300;
+    _ = a;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:11: error: name shadows primitive 'u8'
+// :2:11: note: consider using @"u8" to disambiguate
test/cases/compile_errors/main_function_with_bogus_args_type.zig
@@ -0,0 +1,7 @@
+pub fn main(args: [][]bogus) !void {_ = args;}
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:23: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/stage1/exe/main_missing_name.zig → test/cases/compile_errors/main_missing_name.zig
@@ -1,8 +1,8 @@
 pub fn (main) void {}
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 // output_mode=Exe
 //
-// tmp.zig:1:5: error: missing function name
+// :1:5: error: missing function name
test/cases/compile_errors/stage1/obj/missing_boolean_switch_value.zig → test/cases/compile_errors/missing_boolean_switch_value.zig
@@ -12,8 +12,8 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:15: error: switch must handle all possibilities
-// tmp.zig:8:15: error: switch must handle all possibilities
+// :2:15: error: switch must handle all possibilities
+// :8:15: error: switch must handle all possibilities
test/cases/compile_errors/stage1/obj/missing_else_clause.zig → test/cases/compile_errors/missing_else_clause.zig
@@ -9,8 +9,8 @@ fn g(b: bool) void {
 export fn entry() void { f(true); g(true); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:21: error: expected type 'i32', found 'void'
-// tmp.zig:6:15: error: incompatible types: 'i32' and 'void'
+// :2:21: error: incompatible types: 'i32' and 'void'
+// :6:15: error: incompatible types: 'i32' and 'void'
test/cases/compile_errors/stage1/obj/missing_field_in_struct_value_expression.zig → test/cases/compile_errors/missing_field_in_struct_value_expression.zig
@@ -14,7 +14,8 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:9:17: error: missing field: 'x'
+// :9:17: error: missing struct field: x
+// :1:11: note: struct 'tmp.A' declared here
test/cases/compile_errors/missing_function_name.zig
@@ -0,0 +1,7 @@
+fn () void {}
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:1: error: missing function name
test/cases/compile_errors/stage1/obj/missing_param_name.zig → test/cases/compile_errors/missing_param_name.zig
@@ -2,7 +2,7 @@ fn f(i32) void {}
 export fn entry() usize { return @sizeOf(@TypeOf(f)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:6: error: missing parameter name
+// :1:6: error: missing parameter name
test/cases/compile_errors/stage1/obj/missing_parameter_name_of_generic_function.zig → test/cases/compile_errors/missing_parameter_name_of_generic_function.zig
@@ -5,7 +5,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:9: error: missing parameter name
+// :1:9: error: missing parameter name
test/cases/compile_errors/stage1/obj/misspelled_type_with_pointer_only_reference.zig → test/cases/compile_errors/misspelled_type_with_pointer_only_reference.zig
@@ -31,7 +31,7 @@ fn foo() void {
 export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:16: error: use of undeclared identifier 'JsonList'
+// :5:16: error: use of undeclared identifier 'JsonList'
test/cases/compile_errors/multiple_function_definitions.zig
@@ -0,0 +1,10 @@
+fn a() void {}
+fn a() void {}
+export fn entry() void { a(); }
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:1: error: redeclaration of 'a'
+// :1:1: note: other declaration here
test/cases/compile_errors/stage1/test/nested_vectors.zig → test/cases/compile_errors/nested_vectors.zig
@@ -6,8 +6,8 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:3:23: error: vector element type must be integer, float, bool, or pointer; '@Vector(4, u8)' is invalid
+// :3:16: error: expected integer, float, bool, or pointer for the vector element type; found '@Vector(4, u8)'
+
test/cases/compile_errors/stage1/obj/non-const_expression_function_call_with_struct_return_value_outside_function.zig → test/cases/compile_errors/non-const_expression_function_call_with_struct_return_value_outside_function.zig
@@ -11,7 +11,8 @@ var global_side_effect = false;
 export fn entry() usize { return @sizeOf(@TypeOf(a)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:6:26: error: unable to evaluate constant expression
+// :6:26: error: unable to resolve comptime value
+// :4:17: note: called from here
test/cases/compile_errors/stage1/obj/non-const_expression_in_struct_literal_outside_function.zig → test/cases/compile_errors/non-const_expression_in_struct_literal_outside_function.zig
@@ -7,7 +7,7 @@ extern fn get_it() i32;
 export fn entry() usize { return @sizeOf(@TypeOf(a)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:21: error: unable to evaluate constant expression
+// :4:27: error: comptime call of extern function
test/cases/compile_errors/stage1/obj/non-const_switch_number_literal.zig → test/cases/compile_errors/non-const_switch_number_literal.zig
@@ -11,7 +11,8 @@ fn bar() i32 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:17: error: cannot store runtime value in type 'comptime_int'
+// :2:15: error: value with comptime only type 'comptime_int' depends on runtime control flow
+// :2:26: note: runtime control flow here
test/cases/compile_errors/non-exhaustive_enum_field_non_final.zig
@@ -0,0 +1,11 @@
+const B = enum(u1) {
+    a,
+    _,
+    b,
+};
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:5: error: '_' field of non-exhaustive enum must be last
test/cases/compile_errors/non-exhaustive_enum_marker_assigned_a_value.zig
@@ -0,0 +1,19 @@
+const A = enum {
+    a,
+    b,
+    _ = 1,
+};
+const B = enum {
+    a,
+    b,
+    _,
+};
+comptime { _ = A; _ = B; }
+
+// error
+// backend=stage2
+// target=native
+//
+// :4:9: error: '_' is used to mark an enum as non-exhaustive and cannot be assigned a value
+// :6:11: error: non-exhaustive enum missing integer tag type
+// :9:5: note: marked non-exhaustive here
test/cases/compile_errors/non-exhaustive_enum_specifies_every_value.zig
@@ -0,0 +1,14 @@
+const C = enum(u1) {
+    a,
+    b,
+    _,
+};
+pub export fn entry() void {
+    _ = C;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:11: error: non-exhaustive enum specifies every value
test/cases/compile_errors/stage1/obj/non-extern_function_with_var_args.zig → test/cases/compile_errors/non-extern_function_with_var_args.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:14: error: expected type expression, found '...'
+// :1:14: error: expected type expression, found '...'
test/cases/compile_errors/stage1/obj/non-pure_function_returns_type.zig → test/cases/compile_errors/non-pure_function_returns_type.zig
@@ -18,7 +18,8 @@ export fn function_with_return_type_type() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:7: error: unable to evaluate constant expression
+// :3:7: error: unable to resolve comptime value
+// :16:19: note: called from here
test/cases/compile_errors/stage1/obj/non_float_passed_to_floatToInt.zig → test/cases/compile_errors/non_float_passed_to_floatToInt.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:32: error: expected float type, found 'i32'
+// :2:32: error: expected float type, found 'i32'
test/cases/compile_errors/stage1/obj/non_int_passed_to_intToFloat.zig → test/cases/compile_errors/non_int_passed_to_intToFloat.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:32: error: expected int type, found 'comptime_float'
+// :2:32: error: expected integer type, found 'comptime_float'
test/cases/compile_errors/stage1/obj/non_pointer_given_to_ptrToInt.zig → test/cases/compile_errors/non_pointer_given_to_ptrToInt.zig
@@ -3,7 +3,7 @@ export fn entry(x: i32) usize {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:22: error: expected pointer, found 'i32'
+// :2:22: error: expected pointer, found 'i32'
test/cases/compile_errors/normal_string_with_newline.zig
@@ -0,0 +1,9 @@
+const foo = "a
+b";
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:13: error: expected expression, found 'invalid bytes'
+// :1:15: note: invalid byte: '\n'
test/cases/compile_errors/stage1/obj/offsetOf-bad_field_name.zig → test/cases/compile_errors/offsetOf-bad_field_name.zig
@@ -6,7 +6,8 @@ export fn foo() usize {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:27: error: struct 'Foo' has no field 'a'
+// :5:27: error: struct 'tmp.Foo' has no field 'a'
+// :1:13: note: struct declared here
test/cases/compile_errors/stage1/obj/offsetOf-non_struct.zig → test/cases/compile_errors/offsetOf-non_struct.zig
@@ -4,7 +4,7 @@ export fn foo() usize {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:22: error: expected struct type, found 'i32'
+// :3:22: error: expected struct type, found 'i32'
test/cases/compile_errors/stage1/obj/only_equality_binary_operator_allowed_for_error_sets.zig → test/cases/compile_errors/only_equality_binary_operator_allowed_for_error_sets.zig
@@ -4,7 +4,7 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:23: error: operator not allowed for errors
+// :2:23: error: operator > not allowed for type 'error{A,B}'
test/cases/compile_errors/stage1/obj/out_of_range_comptime_int_passed_to_floatToInt.zig → test/cases/compile_errors/out_of_range_comptime_int_passed_to_floatToInt.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:31: error: integer value 200 cannot be coerced to type 'i8'
+// :2:31: error: float value '200' cannot be stored in integer type 'i8'
test/cases/compile_errors/parameter_redeclaration.zig
@@ -0,0 +1,10 @@
+fn f(a : i32, a : i32) void {
+}
+export fn entry() void { f(1, 2); }
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:15: error: redeclaration of function parameter 'a'
+// :1:6: note: previous declaration here
test/cases/compile_errors/stage1/obj/parameter_shadowing_global.zig → test/cases/compile_errors/parameter_shadowing_global.zig
@@ -5,8 +5,8 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:6: error: local shadows declaration of 'Foo'
-// tmp.zig:1:1: note: declared here
+// :2:6: error: local shadows declaration of 'Foo'
+// :1:1: note: declared here
test/cases/compile_errors/stage1/obj/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig → test/cases/compile_errors/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig
@@ -6,7 +6,7 @@ export fn entry() bool {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:32: error: expected type '*i32', found '*align(1) i32'
+// :4:31: error: expected type '*i32', found '*align(1) i32'
test/cases/compile_errors/pointer_arithmetic_on_pointer-to-array.zig
@@ -0,0 +1,14 @@
+export fn foo() void {
+    var x: [10]u8 = undefined;
+    var y = &x;
+    var z = y + 1;
+    _ = z;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :4:15: error: incompatible types: '*[10]u8' and 'comptime_int'
+// :4:13: note: type '*[10]u8' here
+// :4:17: note: type 'comptime_int' here
test/cases/llvm/pointer_with_different_address_spaces.zig → test/cases/compile_errors/pointer_with_different_address_spaces.zig
@@ -10,4 +10,4 @@ export fn entry2() void {
 // backend=stage2,llvm
 // target=x86_64-linux,x86_64-macos
 //
-// :2:12: error: expected *addrspace(.fs) i32, found *addrspace(.gs) i32
+// :2:12: error: expected type '*addrspace(.fs) i32', found '*addrspace(.gs) i32'
test/cases/llvm/pointers_with_different_address_spaces.zig → test/cases/compile_errors/pointers_with_different_address_spaces.zig
@@ -10,4 +10,4 @@ pub fn main() void {
 // backend=stage2,llvm
 // target=x86_64-linux,x86_64-macos
 //
-// :2:13: error: expected *i32, found *addrspace(.gs) i32
+// :2:13: error: expected type '*i32', found '*addrspace(.gs) i32'
test/cases/compile_errors/stage1/obj/popCount-non-integer.zig → test/cases/compile_errors/popCount-non-integer.zig
@@ -3,7 +3,7 @@ export fn entry(x: f32) u32 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:22: error: expected integer type, found 'f32'
+// :2:27: error: expected integer or vector, found 'f32'
test/cases/compile_errors/stage1/obj/primitives_take_precedence_over_declarations.zig → test/cases/compile_errors/primitives_take_precedence_over_declarations.zig
@@ -5,7 +5,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:19: error: integer value 300 cannot be coerced to type 'u8'
+// :3:19: error: type 'u8' cannot represent integer value '300'
test/cases/compile_errors/stage1/obj/ptrcast_to_non-pointer.zig → test/cases/compile_errors/ptrcast_to_non-pointer.zig
@@ -3,7 +3,7 @@ export fn entry(a: *i32) usize {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:21: error: expected pointer, found 'usize'
+// :2:21: error: expected pointer type, found 'usize'
test/cases/compile_errors/stage1/obj/ptrToInt_0_to_non_optional_pointer.zig → test/cases/compile_errors/ptrToInt_0_to_non_optional_pointer.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:13: error: pointer type '*i32' does not allow address zero
+// :2:29: error: pointer type '*i32' does not allow address zero
test/cases/compile_errors/stage1/test/reassign_to_slice_parameter.zig → test/cases/compile_errors/reassign_to_slice_parameter.zig
@@ -6,8 +6,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:2:10: error: cannot assign to constant
+// :2:10: error: cannot assign to constant
test/cases/compile_errors/redefinition_of_enums.zig
@@ -0,0 +1,9 @@
+const A = enum {x};
+const A = enum {x};
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:1: error: redeclaration of 'A'
+// :1:1: note: other declaration here
test/cases/compile_errors/redefinition_of_global_variables.zig
@@ -0,0 +1,9 @@
+var a : i32 = 1;
+var a : i32 = 2;
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:1: error: redeclaration of 'a'
+// :1:1: note: other declaration here
test/cases/compile_errors/redefinition_of_struct.zig
@@ -0,0 +1,9 @@
+const A = struct { x : i32, };
+const A = struct { y : i32, };
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:1: error: redeclaration of 'A'
+// :1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/refer_to_the_type_of_a_generic_function.zig → test/cases/compile_errors/refer_to_the_type_of_a_generic_function.zig
@@ -5,7 +5,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:5: error: use of undefined value here causes undefined behavior
+// :4:5: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/test/reference_to_const_data.zig → test/cases/compile_errors/reference_to_const_data.zig
@@ -20,11 +20,10 @@ export fn qux() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:3:14: error: cannot assign to constant
-// tmp.zig:7:13: error: cannot assign to constant
-// tmp.zig:11:13: error: cannot assign to constant
-// tmp.zig:19:13: error: cannot assign to constant
+// :3:14: error: cannot assign to constant
+// :7:13: error: cannot assign to constant
+// :11:13: error: cannot assign to constant
+// :19:13: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/referring_to_a_struct_that_is_invalid.zig → test/cases/compile_errors/referring_to_a_struct_that_is_invalid.zig
@@ -11,7 +11,8 @@ fn assert(ok: bool) void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:10:14: error: reached unreachable code
+// :10:14: error: reached unreachable code
+// :6:20: note: called from here
test/cases/compile_errors/stage1/test/reify_typeOf_with_incompatible_arguments.zig → test/cases/compile_errors/reify_typeOf_with_incompatible_arguments.zig
@@ -5,8 +5,9 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:4:9: error: incompatible types: 'f32' and 'u32'
+// :4:9: error: incompatible types: 'f32' and 'u32'
+// :4:17: note: type 'f32' here
+// :4:24: note: type 'u32' here
test/cases/compile_errors/reify_typeOf_with_no_arguments.zig
@@ -0,0 +1,9 @@
+export fn entry() void {
+    _ = @TypeOf();
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:9: error: expected at least 1 argument, found 0
test/cases/compile_errors/stage1/test/reject_extern_function_definitions_with_body.zig → test/cases/compile_errors/reject_extern_function_definitions_with_body.zig
@@ -3,8 +3,7 @@ extern "c" fn definitelyNotInLibC(a: i32, b: i32) i32 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:1:1: error: extern functions have no body
+// :1:1: error: extern functions have no body
test/cases/compile_errors/reject_extern_variables_with_initializers.zig
@@ -0,0 +1,7 @@
+extern var foo: int = 2;
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:23: error: extern variables have no initializers
test/cases/compile_errors/stage1/test/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig → test/cases/compile_errors/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig
@@ -7,8 +7,8 @@ test "1" {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 // is_test=1
 //
-// tmp.zig:2:12: error: use of undeclared identifier 'Q'
+// :2:12: error: use of undeclared identifier 'Q'
test/cases/compile_errors/stage1/obj/return_from_defer_expression.zig → test/cases/compile_errors/return_from_defer_expression.zig
@@ -15,7 +15,7 @@ pub fn maybeInt() ?i32 {
 export fn entry() usize { return @sizeOf(@TypeOf(testTrickyDefer)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:11: error: 'try' not allowed inside defer expression
+// :4:11: error: 'try' not allowed inside defer expression
test/cases/compile_errors/return_invalid_type_from_test.zig
@@ -0,0 +1,8 @@
+test "example" { return 1; }
+
+// error
+// backend=stage2
+// target=native
+// is_test=1
+//
+// :1:25: error: expected type 'void', found 'comptime_int'
test/cases/compile_errors/runtime_cast_to_union_which_has_non-void_fields.zig
@@ -0,0 +1,23 @@
+const Letter = enum { A, B, C };
+const Value = union(Letter) {
+    A: i32,
+    B,
+    C,
+};
+export fn entry() void {
+    foo(Letter.A);
+}
+fn foo(l: Letter) void {
+    var x: Value = l;
+    _ = x;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :11:20: error: runtime coercion from enum 'tmp.Letter' to union 'tmp.Value' which has non-void fields
+// :3:5: note: field 'A' has type 'i32'
+// :4:5: note: field 'B' has type 'void'
+// :5:5: note: field 'C' has type 'void'
+// :2:15: note: union declared here
test/cases/compile_errors/saturating_arithmetic_does_not_allow_floats.zig
@@ -0,0 +1,9 @@
+export fn a() void {
+    _ = @as(f32, 1.0) +| @as(f32, 1.0);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:23: error: invalid operands to binary expression: 'Float' and 'Float'
test/cases/compile_errors/stage1/obj/setAlignStack_in_naked_function.zig → test/cases/compile_errors/setAlignStack_in_naked_function.zig
@@ -3,7 +3,7 @@ export fn entry() callconv(.Naked) void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:5: error: @setAlignStack in naked function
+// :2:5: error: @setAlignStack in naked function
test/cases/compile_errors/setAlignStack_outside_function.zig
@@ -0,0 +1,9 @@
+comptime {
+    @setAlignStack(16);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: @setAlignStack outside function body
test/cases/compile_errors/setAlignStack_set_twice.zig
@@ -0,0 +1,11 @@
+export fn entry() void {
+    @setAlignStack(16);
+    @setAlignStack(16);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:5: error: multiple @setAlignStack in the same function body
+// :2:5: note: other instance here
test/cases/compile_errors/setAlignStack_too_big.zig
@@ -0,0 +1,9 @@
+export fn entry() void {
+    @setAlignStack(511 + 1);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: attempt to @setAlignStack(512); maximum is 256
test/cases/compile_errors/stage1/obj/setting_a_section_on_a_local_variable.zig → test/cases/compile_errors/setting_a_section_on_a_local_variable.zig
@@ -4,7 +4,7 @@ export fn entry() i32 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:30: error: cannot set section of local variable 'foo'
+// :2:30: error: cannot set section of local variable 'foo'
test/cases/compile_errors/stage1/obj/shifting_RHS_is_log2_of_LHS_int_bit_width.zig → test/cases/compile_errors/shifting_RHS_is_log2_of_LHS_int_bit_width.zig
@@ -3,7 +3,7 @@ export fn entry(x: u8, y: u8) u8 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:17: error: expected type 'u3', found 'u8'
+// :2:17: error: expected type 'u3', found 'u8'
test/cases/compile_errors/stage1/obj/slicing_single-item_pointer.zig → test/cases/compile_errors/slicing_single-item_pointer.zig
@@ -4,7 +4,7 @@ export fn entry(ptr: *i32) void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:22: error: slice of single-item pointer
+// :2:22: error: slice of single-item pointer
test/cases/compile_errors/stage1/obj/struct_field_missing_type.zig → test/cases/compile_errors/struct_field_missing_type.zig
@@ -7,7 +7,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:5: error: struct field missing type
+// :2:5: error: struct field missing type
test/cases/compile_errors/stage1/obj/struct_init_syntax_for_array.zig → test/cases/compile_errors/struct_init_syntax_for_array.zig
@@ -4,7 +4,7 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:13: error: initializing array with struct syntax
+// :1:13: error: initializing array with struct syntax
test/cases/compile_errors/stage1/obj/struct_with_declarations_unavailable_for_reify_type.zig → test/cases/compile_errors/struct_with_declarations_unavailable_for_reify_type.zig
@@ -3,7 +3,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:15: error: Type.Struct.decls must be empty for @Type
+// :2:9: error: reified structs must have no decls
test/cases/compile_errors/stage1/obj/struct_with_invalid_field.zig → test/cases/compile_errors/struct_with_invalid_field.zig
@@ -24,7 +24,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:14:17: error: use of undeclared identifier 'HeaderValue'
+// :14:17: error: use of undeclared identifier 'HeaderValue'
test/cases/compile_errors/stage1/obj/suspend_inside_suspend_block.zig → test/cases/compile_errors/suspend_inside_suspend_block.zig
@@ -9,8 +9,8 @@ fn foo() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:6:9: error: cannot suspend inside suspend block
-// tmp.zig:5:5: note: other suspend block here
+// :6:9: error: cannot suspend inside suspend block
+// :5:5: note: other suspend block here
test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong.zig → test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig
@@ -14,11 +14,11 @@ fn f(n: Number) i32 {
     }
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(f)); }
+export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:13:15: error: duplicate switch value
-// tmp.zig:10:15: note: other value here
+// :13:15: error: duplicate switch value
+// :10:15: note: previous value here
test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong_when_else_present.zig → test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig
@@ -15,11 +15,11 @@ fn f(n: Number) i32 {
     }
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(f)); }
+export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:13:15: error: duplicate switch value
-// tmp.zig:10:15: note: other value here
+// :13:15: error: duplicate switch value
+// :10:15: note: previous value here
test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type.zig → test/cases/compile_errors/switch_expression-duplicate_type.zig
@@ -10,8 +10,8 @@ fn foo(comptime T: type, x: T) u8 {
 export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:6:9: error: duplicate switch value
-// tmp.zig:4:9: note: previous value here
+// :6:9: error: duplicate switch value
+// :4:9: note: previous value here
test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type_struct_alias.zig → test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig
@@ -14,8 +14,8 @@ fn foo(comptime T: type, x: T) u8 {
 export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:10:9: error: duplicate switch value
-// tmp.zig:8:9: note: previous value here
+// :10:9: error: duplicate switch value
+// :8:9: note: previous value here
test/cases/compile_errors/stage1/obj/switch_expression-missing_enumeration_prong.zig → test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig
@@ -12,10 +12,12 @@ fn f(n: Number) i32 {
     }
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(f)); }
+export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:8:5: error: enumeration value 'Number.Four' not handled in switch
+// :8:5: error: switch must handle all possibilities
+// :8:5: note: unhandled enumeration value: 'Four'
+// :1:16: note: enum 'tmp.Number' declared here
test/cases/compile_errors/stage1/obj/switch_expression-multiple_else_prongs.zig → test/cases/compile_errors/switch_expression-multiple_else_prongs.zig
@@ -10,7 +10,8 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:9: error: multiple else prongs in switch expression
+// :5:9: error: multiple else prongs in switch expression
+// :4:9: note: previous else prong here
test/cases/compile_errors/switch_expression-non_exhaustive_integer_prongs.zig
@@ -0,0 +1,12 @@
+fn foo(x: u8) void {
+    switch (x) {
+        0 => {},
+    }
+}
+export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: switch must handle all possibilities
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_enum.zig → test/cases/compile_errors/switch_expression-unreachable_else_prong_enum.zig
@@ -15,10 +15,10 @@ fn foo(x: u8) void {
     }
 }
 
-export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
+export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:14:9: error: unreachable else prong, all cases already handled
+// :14:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_i8.zig → test/cases/compile_errors/switch_expression-unreachable_else_prong_range_i8.zig
@@ -8,10 +8,10 @@ fn foo(x: i8) void {
         else => {},
     }
 }
-export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
+export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:8:9: error: unreachable else prong, all cases already handled
+// :8:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_u8.zig → test/cases/compile_errors/switch_expression-unreachable_else_prong_range_u8.zig
@@ -8,10 +8,10 @@ fn foo(x: u8) void {
         else => {},
     }
 }
-export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
+export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:8:9: error: unreachable else prong, all cases already handled
+// :8:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/switch_expression-unreachable_else_prong_u1.zig
@@ -0,0 +1,14 @@
+fn foo(x: u1) void {
+    switch (x) {
+        0 => {},
+        1 => {},
+        else => {},
+    }
+}
+export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
+
+// error
+// backend=stage2
+// target=native
+//
+// :5:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u2.zig → test/cases/compile_errors/switch_expression-unreachable_else_prong_u2.zig
@@ -7,10 +7,10 @@ fn foo(x: u2) void {
         else => {},
     }
 }
-export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
+export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:7:9: error: unreachable else prong, all cases already handled
+// :7:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig
@@ -0,0 +1,14 @@
+const Foo = enum { M };
+
+export fn entry() void {
+    var f = Foo.M;
+    switch (f) {}
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :5:5: error: switch must handle all possibilities
+// :5:5: note: unhandled enumeration value: 'M'
+// :1:13: note: enum 'tmp.Foo' declared here
test/cases/compile_errors/stage1/test/switching_with_exhaustive_enum_has___prong_.zig → test/cases/compile_errors/switching_with_exhaustive_enum_has___prong_.zig
@@ -12,8 +12,8 @@ pub export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:7:5: error: switch on exhaustive enum has `_` prong
+// :7:5: error: '_' prong only allowed when switching on non-exhaustive enums
+// :10:11: note: '_' prong here
test/cases/compile_errors/stage1/test/tagName_on_invalid_value_of_non-exhaustive_enum.zig → test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig
@@ -4,8 +4,9 @@ test "enum" {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 // is_test=1
 //
-// tmp.zig:3:18: error: no tag by value 5
+// :3:9: error: no field with value '5' in enum 'test.enum.E'
+// :1:1: note: declared here
test/cases/compile_errors/stage1/obj/threadlocal_qualifier_on_const.zig → test/cases/compile_errors/threadlocal_qualifier_on_const.zig
@@ -4,7 +4,7 @@ export fn entry() i32 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:1: error: threadlocal variable cannot be constant
+// :1:1: error: threadlocal variable cannot be constant
test/cases/compile_errors/stage1/obj/truncate_sign_mismatch.zig → test/cases/compile_errors/truncate_sign_mismatch.zig
@@ -16,10 +16,10 @@ export fn entry4() u8 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:26: error: expected signed integer type, found 'u32'
-// tmp.zig:7:26: error: expected unsigned integer type, found 'i32'
-// tmp.zig:11:26: error: expected signed integer type, found 'u32'
-// tmp.zig:15:26: error: expected unsigned integer type, found 'i32'
+// :3:26: error: expected signed integer type, found 'u32'
+// :7:26: error: expected unsigned integer type, found 'i32'
+// :11:26: error: expected signed integer type, found 'u32'
+// :15:26: error: expected unsigned integer type, found 'i32'
test/cases/compile_errors/stage1/obj/try_in_function_with_non_error_return_type.zig → test/cases/compile_errors/try_in_function_with_non_error_return_type.zig
@@ -4,7 +4,7 @@ export fn f() void {
 fn something() anyerror!void { }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:5: error: expected type 'void', found 'anyerror'
+// :2:5: error: expected type 'void', found 'anyerror'
test/cases/compile_errors/stage1/test/type_mismatch_in_C_prototype_with_varargs.zig → test/cases/compile_errors/type_mismatch_in_C_prototype_with_varargs.zig
@@ -7,8 +7,7 @@ export fn main() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
-// is_test=1
 //
-// tmp.zig:5:22: error: expected type 'fn([*c]u8, ...) callconv(.C) void', found 'fn([*:0]u8, ...) callconv(.C) void'
+// :5:22: error: expected type 'fn([*c]u8, ...) callconv(.C) void', found 'fn([*:0]u8, ...) callconv(.C) void'
test/cases/compile_errors/stage1/obj/undeclared_identifier.zig → test/cases/compile_errors/undeclared_identifier.zig
@@ -5,7 +5,7 @@ export fn a() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:5: error: use of undeclared identifier 'b'
+// :3:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/stage1/obj/undeclared_identifier_error_should_mark_fn_as_impure.zig → test/cases/compile_errors/undeclared_identifier_error_should_mark_fn_as_impure.zig
@@ -6,7 +6,7 @@ fn test_a_thing() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:5:5: error: use of undeclared identifier 'bad_fn_call'
+// :5:5: error: use of undeclared identifier 'bad_fn_call'
test/cases/compile_errors/stage1/obj/undeclared_identifier_in_unanalyzed_branch.zig → test/cases/compile_errors/undeclared_identifier_in_unanalyzed_branch.zig
@@ -5,7 +5,7 @@ export fn a() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:9: error: use of undeclared identifier 'lol_this_doesnt_exist'
+// :3:9: error: use of undeclared identifier 'lol_this_doesnt_exist'
test/cases/compile_errors/undefined_as_field_type_is_rejected.zig
@@ -0,0 +1,9 @@
+export fn a() void {
+    b();
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/undefined_function_call.zig
@@ -0,0 +1,9 @@
+export fn a() void {
+    b();
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/stage1/obj/underscore_is_not_a_declarable_symbol.zig → test/cases/compile_errors/underscore_is_not_a_declarable_symbol.zig
@@ -4,7 +4,7 @@ export fn f1() usize {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:9: error: '_' used as an identifier without @"_" syntax
+// :2:9: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_for.zig → test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig
@@ -7,7 +7,7 @@ export fn returns() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:20: error: '_' used as an identifier without @"_" syntax
+// :4:20: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while.zig → test/cases/compile_errors/underscore_should_not_be_usable_inside_while.zig
@@ -10,7 +10,7 @@ fn optionalReturn() ?u32 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:4:20: error: '_' used as an identifier without @"_" syntax
+// :4:20: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while_else.zig → test/cases/compile_errors/underscore_should_not_be_usable_inside_while_else.zig
@@ -12,7 +12,7 @@ fn optionalReturnError() !?u32 {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:6:17: error: '_' used as an identifier without @"_" syntax
+// :6:17: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/union_fields_with_value_assignments.zig
@@ -0,0 +1,7 @@
+const Foo = union {};
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:13: error: union declarations must have at least one tag
test/cases/compile_errors/union_with_0_fields.zig
@@ -0,0 +1,7 @@
+const Foo = union {};
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:13: error: union declarations must have at least one tag
test/cases/compile_errors/stage1/obj/union_with_specified_enum_omits_field.zig → test/cases/compile_errors/union_with_specified_enum_omits_field.zig
@@ -12,8 +12,9 @@ export fn entry() usize {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:6:17: error: enum field missing: 'C'
-// tmp.zig:4:5: note: declared here
+// :6:1: error: enum field(s) missing in union
+// :4:5: note: field 'C' missing, declared here
+// :1:16: note: enum declared here
test/cases/compile_errors/stage1/obj/unreachable_code-double_break.zig → test/cases/compile_errors/unreachable_code-double_break.zig
@@ -2,11 +2,12 @@ export fn a() void {
     const b = blk: {
         break :blk break :blk @as(u32, 1);
     };
+    _ = b;
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:9: error: unreachable code
-// tmp.zig:3:20: note: control flow is diverted here
+// :3:9: error: unreachable code
+// :3:20: note: control flow is diverted here
test/cases/compile_errors/unreachable_code-nested_returns.zig
@@ -0,0 +1,10 @@
+export fn a() i32 {
+    return return 1;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: unreachable code
+// :2:12: note: control flow is diverted here
test/cases/compile_errors/unreachable_code.zig
@@ -0,0 +1,13 @@
+export fn a() void {
+    return;
+    b();
+}
+
+fn b() void {}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:6: error: unreachable code
+// :2:5: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/unreachable_variable.zig → test/cases/compile_errors/unreachable_variable.zig
@@ -4,7 +4,7 @@ export fn f() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:25: error: expected type 'noreturn', found 'void'
+// :2:25: error: expected type 'noreturn', found 'void'
test/cases/compile_errors/stage1/obj/unreachable_with_return.zig → test/cases/compile_errors/unreachable_with_return.zig
@@ -2,7 +2,7 @@ fn a() noreturn {return;}
 export fn entry() void { a(); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:18: error: expected type 'noreturn', found 'void'
+// :1:18: error: expected type 'noreturn', found 'void'
test/cases/compile_errors/stage1/obj/use_invalid_number_literal_as_array_index.zig → test/cases/compile_errors/use_invalid_number_literal_as_array_index.zig
@@ -5,7 +5,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:1: error: unable to infer variable type
+// :1:1: error: variable of type 'comptime_int' must be const or comptime
test/cases/compile_errors/use_of_undeclared_identifier.zig
@@ -0,0 +1,9 @@
+export fn f() void {
+    b = 3;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/stage1/obj/using_invalid_types_in_function_call_raises_an_error.zig → test/cases/compile_errors/using_invalid_types_in_function_call_raises_an_error.zig
@@ -5,7 +5,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:1:20: error: enum declarations must have at least one tag
+// :1:20: error: enum declarations must have at least one tag
test/cases/compile_errors/usingnamespace_with_wrong_type.zig
@@ -0,0 +1,7 @@
+usingnamespace void;
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:1: error: type void has no namespace
test/cases/compile_errors/variable_has_wrong_type.zig
@@ -0,0 +1,10 @@
+export fn f() i32 {
+    const a = "a";
+    return a;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:12: error: expected type 'i32', found '*const [1:0]u8'
test/cases/compile_errors/stage1/obj/variable_initialization_compile_error_then_referenced.zig → test/cases/compile_errors/variable_initialization_compile_error_then_referenced.zig
@@ -13,7 +13,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:12: error: use of undeclared identifier 'T'
+// :2:12: error: use of undeclared identifier 'T'
test/cases/compile_errors/variable_with_type_noreturn.zig
@@ -0,0 +1,11 @@
+export fn entry9() void {
+    var z: noreturn = return;
+    _ = z;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: unreachable code
+// :2:23: note: control flow is diverted here
test/cases/compile_errors/volatile_on_global_assembly.zig
@@ -0,0 +1,9 @@
+comptime {
+    asm volatile ("");
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:9: error: volatile is meaningless on global assembly
test/cases/compile_errors/stage1/obj/while_expected_bool_got_error_union.zig → test/cases/compile_errors/while_expected_bool_got_error_union.zig
@@ -4,7 +4,7 @@ export fn foo() void {
 fn bar() anyerror!i32 { return 1; }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:15: error: expected type 'bool', found 'anyerror!i32'
+// :2:15: error: expected type 'bool', found 'anyerror!i32'
test/cases/compile_errors/stage1/obj/while_expected_bool_got_optional.zig → test/cases/compile_errors/while_expected_bool_got_optional.zig
@@ -4,7 +4,7 @@ export fn foo() void {
 fn bar() ?i32 { return 1; }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:15: error: expected type 'bool', found '?i32'
+// :2:15: error: expected type 'bool', found '?i32'
test/cases/compile_errors/stage1/obj/write_to_const_global_variable.zig → test/cases/compile_errors/write_to_const_global_variable.zig
@@ -5,7 +5,7 @@ fn f() void {
 export fn entry() void { f(); }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:9: error: cannot assign to constant
+// :3:9: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/wrong_size_to_an_array_literal.zig → test/cases/compile_errors/wrong_size_to_an_array_literal.zig
@@ -4,7 +4,7 @@ comptime {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:31: error: index 2 outside array of size 2
+// :2:31: error: index 2 outside array of length 2
test/cases/compile_errors/stage1/obj/wrong_type_passed_to_panic.zig → test/cases/compile_errors/wrong_type_passed_to_panic.zig
@@ -4,7 +4,7 @@ export fn entry() void {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:3:12: error: expected type '[]const u8', found 'error{Foo}'
+// :3:12: error: expected type '[]const u8', found 'error{Foo}'
test/cases/compile_errors/stage1/obj/wrong_type_to_hasField.zig → test/cases/compile_errors/wrong_type_to_hasField.zig
@@ -3,7 +3,7 @@ export fn entry() bool {
 }
 
 // error
-// backend=stage1
+// backend=stage2
 // target=native
 //
-// tmp.zig:2:22: error: type 'i32' does not support @hasField
+// :2:22: error: type 'i32' does not support '@hasField'
test/cases/x86_64-linux/hello_world_with_updates.1.zig
@@ -2,4 +2,4 @@ pub export fn _start() noreturn {}
 
 // error
 //
-// :1:34: error: expected noreturn, found void
+// :1:34: error: expected type 'noreturn', found 'void'
test/cases/x86_64-linux/inline_assembly.0.zig
@@ -13,4 +13,4 @@ pub fn main() void {
 // output_mode=Exe
 // target=x86_64-linux
 //
-// :4:27: error: expected type, found comptime_int
+// :4:27: error: expected type 'type', found 'comptime_int'
test/cases/x86_64-macos/hello_world_with_updates.1.zig
@@ -2,4 +2,4 @@ pub export fn main() noreturn {}
 
 // error
 //
-// :1:32: error: expected noreturn, found void
+// :1:32: error: expected type 'noreturn', found 'void'
test/cases/compile_log.0.zig
@@ -14,4 +14,4 @@ fn x() void {}
 
 // error
 //
-// :6:23: error: expected usize, found bool
+// :6:23: error: expected type 'usize', found 'bool'
test/stage2/cbe.zig
@@ -96,13 +96,13 @@ pub fn addCases(ctx: *TestContext) !void {
             \\    _ = @intToError(0);
             \\    return 0;
             \\}
-        , &.{":2:21: error: integer value 0 represents no error"});
+        , &.{":2:21: error: integer value '0' represents no error"});
         case.addError(
             \\pub export fn main() c_int {
             \\    _ = @intToError(3);
             \\    return 0;
             \\}
-        , &.{":2:21: error: integer value 3 represents no error"});
+        , &.{":2:21: error: integer value '3' represents no error"});
     }
 
     {
@@ -739,7 +739,7 @@ pub fn addCases(ctx: *TestContext) !void {
             \\    _ = @enumToInt(a);
             \\}
         , &.{
-            ":3:20: error: expected enum or tagged union, found bool",
+            ":3:20: error: expected enum or tagged union, found 'bool'",
         });
 
         case.addError(
@@ -748,7 +748,7 @@ pub fn addCases(ctx: *TestContext) !void {
             \\    _ = @intToEnum(bool, a);
             \\}
         , &.{
-            ":3:20: error: expected enum, found bool",
+            ":3:20: error: expected enum, found 'bool'",
         });
 
         case.addError(
@@ -757,7 +757,7 @@ pub fn addCases(ctx: *TestContext) !void {
             \\    _ = @intToEnum(E, 3);
             \\}
         , &.{
-            ":3:9: error: enum 'tmp.E' has no tag with value 3",
+            ":3:9: error: enum 'tmp.E' has no tag with value '3'",
             ":1:11: note: enum declared here",
         });