diff --git a/src/AstGen.zig b/src/AstGen.zig index ec8af65614e711479328d90d467b8df4e094ee92..c9abb1859ba9f5f2f6b25501bddd580848a9c6f8 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -1476,7 +1476,7 @@ fn arrayInitExprRlPtr( return arrayInitExprRlPtrInner(gz, scope, node, base_ptr, elements); } - var as_scope = try gz.makeCoercionScope(scope, array_ty, result_ptr); + var as_scope = try gz.makeCoercionScope(scope, array_ty, result_ptr, node); defer as_scope.unstack(); const result = try arrayInitExprRlPtrInner(&as_scope, scope, node, as_scope.rl_ptr, elements); @@ -1697,7 +1697,7 @@ fn structInitExprRlPtr( const ty_inst = try typeExpr(gz, scope, struct_init.ast.type_expr); _ = try gz.addUnNode(.validate_struct_init_ty, ty_inst, node); - var as_scope = try gz.makeCoercionScope(scope, ty_inst, result_ptr); + var as_scope = try gz.makeCoercionScope(scope, ty_inst, result_ptr, node); defer as_scope.unstack(); const result = try structInitExprRlPtrInner(&as_scope, scope, node, struct_init, as_scope.rl_ptr); @@ -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, @@ -7040,7 +7046,7 @@ fn asRlPtr( operand_node: Ast.Node.Index, dest_type: Zir.Inst.Ref, ) InnerError!Zir.Inst.Ref { - var as_scope = try parent_gz.makeCoercionScope(scope, dest_type, result_ptr); + var as_scope = try parent_gz.makeCoercionScope(scope, dest_type, result_ptr, src_node); defer as_scope.unstack(); const result = try reachableExpr(&as_scope, &as_scope.base, .{ .block_ptr = &as_scope }, operand_node, src_node); @@ -9897,13 +9903,14 @@ const GenZir = struct { scope: *Scope, dest_type: Zir.Inst.Ref, result_ptr: Zir.Inst.Ref, + src_node: Ast.Node.Index, ) !GenZir { // Detect whether this expr() call goes into rvalue() to store the result into the // result location. If it does, elide the coerce_result_ptr instruction // as well as the store instruction, instead passing the result as an rvalue. var as_scope = parent_gz.makeSubBlock(scope); errdefer as_scope.unstack(); - as_scope.rl_ptr = try as_scope.addBin(.coerce_result_ptr, dest_type, result_ptr); + as_scope.rl_ptr = try as_scope.addPlNode(.coerce_result_ptr, src_node, Zir.Inst.Bin{ .lhs = dest_type, .rhs = result_ptr }); // `rl_ty_inst` needs to be set in case the stores to `rl_ptr` are eliminated. as_scope.rl_ty_inst = dest_type; diff --git a/src/Module.zig b/src/Module.zig index bdf206490d331c19bd18a74b21d237fcecf40e1f..1f70a44df5e2da3f9c99f9e03c8224db48382960 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -503,6 +503,8 @@ pub const Decl = struct { alive: bool, /// Whether the Decl is a `usingnamespace` declaration. is_usingnamespace: bool, + /// If true `name` is already fully qualified. + name_fully_qualified: bool = false, /// Represents the position of the code in the output file. /// This is populated regardless of semantic analysis and code generation. @@ -686,6 +688,9 @@ pub const Decl = struct { pub fn renderFullyQualifiedName(decl: Decl, mod: *Module, writer: anytype) !void { const unqualified_name = mem.sliceTo(decl.name, 0); + if (decl.name_fully_qualified) { + return writer.writeAll(unqualified_name); + } return decl.src_namespace.renderFullyQualifiedName(mod, unqualified_name, writer); } diff --git a/src/Sema.zig b/src/Sema.zig index a071c97df31ed50452856abcd1d14a0063b77fa6..862d5cbf482a83dad024796c87508e06cc327418 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -139,6 +139,7 @@ pub const Block = struct { is_comptime: bool, is_typeof: bool = false, + is_coerce_result_ptr: bool = false, /// when null, it is determined by build mode, changed by @setRuntimeSafety want_safety: ?bool = null, @@ -1707,7 +1708,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 { @@ -1734,9 +1735,20 @@ fn failWithErrorSetCodeMissing( }); } -fn failWithIntegerOverflow(sema: *Sema, block: *Block, src: LazySrcLoc, int_ty: Type, val: Value) CompileError { +fn failWithIntegerOverflow(sema: *Sema, block: *Block, src: LazySrcLoc, int_ty: Type, val: Value, vector_index: usize) CompileError { + if (int_ty.zigTypeTag() == .Vector) { + const msg = msg: { + const msg = try sema.errMsg(block, src, "overflow of vector type '{}' with value '{}'", .{ + int_ty.fmt(sema.mod), val.fmtValue(int_ty, sema.mod), + }); + errdefer msg.destroy(sema.gpa); + try sema.errNote(block, src, msg, "when computing vector element at index '{d}'", .{vector_index}); + break :msg msg; + }; + return sema.failWithOwnedErrorMsg(block, msg); + } return sema.fail(block, src, "overflow of integer type '{}' with value '{}'", .{ - int_ty.fmt(sema.mod), val.fmtValue(Type.@"comptime_int", sema.mod), + int_ty.fmt(sema.mod), val.fmtValue(int_ty, sema.mod), }); } @@ -1844,7 +1856,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, }); } @@ -1901,10 +1913,11 @@ fn zirCoerceResultPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE const tracy = trace(@src()); defer tracy.end(); - const src: LazySrcLoc = sema.src; - const bin_inst = sema.code.instructions.items(.data)[inst].bin; - const pointee_ty = try sema.resolveType(block, src, bin_inst.lhs); - const ptr = try sema.resolveInst(bin_inst.rhs); + const inst_data = sema.code.instructions.items(.data)[inst].pl_node; + const src = inst_data.src(); + const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; + const pointee_ty = try sema.resolveType(block, src, extra.lhs); + const ptr = try sema.resolveInst(extra.rhs); const target = sema.mod.getTarget(); const addr_space = target_util.defaultAddressSpace(target, .local); @@ -1971,6 +1984,7 @@ fn zirCoerceResultPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE // kind of transformations to make on the result pointer. var trash_block = block.makeSubBlock(); trash_block.is_comptime = false; + trash_block.is_coerce_result_ptr = true; defer trash_block.instructions.deinit(sema.gpa); const dummy_ptr = try trash_block.addTy(.alloc, sema.typeOf(ptr)); @@ -2376,6 +2390,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 +4560,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 +4782,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); @@ -5224,6 +5245,10 @@ fn analyzeCall( .async_kw => return sema.fail(block, call_src, "TODO implement async call", .{}), }; + if (modifier == .never_inline and func_ty_info.cc == .Inline) { + return sema.fail(block, call_src, "no-inline call of inline function", .{}); + } + const gpa = sema.gpa; var is_generic_call = func_ty_info.is_generic; @@ -5263,6 +5288,10 @@ fn analyzeCall( } } + if (is_comptime_call and modifier == .never_inline) { + return sema.fail(block, call_src, "unable to perform 'never_inline' call at compile-time", .{}); + } + const result: Air.Inst.Ref = if (is_inline_call) res: { const func_val = try sema.resolveConstValue(block, func_src, func); const module_fn = switch (func_val.tag()) { @@ -6155,7 +6184,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 +6272,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 +6317,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 +6380,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 +6414,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 +6429,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 +6481,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 +6669,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 +6768,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 +7668,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 +7702,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); @@ -9000,6 +9028,10 @@ fn validateSwitchRange( ) CompileError!void { const first_val = (try sema.resolveSwitchItemVal(block, first_ref, src_node_offset, switch_prong_src, .first)).val; const last_val = (try sema.resolveSwitchItemVal(block, last_ref, src_node_offset, switch_prong_src, .last)).val; + if (first_val.compare(.gt, last_val, operand_ty, sema.mod)) { + const src = switch_prong_src.resolve(sema.gpa, sema.mod.declPtr(block.src_decl), src_node_offset, .first); + return sema.fail(block, src, "range start value is greater than the end value", .{}); + } const maybe_prev_src = try range_set.add(first_val, last_val, operand_ty, switch_prong_src); return sema.validateSwitchDupe(block, maybe_prev_src, switch_prong_src, src_node_offset); } @@ -9347,9 +9379,34 @@ fn zirShl( if (rhs_val.isUndef()) { return sema.addConstUndef(sema.typeOf(lhs)); } + // If rhs is 0, return lhs without doing any calculations. if (try rhs_val.compareWithZeroAdvanced(.eq, sema.kit(block, src))) { return lhs; } + if (scalar_ty.zigTypeTag() != .ComptimeInt and air_tag != .shl_sat) { + var bits_payload = Value.Payload.U64{ + .base = .{ .tag = .int_u64 }, + .data = scalar_ty.intInfo(target).bits, + }; + const bit_value = Value.initPayload(&bits_payload.base); + if (rhs_ty.zigTypeTag() == .Vector) { + var i: usize = 0; + while (i < rhs_ty.vectorLen()) : (i += 1) { + if (rhs_val.indexVectorlike(i).compareHetero(.gte, bit_value, target)) { + return sema.fail(block, rhs_src, "shift amount '{}' at index '{d}' is too large for operand type '{}'", .{ + rhs_val.indexVectorlike(i).fmtValue(scalar_ty, sema.mod), + i, + scalar_ty.fmt(sema.mod), + }); + } + } + } else if (rhs_val.compareHetero(.gte, bit_value, target)) { + return sema.fail(block, rhs_src, "shift amount '{}' is too large for operand type '{}'", .{ + rhs_val.fmtValue(scalar_ty, sema.mod), + scalar_ty.fmt(sema.mod), + }); + } + } } const runtime_src = if (maybe_lhs_val) |lhs_val| rs: { @@ -9461,16 +9518,44 @@ fn zirShr( const rhs_ty = sema.typeOf(rhs); try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src); const target = sema.mod.getTarget(); + const scalar_ty = lhs_ty.scalarType(); const runtime_src = if (try sema.resolveMaybeUndefVal(block, rhs_src, rhs)) |rhs_val| rs: { + if (rhs_val.isUndef()) { + return sema.addConstUndef(lhs_ty); + } + // If rhs is 0, return lhs without doing any calculations. + if (try rhs_val.compareWithZeroAdvanced(.eq, sema.kit(block, src))) { + return lhs; + } + if (scalar_ty.zigTypeTag() != .ComptimeInt) { + var bits_payload = Value.Payload.U64{ + .base = .{ .tag = .int_u64 }, + .data = scalar_ty.intInfo(target).bits, + }; + const bit_value = Value.initPayload(&bits_payload.base); + if (rhs_ty.zigTypeTag() == .Vector) { + var i: usize = 0; + while (i < rhs_ty.vectorLen()) : (i += 1) { + if (rhs_val.indexVectorlike(i).compareHetero(.gte, bit_value, target)) { + return sema.fail(block, rhs_src, "shift amount '{}' at index '{d}' is too large for operand type '{}'", .{ + rhs_val.indexVectorlike(i).fmtValue(scalar_ty, sema.mod), + i, + scalar_ty.fmt(sema.mod), + }); + } + } + } else if (rhs_val.compareHetero(.gte, bit_value, target)) { + return sema.fail(block, rhs_src, "shift amount '{}' is too large for operand type '{}'", .{ + rhs_val.fmtValue(scalar_ty, sema.mod), + scalar_ty.fmt(sema.mod), + }); + } + } if (try sema.resolveMaybeUndefVal(block, lhs_src, lhs)) |lhs_val| { - if (lhs_val.isUndef() or rhs_val.isUndef()) { + if (lhs_val.isUndef()) { return sema.addConstUndef(lhs_ty); } - // If rhs is 0, return lhs without doing any calculations. - if (try rhs_val.compareWithZeroAdvanced(.eq, sema.kit(block, src))) { - return sema.addConstant(lhs_ty, lhs_val); - } if (air_tag == .shr_exact) { // Detect if any ones would be shifted out. const truncated = try lhs_val.intTruncBitsAsValue(lhs_ty, sema.arena, .unsigned, rhs_val, target); @@ -9481,12 +9566,6 @@ fn zirShr( const val = try lhs_val.shr(rhs_val, lhs_ty, sema.arena, target); return sema.addConstant(lhs_ty, val); } else { - // Even if lhs is not comptime known, we can still deduce certain things based - // on rhs. - // If rhs is 0, return lhs without doing any calculations. - if (try rhs_val.compareWithZeroAdvanced(.eq, sema.kit(block, src))) { - return lhs; - } break :rs lhs_src; } } else rhs_src; @@ -10065,7 +10144,10 @@ fn zirNegate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. const rhs_ty = sema.typeOf(rhs); const rhs_scalar_ty = rhs_ty.scalarType(); - if (rhs_scalar_ty.isUnsignedInt()) { + if (rhs_scalar_ty.isUnsignedInt() or switch (rhs_scalar_ty.zigTypeTag()) { + .Int, .ComptimeInt, .Float, .ComptimeFloat => false, + else => true, + }) { return sema.fail(block, src, "negation of type '{}'", .{rhs_ty.fmt(sema.mod)}); } @@ -10096,6 +10178,12 @@ fn zirNegateWrap(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError! const rhs = try sema.resolveInst(inst_data.operand); const rhs_ty = sema.typeOf(rhs); + const rhs_scalar_ty = rhs_ty.scalarType(); + + switch (rhs_scalar_ty.zigTypeTag()) { + .Int, .ComptimeInt, .Float, .ComptimeFloat => {}, + else => return sema.fail(block, src, "negation of type '{}'", .{rhs_ty.fmt(sema.mod)}), + } const lhs = if (rhs_ty.zigTypeTag() == .Vector) try sema.addConstant(rhs_ty, try Value.Tag.repeated.create(sema.arena, Value.zero)) @@ -10441,8 +10529,9 @@ fn analyzeArithmetic( if (maybe_rhs_val) |rhs_val| { if (is_int) { const sum = try sema.intAdd(block, src, lhs_val, rhs_val, resolved_type); - if (!(try sema.intFitsInType(block, src, sum, resolved_type))) { - return sema.failWithIntegerOverflow(block, src, resolved_type, sum); + var vector_index: usize = undefined; + if (!(try sema.intFitsInType(block, src, sum, resolved_type, &vector_index))) { + return sema.failWithIntegerOverflow(block, src, resolved_type, sum, vector_index); } return sema.addConstant(resolved_type, sum); } else { @@ -10535,8 +10624,9 @@ fn analyzeArithmetic( if (maybe_rhs_val) |rhs_val| { if (is_int) { const diff = try sema.intSub(block, src, lhs_val, rhs_val, resolved_type); - if (!(try sema.intFitsInType(block, src, diff, resolved_type))) { - return sema.failWithIntegerOverflow(block, src, resolved_type, diff); + var vector_index: usize = undefined; + if (!(try sema.intFitsInType(block, src, diff, resolved_type, &vector_index))) { + return sema.failWithIntegerOverflow(block, src, resolved_type, diff, vector_index); } return sema.addConstant(resolved_type, diff); } else { @@ -10909,8 +10999,9 @@ fn analyzeArithmetic( } if (is_int) { const product = try lhs_val.intMul(rhs_val, resolved_type, sema.arena, target); - if (!(try sema.intFitsInType(block, src, product, resolved_type))) { - return sema.failWithIntegerOverflow(block, src, resolved_type, product); + var vector_index: usize = undefined; + if (!(try sema.intFitsInType(block, src, product, resolved_type, &vector_index))) { + return sema.failWithIntegerOverflow(block, src, resolved_type, product, vector_index); } return sema.addConstant(resolved_type, product); } else { @@ -11608,8 +11699,13 @@ fn analyzeCmpUnionTag( ) CompileError!Air.Inst.Ref { const union_ty = try sema.resolveTypeFields(block, un_src, sema.typeOf(un)); const union_tag_ty = union_ty.unionTagType() orelse { - // TODO note at declaration site that says "union foo is not tagged" - return sema.fail(block, un_src, "comparison of union and enum literal is only valid for tagged union types", .{}); + const msg = msg: { + const msg = try sema.errMsg(block, un_src, "comparison of union and enum literal is only valid for tagged union types", .{}); + errdefer msg.destroy(sema.gpa); + try sema.mod.errNoteNonLazy(union_ty.declSrcLoc(sema.mod), msg, "union '{}' is not a tagged union", .{union_ty.fmt(sema.mod)}); + break :msg msg; + }; + return sema.failWithOwnedErrorMsg(block, msg); }; // Coerce both the union and the tag to the union's tag type, and then execute the // enum comparison codepath. @@ -11666,8 +11762,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); @@ -11675,6 +11771,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, @@ -13098,7 +13205,6 @@ fn zirCondbr( defer tracy.end(); const inst_data = sema.code.instructions.items(.data)[inst].pl_node; - const src = inst_data.src(); const cond_src: LazySrcLoc = .{ .node_offset_if_cond = inst_data.src_node }; const extra = sema.code.extraData(Zir.Inst.CondBr, inst_data.payload_index); @@ -13108,7 +13214,7 @@ fn zirCondbr( const uncasted_cond = try sema.resolveInst(extra.data.condition); const cond = try sema.coerce(parent_block, Type.bool, uncasted_cond, cond_src); - if (try sema.resolveDefinedValue(parent_block, src, cond)) |cond_val| { + if (try sema.resolveDefinedValue(parent_block, cond_src, cond)) |cond_val| { const body = if (cond_val.toBool()) then_body else else_body; // We use `analyzeBodyInner` since we want to propagate any possible // `error.ComptimeBreak` to the caller. @@ -14384,7 +14490,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), }), }; @@ -14394,8 +14500,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", .{}); @@ -14460,6 +14566,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); }, @@ -14837,7 +14945,7 @@ fn zirReify(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I union_obj.tag_ty = if (tag_type_val.optionalValue()) |payload_val| blk: { var buffer: Value.ToTypeBuffer = undefined; break :blk try payload_val.toType(&buffer).copy(new_decl_arena_allocator); - } else try sema.generateUnionTagTypeSimple(block, fields_len); + } else try sema.generateUnionTagTypeSimple(block, fields_len, null); // Fields if (fields_len > 0) { @@ -15101,6 +15209,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); @@ -15123,6 +15233,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); @@ -15244,7 +15356,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); @@ -15635,22 +15747,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()) { @@ -15703,7 +15822,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); @@ -15819,7 +15938,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)}, ), }; @@ -16028,7 +16147,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); @@ -16071,6 +16190,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), @@ -16249,7 +16372,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(); @@ -16258,13 +16381,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), }), }, @@ -16323,7 +16446,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, @@ -16358,7 +16481,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), }), @@ -16366,7 +16489,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), }), @@ -16411,15 +16534,15 @@ fn analyzeShuffle( } if (unsigned >= operand_info[chosen][0]) { const msg = msg: { - const msg = try sema.errMsg(block, mask_src, "mask index {d} has out-of-bounds selection", .{i}); + 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), }); - if (chosen == 1) { + if (chosen == 0) { try sema.errNote(block, b_src, msg, "selections from the second vector are specified with negative numbers", .{}); } @@ -16846,10 +16969,15 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError break :modifier modifier_val.toEnum(std.builtin.CallOptions.Modifier); }; + const is_comptime = extra.flags.is_comptime or block.is_comptime; + const modifier: std.builtin.CallOptions.Modifier = switch (wanted_modifier) { // These can be upgraded to comptime or nosuspend calls. .auto, .never_tail, .no_async => m: { - if (extra.flags.is_comptime) { + if (is_comptime) { + if (wanted_modifier == .never_tail) { + return sema.fail(block, options_src, "unable to perform 'never_tail' call at compile-time", .{}); + } break :m .compile_time; } if (extra.flags.is_nosuspend) { @@ -16859,7 +16987,11 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError }, // These can be upgraded to comptime. nosuspend bit can be safely ignored. .always_tail, .always_inline, .compile_time => m: { - if (extra.flags.is_comptime) { + _ = (try sema.resolveDefinedValue(block, func_src, func)) orelse { + return sema.fail(block, func_src, "modifier '{s}' requires a comptime-known function", .{@tagName(wanted_modifier)}); + }; + + if (is_comptime) { break :m .compile_time; } break :m wanted_modifier; @@ -16868,14 +17000,14 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError if (extra.flags.is_nosuspend) { return sema.fail(block, options_src, "modifier 'async_kw' cannot be used inside nosuspend block", .{}); } - if (extra.flags.is_comptime) { + if (is_comptime) { return sema.fail(block, options_src, "modifier 'async_kw' cannot be used in combination with comptime function call", .{}); } break :m wanted_modifier; }, .never_inline => m: { - if (extra.flags.is_comptime) { - return sema.fail(block, options_src, "modifier 'never_inline' cannot be used in combination with comptime function call", .{}); + if (is_comptime) { + return sema.fail(block, options_src, "unable to perform 'never_inline' call at compile-time", .{}); } break :m wanted_modifier; }, @@ -16883,7 +17015,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; @@ -17696,7 +17828,7 @@ fn zirBuiltinExtern( } fn requireFunctionBlock(sema: *Sema, block: *Block, src: LazySrcLoc) !void { - if (sema.func == null and !block.is_typeof) { + if (sema.func == null and !block.is_typeof and !block.is_coerce_result_ptr) { return sema.fail(block, src, "instruction illegal outside function body", .{}); } } @@ -17765,7 +17897,8 @@ fn validateRunTimeType( .Pointer => { const elem_ty = ty.childType(); switch (elem_ty.zigTypeTag()) { - .Opaque, .Fn => return true, + .Opaque => return true, + .Fn => return elem_ty.isFnOrHasRuntimeBits(), else => ty = elem_ty, } }, @@ -17829,7 +17962,25 @@ fn explainWhyTypeIsComptime( .Optional, => return, - .Pointer, .Array, .Vector => { + .Array, .Vector => { + try sema.explainWhyTypeIsComptime(block, src, msg, src_loc, ty.elemType()); + }, + .Pointer => { + const elem_ty = ty.elemType2(); + if (elem_ty.zigTypeTag() == .Fn) { + const fn_info = elem_ty.fnInfo(); + if (fn_info.is_generic) { + try mod.errNoteNonLazy(src_loc, msg, "function is generic", .{}); + } + switch (fn_info.cc) { + .Inline => try mod.errNoteNonLazy(src_loc, msg, "function has inline calling convention", .{}), + else => {}, + } + if (fn_info.return_type.comptimeOnly()) { + try mod.errNoteNonLazy(src_loc, msg, "function has a comptime-only return type", .{}); + } + return; + } try sema.explainWhyTypeIsComptime(block, src, msg, src_loc, ty.elemType()); }, @@ -18219,9 +18370,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( @@ -18896,12 +19053,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, }); } @@ -19811,7 +19968,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) }, ); } @@ -19821,8 +19978,8 @@ fn coerce( .Int, .ComptimeInt => { 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) }); + if (!(try sema.intFitsInType(block, inst_src, val, dest_ty, null))) { + 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); } @@ -19856,7 +20013,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) }, ); } @@ -19880,7 +20037,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 }, // ); //} @@ -20023,7 +20180,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 { @@ -21543,7 +21700,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); @@ -21559,7 +21716,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); @@ -21595,7 +21752,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); @@ -21712,7 +21869,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); @@ -21783,7 +21940,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); @@ -23555,7 +23712,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, } @@ -23586,7 +23743,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, } @@ -23754,7 +23911,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, @@ -23784,7 +23941,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, @@ -24161,7 +24318,7 @@ fn semaUnionFields(block: *Block, mod: *Module, union_obj: *Module.Union) Compil if (small.auto_enum_tag) { // The provided type is an integer type and we must construct the enum tag type here. int_tag_ty = provided_ty; - union_obj.tag_ty = try sema.generateUnionTagTypeNumbered(&block_scope, fields_len, provided_ty); + union_obj.tag_ty = try sema.generateUnionTagTypeNumbered(&block_scope, fields_len, provided_ty, union_obj); const enum_obj = union_obj.tag_ty.castTag(.enum_numbered).?.data; enum_field_names = &enum_obj.fields; enum_value_map = &enum_obj.values; @@ -24177,7 +24334,7 @@ fn semaUnionFields(block: *Block, mod: *Module, union_obj: *Module.Union) Compil // If auto_enum_tag is false, this is an untagged union. However, for semantic analysis // purposes, we still auto-generate an enum tag type the same way. That the union is // untagged is represented by the Type tag (union vs union_tagged). - union_obj.tag_ty = try sema.generateUnionTagTypeSimple(&block_scope, fields_len); + union_obj.tag_ty = try sema.generateUnionTagTypeSimple(&block_scope, fields_len, union_obj); enum_field_names = &union_obj.tag_ty.castTag(.enum_simple).?.data.fields; } @@ -24346,6 +24503,7 @@ fn generateUnionTagTypeNumbered( block: *Block, fields_len: u32, int_ty: Type, + union_obj: *Module.Union, ) !Type { const mod = sema.mod; @@ -24361,13 +24519,24 @@ fn generateUnionTagTypeNumbered( }; const enum_ty = Type.initPayload(&enum_ty_payload.base); const enum_val = try Value.Tag.ty.create(new_decl_arena_allocator, enum_ty); - // TODO better type name - const new_decl_index = try mod.createAnonymousDecl(block, .{ + + const src_decl = mod.declPtr(block.src_decl); + const new_decl_index = try mod.allocateNewDecl(block.namespace, src_decl.src_node, block.wip_capture_scope); + errdefer mod.destroyDecl(new_decl_index); + const name = name: { + const fqn = try union_obj.getFullyQualifiedName(mod); + defer sema.gpa.free(fqn); + break :name try std.fmt.allocPrintZ(mod.gpa, "@typeInfo({s}).Union.tag_type.?", .{fqn}); + }; + try mod.initNewAnonDecl(new_decl_index, src_decl.src_line, block.namespace, .{ .ty = Type.type, .val = enum_val, - }); + }, name); + sema.mod.declPtr(new_decl_index).name_fully_qualified = true; + const new_decl = mod.declPtr(new_decl_index); new_decl.owns_tv = true; + new_decl.name_fully_qualified = true; errdefer mod.abortAnonDecl(new_decl_index); enum_obj.* = .{ @@ -24387,7 +24556,7 @@ fn generateUnionTagTypeNumbered( return enum_ty; } -fn generateUnionTagTypeSimple(sema: *Sema, block: *Block, fields_len: usize) !Type { +fn generateUnionTagTypeSimple(sema: *Sema, block: *Block, fields_len: usize, maybe_union_obj: ?*Module.Union) !Type { const mod = sema.mod; var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); @@ -24402,11 +24571,30 @@ fn generateUnionTagTypeSimple(sema: *Sema, block: *Block, fields_len: usize) !Ty }; const enum_ty = Type.initPayload(&enum_ty_payload.base); const enum_val = try Value.Tag.ty.create(new_decl_arena_allocator, enum_ty); - // TODO better type name - const new_decl_index = try mod.createAnonymousDecl(block, .{ - .ty = Type.type, - .val = enum_val, - }); + + const new_decl_index = new_decl_index: { + const union_obj = maybe_union_obj orelse { + break :new_decl_index try mod.createAnonymousDecl(block, .{ + .ty = Type.type, + .val = enum_val, + }); + }; + const src_decl = mod.declPtr(block.src_decl); + const new_decl_index = try mod.allocateNewDecl(block.namespace, src_decl.src_node, block.wip_capture_scope); + errdefer mod.destroyDecl(new_decl_index); + const name = name: { + const fqn = try union_obj.getFullyQualifiedName(mod); + defer sema.gpa.free(fqn); + break :name try std.fmt.allocPrintZ(mod.gpa, "@typeInfo({s}).Union.tag_type.?", .{fqn}); + }; + try mod.initNewAnonDecl(new_decl_index, src_decl.src_line, block.namespace, .{ + .ty = Type.type, + .val = enum_val, + }, name); + sema.mod.declPtr(new_decl_index).name_fully_qualified = true; + break :new_decl_index new_decl_index; + }; + const new_decl = mod.declPtr(new_decl_index); new_decl.owns_tv = true; errdefer mod.abortAnonDecl(new_decl_index); @@ -25007,7 +25195,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); @@ -25022,11 +25210,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) }); } } @@ -25034,7 +25222,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, @@ -25389,7 +25577,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, }); } @@ -25769,8 +25957,8 @@ fn floatToIntScalar( else 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 '{}'", .{ + if (!(try sema.intFitsInType(block, src, result, int_ty, null))) { + return sema.fail(block, src, "float value '{}' cannot be stored in integer type '{}'", .{ val.fmtValue(float_ty, sema.mod), int_ty.fmt(sema.mod), }); } @@ -25785,6 +25973,7 @@ fn intFitsInType( src: LazySrcLoc, self: Value, ty: Type, + vector_index: ?*usize, ) CompileError!bool { const target = sema.mod.getTarget(); switch (self.tag()) { @@ -25894,8 +26083,9 @@ fn intFitsInType( .aggregate => { assert(ty.zigTypeTag() == .Vector); - for (self.castTag(.aggregate).?.data) |elem| { - if (!(try sema.intFitsInType(block, src, elem, ty.scalarType()))) { + for (self.castTag(.aggregate).?.data) |elem, i| { + if (!(try sema.intFitsInType(block, src, elem, ty.scalarType(), null))) { + if (vector_index) |some| some.* = i; return false; } } @@ -25933,7 +26123,7 @@ fn enumHasInt( int: Value, ) CompileError!bool { switch (ty.tag()) { - .enum_nonexhaustive => return sema.intFitsInType(block, src, int, ty), + .enum_nonexhaustive => return sema.intFitsInType(block, src, int, ty, null), .enum_full => { const enum_full = ty.castTag(.enum_full).?.data; const tag_ty = enum_full.tag_ty; diff --git a/src/TypedValue.zig b/src/TypedValue.zig index b00600d37a12a5f278b4325cbe2a5e8a7bf7fe93..a41c86582714ca2b6dcf6c80acb6f584f6b7a7a0 100644 --- a/src/TypedValue.zig +++ b/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; diff --git a/src/Zir.zig b/src/Zir.zig index b43b775dfa29054b88d00da83ec181a5d963cbb3..e6acfe8ed2aac7135fb630650decbac52226a4fe 100644 --- a/src/Zir.zig +++ b/src/Zir.zig @@ -308,7 +308,7 @@ pub const Inst = struct { cmp_neq, /// Coerces a result location pointer to a new element type. It is evaluated "backwards"- /// as type coercion from the new element type to the old element type. - /// Uses the `bin` union field. + /// Uses the `pl_node` union field. Payload is `Bin`. /// LHS is destination element type, RHS is result pointer. coerce_result_ptr, /// Conditional branch. Splits control flow based on a boolean condition value. @@ -1603,7 +1603,7 @@ pub const Inst = struct { .cmp_gte = .pl_node, .cmp_gt = .pl_node, .cmp_neq = .pl_node, - .coerce_result_ptr = .bin, + .coerce_result_ptr = .pl_node, .condbr = .pl_node, .condbr_inline = .pl_node, .@"try" = .pl_node, diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 529cd206acf576afb6458d9327b31b88a861b268..7f85570e067f0d42fad7f78ed961df4d29c77afb 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -7634,33 +7634,31 @@ pub const FuncGen = struct { fn airTagName(self: *FuncGen, inst: Air.Inst.Index) !?*const llvm.Value { if (self.liveness.isUnused(inst)) return null; - var arena_allocator = std.heap.ArenaAllocator.init(self.gpa); - defer arena_allocator.deinit(); - const arena = arena_allocator.allocator(); - const un_op = self.air.instructions.items(.data)[inst].un_op; const operand = try self.resolveInst(un_op); const enum_ty = self.air.typeOf(un_op); - const mod = self.dg.module; - const llvm_fn_name = try std.fmt.allocPrintZ(arena, "__zig_tag_name_{s}", .{ - try mod.declPtr(enum_ty.getOwnerDecl()).getFullyQualifiedName(mod), - }); - - const llvm_fn = try self.getEnumTagNameFunction(enum_ty, llvm_fn_name); + const llvm_fn = try self.getEnumTagNameFunction(enum_ty); const params = [_]*const llvm.Value{operand}; return self.builder.buildCall(llvm_fn, ¶ms, params.len, .Fast, .Auto, ""); } - fn getEnumTagNameFunction( - self: *FuncGen, - enum_ty: Type, - llvm_fn_name: [:0]const u8, - ) !*const llvm.Value { + fn getEnumTagNameFunction(self: *FuncGen, enum_ty: Type) !*const llvm.Value { + const enum_decl = enum_ty.getOwnerDecl(); + // TODO: detect when the type changes and re-emit this function. - if (self.dg.object.llvm_module.getNamedFunction(llvm_fn_name)) |llvm_fn| { - return llvm_fn; - } + const gop = try self.dg.object.decl_map.getOrPut(self.dg.gpa, enum_decl); + if (gop.found_existing) return gop.value_ptr.*; + errdefer assert(self.dg.object.decl_map.remove(enum_decl)); + + var arena_allocator = std.heap.ArenaAllocator.init(self.gpa); + defer arena_allocator.deinit(); + const arena = arena_allocator.allocator(); + + const mod = self.dg.module; + const llvm_fn_name = try std.fmt.allocPrintZ(arena, "__zig_tag_name_{s}", .{ + try mod.declPtr(enum_decl).getFullyQualifiedName(mod), + }); const slice_ty = Type.initTag(.const_slice_u8_sentinel_0); const llvm_ret_ty = try self.dg.lowerType(slice_ty); @@ -7677,6 +7675,7 @@ pub const FuncGen = struct { fn_val.setLinkage(.Internal); fn_val.setFunctionCallConv(.Fast); self.dg.addCommonFnAttributes(fn_val); + gop.value_ptr.* = fn_val; const prev_block = self.builder.getInsertBlock(); const prev_debug_location = self.builder.getCurrentDebugLocation2(); diff --git a/src/print_zir.zig b/src/print_zir.zig index dbb91a0ae0391771b3ad32e283ee509f899fe3e3..480a3e2a4fa19f02a2c492983480e684beb42b53 100644 --- a/src/print_zir.zig +++ b/src/print_zir.zig @@ -144,7 +144,6 @@ const Writer = struct { switch (tag) { .array_type, .as, - .coerce_result_ptr, .elem_ptr, .elem_val, .store, @@ -355,6 +354,7 @@ const Writer = struct { .minimum, .elem_ptr_node, .elem_val_node, + .coerce_result_ptr, => try self.writePlNodeBin(stream, inst), .elem_ptr_imm => try self.writeElemPtrImm(stream, inst), diff --git a/test/behavior/enum.zig b/test/behavior/enum.zig index 602ad47b596a05cd3f84f46b8c6dc5c3dd561b2f..709d30af33139101939fb0bd5b10c9cbdd55d27b 100644 --- a/test/behavior/enum.zig +++ b/test/behavior/enum.zig @@ -1107,3 +1107,24 @@ test "enum literal in array literal" { try expect(array[0] == .one); try expect(array[1] == .two); } + +test "tag name functions are unique" { + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + + { + const E = enum { a, b }; + var b = E.a; + var a = @tagName(b); + _ = a; + } + { + const E = enum { a, b, c, d, e, f }; + var b = E.a; + var a = @tagName(b); + _ = a; + } +} diff --git a/test/cases/aarch64-macos/hello_world_with_updates.1.zig b/test/cases/aarch64-macos/hello_world_with_updates.1.zig index 909fc9ccfbcb343f761414446c0ec4d52e98aeef..435747c2ee1f8c43c7e5950011526fd0507f8a6f 100644 --- a/test/cases/aarch64-macos/hello_world_with_updates.1.zig +++ b/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' diff --git a/test/cases/bad_inferred_variable_type.zig b/test/cases/bad_inferred_variable_type.zig index 47ceb9b638185dbc9dafd3ec92900dfa5ad4d4cf..7c464f48c91211e650eff61d70013a64757b1253 100644 --- a/test/cases/bad_inferred_variable_type.zig +++ b/test/cases/bad_inferred_variable_type.zig @@ -5,5 +5,6 @@ pub fn main() void { // error // output_mode=Exe +// backend=stage2 // // :2:9: error: variable of type '@TypeOf(null)' must be const or comptime diff --git a/test/cases/comparison_of_non-tagged_union_and_enum_literal.zig b/test/cases/comparison_of_non-tagged_union_and_enum_literal.zig new file mode 100644 index 0000000000000000000000000000000000000000..621b8ead259868e26f9532a831e2b014d685ce35 --- /dev/null +++ b/test/cases/comparison_of_non-tagged_union_and_enum_literal.zig @@ -0,0 +1,13 @@ +export fn entry() void { + const U = union { A: u32, B: u64 }; + var u = U{ .A = 42 }; + var ok = u == .A; + _ = ok; +} + +// error +// backend=stage2 +// target=native +// +// :4:14: error: comparison of union and enum literal is only valid for tagged union types +// :2:15: note: union 'tmp.entry.U' is not a tagged union diff --git a/test/cases/compile_errors/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig b/test/cases/compile_errors/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig new file mode 100644 index 0000000000000000000000000000000000000000..fd194f252d131387d97ca17705c65e763e6f4a96 --- /dev/null +++ b/test/cases/compile_errors/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig @@ -0,0 +1,16 @@ +export fn f1(x: u32) u32 { + const y = -%x; + return -y; +} +const V = @import("std").meta.Vector; +export fn f2(x: V(4, u32)) V(4, u32) { + const y = -%x; + return -y; +} + +// error +// backend=stage2 +// target=native +// +// :3:12: error: negation of type 'u32' +// :8:12: error: negation of type '@Vector(4, u32)' diff --git a/test/cases/compile_errors/Issue_6823_dont_allow_._to_be_followed_by_.zig b/test/cases/compile_errors/Issue_6823_dont_allow_._to_be_followed_by_.zig new file mode 100644 index 0000000000000000000000000000000000000000..20c9528847163f56cabc49e1bda6e719520c08f5 --- /dev/null +++ b/test/cases/compile_errors/Issue_6823_dont_allow_._to_be_followed_by_.zig @@ -0,0 +1,10 @@ +fn foo() void { + var sequence = "repeat".*** 10; + _ = sequence; +} + +// error +// backend=stage2 +// target=native +// +// :2:28: error: '.*' cannot be followed by '*'. Are you missing a space? diff --git a/test/cases/compile_errors/access_invalid_typeInfo_decl.zig b/test/cases/compile_errors/access_invalid_typeInfo_decl.zig new file mode 100644 index 0000000000000000000000000000000000000000..4233b42e7dfe063911c444a94d7ae1532ff407b6 --- /dev/null +++ b/test/cases/compile_errors/access_invalid_typeInfo_decl.zig @@ -0,0 +1,11 @@ +const A = B; +test "Crash" { + _ = @typeInfo(@This()).Struct.decls[0]; +} + +// error +// backend=stage2 +// target=native +// is_test=1 +// +// :1:11: error: use of undeclared identifier 'B' diff --git a/test/cases/compile_errors/access_non-existent_member_of_error_set.zig b/test/cases/compile_errors/access_non-existent_member_of_error_set.zig new file mode 100644 index 0000000000000000000000000000000000000000..765bbe59c3c140a71d897351edc2895968bc598c --- /dev/null +++ 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 diff --git a/test/cases/compile_errors/add_assign_on_undefined_value.zig b/test/cases/compile_errors/add_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..b2d183c0063e28ed8ff3bdf5fe560b46ece6b2e0 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/add_on_undefined_value.zig b/test/cases/compile_errors/add_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..404f5019be58e43978e93d509e33c466e78231b3 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/add_overflow_in_function_evaluation.zig b/test/cases/compile_errors/add_overflow_in_function_evaluation.zig new file mode 100644 index 0000000000000000000000000000000000000000..2f8a4678d3655a7e75d484e929efb1efac0fceed --- /dev/null +++ b/test/cases/compile_errors/add_overflow_in_function_evaluation.zig @@ -0,0 +1,13 @@ +const y = add(65530, 10); +fn add(a: u16, b: u16) u16 { + return a + b; +} + +export fn entry() usize { return @sizeOf(@TypeOf(y)); } + +// error +// backend=stage2 +// target=native +// +// :3:14: error: overflow of integer type 'u16' with value '65540' +// :1:14: note: called from here diff --git a/test/cases/compile_errors/addition_with_non_numbers.zig b/test/cases/compile_errors/addition_with_non_numbers.zig new file mode 100644 index 0000000000000000000000000000000000000000..3687df914f25e81b4e184f89ceae95304aca0b17 --- /dev/null +++ b/test/cases/compile_errors/addition_with_non_numbers.zig @@ -0,0 +1,12 @@ +const Foo = struct { + field: i32, +}; +const x = Foo {.field = 1} + Foo {.field = 2}; + +export fn entry() usize { return @sizeOf(@TypeOf(x)); } + +// error +// backend=llvm +// target=native +// +// :4:28: error: invalid operands to binary expression: 'Struct' and 'Struct' diff --git a/test/cases/compile_errors/address_of_number_literal.zig b/test/cases/compile_errors/address_of_number_literal.zig new file mode 100644 index 0000000000000000000000000000000000000000..2d8380634a1c3943104c4e70bf390cb0ac01c2d4 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/alignCast_expects_pointer_or_slice.zig b/test/cases/compile_errors/alignCast_expects_pointer_or_slice.zig new file mode 100644 index 0000000000000000000000000000000000000000..1b8e3767b2850bdf2e466d0785a3101ee6a787f2 --- /dev/null +++ b/test/cases/compile_errors/alignCast_expects_pointer_or_slice.zig @@ -0,0 +1,9 @@ +export fn entry() void { + @alignCast(4, @as(u32, 3)); +} + +// error +// backend=stage2 +// target=native +// +// :2:19: error: expected pointer type, found 'u32' diff --git a/test/cases/compile_errors/alignment_of_enum_field_specified.zig b/test/cases/compile_errors/alignment_of_enum_field_specified.zig new file mode 100644 index 0000000000000000000000000000000000000000..2ff42f7a652e4b68ee2215168bda14e288e11ed6 --- /dev/null +++ b/test/cases/compile_errors/alignment_of_enum_field_specified.zig @@ -0,0 +1,14 @@ +const Number = enum { + a, + b align(i32), +}; +export fn entry1() void { + var x: Number = undefined; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :3:7: error: expected ',' after field diff --git a/test/cases/compile_errors/ambiguous_decl_reference.zig b/test/cases/compile_errors/ambiguous_decl_reference.zig new file mode 100644 index 0000000000000000000000000000000000000000..c32b9a0755d6ca2fafe3e1461ec93459170bb9ef --- /dev/null +++ b/test/cases/compile_errors/ambiguous_decl_reference.zig @@ -0,0 +1,21 @@ +fn foo() void {} +fn bar() void { + const S = struct { + fn baz() void { + foo(); + } + fn foo() void {} + }; + S.baz(); +} +export fn entry() void { + bar(); +} + +// error +// backend=stage2 +// target=native +// +// :5:13: error: ambiguous reference +// :7:9: note: declared here +// :1:1: note: also declared here diff --git a/test/cases/compile_errors/any_typed_null_to_any_typed_optional.zig b/test/cases/compile_errors/any_typed_null_to_any_typed_optional.zig new file mode 100644 index 0000000000000000000000000000000000000000..ad6427d2247f13c31a2c6780cdba14f161f287ef --- /dev/null +++ b/test/cases/compile_errors/any_typed_null_to_any_typed_optional.zig @@ -0,0 +1,11 @@ +pub fn main() void { + var a: ?*anyopaque = undefined; + a = @as(?usize, null); +} + +// error +// output_mode=Exe +// backend=stage2,llvm +// target=x86_64-linux,x86_64-macos +// +// :3:21: error: expected type '*anyopaque', found '?usize' diff --git a/test/cases/compile_errors/array_access_of_undeclared_identifier.zig b/test/cases/compile_errors/array_access_of_undeclared_identifier.zig new file mode 100644 index 0000000000000000000000000000000000000000..8f4e447abaa1cb317813631a8904b874b3b20f73 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/array_concatenation_with_wrong_type.zig b/test/cases/compile_errors/array_concatenation_with_wrong_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..6f2648f74b2e3b73f3f6a2e15425259c04f58bf3 --- /dev/null +++ b/test/cases/compile_errors/array_concatenation_with_wrong_type.zig @@ -0,0 +1,11 @@ +const src = "aoeu"; +const derp: usize = 1234; +const a = derp ++ "foo"; + +export fn entry() usize { return @sizeOf(@TypeOf(a)); } + +// error +// backend=stage2 +// target=native +// +// :3:11: error: expected indexable; found 'usize' diff --git a/test/cases/compile_errors/asm_at_compile_time.zig b/test/cases/compile_errors/asm_at_compile_time.zig new file mode 100644 index 0000000000000000000000000000000000000000..ba4aa8117039b3cd28e7e7136e01c282c22a9ed2 --- /dev/null +++ b/test/cases/compile_errors/asm_at_compile_time.zig @@ -0,0 +1,17 @@ +comptime { + doSomeAsm(); +} + +fn doSomeAsm() void { + asm volatile ( + \\.globl aoeu; + \\.type aoeu, @function; + \\.set aoeu, derp; + ); +} + +// error +// backend=llvm +// target=native +// +// :6:5: error: unable to evaluate constant expression diff --git a/test/cases/compile_errors/assign_inline_fn_to_non-comptime_var.zig b/test/cases/compile_errors/assign_inline_fn_to_non-comptime_var.zig new file mode 100644 index 0000000000000000000000000000000000000000..857123eae55dc45a258ab087da4ffb98ab2dcdb6 --- /dev/null +++ b/test/cases/compile_errors/assign_inline_fn_to_non-comptime_var.zig @@ -0,0 +1,12 @@ +export fn entry() void { + var a = &b; + _ = a; +} +fn b() callconv(.Inline) void { } + +// error +// backend=stage2 +// target=native +// +// :2:9: error: variable of type '*const fn() callconv(.Inline) void' must be const or comptime +// :2:9: note: function has inline calling convention diff --git a/test/cases/compile_errors/assign_null_to_non-optional_pointer.zig b/test/cases/compile_errors/assign_null_to_non-optional_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..ca36dbfbfbdf7b0963ab80dc5a16229d4a1de99b --- /dev/null +++ b/test/cases/compile_errors/assign_null_to_non-optional_pointer.zig @@ -0,0 +1,9 @@ +const a: *u8 = null; + +export fn entry() usize { return @sizeOf(@TypeOf(a)); } + +// error +// backend=stage2 +// target=native +// +// :1:16: error: expected type '*u8', found '@TypeOf(null)' diff --git a/test/cases/compile_errors/assign_through_constant_pointer.zig b/test/cases/compile_errors/assign_through_constant_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..21924ae4daa179311bb4c902c259afe9ba47a5f6 --- /dev/null +++ b/test/cases/compile_errors/assign_through_constant_pointer.zig @@ -0,0 +1,10 @@ +export fn f() void { + var cstr = "Hat"; + cstr[0] = 'W'; +} + +// error +// backend=stage2 +// target=native +// +// :3:13: error: cannot assign to constant diff --git a/test/cases/compile_errors/assign_through_constant_slice.zig b/test/cases/compile_errors/assign_through_constant_slice.zig new file mode 100644 index 0000000000000000000000000000000000000000..a7631be61c728bcbb50844b694eeaa429dbccd48 --- /dev/null +++ b/test/cases/compile_errors/assign_through_constant_slice.zig @@ -0,0 +1,10 @@ +export fn f() void { + var cstr: []const u8 = "Hat"; + cstr[0] = 'W'; +} + +// error +// backend=stage2 +// target=native +// +// :3:13: error: cannot assign to constant diff --git a/test/cases/compile_errors/assign_to_constant_field.zig b/test/cases/compile_errors/assign_to_constant_field.zig new file mode 100644 index 0000000000000000000000000000000000000000..4c79b295928bf1da21bcf3f82fe5aa19d97f880e --- /dev/null +++ b/test/cases/compile_errors/assign_to_constant_field.zig @@ -0,0 +1,13 @@ +const Foo = struct { + field: i32, +}; +export fn derp() void { + const f = Foo {.field = 1234,}; + f.field = 0; +} + +// error +// backend=stage2 +// target=native +// +// :6:15: error: cannot assign to constant diff --git a/test/cases/compile_errors/assign_to_constant_variable.zig b/test/cases/compile_errors/assign_to_constant_variable.zig new file mode 100644 index 0000000000000000000000000000000000000000..af6f33ec66525d572a2f9ac6e97e98cd8de1534c --- /dev/null +++ b/test/cases/compile_errors/assign_to_constant_variable.zig @@ -0,0 +1,10 @@ +export fn f() void { + const a = 3; + a = 4; +} + +// error +// backend=stage2 +// target=native +// +// :3:9: error: cannot assign to constant diff --git a/test/cases/compile_errors/assign_too_big_number_to_u16.zig b/test/cases/compile_errors/assign_too_big_number_to_u16.zig new file mode 100644 index 0000000000000000000000000000000000000000..1f8b097ae2329e49e24e17bee22b7546546206fc --- /dev/null +++ b/test/cases/compile_errors/assign_too_big_number_to_u16.zig @@ -0,0 +1,10 @@ +export fn foo() void { + var vga_mem: u16 = 0xB8000; + _ = vga_mem; +} + +// error +// backend=stage2 +// target=native +// +// :2:24: error: type 'u16' cannot represent integer value '753664' diff --git a/test/cases/compile_errors/assign_unreachable.zig b/test/cases/compile_errors/assign_unreachable.zig new file mode 100644 index 0000000000000000000000000000000000000000..f3d218e465568a6cbf513fac15af240d5cbb2693 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig b/test/cases/compile_errors/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig new file mode 100644 index 0000000000000000000000000000000000000000..be910701c4f4ad65b07b540125215a7c934a6711 --- /dev/null +++ b/test/cases/compile_errors/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var x: u32 = 0; + @atomicStore(u32, &x, 1, .Acquire); +} + +// error +// backend=stage2 +// target=native +// +// :3:31: error: @atomicStore atomic ordering must not be Acquire or AcqRel diff --git a/test/cases/compile_errors/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig b/test/cases/compile_errors/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig new file mode 100644 index 0000000000000000000000000000000000000000..3e797a031c879a8f96c4c363f4b8e2d63951e146 --- /dev/null +++ b/test/cases/compile_errors/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig @@ -0,0 +1,11 @@ +const AtomicOrder = @import("std").builtin.AtomicOrder; +export fn f() void { + var x: i32 = 1234; + while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.Monotonic, AtomicOrder.SeqCst)) {} +} + +// error +// backend=stage2 +// target=native +// +// :4:81: error: failure atomic ordering must be no stricter than success diff --git a/test/cases/compile_errors/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig b/test/cases/compile_errors/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig new file mode 100644 index 0000000000000000000000000000000000000000..0ab227f039e933a8fa1ec681dc1e3aa1c4417c85 --- /dev/null +++ b/test/cases/compile_errors/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig @@ -0,0 +1,11 @@ +const AtomicOrder = @import("std").builtin.AtomicOrder; +export fn f() void { + var x: i32 = 1234; + while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.Unordered, AtomicOrder.Unordered)) {} +} + +// error +// backend=stage2 +// target=native +// +// :4:58: error: success atomic ordering must be Monotonic or stricter diff --git a/test/cases/compile_errors/atomic_orderings_of_fence_Acquire_or_stricter.zig b/test/cases/compile_errors/atomic_orderings_of_fence_Acquire_or_stricter.zig new file mode 100644 index 0000000000000000000000000000000000000000..3982cc6bc23d390eeb269e87c50b80b4bb9db082 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/atomicrmw_with_bool_op_not_.Xchg.zig b/test/cases/compile_errors/atomicrmw_with_bool_op_not_.Xchg.zig new file mode 100644 index 0000000000000000000000000000000000000000..4582be60a678888f150379377c6b48f1e6d7ef0d --- /dev/null +++ b/test/cases/compile_errors/atomicrmw_with_bool_op_not_.Xchg.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var x = false; + _ = @atomicRmw(bool, &x, .Add, true, .SeqCst); +} + +// error +// backend=stage2 +// target=native +// +// :3:31: error: @atomicRmw with bool only allowed with .Xchg diff --git a/test/cases/compile_errors/atomicrmw_with_enum_op_not_.Xchg.zig b/test/cases/compile_errors/atomicrmw_with_enum_op_not_.Xchg.zig new file mode 100644 index 0000000000000000000000000000000000000000..197eee9f7c87db6b60bd43739da6d69d0a44faf7 --- /dev/null +++ b/test/cases/compile_errors/atomicrmw_with_enum_op_not_.Xchg.zig @@ -0,0 +1,16 @@ +export fn entry() void { + const E = enum(u8) { + a, + b, + c, + d, + }; + var x: E = .a; + _ = @atomicRmw(E, &x, .Add, .b, .SeqCst); +} + +// error +// backend=stage2 +// target=native +// +// :9:28: error: @atomicRmw with enum only allowed with .Xchg diff --git a/test/cases/compile_errors/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig b/test/cases/compile_errors/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig new file mode 100644 index 0000000000000000000000000000000000000000..80720fbca16aed050b006f9e70b3be1889e4f20d --- /dev/null +++ b/test/cases/compile_errors/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var x: f32 = 0; + _ = @atomicRmw(f32, &x, .And, 2, .SeqCst); +} + +// error +// backend=stage2 +// target=native +// +// :3:30: error: @atomicRmw with float only allowed with .Xchg, .Add, and .Sub diff --git a/test/cases/compile_errors/attempt_to_cast_enum_literal_to_error.zig b/test/cases/compile_errors/attempt_to_cast_enum_literal_to_error.zig new file mode 100644 index 0000000000000000000000000000000000000000..cc740d9038f098221fb28d95b672b6444ed3d324 --- /dev/null +++ b/test/cases/compile_errors/attempt_to_cast_enum_literal_to_error.zig @@ -0,0 +1,11 @@ +export fn entry() void { + switch (error.Hi) { + .Hi => {}, + } +} + +// error +// backend=stage2 +// target=native +// +// :3:10: error: expected type 'error{Hi}', found '@TypeOf(.enum_literal)' diff --git a/test/cases/compile_errors/attempt_to_close_over_comptime_variable_from_outer_scope.zig b/test/cases/compile_errors/attempt_to_close_over_comptime_variable_from_outer_scope.zig new file mode 100644 index 0000000000000000000000000000000000000000..d27f2854dc241cf314a99d3dc35629983f951158 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/attempt_to_create_17_bit_float_type.zig b/test/cases/compile_errors/attempt_to_create_17_bit_float_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..6748fa1edc6f680359bb669f33a2ddbe4e582e94 --- /dev/null +++ b/test/cases/compile_errors/attempt_to_create_17_bit_float_type.zig @@ -0,0 +1,10 @@ +const builtin = @import("std").builtin; +comptime { + _ = @Type(.{ .Float = .{ .bits = 17 } }); +} + +// error +// backend=stage2 +// target=native +// +// :3:9: error: 17-bit float unsupported diff --git a/test/cases/compile_errors/attempt_to_negate_a_non-integer_non-float_or_non-vector_type.zig b/test/cases/compile_errors/attempt_to_negate_a_non-integer_non-float_or_non-vector_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..66b249653c94ee353106eacf7ad0108a28692191 --- /dev/null +++ b/test/cases/compile_errors/attempt_to_negate_a_non-integer_non-float_or_non-vector_type.zig @@ -0,0 +1,14 @@ +fn foo() anyerror!u32 { + return 1; +} + +export fn entry() void { + const x = -foo(); + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :6:15: error: negation of type 'anyerror!u32' diff --git a/test/cases/compile_errors/attempted_double_ampersand.zig b/test/cases/compile_errors/attempted_double_ampersand.zig new file mode 100644 index 0000000000000000000000000000000000000000..3fd7779ddcac0e8483806fa055c11bbaacb23327 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/attempted_double_pipe_on_boolean_values.zig b/test/cases/compile_errors/attempted_double_pipe_on_boolean_values.zig new file mode 100644 index 0000000000000000000000000000000000000000..59b5bde8af6fd96ad8f89ea8591f18a13554b6e0 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/attempted_implicit_cast_from_T_to_slice_const_T.zig b/test/cases/compile_errors/attempted_implicit_cast_from_T_to_slice_const_T.zig new file mode 100644 index 0000000000000000000000000000000000000000..1d4afd55aced7f35c671a64cb0ab52220425d85c --- /dev/null +++ b/test/cases/compile_errors/attempted_implicit_cast_from_T_to_slice_const_T.zig @@ -0,0 +1,10 @@ +export fn entry() void { + const x: [*]const bool = true; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:30: error: expected type '[*]const bool', found 'bool' diff --git a/test/cases/compile_errors/attempted_implicit_cast_from_const_T_to_sliceT.zig b/test/cases/compile_errors/attempted_implicit_cast_from_const_T_to_sliceT.zig new file mode 100644 index 0000000000000000000000000000000000000000..0634b4696f1fb0bd6a1f857ea819d31750c3f70f --- /dev/null +++ b/test/cases/compile_errors/attempted_implicit_cast_from_const_T_to_sliceT.zig @@ -0,0 +1,11 @@ +export fn entry() void { + const u: u32 = 42; + const x: []u32 = &u; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :3:22: error: expected type '[]u32', found '*const u32' diff --git a/test/cases/compile_errors/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig b/test/cases/compile_errors/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig new file mode 100644 index 0000000000000000000000000000000000000000..0c056cb39bf2fe5655648403f7e7623b4c27025d --- /dev/null +++ b/test/cases/compile_errors/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig @@ -0,0 +1,17 @@ +export fn entry() void { + const BlockKind = u32; + + const Block = struct { + kind: BlockKind, + }; + + bogus; + + _ = Block; +} + +// error +// backend=stage2 +// target=native +// +// :8:5: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/bad_import.zig b/test/cases/compile_errors/bad_import.zig new file mode 100644 index 0000000000000000000000000000000000000000..49e78a4be4302a64b970e5220fa662d429a1739e --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/bad_splat_type.zig b/test/cases/compile_errors/bad_splat_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..f32fcb4fb7b384fc7297b2bce00ab2e3b0b25b32 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/bad_usage_of_call.zig b/test/cases/compile_errors/bad_usage_of_call.zig new file mode 100644 index 0000000000000000000000000000000000000000..002143b0b894e2315055d6a755350ba1cb4195b8 --- /dev/null +++ b/test/cases/compile_errors/bad_usage_of_call.zig @@ -0,0 +1,35 @@ +export fn entry1() void { + @call(.{}, foo, {}); +} +export fn entry2() void { + comptime @call(.{ .modifier = .never_inline }, foo, .{}); +} +export fn entry3() void { + comptime @call(.{ .modifier = .never_tail }, foo, .{}); +} +export fn entry4() void { + @call(.{ .modifier = .never_inline }, bar, .{}); +} +export fn entry5(c: bool) void { + var baz = if (c) &baz1 else &baz2; + @call(.{ .modifier = .compile_time }, baz, .{}); +} +pub export fn entry() void { + var call_me: *const fn () void = undefined; + @call(.{ .modifier = .always_inline }, call_me, .{}); +} +fn foo() void {} +fn bar() callconv(.Inline) void {} +fn baz1() void {} +fn baz2() void {} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected a tuple, found 'void' +// :5:21: error: unable to perform 'never_inline' call at compile-time +// :8:21: error: unable to perform 'never_tail' call at compile-time +// :11:5: error: no-inline call of inline function +// :15:43: error: modifier 'compile_time' requires a comptime-known function +// :19:44: error: modifier 'always_inline' requires a comptime-known function diff --git a/test/cases/compile_errors/binary_OR_operator_on_error_sets.zig b/test/cases/compile_errors/binary_OR_operator_on_error_sets.zig new file mode 100644 index 0000000000000000000000000000000000000000..9955194f95a3f63567becc471e5b1f119347dfe9 --- /dev/null +++ b/test/cases/compile_errors/binary_OR_operator_on_error_sets.zig @@ -0,0 +1,12 @@ +pub const A = error.A; +pub const AB = A | error.B; +export fn entry() void { + var x: AB = undefined; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:18: error: invalid operands to binary bitwise expression: 'ErrorSet' and 'ErrorSet' diff --git a/test/cases/compile_errors/binary_not_on_number_literal.zig b/test/cases/compile_errors/binary_not_on_number_literal.zig new file mode 100644 index 0000000000000000000000000000000000000000..cb57ca9ee15196184487d9fb7ef2e2e432336335 --- /dev/null +++ b/test/cases/compile_errors/binary_not_on_number_literal.zig @@ -0,0 +1,11 @@ +const TINY_QUANTUM_SHIFT = 4; +const TINY_QUANTUM_SIZE = 1 << TINY_QUANTUM_SHIFT; +var block_aligned_stuff: usize = (4 + TINY_QUANTUM_SIZE) & ~(TINY_QUANTUM_SIZE - 1); + +export fn entry() usize { return @sizeOf(@TypeOf(block_aligned_stuff)); } + +// error +// backend=stage2 +// target=native +// +// :3:60: error: unable to perform binary not operation on type 'comptime_int' diff --git a/test/cases/compile_errors/bitCast_same_size_but_bit_count_mismatch.zig b/test/cases/compile_errors/bitCast_same_size_but_bit_count_mismatch.zig new file mode 100644 index 0000000000000000000000000000000000000000..f67a5d139fe53d06088442bd058d7f84402087ea --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/bitCast_with_different_sizes_inside_an_expression.zig b/test/cases/compile_errors/bitCast_with_different_sizes_inside_an_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..8951eee5c07faac31f1ae3e81d39d72b8b57e1ea --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/bit_shifting_only_works_on_integer_types.zig b/test/cases/compile_errors/bit_shifting_only_works_on_integer_types.zig new file mode 100644 index 0000000000000000000000000000000000000000..b6362e83c8d88644e1ee9853eb4dddf3055626fc --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/bogus_method_call_on_slice.zig b/test/cases/compile_errors/bogus_method_call_on_slice.zig new file mode 100644 index 0000000000000000000000000000000000000000..5471871a239ef8a044a9700db5c3174a89404948 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/branch_on_undefined_value.zig b/test/cases/compile_errors/branch_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..a0a3be83cfa42a6efca4e1209c4c697ebd07ba28 --- /dev/null +++ b/test/cases/compile_errors/branch_on_undefined_value.zig @@ -0,0 +1,9 @@ +const x = if (undefined) true else false; + +export fn entry() usize { return @sizeOf(@TypeOf(x)); } + +// error +// backend=stage2 +// target=native +// +// :1:15: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/call_assigned_to_constant.zig b/test/cases/compile_errors/call_assigned_to_constant.zig new file mode 100644 index 0000000000000000000000000000000000000000..7533acbf0583f093b2a90aa7cffb615426aa97c0 --- /dev/null +++ b/test/cases/compile_errors/call_assigned_to_constant.zig @@ -0,0 +1,24 @@ +const Foo = struct { + x: i32, +}; +fn foo() Foo { + return .{ .x = 42 }; +} +fn bar(val: anytype) Foo { + return .{ .x = val }; +} +export fn entry() void { + const baz: Foo = undefined; + baz = foo(); +} +export fn entry1() void { + const baz: Foo = undefined; + baz = bar(42); +} + +// error +// backend=stage2 +// target=native +// +// :12:14: error: cannot assign to constant +// :16:14: error: cannot assign to constant diff --git a/test/cases/compile_errors/calling_var_args_extern_function_passing_array_instead_of_pointer.zig b/test/cases/compile_errors/calling_var_args_extern_function_passing_array_instead_of_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..fe8037d2872bfbfad3c82c25edb099d7e20d358f --- /dev/null +++ b/test/cases/compile_errors/calling_var_args_extern_function_passing_array_instead_of_pointer.zig @@ -0,0 +1,10 @@ +export fn entry() void { + foo("hello".*,); +} +pub extern fn foo(format: *const u8, ...) void; + +// error +// backend=stage2 +// target=native +// +// :2:8: error: expected type '*const u8', found '[5:0]u8' diff --git a/test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig b/test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig new file mode 100644 index 0000000000000000000000000000000000000000..136bf612bfdd7a9b9bc93f30f99918aa99d78bfb --- /dev/null +++ b/test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig @@ -0,0 +1,15 @@ +const Foo = enum { + a, + b, +}; +export fn entry() void { + const x: Foo = .c; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :6:21: error: enum 'tmp.Foo' has no field named 'c' +// :1:13: note: enum declared here diff --git a/test/cases/compile_errors/cast_negative_integer_literal_to_usize.zig b/test/cases/compile_errors/cast_negative_integer_literal_to_usize.zig new file mode 100644 index 0000000000000000000000000000000000000000..29a5e522b93a373cc51a679f486542ea259728d2 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/cast_negative_value_to_unsigned_integer.zig b/test/cases/compile_errors/cast_negative_value_to_unsigned_integer.zig new file mode 100644 index 0000000000000000000000000000000000000000..ebd9012015c45bec2450aac161f6d61ca9c7512d --- /dev/null +++ b/test/cases/compile_errors/cast_negative_value_to_unsigned_integer.zig @@ -0,0 +1,17 @@ +comptime { + const value: i32 = -1; + const unsigned = @intCast(u32, value); + _ = unsigned; +} +export fn entry1() void { + const value: i32 = -1; + const unsigned: u32 = value; + _ = unsigned; +} + +// error +// backend=llvm +// target=native +// +// :3:36: error: type 'u32' cannot represent integer value '-1' +// :8:27: error: type 'u32' cannot represent integer value '-1' diff --git a/test/cases/compile_errors/cast_unreachable.zig b/test/cases/compile_errors/cast_unreachable.zig new file mode 100644 index 0000000000000000000000000000000000000000..cf2331ff7e5fbf36eacc277ad6d6567f6bf46e3f --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/casting_bit_offset_pointer_to_regular_pointer.zig b/test/cases/compile_errors/casting_bit_offset_pointer_to_regular_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..083d68ee4019731de53dced0052b6bc07235c2a8 --- /dev/null +++ b/test/cases/compile_errors/casting_bit_offset_pointer_to_regular_pointer.zig @@ -0,0 +1,21 @@ +const BitField = packed struct { + a: u3, + b: u3, + c: u2, +}; + +fn foo(bit_field: *const BitField) u3 { + return bar(&bit_field.b); +} + +fn bar(x: *const u3) u3 { + return x.*; +} + +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } + +// error +// backend=stage2 +// target=native +// +// :8:15: error: expected type '*const u3', found '*align(0:3:1) const u3' diff --git a/test/cases/compile_errors/chained_comparison_operators.zig b/test/cases/compile_errors/chained_comparison_operators.zig new file mode 100644 index 0000000000000000000000000000000000000000..32c6ee64b2e58764bb48aecba0c931d66d71cd9a --- /dev/null +++ b/test/cases/compile_errors/chained_comparison_operators.zig @@ -0,0 +1,9 @@ +export fn a(value: u32) bool { + return 1 < value < 1000; +} + +// error +// backend=stage2 +// target=native +// +// :2:22: error: comparison operators cannot be chained diff --git a/test/cases/compile_errors/cmpxchg_with_float.zig b/test/cases/compile_errors/cmpxchg_with_float.zig new file mode 100644 index 0000000000000000000000000000000000000000..1acfdd14d8955596cb02654b3e9e9f433e54466e --- /dev/null +++ b/test/cases/compile_errors/cmpxchg_with_float.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var x: f32 = 0; + _ = @cmpxchgWeak(f32, &x, 1, 2, .SeqCst, .SeqCst); +} + +// error +// backend=stage2 +// target=native +// +// :3:22: error: expected bool, integer, enum, or pointer type; found 'f32' diff --git a/test/cases/compile_errors/colliding_invalid_top_level_functions.zig b/test/cases/compile_errors/colliding_invalid_top_level_functions.zig new file mode 100644 index 0000000000000000000000000000000000000000..ee0711088d924a2dab4c11c13a50bfc3d939967a --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/combination_of_nosuspend_and_async.zig b/test/cases/compile_errors/combination_of_nosuspend_and_async.zig new file mode 100644 index 0000000000000000000000000000000000000000..dd853432b6e8f0c862ee1ee3e6de37464244edd7 --- /dev/null +++ b/test/cases/compile_errors/combination_of_nosuspend_and_async.zig @@ -0,0 +1,15 @@ +export fn entry() void { + nosuspend { + const bar = async foo(); + suspend {} + resume bar; + } +} +fn foo() void {} + +// error +// backend=stage2 +// target=native +// +// :4:9: error: suspend inside nosuspend block +// :2:5: note: nosuspend block here diff --git a/test/cases/compile_errors/comparing_a_non-optional_pointer_against_null.zig b/test/cases/compile_errors/comparing_a_non-optional_pointer_against_null.zig new file mode 100644 index 0000000000000000000000000000000000000000..4d8c5f53e9ee033889de6e747f9e6d4ddac936e8 --- /dev/null +++ b/test/cases/compile_errors/comparing_a_non-optional_pointer_against_null.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var x: i32 = 1; + _ = &x == null; +} + +// error +// backend=stage2 +// target=native +// +// :3:12: error: comparison of '*i32' with null diff --git a/test/cases/compile_errors/comparing_against_undefined_produces_undefined_value.zig b/test/cases/compile_errors/comparing_against_undefined_produces_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..d98741b80d9c7c9c1249ea4c6b0b2a06d1a444c5 --- /dev/null +++ b/test/cases/compile_errors/comparing_against_undefined_produces_undefined_value.zig @@ -0,0 +1,9 @@ +export fn entry() void { + if (2 == undefined) {} +} + +// error +// backend=stage2 +// target=native +// +// :2:11: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/comparison_operators_with_undefined_value.zig b/test/cases/compile_errors/comparison_operators_with_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..b7b40d3178bcbfbc71a03954ac9a1bfe6a22c0ca --- /dev/null +++ b/test/cases/compile_errors/comparison_operators_with_undefined_value.zig @@ -0,0 +1,47 @@ +// operator == +comptime { + var a: i64 = undefined; + var x: i32 = 0; + if (a == a) x += 1; +} +// operator != +comptime { + var a: i64 = undefined; + var x: i32 = 0; + if (a != a) x += 1; +} +// operator > +comptime { + var a: i64 = undefined; + var x: i32 = 0; + if (a > a) x += 1; +} +// operator < +comptime { + var a: i64 = undefined; + var x: i32 = 0; + if (a < a) x += 1; +} +// operator >= +comptime { + var a: i64 = undefined; + var x: i32 = 0; + if (a >= a) x += 1; +} +// operator <= +comptime { + var a: i64 = undefined; + var x: i32 = 0; + if (a <= a) x += 1; +} + +// error +// backend=stage2 +// target=native +// +// :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 diff --git a/test/cases/compile_errors/comparison_with_error_union_and_error_value.zig b/test/cases/compile_errors/comparison_with_error_union_and_error_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..3a9eabcb95153a9fca5112563da5090581bd81bd --- /dev/null +++ b/test/cases/compile_errors/comparison_with_error_union_and_error_value.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var number_or_error: anyerror!i32 = error.SomethingAwful; + _ = number_or_error == error.SomethingAwful; +} + +// error +// backend=stage2 +// target=native +// +// :3:25: error: operator == not allowed for type 'anyerror!i32' diff --git a/test/cases/compile_errors/compileError_shows_traceback_of_references_that_caused_it.zig b/test/cases/compile_errors/compileError_shows_traceback_of_references_that_caused_it.zig new file mode 100644 index 0000000000000000000000000000000000000000..092cbbd400345f8d950a7d997ea392b972ee54ad --- /dev/null +++ b/test/cases/compile_errors/compileError_shows_traceback_of_references_that_caused_it.zig @@ -0,0 +1,14 @@ +const foo = @compileError("aoeu",); + +const bar = baz + foo; +const baz = 1; + +export fn entry() i32 { + return bar; +} + +// error +// backend=stage2 +// target=native +// +// :1:13: error: aoeu diff --git a/test/cases/compile_errors/compile_error_in_struct_init_expression.zig b/test/cases/compile_errors/compile_error_in_struct_init_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..64a97a7a5b0c6d2c29f2cf46066a6ca8d09c9158 --- /dev/null +++ b/test/cases/compile_errors/compile_error_in_struct_init_expression.zig @@ -0,0 +1,16 @@ +const Foo = struct { + a: i32 = crap, + b: i32, +}; +export fn entry() void { + var x = Foo{ + .b = 5, + }; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:14: error: use of undeclared identifier 'crap' diff --git a/test/cases/compile_errors/compile_error_when_evaluating_return_type_of_inferred_error_set.zig b/test/cases/compile_errors/compile_error_when_evaluating_return_type_of_inferred_error_set.zig new file mode 100644 index 0000000000000000000000000000000000000000..fcb696ed64dc6b6d9dce008b36d4f6279ba24e4a --- /dev/null +++ b/test/cases/compile_errors/compile_error_when_evaluating_return_type_of_inferred_error_set.zig @@ -0,0 +1,14 @@ +const Car = struct { + foo: *SymbolThatDoesNotExist, + pub fn init() !Car {} +}; +export fn entry() void { + const car = Car.init(); + _ = car; +} + +// error +// backend=stage2 +// target=native +// +// :2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist' diff --git a/test/cases/compile_errors/compile_log_a_pointer_to_an_opaque_value.zig b/test/cases/compile_errors/compile_log_a_pointer_to_an_opaque_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..252b6e5f14f2a86c467b1e63100cc8560e7d4a65 --- /dev/null +++ b/test/cases/compile_errors/compile_log_a_pointer_to_an_opaque_value.zig @@ -0,0 +1,9 @@ +export fn entry() void { + @compileLog(@ptrCast(*const anyopaque, &entry)); +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: found compile log statement diff --git a/test/cases/compile_errors/compile_log_statement_warning_deduplication_in_generic_fn.zig b/test/cases/compile_errors/compile_log_statement_warning_deduplication_in_generic_fn.zig new file mode 100644 index 0000000000000000000000000000000000000000..76e1c80cf94efef9484223f12e8912db62161b3f --- /dev/null +++ b/test/cases/compile_errors/compile_log_statement_warning_deduplication_in_generic_fn.zig @@ -0,0 +1,15 @@ +export fn entry() void { + inner(1); + inner(2); +} +fn inner(comptime n: usize) void { + comptime var i = 0; + inline while (i < n) : (i += 1) { @compileLog("!@#$"); } +} + +// error +// backend=llvm +// target=native +// +// :7:39: error: found compile log statement +// :7:39: note: also here diff --git a/test/cases/compile_errors/comptime_cast_enum_to_union_but_field_has_payload.zig b/test/cases/compile_errors/comptime_cast_enum_to_union_but_field_has_payload.zig new file mode 100644 index 0000000000000000000000000000000000000000..d38738dae727d50d17be0012d115cad073c10aeb --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/comptime_slice_of_undefined_pointer_non-zero_len.zig b/test/cases/compile_errors/comptime_slice_of_undefined_pointer_non-zero_len.zig new file mode 100644 index 0000000000000000000000000000000000000000..9640afe4065ddcbf626f6483899ad6248b16baaf --- /dev/null +++ b/test/cases/compile_errors/comptime_slice_of_undefined_pointer_non-zero_len.zig @@ -0,0 +1,10 @@ +export fn entry() void { + const slice = @as([*]i32, undefined)[0..1]; + _ = slice; +} + +// error +// backend=stage2 +// target=native +// +// :2:41: error: non-zero length slice of undefined pointer diff --git a/test/cases/compile_errors/comptime_struct_field_no_init_value.zig b/test/cases/compile_errors/comptime_struct_field_no_init_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..c0cb470eeeb3ba05e618362e532204ded04f1d3f --- /dev/null +++ b/test/cases/compile_errors/comptime_struct_field_no_init_value.zig @@ -0,0 +1,13 @@ +const Foo = struct { + comptime b: i32, +}; +export fn entry() void { + var f: Foo = undefined; + _ = f; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: comptime field without default initialization value diff --git a/test/cases/compile_errors/comptime_vector_overflow_shows_the_index.zig b/test/cases/compile_errors/comptime_vector_overflow_shows_the_index.zig new file mode 100644 index 0000000000000000000000000000000000000000..678d99376e81066599c1c10dedf4d6bba6ae8024 --- /dev/null +++ b/test/cases/compile_errors/comptime_vector_overflow_shows_the_index.zig @@ -0,0 +1,13 @@ +comptime { + var a: @import("std").meta.Vector(4, u8) = [_]u8{ 1, 2, 255, 4 }; + var b: @import("std").meta.Vector(4, u8) = [_]u8{ 5, 6, 1, 8 }; + var x = a + b; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :4:15: error: overflow of vector type '@Vector(4, u8)' with value '.{ 6, 8, 256, 12 }' +// :4:15: note: when computing vector element at index '2' diff --git a/test/cases/compile_errors/const_is_a_statement_not_an_expression.zig b/test/cases/compile_errors/const_is_a_statement_not_an_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..576b028372bef51b2e121c594080c4268d0ca4f5 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/container_init_with_non-type.zig b/test/cases/compile_errors/container_init_with_non-type.zig new file mode 100644 index 0000000000000000000000000000000000000000..ea2302061154d16d86c39625150be19c852ac643 --- /dev/null +++ b/test/cases/compile_errors/container_init_with_non-type.zig @@ -0,0 +1,10 @@ +const zero: i32 = 0; +const a = zero{1}; + +export fn entry() usize { return @sizeOf(@TypeOf(a)); } + +// error +// backend=stage2 +// target=native +// +// :2:15: error: expected type 'type', found 'i32' diff --git a/test/cases/compile_errors/control_flow_uses_comptime_var_at_runtime.zig b/test/cases/compile_errors/control_flow_uses_comptime_var_at_runtime.zig new file mode 100644 index 0000000000000000000000000000000000000000..43ef20873c356224456f0aea0cdf6b0487e4c4d8 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/declaration_between_fields.zig b/test/cases/compile_errors/declaration_between_fields.zig new file mode 100644 index 0000000000000000000000000000000000000000..4c296f9080ad267fa60ab3a8000aa6764cb7feb2 --- /dev/null +++ b/test/cases/compile_errors/declaration_between_fields.zig @@ -0,0 +1,24 @@ +const S = struct { + const foo = 2; + const bar = 2; + const baz = 2; + a: struct { + a: u32, + b: u32, + }, + const foo1 = 2; + const bar1 = 2; + const baz1 = 2; + b: usize, +}; +comptime { + _ = S; +} + +// error +// backend=stage2 +// target=native +// +// :9:5: error: declarations are not allowed between container fields +// :5:5: note: field before declarations here +// :12:5: note: field after declarations here diff --git a/test/cases/compile_errors/declaration_with_same_name_as_primitive_must_use_special_syntax.zig b/test/cases/compile_errors/declaration_with_same_name_as_primitive_must_use_special_syntax.zig new file mode 100644 index 0000000000000000000000000000000000000000..559e8e743a2ae05d017287a6141117e09c8e7afa --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/deduplicate_undeclared_identifier.zig b/test/cases/compile_errors/deduplicate_undeclared_identifier.zig new file mode 100644 index 0000000000000000000000000000000000000000..34501e3c518edfa5141bdb718afa7a1a09d4b09c --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/dont_implicit_cast_double_pointer_to_anyopaque.zig b/test/cases/compile_errors/dont_implicit_cast_double_pointer_to_anyopaque.zig new file mode 100644 index 0000000000000000000000000000000000000000..2ba566f22147a8b1763ce02ec8ef6b4e7e5f4c8a --- /dev/null +++ b/test/cases/compile_errors/dont_implicit_cast_double_pointer_to_anyopaque.zig @@ -0,0 +1,13 @@ +export fn entry() void { + var a: u32 = 1; + var ptr: *align(@alignOf(u32)) anyopaque = &a; + var b: *u32 = @ptrCast(*u32, ptr); + var ptr2: *anyopaque = &b; + _ = ptr2; +} + +// error +// backend=stage2 +// target=native +// +// :5:28: error: expected type '*anyopaque', found '**u32' diff --git a/test/cases/compile_errors/duplicate_boolean_switch_value.zig b/test/cases/compile_errors/duplicate_boolean_switch_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..81ccebf37bf5797836e870d398fe6a175b2b0565 --- /dev/null +++ b/test/cases/compile_errors/duplicate_boolean_switch_value.zig @@ -0,0 +1,23 @@ +comptime { + const x = switch (true) { + true => false, + false => true, + true => false, + }; + _ = x; +} +comptime { + const x = switch (true) { + false => true, + true => false, + false => true, + }; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :5:9: error: duplicate switch value +// :13:9: error: duplicate switch value diff --git a/test/cases/compile_errors/duplicate_error_value_in_error_set.zig b/test/cases/compile_errors/duplicate_error_value_in_error_set.zig new file mode 100644 index 0000000000000000000000000000000000000000..5e9cddb975d8108ab52d75df3cf855ef3a905939 --- /dev/null +++ b/test/cases/compile_errors/duplicate_error_value_in_error_set.zig @@ -0,0 +1,15 @@ +const Foo = error { + Bar, + Bar, +}; +export fn entry() void { + const a: Foo = undefined; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :3:5: error: duplicate error set field 'Bar' +// :2:5: note: previous declaration here diff --git a/test/cases/compile_errors/duplicate_field_in_struct_value_expression.zig b/test/cases/compile_errors/duplicate_field_in_struct_value_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..fa5bc6fb4e31f7560b32c7afa43732c2fea0217b --- /dev/null +++ b/test/cases/compile_errors/duplicate_field_in_struct_value_expression.zig @@ -0,0 +1,21 @@ +const A = struct { + x : i32, + y : i32, + z : i32, +}; +export fn f() void { + const a = A { + .z = 1, + .y = 2, + .x = 3, + .z = 4, + }; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :11:10: error: duplicate field +// :8:10: note: other field here diff --git a/test/cases/compile_errors/duplicate_struct_field.zig b/test/cases/compile_errors/duplicate_struct_field.zig new file mode 100644 index 0000000000000000000000000000000000000000..bb37178a85063996db0da69eb579b38aad4e4677 --- /dev/null +++ b/test/cases/compile_errors/duplicate_struct_field.zig @@ -0,0 +1,16 @@ +const Foo = struct { + Bar: i32, + Bar: usize, +}; +export fn entry() void { + const a: Foo = undefined; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :3:5: error: duplicate struct field: 'Bar' +// :2:5: note: other field here +// :1:13: note: struct declared here diff --git a/test/cases/compile_errors/duplicate_union_field.zig b/test/cases/compile_errors/duplicate_union_field.zig new file mode 100644 index 0000000000000000000000000000000000000000..6a0265dd0294d5c6ba8dd334eea382cfa3363087 --- /dev/null +++ b/test/cases/compile_errors/duplicate_union_field.zig @@ -0,0 +1,16 @@ +const Foo = union { + Bar: i32, + Bar: usize, +}; +export fn entry() void { + const a: Foo = undefined; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :3:5: error: duplicate union field: 'Bar' +// :2:5: note: other field here +// :1:13: note: union declared here diff --git a/test/cases/compile_errors/embedFile_with_bogus_file.zig b/test/cases/compile_errors/embedFile_with_bogus_file.zig new file mode 100644 index 0000000000000000000000000000000000000000..fa05d1ed49090aa8295a92f66c05d5fa14d5fd62 --- /dev/null +++ b/test/cases/compile_errors/embedFile_with_bogus_file.zig @@ -0,0 +1,9 @@ +const resource = @embedFile("bogus.txt",); + +export fn entry() usize { return @sizeOf(@TypeOf(resource)); } + +// error +// backend=stage2 +// target=native +// +// :1:29: error: unable to open 'bogus.txt': FileNotFound diff --git a/test/cases/compile_errors/empty_for_loop_body.zig b/test/cases/compile_errors/empty_for_loop_body.zig new file mode 100644 index 0000000000000000000000000000000000000000..5d08573e327b79b90318efb4b558903c8641d590 --- /dev/null +++ b/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 ';' diff --git a/test/cases/compile_errors/empty_if_body.zig b/test/cases/compile_errors/empty_if_body.zig new file mode 100644 index 0000000000000000000000000000000000000000..341b83c2b3fc352676725676000d142f1adda80b --- /dev/null +++ b/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 ';' diff --git a/test/cases/compile_errors/empty_switch_on_an_integer.zig b/test/cases/compile_errors/empty_switch_on_an_integer.zig new file mode 100644 index 0000000000000000000000000000000000000000..de4d7e9c652d8b9a9f945d0206582da4cf82934a --- /dev/null +++ b/test/cases/compile_errors/empty_switch_on_an_integer.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var x: u32 = 0; + switch(x) {} +} + +// error +// backend=stage2 +// target=native +// +// :3:5: error: switch must handle all possibilities diff --git a/test/cases/compile_errors/empty_while_loop_body.zig b/test/cases/compile_errors/empty_while_loop_body.zig new file mode 100644 index 0000000000000000000000000000000000000000..70320c204ef23c4d5a2f6d54e5f8b100ac5bda75 --- /dev/null +++ b/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 ';' diff --git a/test/cases/compile_errors/enum_in_field_count_range_but_not_matching_tag.zig b/test/cases/compile_errors/enum_in_field_count_range_but_not_matching_tag.zig new file mode 100644 index 0000000000000000000000000000000000000000..e79f6d478f97cc305c884f827d9c1c21ad721571 --- /dev/null +++ b/test/cases/compile_errors/enum_in_field_count_range_but_not_matching_tag.zig @@ -0,0 +1,15 @@ +const Foo = enum(u32) { + A = 10, + B = 11, +}; +export fn entry() void { + var x = @intToEnum(Foo, 0); + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :6:13: error: enum 'tmp.Foo' has no tag with value '0' +// :1:13: note: enum declared here diff --git a/test/cases/compile_errors/enum_with_0_fields.zig b/test/cases/compile_errors/enum_with_0_fields.zig new file mode 100644 index 0000000000000000000000000000000000000000..f34065b69d6b6426c3b5312c4517d58b730444a0 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/enum_with_declarations_unavailable_for_reify_type.zig b/test/cases/compile_errors/enum_with_declarations_unavailable_for_reify_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..f23718c2ca57e44f094dfa709cc74cceea491bca --- /dev/null +++ b/test/cases/compile_errors/enum_with_declarations_unavailable_for_reify_type.zig @@ -0,0 +1,9 @@ +export fn entry() void { + _ = @Type(@typeInfo(enum { foo, const bar = 1; })); +} + +// error +// backend=stage2 +// target=native +// +// :2:9: error: reified enums must have no decls diff --git a/test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig b/test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig new file mode 100644 index 0000000000000000000000000000000000000000..0c6c1cfb3541f5b1ec43e90c0640fc9dcc175dcc --- /dev/null +++ b/test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig @@ -0,0 +1,16 @@ +pub export fn entry() void { + const bitfield = struct { + e: u8, + e: u8, + }; + var a = .{@sizeOf(bitfield)}; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :4:9: error: duplicate struct field: 'e' +// :3:9: note: other field here +// :2:22: note: struct declared here diff --git a/test/cases/compile_errors/error_union_operator_with_non_error_set_LHS.zig b/test/cases/compile_errors/error_union_operator_with_non_error_set_LHS.zig new file mode 100644 index 0000000000000000000000000000000000000000..cafca1ee55bd6c15afc4d3590d5974955c3a9af2 --- /dev/null +++ b/test/cases/compile_errors/error_union_operator_with_non_error_set_LHS.zig @@ -0,0 +1,11 @@ +comptime { + const z = i32!i32; + var x: z = undefined; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:15: error: expected error set type, found 'i32' diff --git a/test/cases/compile_errors/errors_in_for_loop_bodies_are_propagated.zig b/test/cases/compile_errors/errors_in_for_loop_bodies_are_propagated.zig new file mode 100644 index 0000000000000000000000000000000000000000..bc30b5cbe609b670d79be8a5000cbb7bea8aee58 --- /dev/null +++ b/test/cases/compile_errors/errors_in_for_loop_bodies_are_propagated.zig @@ -0,0 +1,10 @@ +pub export fn entry() void { + var arr: [100]u8 = undefined; + for (arr) |bits| _ = @popCount(bits); +} + +// error +// backend=stage2 +// target=native +// +// :3:26: error: expected 2 arguments, found 1 diff --git a/test/cases/compile_errors/exceeded_maximum_bit_width_of_integer.zig b/test/cases/compile_errors/exceeded_maximum_bit_width_of_integer.zig new file mode 100644 index 0000000000000000000000000000000000000000..b002fca9c9e56b3615446ab1ad117af8979aa0d8 --- /dev/null +++ b/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=llvm +// 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 diff --git a/test/cases/compile_errors/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig b/test/cases/compile_errors/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig new file mode 100644 index 0000000000000000000000000000000000000000..1aee4580aeba26bba3147b41757ce6f34b038e73 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig b/test/cases/compile_errors/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig new file mode 100644 index 0000000000000000000000000000000000000000..22fc965769e5bdbd018085d165fb9de2f9ab8d32 --- /dev/null +++ b/test/cases/compile_errors/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig @@ -0,0 +1,14 @@ +const Set1 = error {A, B}; +const Set2 = error {A, C}; +comptime { + var x = Set1.B; + var y = @errSetCast(Set2, x); + _ = y; +} + +// error +// backend=stage2 +// target=native +// +// :5:13: error: 'error.B' not a member of error set 'error{A,C}' +// :2:14: note: error set declared here diff --git a/test/cases/compile_errors/export_with_empty_name_string.zig b/test/cases/compile_errors/export_with_empty_name_string.zig new file mode 100644 index 0000000000000000000000000000000000000000..4f0cee9cf467e8e059c8aad08bca6c8a29add62c --- /dev/null +++ b/test/cases/compile_errors/export_with_empty_name_string.zig @@ -0,0 +1,10 @@ +pub export fn entry() void { } +comptime { + @export(entry, .{ .name = "" }); +} + +// error +// backend=llvm +// target=native +// +// :3:21: error: exported symbol name cannot be empty diff --git a/test/cases/compile_errors/extern_union_field_missing_type.zig b/test/cases/compile_errors/extern_union_field_missing_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..6890e65714c48c83a7228841785b998899970c01 --- /dev/null +++ b/test/cases/compile_errors/extern_union_field_missing_type.zig @@ -0,0 +1,13 @@ +const Letter = extern union { + A, +}; +export fn entry() void { + var a = Letter { .A = {} }; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: union field missing type diff --git a/test/cases/compile_errors/extern_variable_has_no_type.zig b/test/cases/compile_errors/extern_variable_has_no_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..7166cfc8ebcbe2afa0e19e59c5d516ab6750e3fa --- /dev/null +++ b/test/cases/compile_errors/extern_variable_has_no_type.zig @@ -0,0 +1,10 @@ +extern var foo; +pub export fn entry() void { + foo; +} + +// error +// backend=stage2 +// target=native +// +// :1:8: error: unable to infer variable type diff --git a/test/cases/compile_errors/fieldParentPtr-bad_field_name.zig b/test/cases/compile_errors/fieldParentPtr-bad_field_name.zig new file mode 100644 index 0000000000000000000000000000000000000000..d3e487d3ce68106469645d6961b537e006f72fd6 --- /dev/null +++ b/test/cases/compile_errors/fieldParentPtr-bad_field_name.zig @@ -0,0 +1,13 @@ +const Foo = extern struct { + derp: i32, +}; +export fn foo(a: *i32) *Foo { + return @fieldParentPtr(Foo, "a", a); +} + +// error +// backend=stage2 +// target=native +// +// :5:33: error: no field named 'a' in struct 'tmp.Foo' +// :1:20: note: struct declared here diff --git a/test/cases/compile_errors/fieldParentPtr-non_struct.zig b/test/cases/compile_errors/fieldParentPtr-non_struct.zig new file mode 100644 index 0000000000000000000000000000000000000000..0a2f46e5c92398a85bea160366068e13fc039c07 --- /dev/null +++ b/test/cases/compile_errors/fieldParentPtr-non_struct.zig @@ -0,0 +1,10 @@ +const Foo = i32; +export fn foo(a: *i32) *Foo { + return @fieldParentPtr(Foo, "a", a); +} + +// error +// backend=llvm +// target=native +// +// :3:28: error: expected struct type, found 'i32' diff --git a/test/cases/compile_errors/field_type_supplied_in_an_enum.zig b/test/cases/compile_errors/field_type_supplied_in_an_enum.zig new file mode 100644 index 0000000000000000000000000000000000000000..20248c2355a9d2026bf9eb9b125aa1813383d5cd --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/function_call_assigned_to_incorrect_type.zig b/test/cases/compile_errors/function_call_assigned_to_incorrect_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..41d5b588daeef40c2fa6925f30982cc31e02ec9b --- /dev/null +++ b/test/cases/compile_errors/function_call_assigned_to_incorrect_type.zig @@ -0,0 +1,13 @@ +export fn entry() void { + var arr: [4]f32 = undefined; + arr = concat(); +} +fn concat() [16]f32 { + return [1]f32{0}**16; +} + +// error +// backend=llvm +// target=native +// +// :3:17: error: expected type '[4]f32', found '[16]f32' diff --git a/test/cases/compile_errors/function_prototype_with_no_body.zig b/test/cases/compile_errors/function_prototype_with_no_body.zig new file mode 100644 index 0000000000000000000000000000000000000000..45bafa75f2a903f9f491866d743bea2f8067ac84 --- /dev/null +++ b/test/cases/compile_errors/function_prototype_with_no_body.zig @@ -0,0 +1,10 @@ +fn foo() void; +export fn entry() void { + foo(); +} + +// error +// backend=llvm +// target=native +// +// :1:1: error: non-extern function has no body diff --git a/test/cases/compile_errors/function_with_invalid_return_type.zig b/test/cases/compile_errors/function_with_invalid_return_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..afae037ef14ecf75533c8ec4e3f346a0214c0fdc --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/generic_function_call_assigned_to_incorrect_type.zig b/test/cases/compile_errors/generic_function_call_assigned_to_incorrect_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..a2e303670d6d65d1f8ccf8f55fafb33da679cce4 --- /dev/null +++ b/test/cases/compile_errors/generic_function_call_assigned_to_incorrect_type.zig @@ -0,0 +1,13 @@ +pub export fn entry() void { + var res: []i32 = undefined; + res = myAlloc(i32); +} +fn myAlloc(comptime arg: type) anyerror!arg{ + unreachable; +} + +// error +// backend=stage2 +// target=native +// +// :3:18: error: expected type '[]i32', found 'anyerror!i32' diff --git a/test/cases/compile_errors/global_variable_initializer_must_be_constant_expression.zig b/test/cases/compile_errors/global_variable_initializer_must_be_constant_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..e2694343e82588ba7a2f67b7eb089463ff63926d --- /dev/null +++ b/test/cases/compile_errors/global_variable_initializer_must_be_constant_expression.zig @@ -0,0 +1,9 @@ +extern fn foo() i32; +const x = foo(); +export fn entry() i32 { return x; } + +// error +// backend=stage2 +// target=native +// +// :2:14: error: comptime call of extern function diff --git a/test/cases/compile_errors/hasDecl_with_non-container.zig b/test/cases/compile_errors/hasDecl_with_non-container.zig new file mode 100644 index 0000000000000000000000000000000000000000..a650c19c4b4d72e6b39529361920ce7850e78e26 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/if_condition_is_bool_not_int.zig b/test/cases/compile_errors/if_condition_is_bool_not_int.zig new file mode 100644 index 0000000000000000000000000000000000000000..20262f1b658bb4f44db013056d4c3d693b02e608 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/ignored_assert-err-ok_return_value.zig b/test/cases/compile_errors/ignored_assert-err-ok_return_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..04f6b3bd496ea8731c411caeaeb4c5b9e1ff8c0a --- /dev/null +++ b/test/cases/compile_errors/ignored_assert-err-ok_return_value.zig @@ -0,0 +1,10 @@ +export fn foo() void { + bar() catch unreachable; +} +fn bar() anyerror!i32 { return 0; } + +// error +// backend=stage2 +// target=native +// +// :2:11: error: expression value is ignored diff --git a/test/cases/compile_errors/ignored_comptime_statement_value.zig b/test/cases/compile_errors/ignored_comptime_statement_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..7a5258fb1df05ce7f395e1a10a3444b75c8b5e4c --- /dev/null +++ b/test/cases/compile_errors/ignored_comptime_statement_value.zig @@ -0,0 +1,9 @@ +export fn foo() void { + comptime {1;} +} + +// error +// backend=stage2 +// target=native +// +// :2:15: error: expression value is ignored diff --git a/test/cases/compile_errors/ignored_comptime_value.zig b/test/cases/compile_errors/ignored_comptime_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..6f207653d674cc07d200a39f2a1486a47987d69e --- /dev/null +++ b/test/cases/compile_errors/ignored_comptime_value.zig @@ -0,0 +1,9 @@ +export fn foo() void { + comptime 1; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: expression value is ignored diff --git a/test/cases/compile_errors/ignored_deferred_statement_value.zig b/test/cases/compile_errors/ignored_deferred_statement_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..6af541236ace5452925b6274bfce904590169a36 --- /dev/null +++ b/test/cases/compile_errors/ignored_deferred_statement_value.zig @@ -0,0 +1,9 @@ +export fn foo() void { + defer {1;} +} + +// error +// backend=stage2 +// target=native +// +// :2:12: error: expression value is ignored diff --git a/test/cases/compile_errors/ignored_return_value.zig b/test/cases/compile_errors/ignored_return_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..ac3756acf5e1fd5ef081b1d51fbebba9d1c618d1 --- /dev/null +++ b/test/cases/compile_errors/ignored_return_value.zig @@ -0,0 +1,10 @@ +export fn foo() void { + bar(); +} +fn bar() i32 { return 0; } + +// error +// backend=stage2 +// target=native +// +// :2:8: error: expression value is ignored diff --git a/test/cases/compile_errors/ignored_statement_value.zig b/test/cases/compile_errors/ignored_statement_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..5c79d1f964541e271a164b2e0d11143dfff03fef --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/implicit_semicolon-block_expr.zig b/test/cases/compile_errors/implicit_semicolon-block_expr.zig new file mode 100644 index 0000000000000000000000000000000000000000..7dd82b897ba3ad59045a03453da2e8135ee2a0b3 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-block_expr.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = {}; + var good = {}; + _ = {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:11: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-block_statement.zig b/test/cases/compile_errors/implicit_semicolon-block_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..189ba84d980a91ae2fa6017b1a3ed0f55e5aa7b5 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-block_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + {} + var good = {}; + ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:9: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-comptime_expression.zig b/test/cases/compile_errors/implicit_semicolon-comptime_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..decbc352e85a1f28ae387cb553da34259421a469 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-comptime_expression.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = comptime {}; + var good = {}; + _ = comptime {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:20: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-comptime_statement.zig b/test/cases/compile_errors/implicit_semicolon-comptime_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..d17db1592453cbfd1a9b6bcb909ed18715781f06 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-comptime_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + comptime {} + var good = {}; + comptime ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:18: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-defer.zig b/test/cases/compile_errors/implicit_semicolon-defer.zig new file mode 100644 index 0000000000000000000000000000000000000000..57fd3a26260062fe7d579e4b035d42e69f963946 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-defer.zig @@ -0,0 +1,12 @@ +export fn entry() void { + defer {} + var good = {}; + defer ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:15: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-for_expression.zig b/test/cases/compile_errors/implicit_semicolon-for_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..c751384e11b29a4bc36327bbe12ee3a5e08b396e --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-for_expression.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = for(foo()) |_| {}; + var good = {}; + _ = for(foo()) |_| {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:26: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-for_statement.zig b/test/cases/compile_errors/implicit_semicolon-for_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..14709cef4ccd3b944c4ad738a0d4e04d67baf4c8 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-for_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + for(foo()) |_| {} + var good = {}; + for(foo()) |_| ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:24: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-if-else-if-else_expression.zig b/test/cases/compile_errors/implicit_semicolon-if-else-if-else_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..72a4fa7d3e011299687868b2b820c81bf59751b2 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-if-else-if-else_expression.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = if(true) {} else if(true) {} else {}; + var good = {}; + _ = if(true) {} else if(true) {} else {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:45: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-if-else-if-else_statement.zig b/test/cases/compile_errors/implicit_semicolon-if-else-if-else_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..95135006bae70e23ce1c9153a5a28a2899596dcd --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-if-else-if-else_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + if(true) {} else if(true) {} else {} + var good = {}; + if(true) ({}) else if(true) ({}) else ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:47: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-if-else-if_expression.zig b/test/cases/compile_errors/implicit_semicolon-if-else-if_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..a29636bd1d2224d8cc1adc12f5189eb05f90512e --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-if-else-if_expression.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = if(true) {} else if(true) {}; + var good = {}; + _ = if(true) {} else if(true) {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:37: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-if-else-if_statement.zig b/test/cases/compile_errors/implicit_semicolon-if-else-if_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..c62430a0a207b9a1dd7d17b968aac6ac8ed90190 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-if-else-if_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + if(true) {} else if(true) {} + var good = {}; + if(true) ({}) else if(true) ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:37: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-if-else_expression.zig b/test/cases/compile_errors/implicit_semicolon-if-else_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..d5bee6e52be61ae87802f36d255df7518574c235 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-if-else_expression.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = if(true) {} else {}; + var good = {}; + _ = if(true) {} else {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:28: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-if-else_statement.zig b/test/cases/compile_errors/implicit_semicolon-if-else_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..94df12862600cbc0397a43f0cc68c22a149155d3 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-if-else_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + if(true) {} else {} + var good = {}; + if(true) ({}) else ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:28: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-if_expression.zig b/test/cases/compile_errors/implicit_semicolon-if_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..339a5378cfdc7c8d5c0bf603ff15bbc9cd2f7d9b --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-if_expression.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = if(true) {}; + var good = {}; + _ = if(true) {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:20: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-if_statement.zig b/test/cases/compile_errors/implicit_semicolon-if_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..b8ccb5e4016e269bcb00a9838556c4923b4fd374 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-if_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + if(true) {} + var good = {}; + if(true) ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:18: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-test_expression.zig b/test/cases/compile_errors/implicit_semicolon-test_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..2a37c0aa0e0f415fab7a3420644433440e615062 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-test_expression.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = if (foo()) |_| {}; + var good = {}; + _ = if (foo()) |_| {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:26: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-test_statement.zig b/test/cases/compile_errors/implicit_semicolon-test_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..afe00eba758ec116a753f8d45fdfaedc82261b6b --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-test_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + if (foo()) |_| {} + var good = {}; + if (foo()) |_| ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:24: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-while-continue_expression.zig b/test/cases/compile_errors/implicit_semicolon-while-continue_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..5587627597a0fbca7c1a7eac004677d88cbe6626 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-while-continue_expression.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = while(true):({}) {}; + var good = {}; + _ = while(true):({}) {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:28: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-while-continue_statement.zig b/test/cases/compile_errors/implicit_semicolon-while-continue_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..9bebe3861ea6ef44c6e0286de28bf4679dcd0566 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-while-continue_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + while(true):({}) {} + var good = {}; + while(true):({}) ({}) + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:26: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-while_expression.zig b/test/cases/compile_errors/implicit_semicolon-while_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..df388a7c39c4abb6bc64d143a020540a9d012ad3 --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-while_expression.zig @@ -0,0 +1,12 @@ +export fn entry() void { + _ = while(true) {}; + var good = {}; + _ = while(true) {} + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:23: error: expected ';' after statement diff --git a/test/cases/compile_errors/implicit_semicolon-while_statement.zig b/test/cases/compile_errors/implicit_semicolon-while_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..d9ed3d1e2a7e36bd70165338b21f2d4f3cf61ffe --- /dev/null +++ b/test/cases/compile_errors/implicit_semicolon-while_statement.zig @@ -0,0 +1,12 @@ +export fn entry() void { + while(true) {} + var good = {}; + while(true) 1 + var bad = {}; +} + +// error +// backend=stage2 +// target=native +// +// :4:18: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/import_outside_package_path.zig b/test/cases/compile_errors/import_outside_package_path.zig new file mode 100644 index 0000000000000000000000000000000000000000..0c0df594193ebf64fcbc085184b1e5c09d6765c4 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/inferred_array_size_invalid_here.zig b/test/cases/compile_errors/inferred_array_size_invalid_here.zig new file mode 100644 index 0000000000000000000000000000000000000000..084057dc8e6d8669bd6862ac4a00a4640a34398d --- /dev/null +++ b/test/cases/compile_errors/inferred_array_size_invalid_here.zig @@ -0,0 +1,16 @@ +export fn entry() void { + const x = [_]u8; + _ = x; +} +export fn entry2() void { + const S = struct { a: *const [_]u8 }; + var a = .{ S{} }; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :2:16: error: unable to infer array size +// :6:35: error: unable to infer array size diff --git a/test/cases/compile_errors/inferring_error_set_of_function_pointer.zig b/test/cases/compile_errors/inferring_error_set_of_function_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..862e33906a6b64eda0b9dc1e6a527a47b1f479c1 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/initializing_array_with_struct_syntax.zig b/test/cases/compile_errors/initializing_array_with_struct_syntax.zig new file mode 100644 index 0000000000000000000000000000000000000000..b8448b275888628dafb6820ec4a030850222bc45 --- /dev/null +++ b/test/cases/compile_errors/initializing_array_with_struct_syntax.zig @@ -0,0 +1,10 @@ +export fn entry() void { + const x = [_]u8{ .y = 2 }; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:15: error: initializing array with struct syntax diff --git a/test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig b/test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig new file mode 100644 index 0000000000000000000000000000000000000000..0b77f03baaa3dc9060d0c70b42d744a0e8f5f706 --- /dev/null +++ b/test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig @@ -0,0 +1,15 @@ +export fn foo() void { + var a: f32 = 2; + _ = @floatToInt(comptime_int, a); +} +export fn bar() void { + var a: u32 = 2; + _ = @intToFloat(comptime_float, a); +} + +// error +// backend=stage2 +// target=native +// +// :3:35: error: unable to resolve comptime value +// :7:37: error: unable to resolve comptime value diff --git a/test/cases/compile_errors/int_to_err_global_invalid_number.zig b/test/cases/compile_errors/int_to_err_global_invalid_number.zig new file mode 100644 index 0000000000000000000000000000000000000000..5bb9b75a8e77e505ce625c932c14fa8eb7bf320f --- /dev/null +++ b/test/cases/compile_errors/int_to_err_global_invalid_number.zig @@ -0,0 +1,15 @@ +const Set1 = error{ + A, + B, +}; +comptime { + var x: u16 = 3; + var y = @intToError(x); + _ = y; +} + +// error +// backend=stage2 +// target=native +// +// :7:25: error: integer value '3' represents no error diff --git a/test/cases/compile_errors/int_to_err_non_global_invalid_number.zig b/test/cases/compile_errors/int_to_err_non_global_invalid_number.zig new file mode 100644 index 0000000000000000000000000000000000000000..43aad76f459926ce56c1fbf50664dda71e655485 --- /dev/null +++ b/test/cases/compile_errors/int_to_err_non_global_invalid_number.zig @@ -0,0 +1,20 @@ +const Set1 = error{ + A, + B, +}; +const Set2 = error{ + A, + C, +}; +comptime { + var x = @errorToInt(Set1.B); + var y = @errSetCast(Set2, @intToError(x)); + _ = y; +} + +// error +// backend=llvm +// target=native +// +// :11:13: error: 'error.B' not a member of error set 'error{A,C}' +// :5:14: note: error set declared here diff --git a/test/cases/compile_errors/integer_overflow_error.zig b/test/cases/compile_errors/integer_overflow_error.zig new file mode 100644 index 0000000000000000000000000000000000000000..aa4725b7e7adaae0e4f8ff437971b6b28dfb4454 --- /dev/null +++ b/test/cases/compile_errors/integer_overflow_error.zig @@ -0,0 +1,8 @@ +const x : u8 = 300; +export fn entry() usize { return @sizeOf(@TypeOf(x)); } + +// error +// backend=stage2 +// target=native +// +// :1:16: error: type 'u8' cannot represent integer value '300' diff --git a/test/cases/compile_errors/integer_underflow_error.zig b/test/cases/compile_errors/integer_underflow_error.zig new file mode 100644 index 0000000000000000000000000000000000000000..120edd08387c98dc26b42d7bd9f2fd3b9b58027e --- /dev/null +++ b/test/cases/compile_errors/integer_underflow_error.zig @@ -0,0 +1,9 @@ +export fn entry() void { + _ = @intToPtr(*anyopaque, ~@as(usize, @import("std").math.maxInt(usize)) - 1); +} + +// error +// backend=stage2 +// target=native +// +// :2:78: error: overflow of integer type 'usize' with value '-1' diff --git a/test/cases/compile_errors/invalid_address_space_coercion.zig b/test/cases/compile_errors/invalid_address_space_coercion.zig new file mode 100644 index 0000000000000000000000000000000000000000..fd49aecb32a828af42b35ab8595860b8d2c19462 --- /dev/null +++ b/test/cases/compile_errors/invalid_address_space_coercion.zig @@ -0,0 +1,13 @@ +fn entry(a: *addrspace(.gs) i32) *i32 { + return a; +} +pub fn main() void { + _ = entry; +} + +// error +// output_mode=Exe +// backend=stage2,llvm +// target=x86_64-linux,x86_64-macos +// +// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32' diff --git a/test/cases/compile_errors/invalid_array_elem_ty.zig b/test/cases/compile_errors/invalid_array_elem_ty.zig index c7c259724644ac4132cfbc06ef2529ddfd386f4b..d1d7e4a070f26c01ce59159d10a0f05f1c84614e 100644 --- a/test/cases/compile_errors/invalid_array_elem_ty.zig +++ b/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' diff --git a/test/cases/compile_errors/invalid_assignments.zig b/test/cases/compile_errors/invalid_assignments.zig new file mode 100644 index 0000000000000000000000000000000000000000..d68fbda395684420bfe12160cda9278e5f613d2b --- /dev/null +++ b/test/cases/compile_errors/invalid_assignments.zig @@ -0,0 +1,19 @@ +export fn entry1() void { + var a: []const u8 = "foo"; + a[0..2] = "bar"; +} +export fn entry2() void { + var a: u8 = 2; + a + 2 = 3; +} +export fn entry4() void { + 2 + 2 = 3; +} + +// error +// backend=stage2 +// target=native +// +// :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 diff --git a/test/cases/compile_errors/invalid_break_expression.zig b/test/cases/compile_errors/invalid_break_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..2e7d37e60b02a19b333a46b2646d7d592ad54cbf --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/invalid_builtin_fn.zig b/test/cases/compile_errors/invalid_builtin_fn.zig new file mode 100644 index 0000000000000000000000000000000000000000..5b7b832177bfe6e0a44a57c77591702aef875008 --- /dev/null +++ b/test/cases/compile_errors/invalid_builtin_fn.zig @@ -0,0 +1,9 @@ +fn f() @bogus(foo) { +} +export fn entry() void { _ = f(); } + +// error +// backend=stage2 +// target=native +// +// :1:8: error: invalid builtin function: '@bogus' diff --git a/test/cases/compile_errors/invalid_comparison_for_function_pointers.zig b/test/cases/compile_errors/invalid_comparison_for_function_pointers.zig new file mode 100644 index 0000000000000000000000000000000000000000..cd63c70259b3d188cf438ea46685bdb3cd6823f5 --- /dev/null +++ b/test/cases/compile_errors/invalid_comparison_for_function_pointers.zig @@ -0,0 +1,10 @@ +fn foo() void {} +const invalid = foo > foo; + +export fn entry() usize { return @sizeOf(@TypeOf(invalid)); } + +// error +// backend=stage2 +// target=native +// +// :2:21: error: operator > not allowed for type 'fn() void' diff --git a/test/cases/compile_errors/invalid_continue_expression.zig b/test/cases/compile_errors/invalid_continue_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..8f368d1b6ace3f9c23a714e37030829f343a2c5c --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/invalid_empty_unicode_escape.zig b/test/cases/compile_errors/invalid_empty_unicode_escape.zig new file mode 100644 index 0000000000000000000000000000000000000000..5088bca6e72266720ede3a03e341a8b3ac63048c --- /dev/null +++ b/test/cases/compile_errors/invalid_empty_unicode_escape.zig @@ -0,0 +1,9 @@ +export fn entry() void { + const a = '\u{}'; +} + +// error +// backend=stage2 +// target=native +// +// :2:19: error: empty unicode escape sequence diff --git a/test/cases/compile_errors/invalid_exponent_in_float_literal-1.zig b/test/cases/compile_errors/invalid_exponent_in_float_literal-1.zig new file mode 100644 index 0000000000000000000000000000000000000000..27d302b2ee3e3e89d142462b44b0d53905f6e9bb --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/invalid_exponent_in_float_literal-2.zig b/test/cases/compile_errors/invalid_exponent_in_float_literal-2.zig new file mode 100644 index 0000000000000000000000000000000000000000..a3aa8037e1c5884926cfe407aa95bedeeded2a26 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/invalid_field_access_in_comptime.zig b/test/cases/compile_errors/invalid_field_access_in_comptime.zig new file mode 100644 index 0000000000000000000000000000000000000000..672c2b74c90b388770cbd82653477157236adcf1 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig b/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..fc9667910b6bda30c926f39b6aa2c4091ff9b2db --- /dev/null +++ b/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig @@ -0,0 +1,20 @@ +const A = struct { + x : i32, + y : i32, + z : i32, +}; +export fn f() void { + const a = A { + .z = 4, + .y = 2, + .foo = 42, + }; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :10:10: error: no field named 'foo' in struct 'tmp.A' +// :1:11: note: struct declared here diff --git a/test/cases/compile_errors/invalid_float_casts.zig b/test/cases/compile_errors/invalid_float_casts.zig new file mode 100644 index 0000000000000000000000000000000000000000..152c98182b5a5ce47f6397a7e0887bbb0f41d309 --- /dev/null +++ b/test/cases/compile_errors/invalid_float_casts.zig @@ -0,0 +1,25 @@ +export fn foo() void { + var a: f32 = 2; + _ = @floatCast(comptime_float, a); +} +export fn bar() void { + var a: f32 = 2; + _ = @floatToInt(f32, a); +} +export fn baz() void { + var a: f32 = 2; + _ = @intToFloat(f32, a); +} +export fn qux() void { + var a: u32 = 2; + _ = @floatCast(f32, a); +} + +// error +// backend=stage2 +// target=native +// +// :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' diff --git a/test/cases/compile_errors/invalid_float_literal.zig b/test/cases/compile_errors/invalid_float_literal.zig new file mode 100644 index 0000000000000000000000000000000000000000..076e36ade1e8ca64090d7c15493b162a2fa55df7 --- /dev/null +++ b/test/cases/compile_errors/invalid_float_literal.zig @@ -0,0 +1,13 @@ +const std = @import("std"); + +pub fn main() void { + var bad_float :f32 = 0.0; + bad_float = bad_float + .20; + std.debug.assert(bad_float < 1.0); +} + +// error +// backend=stage2 +// target=native +// +// :5:29: error: expected expression, found '.' diff --git a/test/cases/compile_errors/invalid_int_casts.zig b/test/cases/compile_errors/invalid_int_casts.zig new file mode 100644 index 0000000000000000000000000000000000000000..d220869201d3b11b3d971ad669307cf39fd67461 --- /dev/null +++ b/test/cases/compile_errors/invalid_int_casts.zig @@ -0,0 +1,25 @@ +export fn foo() void { + var a: u32 = 2; + _ = @intCast(comptime_int, a); +} +export fn bar() void { + var a: u32 = 2; + _ = @intToFloat(u32, a); +} +export fn baz() void { + var a: u32 = 2; + _ = @floatToInt(u32, a); +} +export fn qux() void { + var a: f32 = 2; + _ = @intCast(u32, a); +} + +// error +// backend=stage2 +// target=native +// +// :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' diff --git a/test/cases/compile_errors/invalid_legacy_unicode_escape.zig b/test/cases/compile_errors/invalid_legacy_unicode_escape.zig new file mode 100644 index 0000000000000000000000000000000000000000..cc4e78f6e4edca2208d13b10ac87135cf04d0208 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/invalid_member_of_builtin_enum.zig b/test/cases/compile_errors/invalid_member_of_builtin_enum.zig new file mode 100644 index 0000000000000000000000000000000000000000..3edb17ffbffbcc953e446f4986a785a904682216 --- /dev/null +++ b/test/cases/compile_errors/invalid_member_of_builtin_enum.zig @@ -0,0 +1,12 @@ +const builtin = @import("std").builtin; +export fn entry() void { + const foo = builtin.Mode.x86; + _ = foo; +} + +// error +// backend=stage2 +// target=native +// +// :3:30: error: enum 'builtin.Mode' has no member named 'x86' +// :?:18: note: enum declared here diff --git a/test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig b/test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig new file mode 100644 index 0000000000000000000000000000000000000000..c7fc39f7693b35633c46d0a6669c8c1b118a7e10 --- /dev/null +++ b/test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig @@ -0,0 +1,28 @@ +const E = enum(u8) { + a, + b, + _, +}; +const U = union(E) { + a, + b, +}; +export fn foo() void { + var e = @intToEnum(E, 15); + var u: U = e; + _ = u; +} +export fn bar() void { + const e = @intToEnum(E, 15); + var u: U = e; + _ = u; +} + +// error +// backend=stage2 +// target=native +// +// :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 diff --git a/test/cases/compile_errors/invalid_pointer_for_var_type.zig b/test/cases/compile_errors/invalid_pointer_for_var_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..ee193bab152260d2a8065667293434f00fcfbb74 --- /dev/null +++ b/test/cases/compile_errors/invalid_pointer_for_var_type.zig @@ -0,0 +1,13 @@ +extern fn ext() usize; +var bytes: [ext()]u8 = undefined; +export fn f() void { + for (bytes) |*b, i| { + b.* = @as(u8, i); + } +} + +// error +// backend=stage2 +// target=native +// +// :2:16: error: comptime call of extern function diff --git a/test/cases/compile_errors/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig b/test/cases/compile_errors/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig new file mode 100644 index 0000000000000000000000000000000000000000..1560dcc46a851d613b2776a206a66f614d3c8e2d --- /dev/null +++ b/test/cases/compile_errors/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig @@ -0,0 +1,13 @@ +fn entry(a: *addrspace(.gs) i32) *i32 { + return &a.*; +} +pub fn main() void { + _ = entry; +} + +// error +// output_mode=Exe +// backend=stage2,llvm +// target=x86_64-linux,x86_64-macos +// +// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32' diff --git a/test/cases/compile_errors/invalid_pointer_syntax.zig b/test/cases/compile_errors/invalid_pointer_syntax.zig new file mode 100644 index 0000000000000000000000000000000000000000..a8dbf438cb14e3a8430229c386b3ebdbdd1fa52c --- /dev/null +++ b/test/cases/compile_errors/invalid_pointer_syntax.zig @@ -0,0 +1,9 @@ +export fn foo() void { + var guid: *:0 const u8 = undefined; +} + +// error +// backend=stage2 +// target=native +// +// :2:16: error: expected type expression, found ':' diff --git a/test/cases/compile_errors/invalid_pointer_with_reify_type.zig b/test/cases/compile_errors/invalid_pointer_with_reify_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..cac9e3289440869d693101b5166ed383d99c19d7 --- /dev/null +++ b/test/cases/compile_errors/invalid_pointer_with_reify_type.zig @@ -0,0 +1,18 @@ +export fn entry() void { + _ = @Type(.{ .Pointer = .{ + .size = .One, + .is_const = false, + .is_volatile = false, + .alignment = 1, + .address_space = .generic, + .child = u8, + .is_allowzero = false, + .sentinel = &@as(u8, 0), + }}); +} + +// error +// backend=stage2 +// target=native +// +// :2:9: error: sentinels are only allowed on slices and unknown-length pointers diff --git a/test/cases/compile_errors/invalid_shift_amount_error.zig b/test/cases/compile_errors/invalid_shift_amount_error.zig new file mode 100644 index 0000000000000000000000000000000000000000..49852b5b7d0333f7970dbaba11e1211851737ce5 --- /dev/null +++ b/test/cases/compile_errors/invalid_shift_amount_error.zig @@ -0,0 +1,11 @@ +const x : u8 = 2; +fn f() u16 { + return x << 8; +} +export fn entry() u16 { return f(); } + +// error +// backend=stage2 +// target=native +// +// :3:17: error: type 'u3' cannot represent integer value '8' diff --git a/test/cases/compile_errors/invalid_struct_field.zig b/test/cases/compile_errors/invalid_struct_field.zig new file mode 100644 index 0000000000000000000000000000000000000000..d351a012f94debda7c7a6b3d0d176db87cc685d5 --- /dev/null +++ b/test/cases/compile_errors/invalid_struct_field.zig @@ -0,0 +1,21 @@ +const A = struct { x : i32, }; +export fn f() void { + var a : A = undefined; + a.foo = 1; + const y = a.bar; + _ = y; +} +export fn g() void { + var a : A = undefined; + const y = a.bar; + _ = y; +} + +// error +// backend=stage2 +// target=native +// +// :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' + diff --git a/test/cases/compile_errors/invalid_type.zig b/test/cases/compile_errors/invalid_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..902d3652e7a3c0d4f1fae4ca2a61f3dc6bc5df3d --- /dev/null +++ b/test/cases/compile_errors/invalid_type.zig @@ -0,0 +1,8 @@ +fn a() bogus {} +export fn entry() void { _ = a(); } + +// error +// backend=stage2 +// target=native +// +// :1:8: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/invalid_type_used_in_array_type.zig b/test/cases/compile_errors/invalid_type_used_in_array_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..88da04bcc09bf3296087854d333b362effc0e51e --- /dev/null +++ b/test/cases/compile_errors/invalid_type_used_in_array_type.zig @@ -0,0 +1,14 @@ +const Item = struct { + field: SomeNonexistentType, +}; +var items: [100]Item = undefined; +export fn entry() void { + const a = items[0]; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :2:12: error: use of undeclared identifier 'SomeNonexistentType' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-1.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-1.zig new file mode 100644 index 0000000000000000000000000000000000000000..f4be35883f556229d464a77e6dfa24a2705f62c8 --- /dev/null +++ b/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: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-10.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-10.zig new file mode 100644 index 0000000000000000000000000000000000000000..43090c28bade7a834469360c0c78cba714c5cb41 --- /dev/null +++ b/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: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-11.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-11.zig new file mode 100644 index 0000000000000000000000000000000000000000..9910cc51d14029e69710352b7ba2de99b9681d18 --- /dev/null +++ b/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: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-12.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-12.zig new file mode 100644 index 0000000000000000000000000000000000000000..6dd7566b6af28eee7bae6503bdfbc71012126a01 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-13.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-13.zig new file mode 100644 index 0000000000000000000000000000000000000000..eebba19f96d4b7f704a4b5e3e6bf8aee4456b0f5 --- /dev/null +++ b/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: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-14.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-14.zig new file mode 100644 index 0000000000000000000000000000000000000000..221b43cee5fe963689ddcd3512d29ae6a8dd808f --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-2.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-2.zig new file mode 100644 index 0000000000000000000000000000000000000000..402d4e92e855213115eadf705a32eda092c37ef9 --- /dev/null +++ b/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: '.' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-3.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-3.zig new file mode 100644 index 0000000000000000000000000000000000000000..d6615e8e36d8bc9208507bcc554af2ab095b3742 --- /dev/null +++ b/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: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-4.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-4.zig new file mode 100644 index 0000000000000000000000000000000000000000..2b431a3cd26257eb45bf0a9f5c567655f7e14880 --- /dev/null +++ b/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: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-5.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-5.zig new file mode 100644 index 0000000000000000000000000000000000000000..b61585a28a95c1c02c2171499ab495d0b41b51f6 --- /dev/null +++ b/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: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-6.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-6.zig new file mode 100644 index 0000000000000000000000000000000000000000..cb2aeffd3823f39c800405a8ddcff037ac772076 --- /dev/null +++ b/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: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-7.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-7.zig new file mode 100644 index 0000000000000000000000000000000000000000..c22b00ff0c4627cd6c35e11412e82fd843bd225a --- /dev/null +++ b/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: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-9.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-9.zig new file mode 100644 index 0000000000000000000000000000000000000000..db60f04bc11c5c3c077fb43d46337885773d4230 --- /dev/null +++ b/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: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-1.zig b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-1.zig new file mode 100644 index 0000000000000000000000000000000000000000..868ea8d42af42d5ec30135dbfce799563c729698 --- /dev/null +++ b/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=llvm +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:26: note: invalid byte: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-2.zig b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-2.zig new file mode 100644 index 0000000000000000000000000000000000000000..80cb2981ce95c4864477cd43918cf81d376fda0b --- /dev/null +++ b/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: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-3.zig b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-3.zig new file mode 100644 index 0000000000000000000000000000000000000000..c82aba506565dc394ad314f4c3fbe22b03f99be6 --- /dev/null +++ b/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: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-4.zig b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-4.zig new file mode 100644 index 0000000000000000000000000000000000000000..145b009494dae2749a7ebc8deae5f599581cbb48 --- /dev/null +++ b/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: ';' diff --git a/test/cases/compile_errors/issue_9346_return_outside_of_function_scope.zig b/test/cases/compile_errors/issue_9346_return_outside_of_function_scope.zig new file mode 100644 index 0000000000000000000000000000000000000000..86d21d430941d3c828ecc25a9e387b27bed1fe44 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/labeled_break_not_found.zig b/test/cases/compile_errors/labeled_break_not_found.zig new file mode 100644 index 0000000000000000000000000000000000000000..20185d0e04a60fff9e8dca98bce6b8e787407a5b --- /dev/null +++ b/test/cases/compile_errors/labeled_break_not_found.zig @@ -0,0 +1,13 @@ +export fn entry() void { + blah: while (true) { + while (true) { + break :outer; + } + } +} + +// error +// backend=stage2 +// target=native +// +// :4:20: error: label not found: 'outer' diff --git a/test/cases/compile_errors/labeled_continue_not_found.zig b/test/cases/compile_errors/labeled_continue_not_found.zig new file mode 100644 index 0000000000000000000000000000000000000000..6cef0866a8da16f969d96632be7c9b07cc8b4e59 --- /dev/null +++ b/test/cases/compile_errors/labeled_continue_not_found.zig @@ -0,0 +1,14 @@ +export fn entry() void { + var i: usize = 0; + blah: while (i < 10) : (i += 1) { + while (true) { + continue :outer; + } + } +} + +// error +// backend=stage2 +// target=native +// +// :5:23: error: label not found: 'outer' diff --git a/test/cases/compile_errors/local_shadows_global_that_occurs_later.zig b/test/cases/compile_errors/local_shadows_global_that_occurs_later.zig new file mode 100644 index 0000000000000000000000000000000000000000..1d88ac2c88a96f8d22529e44b022c5c9f446c8f7 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/local_variable_redeclaration.zig b/test/cases/compile_errors/local_variable_redeclaration.zig new file mode 100644 index 0000000000000000000000000000000000000000..a0861ada490d2bef43a10733aace811648cba614 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/local_variable_redeclares_parameter.zig b/test/cases/compile_errors/local_variable_redeclares_parameter.zig new file mode 100644 index 0000000000000000000000000000000000000000..f5693ca9b6306545c8cddfde5250187bed267a2e --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/local_variable_shadowing_global.zig b/test/cases/compile_errors/local_variable_shadowing_global.zig new file mode 100644 index 0000000000000000000000000000000000000000..1320bfcb41fd56c1d0cf895b339a6f58ad9cedcd --- /dev/null +++ b/test/cases/compile_errors/local_variable_shadowing_global.zig @@ -0,0 +1,14 @@ +const Foo = struct {}; +const Bar = struct {}; + +export fn entry() void { + var Bar : i32 = undefined; + _ = Bar; +} + +// error +// backend=stage2 +// target=native +// +// :5:9: error: local shadows declaration of 'Bar' +// :2:1: note: declared here diff --git a/test/cases/compile_errors/locally_shadowing_a_primitive_type.zig b/test/cases/compile_errors/locally_shadowing_a_primitive_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..7e7e994321ce707c6364a28fb056b8be2c1a064e --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/main_function_with_bogus_args_type.zig b/test/cases/compile_errors/main_function_with_bogus_args_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..dd02e1af34acdb9b466fad8b5cb13015a1b2efb2 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/main_missing_name.zig b/test/cases/compile_errors/main_missing_name.zig new file mode 100644 index 0000000000000000000000000000000000000000..8115eb2ae183a570421fa7c955d8619405709d92 --- /dev/null +++ b/test/cases/compile_errors/main_missing_name.zig @@ -0,0 +1,8 @@ +pub fn (main) void {} + +// error +// backend=stage2 +// target=native +// output_mode=Exe +// +// :1:5: error: missing function name diff --git a/test/cases/compile_errors/missing_boolean_switch_value.zig b/test/cases/compile_errors/missing_boolean_switch_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..a811efee8a57231528edeb4867e0fc8fb4aa2121 --- /dev/null +++ b/test/cases/compile_errors/missing_boolean_switch_value.zig @@ -0,0 +1,19 @@ +comptime { + const x = switch (true) { + true => false, + }; + _ = x; +} +comptime { + const x = switch (true) { + false => true, + }; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:15: error: switch must handle all possibilities +// :8:15: error: switch must handle all possibilities diff --git a/test/cases/compile_errors/missing_else_clause.zig b/test/cases/compile_errors/missing_else_clause.zig new file mode 100644 index 0000000000000000000000000000000000000000..716721bdea762980ffa5ed9d9413e1265ea8b566 --- /dev/null +++ b/test/cases/compile_errors/missing_else_clause.zig @@ -0,0 +1,16 @@ +fn f(b: bool) void { + const x : i32 = if (b) h: { break :h 1; }; + _ = x; +} +fn g(b: bool) void { + const y = if (b) h: { break :h @as(i32, 1); }; + _ = y; +} +export fn entry() void { f(true); g(true); } + +// error +// backend=stage2 +// target=native +// +// :2:21: error: incompatible types: 'i32' and 'void' +// :6:15: error: incompatible types: 'i32' and 'void' diff --git a/test/cases/compile_errors/missing_field_in_struct_value_expression.zig b/test/cases/compile_errors/missing_field_in_struct_value_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..600540d1e043f7c9a988ebd4f13c1c1fd4df18f8 --- /dev/null +++ b/test/cases/compile_errors/missing_field_in_struct_value_expression.zig @@ -0,0 +1,21 @@ +const A = struct { + x : i32, + y : i32, + z : i32, +}; +export fn f() void { + // we want the error on the '{' not the 'A' because + // the A could be a complicated expression + const a = A { + .z = 4, + .y = 2, + }; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :9:17: error: missing struct field: x +// :1:11: note: struct 'tmp.A' declared here diff --git a/test/cases/compile_errors/missing_function_name.zig b/test/cases/compile_errors/missing_function_name.zig new file mode 100644 index 0000000000000000000000000000000000000000..e0cce9d86bf4d35a4762f78882cb39351f18405a --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/missing_param_name.zig b/test/cases/compile_errors/missing_param_name.zig new file mode 100644 index 0000000000000000000000000000000000000000..88da902ea2d298de411a4dc1c1f7b2cf7388090d --- /dev/null +++ b/test/cases/compile_errors/missing_param_name.zig @@ -0,0 +1,8 @@ +fn f(i32) void {} +export fn entry() usize { return @sizeOf(@TypeOf(f)); } + +// error +// backend=stage2 +// target=native +// +// :1:6: error: missing parameter name diff --git a/test/cases/compile_errors/missing_parameter_name_of_generic_function.zig b/test/cases/compile_errors/missing_parameter_name_of_generic_function.zig new file mode 100644 index 0000000000000000000000000000000000000000..edd19bd7de071f1d6111bf6113f120719a1e1523 --- /dev/null +++ b/test/cases/compile_errors/missing_parameter_name_of_generic_function.zig @@ -0,0 +1,11 @@ +fn dump(anytype) void {} +export fn entry() void { + var a: u8 = 9; + dump(a); +} + +// error +// backend=stage2 +// target=native +// +// :1:9: error: missing parameter name diff --git a/test/cases/compile_errors/misspelled_type_with_pointer_only_reference.zig b/test/cases/compile_errors/misspelled_type_with_pointer_only_reference.zig new file mode 100644 index 0000000000000000000000000000000000000000..ef8fce6c80865085af73972d677253b0b2c4b2a0 --- /dev/null +++ b/test/cases/compile_errors/misspelled_type_with_pointer_only_reference.zig @@ -0,0 +1,37 @@ +const JasonHM = u8; +const JasonList = *JsonNode; + +const JsonOA = union(enum) { + JSONArray: JsonList, + JSONObject: JasonHM, +}; + +const JsonType = union(enum) { + JSONNull: void, + JSONInteger: isize, + JSONDouble: f64, + JSONBool: bool, + JSONString: []u8, + JSONArray: void, + JSONObject: void, +}; + +pub const JsonNode = struct { + kind: JsonType, + jobject: ?JsonOA, +}; + +fn foo() void { + var jll: JasonList = undefined; + jll.init(1234); + var jd = JsonNode {.kind = JsonType.JSONArray , .jobject = JsonOA.JSONArray {jll} }; + _ = jd; +} + +export fn entry() usize { return @sizeOf(@TypeOf(foo)); } + +// error +// backend=stage2 +// target=native +// +// :5:16: error: use of undeclared identifier 'JsonList' diff --git a/test/cases/compile_errors/multiple_function_definitions.zig b/test/cases/compile_errors/multiple_function_definitions.zig new file mode 100644 index 0000000000000000000000000000000000000000..d07eaee257e10befdc33802c36bf02ab70d498b6 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/nested_vectors.zig b/test/cases/compile_errors/nested_vectors.zig new file mode 100644 index 0000000000000000000000000000000000000000..9482c230052283888b31cd2863dbef51f31efc36 --- /dev/null +++ b/test/cases/compile_errors/nested_vectors.zig @@ -0,0 +1,13 @@ +export fn entry() void { + const V1 = @import("std").meta.Vector(4, u8); + const V2 = @Type(.{ .Vector = .{ .len = 4, .child = V1 } }); + var v: V2 = undefined; + _ = v; +} + +// error +// backend=stage2 +// target=native +// +// :3:16: error: expected integer, float, bool, or pointer for the vector element type; found '@Vector(4, u8)' + diff --git a/test/cases/compile_errors/non-const_expression_function_call_with_struct_return_value_outside_function.zig b/test/cases/compile_errors/non-const_expression_function_call_with_struct_return_value_outside_function.zig new file mode 100644 index 0000000000000000000000000000000000000000..fc33fa531ebd4e177cf930b866507233b20d4d6e --- /dev/null +++ b/test/cases/compile_errors/non-const_expression_function_call_with_struct_return_value_outside_function.zig @@ -0,0 +1,18 @@ +const Foo = struct { + x: i32, +}; +const a = get_it(); +fn get_it() Foo { + global_side_effect = true; + return Foo {.x = 13}; +} +var global_side_effect = false; + +export fn entry() usize { return @sizeOf(@TypeOf(a)); } + +// error +// backend=stage2 +// target=native +// +// :6:26: error: unable to resolve comptime value +// :4:17: note: called from here diff --git a/test/cases/compile_errors/non-const_expression_in_struct_literal_outside_function.zig b/test/cases/compile_errors/non-const_expression_in_struct_literal_outside_function.zig new file mode 100644 index 0000000000000000000000000000000000000000..2e0043c5ecec2947ae1845edc18823f7ca4a2e6b --- /dev/null +++ b/test/cases/compile_errors/non-const_expression_in_struct_literal_outside_function.zig @@ -0,0 +1,13 @@ +const Foo = struct { + x: i32, +}; +const a = Foo {.x = get_it()}; +extern fn get_it() i32; + +export fn entry() usize { return @sizeOf(@TypeOf(a)); } + +// error +// backend=stage2 +// target=native +// +// :4:27: error: comptime call of extern function diff --git a/test/cases/compile_errors/non-const_switch_number_literal.zig b/test/cases/compile_errors/non-const_switch_number_literal.zig new file mode 100644 index 0000000000000000000000000000000000000000..01e31bb92c55710aec5b295ced2bb0c89ae49e2c --- /dev/null +++ b/test/cases/compile_errors/non-const_switch_number_literal.zig @@ -0,0 +1,18 @@ +export fn foo() void { + const x = switch (bar()) { + 1, 2 => 1, + 3, 4 => 2, + else => 3, + }; + _ = x; +} +fn bar() i32 { + return 2; +} + +// error +// backend=stage2 +// target=native +// +// :2:15: error: value with comptime only type 'comptime_int' depends on runtime control flow +// :2:26: note: runtime control flow here diff --git a/test/cases/compile_errors/non-exhaustive_enum_field_non_final.zig b/test/cases/compile_errors/non-exhaustive_enum_field_non_final.zig new file mode 100644 index 0000000000000000000000000000000000000000..cd5375464f2e9cedda84e3212f0248987de0c2c7 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/non-exhaustive_enum_marker_assigned_a_value.zig b/test/cases/compile_errors/non-exhaustive_enum_marker_assigned_a_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..c9ebb6af7142ae398a26ece6794789fc0b70d04a --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/non-exhaustive_enum_specifies_every_value.zig b/test/cases/compile_errors/non-exhaustive_enum_specifies_every_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..99d3711e1dcfeb1170c92c624753f9e86f8d0f26 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/non-extern_function_with_var_args.zig b/test/cases/compile_errors/non-extern_function_with_var_args.zig new file mode 100644 index 0000000000000000000000000000000000000000..bb9d13a230d4c1b258cb1f3e48d04165195a0229 --- /dev/null +++ b/test/cases/compile_errors/non-extern_function_with_var_args.zig @@ -0,0 +1,10 @@ +fn foo(args: ...) void {} +export fn entry() void { + foo(); +} + +// error +// backend=stage2 +// target=native +// +// :1:14: error: expected type expression, found '...' diff --git a/test/cases/compile_errors/non-pure_function_returns_type.zig b/test/cases/compile_errors/non-pure_function_returns_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..ceb3e0507fbd1eeca75776fd37d4ea603c8835ed --- /dev/null +++ b/test/cases/compile_errors/non-pure_function_returns_type.zig @@ -0,0 +1,25 @@ +var a: u32 = 0; +pub fn List(comptime T: type) type { + a += 1; + return SmallList(T, 8); +} + +pub fn SmallList(comptime T: type, comptime STATIC_SIZE: usize) type { + return struct { + items: []T, + length: usize, + prealloc_items: [STATIC_SIZE]T, + }; +} + +export fn function_with_return_type_type() void { + var list: List(i32) = undefined; + list.length = 10; +} + +// error +// backend=stage2 +// target=native +// +// :3:7: error: unable to resolve comptime value +// :16:19: note: called from here diff --git a/test/cases/compile_errors/non_float_passed_to_floatToInt.zig b/test/cases/compile_errors/non_float_passed_to_floatToInt.zig new file mode 100644 index 0000000000000000000000000000000000000000..2d4e0315bebcb4fb24c28aeea868cd907234e358 --- /dev/null +++ b/test/cases/compile_errors/non_float_passed_to_floatToInt.zig @@ -0,0 +1,10 @@ +export fn entry() void { + const x = @floatToInt(i32, @as(i32, 54)); + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:32: error: expected float type, found 'i32' diff --git a/test/cases/compile_errors/non_int_passed_to_intToFloat.zig b/test/cases/compile_errors/non_int_passed_to_intToFloat.zig new file mode 100644 index 0000000000000000000000000000000000000000..f40fa93df0a7550ddbcbc3d1bbf1a3023c66ad7a --- /dev/null +++ b/test/cases/compile_errors/non_int_passed_to_intToFloat.zig @@ -0,0 +1,10 @@ +export fn entry() void { + const x = @intToFloat(f32, 1.1); + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:32: error: expected integer type, found 'comptime_float' diff --git a/test/cases/compile_errors/non_pointer_given_to_ptrToInt.zig b/test/cases/compile_errors/non_pointer_given_to_ptrToInt.zig new file mode 100644 index 0000000000000000000000000000000000000000..27b5d6d1f73dfcb70b326b092972bef23a0e2654 --- /dev/null +++ b/test/cases/compile_errors/non_pointer_given_to_ptrToInt.zig @@ -0,0 +1,9 @@ +export fn entry(x: i32) usize { + return @ptrToInt(x); +} + +// error +// backend=stage2 +// target=native +// +// :2:22: error: expected pointer, found 'i32' diff --git a/test/cases/compile_errors/normal_string_with_newline.zig b/test/cases/compile_errors/normal_string_with_newline.zig new file mode 100644 index 0000000000000000000000000000000000000000..19e15133ee340c8c5c18593f6a00bfd5a331c596 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/not_an_enum_type.zig b/test/cases/compile_errors/not_an_enum_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..6868cf7dc061a1470228cbf42db067a0882c4b5c --- /dev/null +++ b/test/cases/compile_errors/not_an_enum_type.zig @@ -0,0 +1,19 @@ +export fn entry() void { + var self: Error = undefined; + switch (self) { + InvalidToken => |x| return x.token, + ExpectedVarDeclOrFn => |x| return x.token, + } +} +const Error = union(enum) { + A: InvalidToken, + B: ExpectedVarDeclOrFn, +}; +const InvalidToken = struct {}; +const ExpectedVarDeclOrFn = struct {}; + +// error +// backend=stage2 +// target=native +// +// :4:9: error: expected type '@typeInfo(tmp.Error).Union.tag_type.?', found 'type' diff --git a/test/cases/compile_errors/offsetOf-bad_field_name.zig b/test/cases/compile_errors/offsetOf-bad_field_name.zig new file mode 100644 index 0000000000000000000000000000000000000000..5beee8fe2e0929fea5151de4023a6fc2c1f6594c --- /dev/null +++ b/test/cases/compile_errors/offsetOf-bad_field_name.zig @@ -0,0 +1,13 @@ +const Foo = struct { + derp: i32, +}; +export fn foo() usize { + return @offsetOf(Foo, "a",); +} + +// error +// backend=stage2 +// target=native +// +// :5:27: error: struct 'tmp.Foo' has no field 'a' +// :1:13: note: struct declared here diff --git a/test/cases/compile_errors/offsetOf-non_struct.zig b/test/cases/compile_errors/offsetOf-non_struct.zig new file mode 100644 index 0000000000000000000000000000000000000000..45e9cf9518fb469b3e0e07f5ec2fc448a9bbe7e2 --- /dev/null +++ b/test/cases/compile_errors/offsetOf-non_struct.zig @@ -0,0 +1,10 @@ +const Foo = i32; +export fn foo() usize { + return @offsetOf(Foo, "a",); +} + +// error +// backend=stage2 +// target=native +// +// :3:22: error: expected struct type, found 'i32' diff --git a/test/cases/compile_errors/only_equality_binary_operator_allowed_for_error_sets.zig b/test/cases/compile_errors/only_equality_binary_operator_allowed_for_error_sets.zig new file mode 100644 index 0000000000000000000000000000000000000000..28c4f339c4228d67b4f6748034023cdbc9e07b39 --- /dev/null +++ b/test/cases/compile_errors/only_equality_binary_operator_allowed_for_error_sets.zig @@ -0,0 +1,10 @@ +comptime { + const z = error.A > error.B; + _ = z; +} + +// error +// backend=stage2 +// target=native +// +// :2:23: error: operator > not allowed for type 'error{A,B}' diff --git a/test/cases/compile_errors/out_of_range_comptime_int_passed_to_floatToInt.zig b/test/cases/compile_errors/out_of_range_comptime_int_passed_to_floatToInt.zig new file mode 100644 index 0000000000000000000000000000000000000000..426e0c95cb74509f7c6678a54685c5a0ff9e589a --- /dev/null +++ b/test/cases/compile_errors/out_of_range_comptime_int_passed_to_floatToInt.zig @@ -0,0 +1,10 @@ +export fn entry() void { + const x = @floatToInt(i8, 200); + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:31: error: float value '200' cannot be stored in integer type 'i8' diff --git a/test/cases/compile_errors/parameter_redeclaration.zig b/test/cases/compile_errors/parameter_redeclaration.zig new file mode 100644 index 0000000000000000000000000000000000000000..89c7c4bd2aa8d3bdeac0396fe3c3a6a677c3d311 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/parameter_shadowing_global.zig b/test/cases/compile_errors/parameter_shadowing_global.zig new file mode 100644 index 0000000000000000000000000000000000000000..47d112807bbff9bf3049185f3dd0df0b6c1d24c9 --- /dev/null +++ b/test/cases/compile_errors/parameter_shadowing_global.zig @@ -0,0 +1,12 @@ +const Foo = struct {}; +fn f(Foo: i32) void {} +export fn entry() void { + f(1234); +} + +// error +// backend=stage2 +// target=native +// +// :2:6: error: local shadows declaration of 'Foo' +// :1:1: note: declared here diff --git a/test/cases/compile_errors/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig b/test/cases/compile_errors/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig new file mode 100644 index 0000000000000000000000000000000000000000..3ddd24f7a91b435d0dbd6e68d87f0d733c4889b6 --- /dev/null +++ b/test/cases/compile_errors/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig @@ -0,0 +1,12 @@ +const AtomicOrder = @import("std").builtin.AtomicOrder; +export fn entry() bool { + var x: i32 align(1) = 1234; + while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.SeqCst, AtomicOrder.SeqCst)) {} + return x == 5678; +} + +// error +// backend=stage2 +// target=native +// +// :4:31: error: expected type '*i32', found '*align(1) i32' diff --git a/test/cases/compile_errors/pointer_arithmetic_on_pointer-to-array.zig b/test/cases/compile_errors/pointer_arithmetic_on_pointer-to-array.zig new file mode 100644 index 0000000000000000000000000000000000000000..e97a098f40ce53338c19b61addb8dad48fa24d3e --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/pointer_with_different_address_spaces.zig b/test/cases/compile_errors/pointer_with_different_address_spaces.zig new file mode 100644 index 0000000000000000000000000000000000000000..b16c4a4e649e48d8f0899c8ecab82df8915e0393 --- /dev/null +++ b/test/cases/compile_errors/pointer_with_different_address_spaces.zig @@ -0,0 +1,13 @@ +fn entry(a: *addrspace(.gs) i32) *addrspace(.fs) i32 { + return a; +} +export fn entry2() void { + _ = entry; +} + +// error +// output_mode=Obj +// backend=stage2,llvm +// target=x86_64-linux,x86_64-macos +// +// :2:12: error: expected type '*addrspace(.fs) i32', found '*addrspace(.gs) i32' diff --git a/test/cases/compile_errors/pointers_with_different_address_spaces.zig b/test/cases/compile_errors/pointers_with_different_address_spaces.zig new file mode 100644 index 0000000000000000000000000000000000000000..210c252893eed96e00b8ff078c5638184edcf630 --- /dev/null +++ b/test/cases/compile_errors/pointers_with_different_address_spaces.zig @@ -0,0 +1,13 @@ +fn entry(a: ?*addrspace(.gs) i32) *i32 { + return a.?; +} +pub fn main() void { + _ = entry; +} + +// error +// output_mode=Exe +// backend=stage2,llvm +// target=x86_64-linux,x86_64-macos +// +// :2:13: error: expected type '*i32', found '*addrspace(.gs) i32' diff --git a/test/cases/compile_errors/popCount-non-integer.zig b/test/cases/compile_errors/popCount-non-integer.zig new file mode 100644 index 0000000000000000000000000000000000000000..af1c79f5f4162abfe10c88eb8cc859af88f1595b --- /dev/null +++ b/test/cases/compile_errors/popCount-non-integer.zig @@ -0,0 +1,9 @@ +export fn entry(x: f32) u32 { + return @popCount(f32, x); +} + +// error +// backend=stage2 +// target=native +// +// :2:27: error: expected integer or vector, found 'f32' diff --git a/test/cases/compile_errors/primitives_take_precedence_over_declarations.zig b/test/cases/compile_errors/primitives_take_precedence_over_declarations.zig new file mode 100644 index 0000000000000000000000000000000000000000..d924c81387d2a74b031f0d4661aa01190b8ebe48 --- /dev/null +++ b/test/cases/compile_errors/primitives_take_precedence_over_declarations.zig @@ -0,0 +1,11 @@ +const @"u8" = u16; +export fn entry() void { + const a: u8 = 300; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :3:19: error: type 'u8' cannot represent integer value '300' diff --git a/test/cases/compile_errors/ptrToInt_0_to_non_optional_pointer.zig b/test/cases/compile_errors/ptrToInt_0_to_non_optional_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..86a5dd6dca3e741835364186b937a835d3606c59 --- /dev/null +++ b/test/cases/compile_errors/ptrToInt_0_to_non_optional_pointer.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var b = @intToPtr(*i32, 0); + _ = b; +} + +// error +// backend=stage2 +// target=native +// +// :2:29: error: pointer type '*i32' does not allow address zero diff --git a/test/cases/compile_errors/ptrcast_to_non-pointer.zig b/test/cases/compile_errors/ptrcast_to_non-pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..66a11a602be86dd84a8dd7d0f0fb08f49d37f566 --- /dev/null +++ b/test/cases/compile_errors/ptrcast_to_non-pointer.zig @@ -0,0 +1,9 @@ +export fn entry(a: *i32) usize { + return @ptrCast(usize, a); +} + +// error +// backend=llvm +// target=native +// +// :2:21: error: expected pointer type, found 'usize' diff --git a/test/cases/compile_errors/reassign_to_array_parameter.zig b/test/cases/compile_errors/reassign_to_array_parameter.zig new file mode 100644 index 0000000000000000000000000000000000000000..4927329970651c39ca934b10e902149361f1f43c --- /dev/null +++ b/test/cases/compile_errors/reassign_to_array_parameter.zig @@ -0,0 +1,12 @@ +fn reassign(a: [3]f32) void { + a = [3]f32{4, 5, 6}; +} +export fn entry() void { + reassign(.{1, 2, 3}); +} + +// error +// backend=llvm +// target=native +// +// :2:15: error: cannot assign to constant diff --git a/test/cases/compile_errors/reassign_to_slice_parameter.zig b/test/cases/compile_errors/reassign_to_slice_parameter.zig new file mode 100644 index 0000000000000000000000000000000000000000..586eb230df0307093e2690a8d1c00ddac6e8e1f9 --- /dev/null +++ b/test/cases/compile_errors/reassign_to_slice_parameter.zig @@ -0,0 +1,12 @@ +pub fn reassign(s: []const u8) void { + s = s[0..]; +} +export fn entry() void { + reassign("foo"); +} + +// error +// backend=llvm +// target=native +// +// :2:10: error: cannot assign to constant diff --git a/test/cases/compile_errors/reassign_to_struct_parameter.zig b/test/cases/compile_errors/reassign_to_struct_parameter.zig new file mode 100644 index 0000000000000000000000000000000000000000..963448f8fe0e4a46424f40fbe5786dcf6d575b3f --- /dev/null +++ b/test/cases/compile_errors/reassign_to_struct_parameter.zig @@ -0,0 +1,15 @@ +const S = struct { + x: u32, +}; +fn reassign(s: S) void { + s = S{.x = 2}; +} +export fn entry() void { + reassign(S{.x = 3}); +} + +// error +// backend=stage2 +// target=native +// +// :5:10: error: cannot assign to constant diff --git a/test/cases/compile_errors/redefinition_of_enums.zig b/test/cases/compile_errors/redefinition_of_enums.zig new file mode 100644 index 0000000000000000000000000000000000000000..641211872e125a59056593f97245604ce4966502 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/redefinition_of_global_variables.zig b/test/cases/compile_errors/redefinition_of_global_variables.zig new file mode 100644 index 0000000000000000000000000000000000000000..ed0d6f3ed95be40bfef9df47964559ec7eb7ee82 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/redefinition_of_struct.zig b/test/cases/compile_errors/redefinition_of_struct.zig new file mode 100644 index 0000000000000000000000000000000000000000..dc6d4abeebeaa87f43c4908fdd0c14bac4973c72 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/refer_to_the_type_of_a_generic_function.zig b/test/cases/compile_errors/refer_to_the_type_of_a_generic_function.zig new file mode 100644 index 0000000000000000000000000000000000000000..3bbc75ce83e13e88a8534471d37c4362bf0cf0d2 --- /dev/null +++ b/test/cases/compile_errors/refer_to_the_type_of_a_generic_function.zig @@ -0,0 +1,11 @@ +export fn entry() void { + const Func = fn (type) void; + const f: Func = undefined; + f(i32); +} + +// error +// backend=stage2 +// target=native +// +// :4:5: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/reference_to_const_data.zig b/test/cases/compile_errors/reference_to_const_data.zig new file mode 100644 index 0000000000000000000000000000000000000000..6bd9d0eb1ec94ac6c07f56dfe8cf3b5e8d6b1868 --- /dev/null +++ b/test/cases/compile_errors/reference_to_const_data.zig @@ -0,0 +1,29 @@ +export fn foo() void { + var ptr = &[_]u8{0,0,0,0}; + ptr[1] = 2; +} +export fn bar() void { + var ptr = &@as(u32, 2); + ptr.* = 2; +} +export fn baz() void { + var ptr = &true; + ptr.* = false; +} +export fn qux() void { + const S = struct{ + x: usize, + y: usize, + }; + var ptr = &S{.x=1,.y=2}; + ptr.x = 2; +} + +// error +// backend=stage2 +// target=native +// +// :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 diff --git a/test/cases/compile_errors/referring_to_a_struct_that_is_invalid.zig b/test/cases/compile_errors/referring_to_a_struct_that_is_invalid.zig new file mode 100644 index 0000000000000000000000000000000000000000..946ead995429b13a2b838dc9d6326c967e706eab --- /dev/null +++ b/test/cases/compile_errors/referring_to_a_struct_that_is_invalid.zig @@ -0,0 +1,18 @@ +const UsbDeviceRequest = struct { + Type: u8, +}; + +export fn foo() void { + comptime assert(@sizeOf(UsbDeviceRequest) == 0x8); +} + +fn assert(ok: bool) void { + if (!ok) unreachable; +} + +// error +// backend=stage2 +// target=native +// +// :10:14: error: reached unreachable code +// :6:20: note: called from here diff --git a/test/cases/compile_errors/reify_typeOf_with_incompatible_arguments.zig b/test/cases/compile_errors/reify_typeOf_with_incompatible_arguments.zig new file mode 100644 index 0000000000000000000000000000000000000000..ee688c362b63b99c81e7b747d13946a8e8982a6a --- /dev/null +++ b/test/cases/compile_errors/reify_typeOf_with_incompatible_arguments.zig @@ -0,0 +1,13 @@ +export fn entry() void { + var var_1: f32 = undefined; + var var_2: u32 = undefined; + _ = @TypeOf(var_1, var_2); +} + +// error +// backend=stage2 +// target=native +// +// :4:9: error: incompatible types: 'f32' and 'u32' +// :4:17: note: type 'f32' here +// :4:24: note: type 'u32' here diff --git a/test/cases/compile_errors/reify_typeOf_with_no_arguments.zig b/test/cases/compile_errors/reify_typeOf_with_no_arguments.zig new file mode 100644 index 0000000000000000000000000000000000000000..3e4cb183cda7f7cf2428f37495ab10c3c5528fa4 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/reject_extern_function_definitions_with_body.zig b/test/cases/compile_errors/reject_extern_function_definitions_with_body.zig new file mode 100644 index 0000000000000000000000000000000000000000..4247ddd4636b2cfce01698bb2cc8f8b8133ff578 --- /dev/null +++ b/test/cases/compile_errors/reject_extern_function_definitions_with_body.zig @@ -0,0 +1,9 @@ +extern "c" fn definitelyNotInLibC(a: i32, b: i32) i32 { + return a + b; +} + +// error +// backend=stage2 +// target=native +// +// :1:1: error: extern functions have no body diff --git a/test/cases/compile_errors/reject_extern_variables_with_initializers.zig b/test/cases/compile_errors/reject_extern_variables_with_initializers.zig new file mode 100644 index 0000000000000000000000000000000000000000..a52987f1851098c8b573681f7f9fcae42ed75da2 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig b/test/cases/compile_errors/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig new file mode 100644 index 0000000000000000000000000000000000000000..201c8c870ba0fcf043fdb8df6f212dc0ce71532d --- /dev/null +++ b/test/cases/compile_errors/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig @@ -0,0 +1,14 @@ +pub fn A() type { + return Q; +} +test "1" { + _ = A().a; + _ = A().a; +} + +// error +// backend=stage2 +// target=native +// is_test=1 +// +// :2:12: error: use of undeclared identifier 'Q' diff --git a/test/cases/compile_errors/return_from_defer_expression.zig b/test/cases/compile_errors/return_from_defer_expression.zig new file mode 100644 index 0000000000000000000000000000000000000000..e60b8ae848bb0141d652a58b6f00929131962282 --- /dev/null +++ b/test/cases/compile_errors/return_from_defer_expression.zig @@ -0,0 +1,21 @@ +pub fn testTrickyDefer() !void { + defer canFail() catch {}; + + defer try canFail(); + + const a = maybeInt() orelse return; +} + +fn canFail() anyerror!void { } + +pub fn maybeInt() ?i32 { + return 0; +} + +export fn entry() usize { return @sizeOf(@TypeOf(testTrickyDefer)); } + +// error +// backend=stage2 +// target=native +// +// :4:11: error: 'try' not allowed inside defer expression diff --git a/test/cases/compile_errors/return_invalid_type_from_test.zig b/test/cases/compile_errors/return_invalid_type_from_test.zig new file mode 100644 index 0000000000000000000000000000000000000000..6cad6af85fbbf45bf9a0fba94de9a6b6c2956d9f --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/runtime_cast_to_union_which_has_non-void_fields.zig b/test/cases/compile_errors/runtime_cast_to_union_which_has_non-void_fields.zig new file mode 100644 index 0000000000000000000000000000000000000000..c312d6db40680475b44655eab9bf62091f547de4 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/saturating_arithmetic_does_not_allow_floats.zig b/test/cases/compile_errors/saturating_arithmetic_does_not_allow_floats.zig new file mode 100644 index 0000000000000000000000000000000000000000..3689fa5ec540acc2832e17ef565120d165c5e754 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/setAlignStack_in_naked_function.zig b/test/cases/compile_errors/setAlignStack_in_naked_function.zig new file mode 100644 index 0000000000000000000000000000000000000000..79c4ba6f5b5c81e23fa439f835692844dc99064c --- /dev/null +++ b/test/cases/compile_errors/setAlignStack_in_naked_function.zig @@ -0,0 +1,9 @@ +export fn entry() callconv(.Naked) void { + @setAlignStack(16); +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: @setAlignStack in naked function diff --git a/test/cases/compile_errors/setAlignStack_outside_function.zig b/test/cases/compile_errors/setAlignStack_outside_function.zig new file mode 100644 index 0000000000000000000000000000000000000000..0c06f867deecb5562e9f3812eea4afcdb3849ce8 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/setAlignStack_set_twice.zig b/test/cases/compile_errors/setAlignStack_set_twice.zig new file mode 100644 index 0000000000000000000000000000000000000000..3c61b26becd87dab429b049ecf77b0c07df96e30 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/setAlignStack_too_big.zig b/test/cases/compile_errors/setAlignStack_too_big.zig new file mode 100644 index 0000000000000000000000000000000000000000..5ee96041e0d5c1aa3ad71f7c1b7c0663c85db9c1 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/setting_a_section_on_a_local_variable.zig b/test/cases/compile_errors/setting_a_section_on_a_local_variable.zig new file mode 100644 index 0000000000000000000000000000000000000000..2d31ef17508aa342de0f5f008b7bfb43ff650dc8 --- /dev/null +++ b/test/cases/compile_errors/setting_a_section_on_a_local_variable.zig @@ -0,0 +1,10 @@ +export fn entry() i32 { + var foo: i32 linksection(".text2") = 1234; + return foo; +} + +// error +// backend=stage2 +// target=native +// +// :2:30: error: cannot set section of local variable 'foo' diff --git a/test/cases/compile_errors/shift_on_type_with_non-power-of-two_size.zig b/test/cases/compile_errors/shift_on_type_with_non-power-of-two_size.zig new file mode 100644 index 0000000000000000000000000000000000000000..9f606b042629fc91dae1476e754e1d0f4dba157c --- /dev/null +++ b/test/cases/compile_errors/shift_on_type_with_non-power-of-two_size.zig @@ -0,0 +1,33 @@ +export fn entry() void { + const S = struct { + fn a() void { + var x: u24 = 42; + _ = x >> 24; + } + fn b() void { + var x: u24 = 42; + _ = x << 24; + } + fn c() void { + var x: u24 = 42; + _ = @shlExact(x, 24); + } + fn d() void { + var x: u24 = 42; + _ = @shrExact(x, 24); + } + }; + S.a(); + S.b(); + S.c(); + S.d(); +} + +// error +// backend=stage2 +// target=native +// +// :5:22: error: shift amount '24' is too large for operand type 'u24' +// :9:22: error: shift amount '24' is too large for operand type 'u24' +// :13:30: error: shift amount '24' is too large for operand type 'u24' +// :17:30: error: shift amount '24' is too large for operand type 'u24' diff --git a/test/cases/compile_errors/shifting_RHS_is_log2_of_LHS_int_bit_width.zig b/test/cases/compile_errors/shifting_RHS_is_log2_of_LHS_int_bit_width.zig new file mode 100644 index 0000000000000000000000000000000000000000..a2104d1aa62dc87f0a495e99e971f63011b890e4 --- /dev/null +++ b/test/cases/compile_errors/shifting_RHS_is_log2_of_LHS_int_bit_width.zig @@ -0,0 +1,9 @@ +export fn entry(x: u8, y: u8) u8 { + return x << y; +} + +// error +// backend=stage2 +// target=native +// +// :2:17: error: expected type 'u3', found 'u8' diff --git a/test/cases/compile_errors/shuffle_with_selected_index_past_first_vector_length.zig b/test/cases/compile_errors/shuffle_with_selected_index_past_first_vector_length.zig new file mode 100644 index 0000000000000000000000000000000000000000..1c602f7ab0915e3c3e10e14b8182d47fab192d1a --- /dev/null +++ b/test/cases/compile_errors/shuffle_with_selected_index_past_first_vector_length.zig @@ -0,0 +1,14 @@ +export fn entry() void { + const v: @import("std").meta.Vector(4, u32) = [4]u32{ 10, 11, 12, 13 }; + const x: @import("std").meta.Vector(4, u32) = [4]u32{ 14, 15, 16, 17 }; + var z = @shuffle(u32, v, x, [8]i32{ 0, 1, 2, 3, 7, 6, 5, 4 }); + _ = z; +} + +// error +// backend=stage2 +// target=native +// +// :4:39: error: mask index '4' has out-of-bounds selection +// :4:27: note: selected index '7' out of bounds of '@Vector(4, u32)' +// :4:30: note: selections from the second vector are specified with negative numbers diff --git a/test/cases/compile_errors/slicing_single-item_pointer.zig b/test/cases/compile_errors/slicing_single-item_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..6b3021e5e0de4277d8518cb7725fef3f80f2fadb --- /dev/null +++ b/test/cases/compile_errors/slicing_single-item_pointer.zig @@ -0,0 +1,10 @@ +export fn entry(ptr: *i32) void { + const slice = ptr[0..2]; + _ = slice; +} + +// error +// backend=stage2 +// target=native +// +// :2:22: error: slice of single-item pointer diff --git a/test/cases/compile_errors/stage1/add_wrap_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/add_wrap_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..5f9a4c61fc34d83790db326f1cc925c70c70fe85 --- /dev/null +++ b/test/cases/compile_errors/stage1/add_wrap_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/add_wrap_on_undefined_value.zig b/test/cases/compile_errors/stage1/add_wrap_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..582b8ec1cfc85ff91224f11799f78631c75a2951 --- /dev/null +++ b/test/cases/compile_errors/stage1/add_wrap_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/alignCast_of_zero_sized_types.zig b/test/cases/compile_errors/stage1/alignCast_of_zero_sized_types.zig new file mode 100644 index 0000000000000000000000000000000000000000..277301a06d0ea19626cd66377685e7f13840e2cc --- /dev/null +++ b/test/cases/compile_errors/stage1/alignCast_of_zero_sized_types.zig @@ -0,0 +1,27 @@ +export fn foo() void { + const a: *void = undefined; + _ = @alignCast(2, a); +} +export fn bar() void { + const a: ?*void = undefined; + _ = @alignCast(2, a); +} +export fn baz() void { + const a: []void = undefined; + _ = @alignCast(2, a); +} +export fn qux() void { + const a = struct { + fn a(comptime b: u32) void { _ = b; } + }.a; + _ = @alignCast(2, a); +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:23: error: cannot adjust alignment of zero sized type '*void' +// tmp.zig:7:23: error: cannot adjust alignment of zero sized type '?*void' +// tmp.zig:11:23: error: cannot adjust alignment of zero sized type '[]void' +// tmp.zig:17:23: error: cannot adjust alignment of zero sized type 'fn(u32) anytype' diff --git a/test/cases/compile_errors/stage1/and_on_undefined_value.zig b/test/cases/compile_errors/stage1/and_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..6071d81062fcc32291a7673bcb6e2877ea7d3358 --- /dev/null +++ b/test/cases/compile_errors/stage1/and_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: bool = undefined; + _ = a and a; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/bin_and_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/bin_and_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..1076f9abdb6c170e84f0770f5ec33d04e0c572f1 --- /dev/null +++ b/test/cases/compile_errors/stage1/bin_and_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/bin_and_on_undefined_value.zig b/test/cases/compile_errors/stage1/bin_and_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..a53d9a10ac66b5ba7f107648fea3f18fb7c0c37d --- /dev/null +++ b/test/cases/compile_errors/stage1/bin_and_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/bin_not_on_undefined_value.zig b/test/cases/compile_errors/stage1/bin_not_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..7e0f554f0b1a718848f4b551f5ae51556cb17e4a --- /dev/null +++ b/test/cases/compile_errors/stage1/bin_not_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: i64 = undefined; + _ = ~a; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:10: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/bin_or_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/bin_or_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..cc61fc03e168cb211ced6b390c2f2923fb719615 --- /dev/null +++ b/test/cases/compile_errors/stage1/bin_or_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/bin_or_on_undefined_value.zig b/test/cases/compile_errors/stage1/bin_or_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..7ac30bcb4e69471e3e317cc559dca17520d26776 --- /dev/null +++ b/test/cases/compile_errors/stage1/bin_or_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/bin_xor_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/bin_xor_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..37e3eae321bc7246cd8f1ccce419300891497d04 --- /dev/null +++ b/test/cases/compile_errors/stage1/bin_xor_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/bin_xor_on_undefined_value.zig b/test/cases/compile_errors/stage1/bin_xor_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..f1656b60131df144286c32a984458cf33dc9793e --- /dev/null +++ b/test/cases/compile_errors/stage1/bin_xor_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/bool_not_on_undefined_value.zig b/test/cases/compile_errors/stage1/bool_not_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..5c99a9739b5941044e38593009ac0636adceef54 --- /dev/null +++ b/test/cases/compile_errors/stage1/bool_not_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: bool = undefined; + _ = !a; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:10: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/catch_on_undefined_value.zig b/test/cases/compile_errors/stage1/catch_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..53a5f1c2a958df64ecd574fd082b91ec9439fada --- /dev/null +++ b/test/cases/compile_errors/stage1/catch_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: anyerror!bool = undefined; + _ = a catch false; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:11: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/deref_on_undefined_value.zig b/test/cases/compile_errors/stage1/deref_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..f64d567a26c242685a23f91fb3752134f97b4940 --- /dev/null +++ b/test/cases/compile_errors/stage1/deref_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: *u8 = undefined; + _ = a.*; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:9: error: attempt to dereference undefined value diff --git a/test/cases/compile_errors/stage1/div_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/div_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..5f18e6286a27390aa974a1c493dd55ccf5de63a6 --- /dev/null +++ b/test/cases/compile_errors/stage1/div_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/div_on_undefined_value.zig b/test/cases/compile_errors/stage1/div_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..9857b1c77981d947f731c13c8411d215a8a84f80 --- /dev/null +++ b/test/cases/compile_errors/stage1/div_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/exe/main_missing_name.zig b/test/cases/compile_errors/stage1/exe/main_missing_name.zig deleted file mode 100644 index 1a53e43cfba2967b5cda0210b92a51714634339d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/exe/main_missing_name.zig +++ /dev/null @@ -1,8 +0,0 @@ -pub fn (main) void {} - -// error -// backend=stage1 -// target=native -// output_mode=Exe -// -// tmp.zig:1:5: error: missing function name diff --git a/test/cases/compile_errors/stage1/mod_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/mod_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..c127e256e8bd23f73517ed1dd5be34c20580a324 --- /dev/null +++ b/test/cases/compile_errors/stage1/mod_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/mod_on_undefined_value.zig b/test/cases/compile_errors/stage1/mod_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..8bd7774a4638148af6666ccca95c504195423e28 --- /dev/null +++ b/test/cases/compile_errors/stage1/mod_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/mult_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/mult_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..04040b975643bdefbc4045ab94a96991527f1871 --- /dev/null +++ b/test/cases/compile_errors/stage1/mult_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/mult_on_undefined_value.zig b/test/cases/compile_errors/stage1/mult_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..0dcd2b02f2d08afdee284ca4571bd5847ae97f74 --- /dev/null +++ b/test/cases/compile_errors/stage1/mult_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/mult_wrap_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/mult_wrap_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..db54af9f0b53687ac4e8c863efd40d61878b1080 --- /dev/null +++ b/test/cases/compile_errors/stage1/mult_wrap_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/mult_wrap_on_undefined_value.zig b/test/cases/compile_errors/stage1/mult_wrap_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..9ad09f7e9306fc682e2a346f413040281999a378 --- /dev/null +++ b/test/cases/compile_errors/stage1/mult_wrap_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/negate_on_undefined_value.zig b/test/cases/compile_errors/stage1/negate_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..f8d5f6128d48743bcacdcd267550e05d9903e203 --- /dev/null +++ b/test/cases/compile_errors/stage1/negate_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: i64 = undefined; + _ = -a; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:10: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/negate_wrap_on_undefined_value.zig b/test/cases/compile_errors/stage1/negate_wrap_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..4ca32956de7e8bb4de3c877b8246bdd017d44394 --- /dev/null +++ b/test/cases/compile_errors/stage1/negate_wrap_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: i64 = undefined; + _ = -%a; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:11: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig b/test/cases/compile_errors/stage1/obj/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig deleted file mode 100644 index e1d498e65f40a2e2583e684186d0f6921cf974ef..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig +++ /dev/null @@ -1,16 +0,0 @@ -export fn f1(x: u32) u32 { - const y = -%x; - return -y; -} -const V = @import("std").meta.Vector; -export fn f2(x: V(4, u32)) V(4, u32) { - const y = -%x; - return -y; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:12: error: negation of type 'u32' -// tmp.zig:8:12: error: negation of type 'u32' diff --git a/test/cases/compile_errors/stage1/obj/Issue_6823_dont_allow_._to_be_followed_by_.zig b/test/cases/compile_errors/stage1/obj/Issue_6823_dont_allow_._to_be_followed_by_.zig deleted file mode 100644 index 1aa0996ba4d7abacfb09a0aff758cd3bca61424c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/Issue_6823_dont_allow_._to_be_followed_by_.zig +++ /dev/null @@ -1,10 +0,0 @@ -fn foo() void { - var sequence = "repeat".*** 10; - _ = sequence; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:28: error: '.*' cannot be followed by '*'. Are you missing a space? diff --git a/test/cases/compile_errors/stage1/obj/access_non-existent_member_of_error_set.zig b/test/cases/compile_errors/stage1/obj/access_non-existent_member_of_error_set.zig deleted file mode 100644 index caddf36a8436cd538c181efc3974f34f7812b7a4..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/access_non-existent_member_of_error_set.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/add_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/add_assign_on_undefined_value.zig deleted file mode 100644 index 38e4fef81bc124e03c07c0b029c2b2f7e1d6ede0..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/add_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/add_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/add_on_undefined_value.zig deleted file mode 100644 index 4a66f9c102ba452512e78a9320bb008b77179a02..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/add_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/add_overflow_in_function_evaluation.zig b/test/cases/compile_errors/stage1/obj/add_overflow_in_function_evaluation.zig deleted file mode 100644 index d4fa312482d942eb5d787956a072635cb674bf26..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/add_overflow_in_function_evaluation.zig +++ /dev/null @@ -1,12 +0,0 @@ -const y = add(65530, 10); -fn add(a: u16, b: u16) u16 { - return a + b; -} - -export fn entry() usize { return @sizeOf(@TypeOf(y)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:14: error: operation caused overflow diff --git a/test/cases/compile_errors/stage1/obj/add_wrap_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/add_wrap_assign_on_undefined_value.zig deleted file mode 100644 index 5f9a4c61fc34d83790db326f1cc925c70c70fe85..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/add_wrap_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/add_wrap_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/add_wrap_on_undefined_value.zig deleted file mode 100644 index 582b8ec1cfc85ff91224f11799f78631c75a2951..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/add_wrap_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/addition_with_non_numbers.zig b/test/cases/compile_errors/stage1/obj/addition_with_non_numbers.zig deleted file mode 100644 index 8f343926f281ffa3efb54881f03a5f4bd4b4f87f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/addition_with_non_numbers.zig +++ /dev/null @@ -1,12 +0,0 @@ -const Foo = struct { - field: i32, -}; -const x = Foo {.field = 1} + Foo {.field = 2}; - -export fn entry() usize { return @sizeOf(@TypeOf(x)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:28: error: invalid operands to binary expression: 'Foo' and 'Foo' diff --git a/test/cases/compile_errors/stage1/obj/address_of_number_literal.zig b/test/cases/compile_errors/stage1/obj/address_of_number_literal.zig deleted file mode 100644 index 76d321929d9863e9d2ac1a8fece85e4d12ad2d72..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/address_of_number_literal.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/alignCast_expects_pointer_or_slice.zig b/test/cases/compile_errors/stage1/obj/alignCast_expects_pointer_or_slice.zig deleted file mode 100644 index 9f76d3ca4fff45a35b9c12c30ba95260f50a9702..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/alignCast_expects_pointer_or_slice.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - @alignCast(4, @as(u32, 3)); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:19: error: expected pointer or slice, found 'u32' diff --git a/test/cases/compile_errors/stage1/obj/alignment_of_enum_field_specified.zig b/test/cases/compile_errors/stage1/obj/alignment_of_enum_field_specified.zig deleted file mode 100644 index 9b6f1e452d2dd76f36ecf750d232ae9a07ec0e3f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/alignment_of_enum_field_specified.zig +++ /dev/null @@ -1,14 +0,0 @@ -const Number = enum { - a, - b align(i32), -}; -export fn entry1() void { - var x: Number = undefined; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:7: error: expected ',' after field diff --git a/test/cases/compile_errors/stage1/obj/ambiguous_decl_reference.zig b/test/cases/compile_errors/stage1/obj/ambiguous_decl_reference.zig deleted file mode 100644 index 82e6a0a24cadfc2539c66dcc54f07691d6c9815d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/ambiguous_decl_reference.zig +++ /dev/null @@ -1,21 +0,0 @@ -fn foo() void {} -fn bar() void { - const S = struct { - fn baz() void { - foo(); - } - fn foo() void {} - }; - S.baz(); -} -export fn entry() void { - bar(); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:13: error: ambiguous reference -// tmp.zig:7:9: note: declared here -// tmp.zig:1:1: note: also declared here diff --git a/test/cases/compile_errors/stage1/obj/and_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/and_on_undefined_value.zig deleted file mode 100644 index 6071d81062fcc32291a7673bcb6e2877ea7d3358..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/and_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: bool = undefined; - _ = a and a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/array_access_of_undeclared_identifier.zig b/test/cases/compile_errors/stage1/obj/array_access_of_undeclared_identifier.zig deleted file mode 100644 index 7d16a0d60e6d9465bba265454034a66a67e2dac0..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/array_access_of_undeclared_identifier.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/array_concatenation_with_wrong_type.zig b/test/cases/compile_errors/stage1/obj/array_concatenation_with_wrong_type.zig deleted file mode 100644 index ccddc7efbd5b2b37ba81375cad57fda646d78988..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/array_concatenation_with_wrong_type.zig +++ /dev/null @@ -1,11 +0,0 @@ -const src = "aoeu"; -const derp: usize = 1234; -const a = derp ++ "foo"; - -export fn entry() usize { return @sizeOf(@TypeOf(a)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:11: error: expected array, found 'usize' diff --git a/test/cases/compile_errors/stage1/obj/asm_at_compile_time.zig b/test/cases/compile_errors/stage1/obj/asm_at_compile_time.zig deleted file mode 100644 index fcfd5e7da6b1df490029c1f9e6213d3dc90ab6d1..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/asm_at_compile_time.zig +++ /dev/null @@ -1,17 +0,0 @@ -comptime { - doSomeAsm(); -} - -fn doSomeAsm() void { - asm volatile ( - \\.globl aoeu; - \\.type aoeu, @function; - \\.set aoeu, derp; - ); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:5: error: unable to evaluate constant expression diff --git a/test/cases/compile_errors/stage1/obj/assign_inline_fn_to_non-comptime_var.zig b/test/cases/compile_errors/stage1/obj/assign_inline_fn_to_non-comptime_var.zig deleted file mode 100644 index 7714bb728293133efdcad1c65208995d8d81b8a1..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/assign_inline_fn_to_non-comptime_var.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - var a = b; - _ = a; -} -fn b() callconv(.Inline) void { } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: functions marked inline must be stored in const or comptime var -// tmp.zig:5:1: note: declared here diff --git a/test/cases/compile_errors/stage1/obj/assign_null_to_non-optional_pointer.zig b/test/cases/compile_errors/stage1/obj/assign_null_to_non-optional_pointer.zig deleted file mode 100644 index 110d6c26299e260fc40c5e5d329e34f5048a0eb3..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/assign_null_to_non-optional_pointer.zig +++ /dev/null @@ -1,9 +0,0 @@ -const a: *u8 = null; - -export fn entry() usize { return @sizeOf(@TypeOf(a)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:16: error: expected type '*u8', found '@Type(.Null)' diff --git a/test/cases/compile_errors/stage1/obj/assign_through_constant_pointer.zig b/test/cases/compile_errors/stage1/obj/assign_through_constant_pointer.zig deleted file mode 100644 index 69ba383843554e341ea9ec8263217d351cf38c5d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/assign_through_constant_pointer.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn f() void { - var cstr = "Hat"; - cstr[0] = 'W'; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:13: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/assign_through_constant_slice.zig b/test/cases/compile_errors/stage1/obj/assign_through_constant_slice.zig deleted file mode 100644 index 55d2e7e7c7f6dd134a93d02a8a13f96e8db8e68a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/assign_through_constant_slice.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn f() void { - var cstr: []const u8 = "Hat"; - cstr[0] = 'W'; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:13: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/assign_to_constant_field.zig b/test/cases/compile_errors/stage1/obj/assign_to_constant_field.zig deleted file mode 100644 index 610818118ae0c203106f0c41232525a70d9ca70b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/assign_to_constant_field.zig +++ /dev/null @@ -1,13 +0,0 @@ -const Foo = struct { - field: i32, -}; -export fn derp() void { - const f = Foo {.field = 1234,}; - f.field = 0; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:15: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/assign_to_constant_variable.zig b/test/cases/compile_errors/stage1/obj/assign_to_constant_variable.zig deleted file mode 100644 index 531f669c1aa4af7b066b112aef22547d104c0698..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/assign_to_constant_variable.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn f() void { - const a = 3; - a = 4; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/assign_too_big_number_to_u16.zig b/test/cases/compile_errors/stage1/obj/assign_too_big_number_to_u16.zig deleted file mode 100644 index 3138ed5faf7169849afeee1fb37ec6543aad39c2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/assign_too_big_number_to_u16.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn foo() void { - var vga_mem: u16 = 0xB8000; - _ = vga_mem; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:24: error: integer value 753664 cannot be coerced to type 'u16' diff --git a/test/cases/compile_errors/stage1/obj/assign_unreachable.zig b/test/cases/compile_errors/stage1/obj/assign_unreachable.zig deleted file mode 100644 index f87adcd9942298fa9130ce2f91be392d92db90b2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/assign_unreachable.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig b/test/cases/compile_errors/stage1/obj/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig deleted file mode 100644 index dfc7ff5036871218e35687d4ee5c4e9d54282aed..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var x: u32 = 0; - @atomicStore(u32, &x, 1, .Acquire); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:30: error: @atomicStore atomic ordering must not be Acquire or AcqRel diff --git a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig b/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig deleted file mode 100644 index 929950e754ed419589dc91c2056c684a8f5c5c07..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig +++ /dev/null @@ -1,11 +0,0 @@ -const AtomicOrder = @import("std").builtin.AtomicOrder; -export fn f() void { - var x: i32 = 1234; - while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.Monotonic, AtomicOrder.SeqCst)) {} -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:81: error: failure atomic ordering must be no stricter than success diff --git a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig b/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig deleted file mode 100644 index fe3344e53664537243ba930ca72069af4011bc14..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig +++ /dev/null @@ -1,11 +0,0 @@ -const AtomicOrder = @import("std").builtin.AtomicOrder; -export fn f() void { - var x: i32 = 1234; - while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.Unordered, AtomicOrder.Unordered)) {} -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:58: error: success atomic ordering must be Monotonic or stricter diff --git a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_fence_Acquire_or_stricter.zig b/test/cases/compile_errors/stage1/obj/atomic_orderings_of_fence_Acquire_or_stricter.zig deleted file mode 100644 index 8a01871a80ce34c31d290bea280ff8f98fc0f33e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_fence_Acquire_or_stricter.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/atomicrmw_with_bool_op_not_.Xchg.zig b/test/cases/compile_errors/stage1/obj/atomicrmw_with_bool_op_not_.Xchg.zig deleted file mode 100644 index 0b5b0cd3c1ecfa6a7250928ff8291dcfc70fd734..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/atomicrmw_with_bool_op_not_.Xchg.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var x = false; - _ = @atomicRmw(bool, &x, .Add, true, .SeqCst); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:30: error: @atomicRmw with bool only allowed with .Xchg diff --git a/test/cases/compile_errors/stage1/obj/atomicrmw_with_enum_op_not_.Xchg.zig b/test/cases/compile_errors/stage1/obj/atomicrmw_with_enum_op_not_.Xchg.zig deleted file mode 100644 index adbf4ca45e8d073fa381f8e3f32243b57da5ba03..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/atomicrmw_with_enum_op_not_.Xchg.zig +++ /dev/null @@ -1,16 +0,0 @@ -export fn entry() void { - const E = enum(u8) { - a, - b, - c, - d, - }; - var x: E = .a; - _ = @atomicRmw(E, &x, .Add, .b, .SeqCst); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:9:27: error: @atomicRmw with enum only allowed with .Xchg diff --git a/test/cases/compile_errors/stage1/obj/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig b/test/cases/compile_errors/stage1/obj/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig deleted file mode 100644 index 4f3ebfcef6af9293418aa92edb8290127f5b3726..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var x: f32 = 0; - _ = @atomicRmw(f32, &x, .And, 2, .SeqCst); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:29: error: @atomicRmw with float only allowed with .Xchg, .Add and .Sub diff --git a/test/cases/compile_errors/stage1/obj/attempt_to_cast_enum_literal_to_error.zig b/test/cases/compile_errors/stage1/obj/attempt_to_cast_enum_literal_to_error.zig deleted file mode 100644 index f1c30815fca0dfce8bea8128e6a15bfbf983a243..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/attempt_to_cast_enum_literal_to_error.zig +++ /dev/null @@ -1,11 +0,0 @@ -export fn entry() void { - switch (error.Hi) { - .Hi => {}, - } -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: expected type 'error{Hi}', found '@Type(.EnumLiteral)' diff --git a/test/cases/compile_errors/stage1/obj/attempt_to_close_over_comptime_variable_from_outer_scope.zig b/test/cases/compile_errors/stage1/obj/attempt_to_close_over_comptime_variable_from_outer_scope.zig deleted file mode 100644 index 58eb9d19d20f03b16a30f252c953b818bfa6e77b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/attempt_to_close_over_comptime_variable_from_outer_scope.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/attempt_to_create_17_bit_float_type.zig b/test/cases/compile_errors/stage1/obj/attempt_to_create_17_bit_float_type.zig deleted file mode 100644 index ba7393fcb76d8f003bc81feb2348b94290dc58e8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/attempt_to_create_17_bit_float_type.zig +++ /dev/null @@ -1,10 +0,0 @@ -const builtin = @import("std").builtin; -comptime { - _ = @Type(.{ .Float = .{ .bits = 17 } }); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:16: error: 17-bit float unsupported diff --git a/test/cases/compile_errors/stage1/obj/attempt_to_negate_a_non-integer_non-float_or_non-vector_type.zig b/test/cases/compile_errors/stage1/obj/attempt_to_negate_a_non-integer_non-float_or_non-vector_type.zig deleted file mode 100644 index e9bbf921aba193bbdb74c01d65ecd6bd57f8a858..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/attempt_to_negate_a_non-integer_non-float_or_non-vector_type.zig +++ /dev/null @@ -1,14 +0,0 @@ -fn foo() anyerror!u32 { - return 1; -} - -export fn entry() void { - const x = -foo(); - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:15: error: negation of type 'anyerror!u32' diff --git a/test/cases/compile_errors/stage1/obj/attempted_double_ampersand.zig b/test/cases/compile_errors/stage1/obj/attempted_double_ampersand.zig deleted file mode 100644 index c749b172c6541a3db255aebc0d2f26f1dd62c70a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/attempted_double_ampersand.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/attempted_double_pipe_on_boolean_values.zig b/test/cases/compile_errors/stage1/obj/attempted_double_pipe_on_boolean_values.zig deleted file mode 100644 index b991b1b61b5c603779d53d63c0b9afabd6006b8e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/attempted_double_pipe_on_boolean_values.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_T_to_slice_const_T.zig b/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_T_to_slice_const_T.zig deleted file mode 100644 index c3b0847129cdd4de1f4525e676ffb0fce2b40d9d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_T_to_slice_const_T.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - const x: [*]const bool = true; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:30: error: expected type '[*]const bool', found 'bool' diff --git a/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_const_T_to_sliceT.zig b/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_const_T_to_sliceT.zig deleted file mode 100644 index 3ff9937983279a8a54947cea711bd3afcea56a84..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_const_T_to_sliceT.zig +++ /dev/null @@ -1,11 +0,0 @@ -export fn entry() void { - const u: u32 = 42; - const x: []u32 = &u; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:23: error: expected type '[]u32', found '*const u32' diff --git a/test/cases/compile_errors/stage1/obj/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig b/test/cases/compile_errors/stage1/obj/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig deleted file mode 100644 index 7e44ad5057cc67a71b976c538150574f42cb177f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig +++ /dev/null @@ -1,17 +0,0 @@ -export fn entry() void { - const BlockKind = u32; - - const Block = struct { - kind: BlockKind, - }; - - bogus; - - _ = Block; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:8:5: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/stage1/obj/bad_import.zig b/test/cases/compile_errors/stage1/obj/bad_import.zig deleted file mode 100644 index 1a7ab5f00b78f479da870f6009dbdea06dc2a4b3..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bad_import.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/bad_usage_of_call.zig b/test/cases/compile_errors/stage1/obj/bad_usage_of_call.zig deleted file mode 100644 index c77ccf1a525ca5144581da98903e60aa74f19b7b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bad_usage_of_call.zig +++ /dev/null @@ -1,30 +0,0 @@ -export fn entry1() void { - @call(.{}, foo, {}); -} -export fn entry2() void { - comptime @call(.{ .modifier = .never_inline }, foo, .{}); -} -export fn entry3() void { - comptime @call(.{ .modifier = .never_tail }, foo, .{}); -} -export fn entry4() void { - @call(.{ .modifier = .never_inline }, bar, .{}); -} -export fn entry5(c: bool) void { - var baz = if (c) baz1 else baz2; - @call(.{ .modifier = .compile_time }, baz, .{}); -} -fn foo() void {} -fn bar() callconv(.Inline) void {} -fn baz1() void {} -fn baz2() void {} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected tuple or struct, found 'void' -// tmp.zig:5:14: error: unable to perform 'never_inline' call at compile-time -// tmp.zig:8:14: error: unable to perform 'never_tail' call at compile-time -// tmp.zig:11:5: error: no-inline call of inline function -// tmp.zig:15:5: error: the specified modifier requires a comptime-known function diff --git a/test/cases/compile_errors/stage1/obj/bin_and_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/bin_and_assign_on_undefined_value.zig deleted file mode 100644 index 1076f9abdb6c170e84f0770f5ec33d04e0c572f1..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bin_and_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/bin_and_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/bin_and_on_undefined_value.zig deleted file mode 100644 index a53d9a10ac66b5ba7f107648fea3f18fb7c0c37d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bin_and_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/bin_not_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/bin_not_on_undefined_value.zig deleted file mode 100644 index 7e0f554f0b1a718848f4b551f5ae51556cb17e4a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bin_not_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: i64 = undefined; - _ = ~a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:10: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/bin_or_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/bin_or_assign_on_undefined_value.zig deleted file mode 100644 index cc61fc03e168cb211ced6b390c2f2923fb719615..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bin_or_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/bin_or_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/bin_or_on_undefined_value.zig deleted file mode 100644 index 7ac30bcb4e69471e3e317cc559dca17520d26776..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bin_or_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/bin_xor_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/bin_xor_assign_on_undefined_value.zig deleted file mode 100644 index 37e3eae321bc7246cd8f1ccce419300891497d04..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bin_xor_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/bin_xor_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/bin_xor_on_undefined_value.zig deleted file mode 100644 index f1656b60131df144286c32a984458cf33dc9793e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bin_xor_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/binary_not_on_number_literal.zig b/test/cases/compile_errors/stage1/obj/binary_not_on_number_literal.zig deleted file mode 100644 index 34ddf9adfa0c44c3180917e53927313ab69f04ed..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/binary_not_on_number_literal.zig +++ /dev/null @@ -1,11 +0,0 @@ -const TINY_QUANTUM_SHIFT = 4; -const TINY_QUANTUM_SIZE = 1 << TINY_QUANTUM_SHIFT; -var block_aligned_stuff: usize = (4 + TINY_QUANTUM_SIZE) & ~(TINY_QUANTUM_SIZE - 1); - -export fn entry() usize { return @sizeOf(@TypeOf(block_aligned_stuff)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:60: error: unable to perform binary not operation on type 'comptime_int' diff --git a/test/cases/compile_errors/stage1/obj/bitCast_same_size_but_bit_count_mismatch.zig b/test/cases/compile_errors/stage1/obj/bitCast_same_size_but_bit_count_mismatch.zig deleted file mode 100644 index 9150dc32853c9ff6c5bd3d9f6553bd4aa2ceee3f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bitCast_same_size_but_bit_count_mismatch.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/bitCast_with_different_sizes_inside_an_expression.zig b/test/cases/compile_errors/stage1/obj/bitCast_with_different_sizes_inside_an_expression.zig deleted file mode 100644 index 64caef7cd0cdf99997a8a228d4a70c9abe33fa53..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bitCast_with_different_sizes_inside_an_expression.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/bit_shifting_only_works_on_integer_types.zig b/test/cases/compile_errors/stage1/obj/bit_shifting_only_works_on_integer_types.zig deleted file mode 100644 index 7d1c5873a1fe3242af429f7492719d1b53b7dc55..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bit_shifting_only_works_on_integer_types.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/bogus_method_call_on_slice.zig b/test/cases/compile_errors/stage1/obj/bogus_method_call_on_slice.zig deleted file mode 100644 index 3ede578b34e57005baa67405fb3bf406a78ab276..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bogus_method_call_on_slice.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/bool_not_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/bool_not_on_undefined_value.zig deleted file mode 100644 index 5c99a9739b5941044e38593009ac0636adceef54..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/bool_not_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: bool = undefined; - _ = !a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:10: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/branch_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/branch_on_undefined_value.zig deleted file mode 100644 index f4b922a3328af9c42082a5e461eb84f6569020da..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/branch_on_undefined_value.zig +++ /dev/null @@ -1,9 +0,0 @@ -const x = if (undefined) true else false; - -export fn entry() usize { return @sizeOf(@TypeOf(x)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:15: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/call_assigned_to_constant.zig b/test/cases/compile_errors/stage1/obj/call_assigned_to_constant.zig deleted file mode 100644 index ca4e8b67cd02ece3a12191a4cb66b2cbb6b89055..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/call_assigned_to_constant.zig +++ /dev/null @@ -1,24 +0,0 @@ -const Foo = struct { - x: i32, -}; -fn foo() Foo { - return .{ .x = 42 }; -} -fn bar(val: anytype) Foo { - return .{ .x = val }; -} -export fn entry() void { - const baz: Foo = undefined; - baz = foo(); -} -export fn entry1() void { - const baz: Foo = undefined; - baz = bar(42); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:12:14: error: cannot assign to constant -// tmp.zig:16:14: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/calling_var_args_extern_function_passing_array_instead_of_pointer.zig b/test/cases/compile_errors/stage1/obj/calling_var_args_extern_function_passing_array_instead_of_pointer.zig deleted file mode 100644 index a71ab051f280967e4af951c8d35d672523a5b9ae..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/calling_var_args_extern_function_passing_array_instead_of_pointer.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - foo("hello".*,); -} -pub extern fn foo(format: *const u8, ...) void; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:16: error: expected type '*const u8', found '[5:0]u8' diff --git a/test/cases/compile_errors/stage1/obj/cast_enum_literal_to_enum_but_it_doesnt_match.zig b/test/cases/compile_errors/stage1/obj/cast_enum_literal_to_enum_but_it_doesnt_match.zig deleted file mode 100644 index ba53646efcc8c700484eaa330c17083dd822ca68..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/cast_enum_literal_to_enum_but_it_doesnt_match.zig +++ /dev/null @@ -1,15 +0,0 @@ -const Foo = enum { - a, - b, -}; -export fn entry() void { - const x: Foo = .c; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:20: error: enum 'Foo' has no field named 'c' -// tmp.zig:1:13: note: 'Foo' declared here diff --git a/test/cases/compile_errors/stage1/obj/cast_negative_integer_literal_to_usize.zig b/test/cases/compile_errors/stage1/obj/cast_negative_integer_literal_to_usize.zig deleted file mode 100644 index 763e0c8a238ecf83aaa354f2652088fd819360cd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/cast_negative_integer_literal_to_usize.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/cast_negative_value_to_unsigned_integer.zig b/test/cases/compile_errors/stage1/obj/cast_negative_value_to_unsigned_integer.zig deleted file mode 100644 index d2e318714054f8265defd34dad989ac64baac418..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/cast_negative_value_to_unsigned_integer.zig +++ /dev/null @@ -1,17 +0,0 @@ -comptime { - const value: i32 = -1; - const unsigned = @intCast(u32, value); - _ = unsigned; -} -export fn entry1() void { - const value: i32 = -1; - const unsigned: u32 = value; - _ = unsigned; -} - -// error -// backend=stage1 -// 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' diff --git a/test/cases/compile_errors/stage1/obj/cast_unreachable.zig b/test/cases/compile_errors/stage1/obj/cast_unreachable.zig deleted file mode 100644 index b043108737805b841e274e1787145796448b94c7..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/cast_unreachable.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/casting_bit_offset_pointer_to_regular_pointer.zig b/test/cases/compile_errors/stage1/obj/casting_bit_offset_pointer_to_regular_pointer.zig deleted file mode 100644 index f109cdf2955bf947976dd16b1f5de07bec3d4216..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/casting_bit_offset_pointer_to_regular_pointer.zig +++ /dev/null @@ -1,21 +0,0 @@ -const BitField = packed struct { - a: u3, - b: u3, - c: u2, -}; - -fn foo(bit_field: *const BitField) u3 { - return bar(&bit_field.b); -} - -fn bar(x: *const u3) u3 { - return x.*; -} - -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:8:26: error: expected type '*const u3', found '*align(:3:1) const u3' diff --git a/test/cases/compile_errors/stage1/obj/catch_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/catch_on_undefined_value.zig deleted file mode 100644 index 53a5f1c2a958df64ecd574fd082b91ec9439fada..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/catch_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: anyerror!bool = undefined; - _ = a catch false; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:11: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/chained_comparison_operators.zig b/test/cases/compile_errors/stage1/obj/chained_comparison_operators.zig deleted file mode 100644 index 1e4ed8d82e1b7dcb925f05ac6f5ec443f94cfb45..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/chained_comparison_operators.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn a(value: u32) bool { - return 1 < value < 1000; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:22: error: comparison operators cannot be chained diff --git a/test/cases/compile_errors/stage1/obj/cmpxchg_with_float.zig b/test/cases/compile_errors/stage1/obj/cmpxchg_with_float.zig deleted file mode 100644 index 11f2dc21c31bf50b88373242f696da9c903ddd08..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/cmpxchg_with_float.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var x: f32 = 0; - _ = @cmpxchgWeak(f32, &x, 1, 2, .SeqCst, .SeqCst); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:22: error: expected bool, integer, enum or pointer type, found 'f32' diff --git a/test/cases/compile_errors/stage1/obj/colliding_invalid_top_level_functions.zig b/test/cases/compile_errors/stage1/obj/colliding_invalid_top_level_functions.zig deleted file mode 100644 index 344edbaa9fa2fbd73a93f00e9a8a067b4e61a00f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/colliding_invalid_top_level_functions.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/comparing_a_non-optional_pointer_against_null.zig b/test/cases/compile_errors/stage1/obj/comparing_a_non-optional_pointer_against_null.zig deleted file mode 100644 index 62b570803494ef8c4cb2ec15a8388b762e4960b8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/comparing_a_non-optional_pointer_against_null.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var x: i32 = 1; - _ = &x == null; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:12: error: comparison of '*i32' with null diff --git a/test/cases/compile_errors/stage1/obj/comparing_against_undefined_produces_undefined_value.zig b/test/cases/compile_errors/stage1/obj/comparing_against_undefined_produces_undefined_value.zig deleted file mode 100644 index 8bad61e6d1d6321166386d17fe4c60db4800c623..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/comparing_against_undefined_produces_undefined_value.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - if (2 == undefined) {} -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:11: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/comparison_operators_with_undefined_value.zig b/test/cases/compile_errors/stage1/obj/comparison_operators_with_undefined_value.zig deleted file mode 100644 index 818a575fc8b30cfd26929eb61b6923f9a5cd85bb..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/comparison_operators_with_undefined_value.zig +++ /dev/null @@ -1,47 +0,0 @@ -// operator == -comptime { - var a: i64 = undefined; - var x: i32 = 0; - if (a == a) x += 1; -} -// operator != -comptime { - var a: i64 = undefined; - var x: i32 = 0; - if (a != a) x += 1; -} -// operator > -comptime { - var a: i64 = undefined; - var x: i32 = 0; - if (a > a) x += 1; -} -// operator < -comptime { - var a: i64 = undefined; - var x: i32 = 0; - if (a < a) x += 1; -} -// operator >= -comptime { - var a: i64 = undefined; - var x: i32 = 0; - if (a >= a) x += 1; -} -// operator <= -comptime { - var a: i64 = undefined; - var x: i32 = 0; - if (a <= a) x += 1; -} - -// error -// backend=stage1 -// 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 diff --git a/test/cases/compile_errors/stage1/obj/comparison_with_error_union_and_error_value.zig b/test/cases/compile_errors/stage1/obj/comparison_with_error_union_and_error_value.zig deleted file mode 100644 index 16f3b21c3d39a539fb324f9f62e4874eb028ba79..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/comparison_with_error_union_and_error_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var number_or_error: anyerror!i32 = error.SomethingAwful; - _ = number_or_error == error.SomethingAwful; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:25: error: operator not allowed for type 'anyerror!i32' diff --git a/test/cases/compile_errors/stage1/obj/compileError_shows_traceback_of_references_that_caused_it.zig b/test/cases/compile_errors/stage1/obj/compileError_shows_traceback_of_references_that_caused_it.zig deleted file mode 100644 index c58e9b77680998a77442bc2900d396b5337df346..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/compileError_shows_traceback_of_references_that_caused_it.zig +++ /dev/null @@ -1,14 +0,0 @@ -const foo = @compileError("aoeu",); - -const bar = baz + foo; -const baz = 1; - -export fn entry() i32 { - return bar; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:13: error: aoeu diff --git a/test/cases/compile_errors/stage1/obj/compile_error_in_struct_init_expression.zig b/test/cases/compile_errors/stage1/obj/compile_error_in_struct_init_expression.zig deleted file mode 100644 index 041d09b0026eff658af85697258f1bfcd6abcfdb..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/compile_error_in_struct_init_expression.zig +++ /dev/null @@ -1,16 +0,0 @@ -const Foo = struct { - a: i32 = crap, - b: i32, -}; -export fn entry() void { - var x = Foo{ - .b = 5, - }; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:14: error: use of undeclared identifier 'crap' diff --git a/test/cases/compile_errors/stage1/obj/compile_error_when_evaluating_return_type_of_inferred_error_set.zig b/test/cases/compile_errors/stage1/obj/compile_error_when_evaluating_return_type_of_inferred_error_set.zig deleted file mode 100644 index 7b1d11b0a43962a9af927bd4e6b719142cc8e8b3..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/compile_error_when_evaluating_return_type_of_inferred_error_set.zig +++ /dev/null @@ -1,14 +0,0 @@ -const Car = struct { - foo: *SymbolThatDoesNotExist, - pub fn init() !Car {} -}; -export fn entry() void { - const car = Car.init(); - _ = car; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist' diff --git a/test/cases/compile_errors/stage1/obj/compile_log_a_pointer_to_an_opaque_value.zig b/test/cases/compile_errors/stage1/obj/compile_log_a_pointer_to_an_opaque_value.zig deleted file mode 100644 index d585712b8ac4752808d6ade84a270bb917b250fd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/compile_log_a_pointer_to_an_opaque_value.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - @compileLog(@ptrCast(*const anyopaque, &entry)); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: found compile log statement diff --git a/test/cases/compile_errors/stage1/obj/compile_log_statement_warning_deduplication_in_generic_fn.zig b/test/cases/compile_errors/stage1/obj/compile_log_statement_warning_deduplication_in_generic_fn.zig deleted file mode 100644 index 991021932de33be551079056aae4ee8060183a7d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/compile_log_statement_warning_deduplication_in_generic_fn.zig +++ /dev/null @@ -1,14 +0,0 @@ -export fn entry() void { - inner(1); - inner(2); -} -fn inner(comptime n: usize) void { - comptime var i = 0; - inline while (i < n) : (i += 1) { @compileLog("!@#$"); } -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:7:39: error: found compile log statement diff --git a/test/cases/compile_errors/stage1/obj/comptime_cast_enum_to_union_but_field_has_payload.zig b/test/cases/compile_errors/stage1/obj/comptime_cast_enum_to_union_but_field_has_payload.zig deleted file mode 100644 index c3cf9e76e5029a8d274d43ddfecfc2e12dd40b70..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/comptime_cast_enum_to_union_but_field_has_payload.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/comptime_slice_of_undefined_pointer_non-zero_len.zig b/test/cases/compile_errors/stage1/obj/comptime_slice_of_undefined_pointer_non-zero_len.zig deleted file mode 100644 index ec7fbdc6e2d7f8badd0fbae6c4ee71d245cbef64..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/comptime_slice_of_undefined_pointer_non-zero_len.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - const slice = @as([*]i32, undefined)[0..1]; - _ = slice; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:41: error: non-zero length slice of undefined pointer diff --git a/test/cases/compile_errors/stage1/obj/comptime_struct_field_no_init_value.zig b/test/cases/compile_errors/stage1/obj/comptime_struct_field_no_init_value.zig deleted file mode 100644 index b889911a4dcf253ec2e00941ef50e47494a93717..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/comptime_struct_field_no_init_value.zig +++ /dev/null @@ -1,13 +0,0 @@ -const Foo = struct { - comptime b: i32, -}; -export fn entry() void { - var f: Foo = undefined; - _ = f; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: comptime field without default initialization value diff --git a/test/cases/compile_errors/stage1/obj/const_is_a_statement_not_an_expression.zig b/test/cases/compile_errors/stage1/obj/const_is_a_statement_not_an_expression.zig deleted file mode 100644 index b90878abeb653a690cc8e018f9c6fd5f8a13d9f2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/const_is_a_statement_not_an_expression.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/container_init_with_non-type.zig b/test/cases/compile_errors/stage1/obj/container_init_with_non-type.zig deleted file mode 100644 index 3364b2f5b61e1f08e1ca3e0b28b2355a069eaba5..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/container_init_with_non-type.zig +++ /dev/null @@ -1,10 +0,0 @@ -const zero: i32 = 0; -const a = zero{1}; - -export fn entry() usize { return @sizeOf(@TypeOf(a)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:11: error: expected type 'type', found 'i32' diff --git a/test/cases/compile_errors/stage1/obj/control_flow_uses_comptime_var_at_runtime.zig b/test/cases/compile_errors/stage1/obj/control_flow_uses_comptime_var_at_runtime.zig deleted file mode 100644 index cb2c3e9f6eed4abb8a31959366ff92c7bbc6d6b8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/control_flow_uses_comptime_var_at_runtime.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/declaration_between_fields.zig b/test/cases/compile_errors/stage1/obj/declaration_between_fields.zig deleted file mode 100644 index 25a1ff5abc7450a896cdd73605b2b6d523f12d78..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/declaration_between_fields.zig +++ /dev/null @@ -1,24 +0,0 @@ -const S = struct { - const foo = 2; - const bar = 2; - const baz = 2; - a: struct { - a: u32, - b: u32, - }, - const foo1 = 2; - const bar1 = 2; - const baz1 = 2; - b: usize, -}; -comptime { - _ = S; -} - -// error -// backend=stage1 -// 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 diff --git a/test/cases/compile_errors/stage1/obj/declaration_with_same_name_as_primitive_must_use_special_syntax.zig b/test/cases/compile_errors/stage1/obj/declaration_with_same_name_as_primitive_must_use_special_syntax.zig deleted file mode 100644 index 46b0257ed5673fa2e417dd0ac159ad736f33ec7d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/declaration_with_same_name_as_primitive_must_use_special_syntax.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/deduplicate_undeclared_identifier.zig b/test/cases/compile_errors/stage1/obj/deduplicate_undeclared_identifier.zig deleted file mode 100644 index 1e3b3bf6db35bab027549f97f8d93b781541eee6..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/deduplicate_undeclared_identifier.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/deref_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/deref_on_undefined_value.zig deleted file mode 100644 index f64d567a26c242685a23f91fb3752134f97b4940..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/deref_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: *u8 = undefined; - _ = a.*; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: attempt to dereference undefined value diff --git a/test/cases/compile_errors/stage1/obj/div_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/div_assign_on_undefined_value.zig deleted file mode 100644 index 5f18e6286a27390aa974a1c493dd55ccf5de63a6..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/div_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/div_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/div_on_undefined_value.zig deleted file mode 100644 index 9857b1c77981d947f731c13c8411d215a8a84f80..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/div_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/dont_implicit_cast_double_pointer_to_anyopaque.zig b/test/cases/compile_errors/stage1/obj/dont_implicit_cast_double_pointer_to_anyopaque.zig deleted file mode 100644 index f61dec2ee07f86f50a1188d1e8d50697cf997892..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/dont_implicit_cast_double_pointer_to_anyopaque.zig +++ /dev/null @@ -1,13 +0,0 @@ -export fn entry() void { - var a: u32 = 1; - var ptr: *align(@alignOf(u32)) anyopaque = &a; - var b: *u32 = @ptrCast(*u32, ptr); - var ptr2: *anyopaque = &b; - _ = ptr2; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:29: error: expected type '*anyopaque', found '**u32' diff --git a/test/cases/compile_errors/stage1/obj/duplicate_boolean_switch_value.zig b/test/cases/compile_errors/stage1/obj/duplicate_boolean_switch_value.zig deleted file mode 100644 index 5b85c0a2eb93e20680e5dbc78b27d0890ac37c96..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/duplicate_boolean_switch_value.zig +++ /dev/null @@ -1,23 +0,0 @@ -comptime { - const x = switch (true) { - true => false, - false => true, - true => false, - }; - _ = x; -} -comptime { - const x = switch (true) { - false => true, - true => false, - false => true, - }; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:9: error: duplicate switch value -// tmp.zig:13:9: error: duplicate switch value diff --git a/test/cases/compile_errors/stage1/obj/duplicate_error_value_in_error_set.zig b/test/cases/compile_errors/stage1/obj/duplicate_error_value_in_error_set.zig deleted file mode 100644 index 30d3bee8ab9d8f3dbb4ac1f6f0e1191fbade1a8f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/duplicate_error_value_in_error_set.zig +++ /dev/null @@ -1,15 +0,0 @@ -const Foo = error { - Bar, - Bar, -}; -export fn entry() void { - const a: Foo = undefined; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: duplicate error set field 'Bar' -// tmp.zig:2:5: note: previous declaration here diff --git a/test/cases/compile_errors/stage1/obj/duplicate_field_in_struct_value_expression.zig b/test/cases/compile_errors/stage1/obj/duplicate_field_in_struct_value_expression.zig deleted file mode 100644 index 1c0bac75e2ee9b1ab3a8173dd41059e83379ee7f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/duplicate_field_in_struct_value_expression.zig +++ /dev/null @@ -1,20 +0,0 @@ -const A = struct { - x : i32, - y : i32, - z : i32, -}; -export fn f() void { - const a = A { - .z = 1, - .y = 2, - .x = 3, - .z = 4, - }; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:11:9: error: duplicate field diff --git a/test/cases/compile_errors/stage1/obj/duplicate_struct_field.zig b/test/cases/compile_errors/stage1/obj/duplicate_struct_field.zig deleted file mode 100644 index 93afdef70eded4469ec9def53b25ab34a43f7836..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/duplicate_struct_field.zig +++ /dev/null @@ -1,15 +0,0 @@ -const Foo = struct { - Bar: i32, - Bar: usize, -}; -export fn entry() void { - const a: Foo = undefined; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: duplicate struct field: 'Bar' -// tmp.zig:2:5: note: other field here diff --git a/test/cases/compile_errors/stage1/obj/duplicate_union_field.zig b/test/cases/compile_errors/stage1/obj/duplicate_union_field.zig deleted file mode 100644 index 5cbdcb7820a6559e19cd613c45aa52d41d7a76b2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/duplicate_union_field.zig +++ /dev/null @@ -1,15 +0,0 @@ -const Foo = union { - Bar: i32, - Bar: usize, -}; -export fn entry() void { - const a: Foo = undefined; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: duplicate union field: 'Bar' -// tmp.zig:2:5: note: other field here diff --git a/test/cases/compile_errors/stage1/obj/embedFile_with_bogus_file.zig b/test/cases/compile_errors/stage1/obj/embedFile_with_bogus_file.zig deleted file mode 100644 index a03949b40a4295082f15b68c348738d89cb42f18..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/embedFile_with_bogus_file.zig +++ /dev/null @@ -1,9 +0,0 @@ -const resource = @embedFile("bogus.txt",); - -export fn entry() usize { return @sizeOf(@TypeOf(resource)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:29: error: unable to find ' diff --git a/test/cases/compile_errors/stage1/obj/empty_for_loop_body.zig b/test/cases/compile_errors/stage1/obj/empty_for_loop_body.zig deleted file mode 100644 index b824c9313181ebd36819aedf1bb1d5f942652743..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/empty_for_loop_body.zig +++ /dev/null @@ -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 ';' diff --git a/test/cases/compile_errors/stage1/obj/empty_if_body.zig b/test/cases/compile_errors/stage1/obj/empty_if_body.zig deleted file mode 100644 index 0a7b5b1b8b70a0ab536c4ca97516be800b3b0fab..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/empty_if_body.zig +++ /dev/null @@ -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 ';' diff --git a/test/cases/compile_errors/stage1/obj/empty_switch_on_an_integer.zig b/test/cases/compile_errors/stage1/obj/empty_switch_on_an_integer.zig deleted file mode 100644 index a7b8e2a81bd47da183d12713a52efa068450c53d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/empty_switch_on_an_integer.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var x: u32 = 0; - switch(x) {} -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: switch must handle all possibilities diff --git a/test/cases/compile_errors/stage1/obj/empty_while_loop_body.zig b/test/cases/compile_errors/stage1/obj/empty_while_loop_body.zig deleted file mode 100644 index 01b21325188cec26a31063713b72f16f7bde2d26..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/empty_while_loop_body.zig +++ /dev/null @@ -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 ';' diff --git a/test/cases/compile_errors/stage1/obj/enum_in_field_count_range_but_not_matching_tag.zig b/test/cases/compile_errors/stage1/obj/enum_in_field_count_range_but_not_matching_tag.zig deleted file mode 100644 index e783cbee5293c2d755c32bd167a26e97528d1826..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/enum_in_field_count_range_but_not_matching_tag.zig +++ /dev/null @@ -1,15 +0,0 @@ -const Foo = enum(u32) { - A = 10, - B = 11, -}; -export fn entry() void { - var x = @intToEnum(Foo, 0); - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:13: error: enum 'Foo' has no tag matching integer value 0 -// tmp.zig:1:13: note: 'Foo' declared here diff --git a/test/cases/compile_errors/stage1/obj/enum_with_0_fields.zig b/test/cases/compile_errors/stage1/obj/enum_with_0_fields.zig deleted file mode 100644 index 9ee18f51ca21c32cb7d35173c0faa9309983e1d2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/enum_with_0_fields.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/enum_with_declarations_unavailable_for_reify_type.zig b/test/cases/compile_errors/stage1/obj/enum_with_declarations_unavailable_for_reify_type.zig deleted file mode 100644 index ffe9a2a78acabed0e4b018e63f88f76e9e4bb74d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/enum_with_declarations_unavailable_for_reify_type.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - _ = @Type(@typeInfo(enum { foo, const bar = 1; })); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: Type.Enum.decls must be empty for @Type diff --git a/test/cases/compile_errors/stage1/obj/error_union_operator_with_non_error_set_LHS.zig b/test/cases/compile_errors/stage1/obj/error_union_operator_with_non_error_set_LHS.zig deleted file mode 100644 index 785e42fb9b6d2bb0cc935964d8c8145ef2c80f33..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/error_union_operator_with_non_error_set_LHS.zig +++ /dev/null @@ -1,11 +0,0 @@ -comptime { - const z = i32!i32; - var x: z = undefined; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: expected error set type, found type 'i32' diff --git a/test/cases/compile_errors/stage1/obj/exceeded_maximum_bit_width_of_integer.zig b/test/cases/compile_errors/stage1/obj/exceeded_maximum_bit_width_of_integer.zig deleted file mode 100644 index 2a3c795f8187ade0b6ee9b599dd76bad27f079c1..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/exceeded_maximum_bit_width_of_integer.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig b/test/cases/compile_errors/stage1/obj/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig deleted file mode 100644 index 696fef57fa83c849e1b776b394fdbb76d592bfb3..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig b/test/cases/compile_errors/stage1/obj/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig deleted file mode 100644 index 4a41920107e283aa1dae9ae42ae7554cba1e8bd1..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig +++ /dev/null @@ -1,13 +0,0 @@ -const Set1 = error {A, B}; -const Set2 = error {A, C}; -comptime { - var x = Set1.B; - var y = @errSetCast(Set2, x); - _ = y; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:13: error: error.B not a member of error set 'Set2' diff --git a/test/cases/compile_errors/stage1/obj/extern_union_field_missing_type.zig b/test/cases/compile_errors/stage1/obj/extern_union_field_missing_type.zig deleted file mode 100644 index 9d8532f8a1dfd622a6003514537fa05f684a5d47..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/extern_union_field_missing_type.zig +++ /dev/null @@ -1,13 +0,0 @@ -const Letter = extern union { - A, -}; -export fn entry() void { - var a = Letter { .A = {} }; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: union field missing type diff --git a/test/cases/compile_errors/stage1/obj/extern_variable_has_no_type.zig b/test/cases/compile_errors/stage1/obj/extern_variable_has_no_type.zig deleted file mode 100644 index 58d67f14e110d2937b53765a83b86a34fadd593a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/extern_variable_has_no_type.zig +++ /dev/null @@ -1,10 +0,0 @@ -extern var foo; -pub export fn entry() void { - foo; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:8: error: unable to infer variable type diff --git a/test/cases/compile_errors/stage1/obj/fieldParentPtr-bad_field_name.zig b/test/cases/compile_errors/stage1/obj/fieldParentPtr-bad_field_name.zig deleted file mode 100644 index 73022167f51b481cc5e3c1964560d180f783a04e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/fieldParentPtr-bad_field_name.zig +++ /dev/null @@ -1,12 +0,0 @@ -const Foo = extern struct { - derp: i32, -}; -export fn foo(a: *i32) *Foo { - return @fieldParentPtr(Foo, "a", a); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:33: error: struct 'Foo' has no field 'a' diff --git a/test/cases/compile_errors/stage1/obj/fieldParentPtr-non_struct.zig b/test/cases/compile_errors/stage1/obj/fieldParentPtr-non_struct.zig deleted file mode 100644 index 16b9a9b3328caaae919dc651d4c01f88b7d578a2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/fieldParentPtr-non_struct.zig +++ /dev/null @@ -1,10 +0,0 @@ -const Foo = i32; -export fn foo(a: *i32) *Foo { - return @fieldParentPtr(Foo, "a", a); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:28: error: expected struct type, found 'i32' diff --git a/test/cases/compile_errors/stage1/obj/field_type_supplied_in_an_enum.zig b/test/cases/compile_errors/stage1/obj/field_type_supplied_in_an_enum.zig deleted file mode 100644 index d6ba214c0ccb145003d52e6ee9d4d63ffa2cece6..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/field_type_supplied_in_an_enum.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/function_call_assigned_to_incorrect_type.zig b/test/cases/compile_errors/stage1/obj/function_call_assigned_to_incorrect_type.zig deleted file mode 100644 index 51bc82ffb867bb9f670aa99021c02767f6d1b159..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/function_call_assigned_to_incorrect_type.zig +++ /dev/null @@ -1,13 +0,0 @@ -export fn entry() void { - var arr: [4]f32 = undefined; - arr = concat(); -} -fn concat() [16]f32 { - return [1]f32{0}**16; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:17: error: expected type '[4]f32', found '[16]f32' diff --git a/test/cases/compile_errors/stage1/obj/function_prototype_with_no_body.zig b/test/cases/compile_errors/stage1/obj/function_prototype_with_no_body.zig deleted file mode 100644 index 7926faaa4435863b2c5ad4d477e7fd6f1a697ce8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/function_prototype_with_no_body.zig +++ /dev/null @@ -1,10 +0,0 @@ -fn foo() void; -export fn entry() void { - foo(); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:1: error: non-extern function has no body diff --git a/test/cases/compile_errors/stage1/obj/function_with_invalid_return_type.zig b/test/cases/compile_errors/stage1/obj/function_with_invalid_return_type.zig deleted file mode 100644 index 897b298a3d346c38f6b509530ec0c264bbfe4e6f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/function_with_invalid_return_type.zig +++ /dev/null @@ -1,7 +0,0 @@ -export fn foo() boid {} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:17: error: use of undeclared identifier 'boid' diff --git a/test/cases/compile_errors/stage1/obj/generic_function_call_assigned_to_incorrect_type.zig b/test/cases/compile_errors/stage1/obj/generic_function_call_assigned_to_incorrect_type.zig deleted file mode 100644 index 72ed66b20aba928f16594e677958dece3d809d2c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/generic_function_call_assigned_to_incorrect_type.zig +++ /dev/null @@ -1,13 +0,0 @@ -pub export fn entry() void { - var res: []i32 = undefined; - res = myAlloc(i32); -} -fn myAlloc(comptime arg: type) anyerror!arg{ - unreachable; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:18: error: expected type '[]i32', found 'anyerror!i32 diff --git a/test/cases/compile_errors/stage1/obj/global_variable_initializer_must_be_constant_expression.zig b/test/cases/compile_errors/stage1/obj/global_variable_initializer_must_be_constant_expression.zig deleted file mode 100644 index d01e828da66600207d8932b4996c898bc5b8d69f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/global_variable_initializer_must_be_constant_expression.zig +++ /dev/null @@ -1,9 +0,0 @@ -extern fn foo() i32; -const x = foo(); -export fn entry() i32 { return x; } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:11: error: unable to evaluate constant expression diff --git a/test/cases/compile_errors/stage1/obj/hasDecl_with_non-container.zig b/test/cases/compile_errors/stage1/obj/hasDecl_with_non-container.zig deleted file mode 100644 index e9aeacdd4e9d054a694d86b86707112f094769dd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/hasDecl_with_non-container.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/if_condition_is_bool_not_int.zig b/test/cases/compile_errors/stage1/obj/if_condition_is_bool_not_int.zig deleted file mode 100644 index 53afb2792a004d85f0bb8697364ae677812b304f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/if_condition_is_bool_not_int.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/ignored_assert-err-ok_return_value.zig b/test/cases/compile_errors/stage1/obj/ignored_assert-err-ok_return_value.zig deleted file mode 100644 index 4d45ae13043e5589212b4b617bd9685bcaee3196..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/ignored_assert-err-ok_return_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn foo() void { - bar() catch unreachable; -} -fn bar() anyerror!i32 { return 0; } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:11: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/ignored_comptime_statement_value.zig b/test/cases/compile_errors/stage1/obj/ignored_comptime_statement_value.zig deleted file mode 100644 index 0e82c9ae3ea439da7bd0b886412e8b1654600d43..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/ignored_comptime_statement_value.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn foo() void { - comptime {1;} -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/ignored_comptime_value.zig b/test/cases/compile_errors/stage1/obj/ignored_comptime_value.zig deleted file mode 100644 index 0306ea72ff14e0a826f6093af8cf9021aab7cd6d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/ignored_comptime_value.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn foo() void { - comptime 1; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/ignored_deferred_statement_value.zig b/test/cases/compile_errors/stage1/obj/ignored_deferred_statement_value.zig deleted file mode 100644 index 1042c4f40a20ebcc6d49abb1631b8b25ca482724..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/ignored_deferred_statement_value.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn foo() void { - defer {1;} -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:12: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/ignored_return_value.zig b/test/cases/compile_errors/stage1/obj/ignored_return_value.zig deleted file mode 100644 index b918523b372f9967965a7f41aa7611569063eb67..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/ignored_return_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn foo() void { - bar(); -} -fn bar() i32 { return 0; } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:8: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/ignored_statement_value.zig b/test/cases/compile_errors/stage1/obj/ignored_statement_value.zig deleted file mode 100644 index a0e540a92b08239192950a1ba2a1abeda95ae37e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/ignored_statement_value.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn foo() void { - 1; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_expr.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_expr.zig deleted file mode 100644 index a57da8ac0bcd7f39226eda704706f9def164a95f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_expr.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = {}; - var good = {}; - _ = {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:11: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_statement.zig deleted file mode 100644 index 2d9d850e75d68c19d3b2b949d0440323241e54e6..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - {} - var good = {}; - ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:9: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_expression.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_expression.zig deleted file mode 100644 index b4cd4de849d90921b1484950ffc05a1715c876bb..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_expression.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = comptime {}; - var good = {}; - _ = comptime {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:20: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_statement.zig deleted file mode 100644 index 3b83ef92eba02aca1fed39d6f949390bc34756cd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - comptime {} - var good = {}; - comptime ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:18: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-defer.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-defer.zig deleted file mode 100644 index 0ded4fcf262b0ae5651cdb52b799dd45f16b4cb8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-defer.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - defer {} - var good = {}; - defer ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:15: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_expression.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_expression.zig deleted file mode 100644 index 964a48d30b9d48d9c5ebcfc60db500ad481d7c0a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_expression.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = for(foo()) |_| {}; - var good = {}; - _ = for(foo()) |_| {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:26: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_statement.zig deleted file mode 100644 index 1320e4cc465d2a4926073206c206cb704f114086..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - for(foo()) |_| {} - var good = {}; - for(foo()) |_| ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:24: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_expression.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_expression.zig deleted file mode 100644 index 40b1a33d7842ec87537984df767d7dbd299c4fb2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_expression.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = if(true) {} else if(true) {} else {}; - var good = {}; - _ = if(true) {} else if(true) {} else {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:45: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_statement.zig deleted file mode 100644 index 8444fe654d528f156f3ef6218c4d6df6ee8440cd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - if(true) {} else if(true) {} else {} - var good = {}; - if(true) ({}) else if(true) ({}) else ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:47: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_expression.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_expression.zig deleted file mode 100644 index 7466d646915b29987f3c79d9e1c7e6b1c3e252dc..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_expression.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = if(true) {} else if(true) {}; - var good = {}; - _ = if(true) {} else if(true) {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:37: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_statement.zig deleted file mode 100644 index 34e116b3f7840cf552e37ae0e064ef7527e2b51d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - if(true) {} else if(true) {} - var good = {}; - if(true) ({}) else if(true) ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:37: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_expression.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_expression.zig deleted file mode 100644 index 3c1e0add62bc1519a6ed4e83ea7f96c7896dcf58..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_expression.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = if(true) {} else {}; - var good = {}; - _ = if(true) {} else {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:28: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_statement.zig deleted file mode 100644 index e9c52fb6bb36f96388e9cd9f14904a6e31b36354..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - if(true) {} else {} - var good = {}; - if(true) ({}) else ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:28: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_expression.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_expression.zig deleted file mode 100644 index 2082588e0e9ab0a99fd4d42a3887f7172eda5bd8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_expression.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = if(true) {}; - var good = {}; - _ = if(true) {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:20: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_statement.zig deleted file mode 100644 index 26cefd0237836ea9434f7e2675a93ab86b02f16c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - if(true) {} - var good = {}; - if(true) ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:18: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_expression.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_expression.zig deleted file mode 100644 index c31f3520c1b57738f6e1613f0a05baa65d7dc45f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_expression.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = if (foo()) |_| {}; - var good = {}; - _ = if (foo()) |_| {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:26: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_statement.zig deleted file mode 100644 index 8abb1cbcb1ee34fc719e8b5b02e34c1efbb13b7b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - if (foo()) |_| {} - var good = {}; - if (foo()) |_| ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:24: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_expression.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_expression.zig deleted file mode 100644 index 4d3219eb66b8f67129d3485ff6f620eadd86af5f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_expression.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = while(true):({}) {}; - var good = {}; - _ = while(true):({}) {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:28: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_statement.zig deleted file mode 100644 index c0b3370357204bb007ae7d3e15e621be46b00d2a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - while(true):({}) {} - var good = {}; - while(true):({}) ({}) - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:26: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_expression.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_expression.zig deleted file mode 100644 index 39f49319d5044ae5cdb1f90534783ca30c711203..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_expression.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - _ = while(true) {}; - var good = {}; - _ = while(true) {} - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:23: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_statement.zig b/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_statement.zig deleted file mode 100644 index 6c253ecf56374e9fa886a1c87f7f167555d991e0..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_statement.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - while(true) {} - var good = {}; - while(true) 1 - var bad = {}; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:18: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/import_outside_package_path.zig b/test/cases/compile_errors/stage1/obj/import_outside_package_path.zig deleted file mode 100644 index 5a712c2e0116dfb3ebce9c1b9db79859941897d2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/import_outside_package_path.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/inferred_array_size_invalid_here.zig b/test/cases/compile_errors/stage1/obj/inferred_array_size_invalid_here.zig deleted file mode 100644 index 2b2d944eab15d5a6cff927d91cb2c8ffc679dbc1..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/inferred_array_size_invalid_here.zig +++ /dev/null @@ -1,16 +0,0 @@ -export fn entry() void { - const x = [_]u8; - _ = x; -} -export fn entry2() void { - const S = struct { a: *const [_]u8 }; - var a = .{ S{} }; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:16: error: unable to infer array size -// tmp.zig:6:35: error: unable to infer array size diff --git a/test/cases/compile_errors/stage1/obj/inferring_error_set_of_function_pointer.zig b/test/cases/compile_errors/stage1/obj/inferring_error_set_of_function_pointer.zig deleted file mode 100644 index b91242322d46db9edca71c412c9d46de7176d604..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/inferring_error_set_of_function_pointer.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/initializing_array_with_struct_syntax.zig b/test/cases/compile_errors/stage1/obj/initializing_array_with_struct_syntax.zig deleted file mode 100644 index 2884c6193e53fccb46f4fe6bf3bbc91561a2b3b4..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/initializing_array_with_struct_syntax.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - const x = [_]u8{ .y = 2 }; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: initializing array with struct syntax diff --git a/test/cases/compile_errors/stage1/obj/int_to_err_global_invalid_number.zig b/test/cases/compile_errors/stage1/obj/int_to_err_global_invalid_number.zig deleted file mode 100644 index 5c078a751cc9d89c0ac97b969bc653afb6d0bc56..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/int_to_err_global_invalid_number.zig +++ /dev/null @@ -1,15 +0,0 @@ -const Set1 = error{ - A, - B, -}; -comptime { - var x: u16 = 3; - var y = @intToError(x); - _ = y; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:7:13: error: integer value 3 represents no error diff --git a/test/cases/compile_errors/stage1/obj/int_to_err_non_global_invalid_number.zig b/test/cases/compile_errors/stage1/obj/int_to_err_non_global_invalid_number.zig deleted file mode 100644 index 8c1e547746efb84b01daaa858b437ea861076bbd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/int_to_err_non_global_invalid_number.zig +++ /dev/null @@ -1,19 +0,0 @@ -const Set1 = error{ - A, - B, -}; -const Set2 = error{ - A, - C, -}; -comptime { - var x = @errorToInt(Set1.B); - var y = @errSetCast(Set2, @intToError(x)); - _ = y; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:11:13: error: error.B not a member of error set 'Set2' diff --git a/test/cases/compile_errors/stage1/obj/integer_overflow_error.zig b/test/cases/compile_errors/stage1/obj/integer_overflow_error.zig deleted file mode 100644 index 117d77ed938c8a4d0d7b5986fc50bf38999b26ba..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/integer_overflow_error.zig +++ /dev/null @@ -1,8 +0,0 @@ -const x : u8 = 300; -export fn entry() usize { return @sizeOf(@TypeOf(x)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:16: error: integer value 300 cannot be coerced to type 'u8' diff --git a/test/cases/compile_errors/stage1/obj/integer_underflow_error.zig b/test/cases/compile_errors/stage1/obj/integer_underflow_error.zig deleted file mode 100644 index 15bd4c472bd3e9979908188e28bf7d7054f1ad26..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/integer_underflow_error.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - _ = @intToPtr(*anyopaque, ~@as(usize, @import("std").math.maxInt(usize)) - 1); -} - -// error -// backend=stage1 -// target=native -// -// :2:78: error: operation caused overflow diff --git a/test/cases/compile_errors/stage1/obj/invalid_break_expression.zig b/test/cases/compile_errors/stage1/obj/invalid_break_expression.zig deleted file mode 100644 index efb76a34f7b7d5b434a4376e892d6874ce8bb413..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_break_expression.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn f() void { - break; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: break expression outside loop diff --git a/test/cases/compile_errors/stage1/obj/invalid_builtin_fn.zig b/test/cases/compile_errors/stage1/obj/invalid_builtin_fn.zig deleted file mode 100644 index 8f0e3633bb35a07a91e65d3242470c4ed655d0c8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_builtin_fn.zig +++ /dev/null @@ -1,9 +0,0 @@ -fn f() @bogus(foo) { -} -export fn entry() void { _ = f(); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:8: error: invalid builtin function: '@bogus' diff --git a/test/cases/compile_errors/stage1/obj/invalid_comparison_for_function_pointers.zig b/test/cases/compile_errors/stage1/obj/invalid_comparison_for_function_pointers.zig deleted file mode 100644 index 6d64b6cdaf938620f99f05c5be8e77ee5239d19c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_comparison_for_function_pointers.zig +++ /dev/null @@ -1,10 +0,0 @@ -fn foo() void {} -const invalid = foo > foo; - -export fn entry() usize { return @sizeOf(@TypeOf(invalid)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: operator not allowed for type 'fn() void' diff --git a/test/cases/compile_errors/stage1/obj/invalid_continue_expression.zig b/test/cases/compile_errors/stage1/obj/invalid_continue_expression.zig deleted file mode 100644 index 00f3c5a3d56f4b7d8c67112e670c62f5da41a3b2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_continue_expression.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn f() void { - continue; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: continue expression outside loop diff --git a/test/cases/compile_errors/stage1/obj/invalid_empty_unicode_escape.zig b/test/cases/compile_errors/stage1/obj/invalid_empty_unicode_escape.zig deleted file mode 100644 index 57dd16a63def4ef8e2197786f4d0f7d05d8b3f0d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_empty_unicode_escape.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - const a = '\u{}'; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:19: error: empty unicode escape sequence diff --git a/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-1.zig b/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-1.zig deleted file mode 100644 index 431401c53421868fcb5e7087b57e2a5fd57cee58..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-1.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-2.zig b/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-2.zig deleted file mode 100644 index 088b43546c64a1aa67af3d734f22dbcc9267dae2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-2.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/invalid_field_access_in_comptime.zig b/test/cases/compile_errors/stage1/obj/invalid_field_access_in_comptime.zig deleted file mode 100644 index 2630a704ed49224a36ae7972196dc8f7a416a573..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_field_access_in_comptime.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/invalid_field_in_struct_value_expression.zig b/test/cases/compile_errors/stage1/obj/invalid_field_in_struct_value_expression.zig deleted file mode 100644 index fae0a90b518cc0c701edbd144cb6d7077b472beb..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_field_in_struct_value_expression.zig +++ /dev/null @@ -1,19 +0,0 @@ -const A = struct { - x : i32, - y : i32, - z : i32, -}; -export fn f() void { - const a = A { - .z = 4, - .y = 2, - .foo = 42, - }; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:10:9: error: no member named 'foo' in struct 'A' diff --git a/test/cases/compile_errors/stage1/obj/invalid_float_literal.zig b/test/cases/compile_errors/stage1/obj/invalid_float_literal.zig deleted file mode 100644 index 709609a027a5ebf4464aa21f4f29a351d121d70b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_float_literal.zig +++ /dev/null @@ -1,13 +0,0 @@ -const std = @import("std"); - -pub fn main() void { - var bad_float :f32 = 0.0; - bad_float = bad_float + .20; - std.debug.assert(bad_float < 1.0); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:29: error: expected expression, found '.' diff --git a/test/cases/compile_errors/stage1/obj/invalid_legacy_unicode_escape.zig b/test/cases/compile_errors/stage1/obj/invalid_legacy_unicode_escape.zig deleted file mode 100644 index b81a814a604ac77c001f133b611b539bb1a55ec0..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_legacy_unicode_escape.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/invalid_member_of_builtin_enum.zig b/test/cases/compile_errors/stage1/obj/invalid_member_of_builtin_enum.zig deleted file mode 100644 index 166ebfc78260858195378552ce4464c49967c7b0..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_member_of_builtin_enum.zig +++ /dev/null @@ -1,11 +0,0 @@ -const builtin = @import("std").builtin; -export fn entry() void { - const foo = builtin.Mode.x86; - _ = foo; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:29: error: container 'std.builtin.Mode' has no member called 'x86' diff --git a/test/cases/compile_errors/stage1/obj/invalid_pointer_for_var_type.zig b/test/cases/compile_errors/stage1/obj/invalid_pointer_for_var_type.zig deleted file mode 100644 index caf8c707975612901866ee4d53836b491436258d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_pointer_for_var_type.zig +++ /dev/null @@ -1,13 +0,0 @@ -extern fn ext() usize; -var bytes: [ext()]u8 = undefined; -export fn f() void { - for (bytes) |*b, i| { - b.* = @as(u8, i); - } -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:13: error: unable to evaluate constant expression diff --git a/test/cases/compile_errors/stage1/obj/invalid_pointer_syntax.zig b/test/cases/compile_errors/stage1/obj/invalid_pointer_syntax.zig deleted file mode 100644 index a4c823bde1a755b70782643ab988ff2a9db6bfb7..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_pointer_syntax.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn foo() void { - var guid: *:0 const u8 = undefined; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:16: error: expected type expression, found ':' diff --git a/test/cases/compile_errors/stage1/obj/invalid_shift_amount_error.zig b/test/cases/compile_errors/stage1/obj/invalid_shift_amount_error.zig deleted file mode 100644 index 7c84f2db38d98bdd31b22600e299233499810bf9..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_shift_amount_error.zig +++ /dev/null @@ -1,11 +0,0 @@ -const x : u8 = 2; -fn f() u16 { - return x << 8; -} -export fn entry() u16 { return f(); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:17: error: integer value 8 cannot be coerced to type 'u3' diff --git a/test/cases/compile_errors/stage1/obj/invalid_struct_field.zig b/test/cases/compile_errors/stage1/obj/invalid_struct_field.zig deleted file mode 100644 index 6264125bca531e2e83e0c9b908842441e11ddf95..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_struct_field.zig +++ /dev/null @@ -1,19 +0,0 @@ -const A = struct { x : i32, }; -export fn f() void { - var a : A = undefined; - a.foo = 1; - const y = a.bar; - _ = y; -} -export fn g() void { - var a : A = undefined; - const y = a.bar; - _ = y; -} - -// error -// backend=stage1 -// 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' diff --git a/test/cases/compile_errors/stage1/obj/invalid_type.zig b/test/cases/compile_errors/stage1/obj/invalid_type.zig deleted file mode 100644 index 8a2952e5f2c32346811eb3a50dd399b7046a0a52..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_type.zig +++ /dev/null @@ -1,8 +0,0 @@ -fn a() bogus {} -export fn entry() void { _ = a(); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:8: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/stage1/obj/invalid_type_used_in_array_type.zig b/test/cases/compile_errors/stage1/obj/invalid_type_used_in_array_type.zig deleted file mode 100644 index 3a7bc4272c04807cdd437948bc6b2af9021e4362..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_type_used_in_array_type.zig +++ /dev/null @@ -1,14 +0,0 @@ -const Item = struct { - field: SomeNonexistentType, -}; -var items: [100]Item = undefined; -export fn entry() void { - const a = items[0]; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:12: error: use of undeclared identifier 'SomeNonexistentType' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-1.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-1.zig deleted file mode 100644 index a3e2827f3141bd39c163dffcf77ec5061d782301..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-1.zig +++ /dev/null @@ -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: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-10.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-10.zig deleted file mode 100644 index 7d33244483322d15183a2388740db14d4147dbdd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-10.zig +++ /dev/null @@ -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: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-11.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-11.zig deleted file mode 100644 index fa4f5b8975f619a123e2c9a297d9a09c5587b981..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-11.zig +++ /dev/null @@ -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: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-12.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-12.zig deleted file mode 100644 index 2d36187711738ac775525c2818d8469fb62d0ba7..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-12.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-13.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-13.zig deleted file mode 100644 index 21b044121c9cfcbbf1ac2b1cfdeeb5a1f9140d2d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-13.zig +++ /dev/null @@ -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: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-14.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-14.zig deleted file mode 100644 index adb0727eba7f1822d8916a7c81a6f04042d9fb1c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-14.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-2.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-2.zig deleted file mode 100644 index 16618c6a18b18f49ded416ae2cf0bc0ab8438a9d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-2.zig +++ /dev/null @@ -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: '.' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-3.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-3.zig deleted file mode 100644 index 09e9e20b4b607af0e83801e7404de60619ef4af6..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-3.zig +++ /dev/null @@ -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: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-4.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-4.zig deleted file mode 100644 index 278ee35f5f2130fbf8a4490b3730645e24d639c1..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-4.zig +++ /dev/null @@ -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: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-5.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-5.zig deleted file mode 100644 index 4912c15e504e4874775def6e859f278c1b628e65..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-5.zig +++ /dev/null @@ -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: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-6.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-6.zig deleted file mode 100644 index 3386c860b93278e6322434bf58d5b2ed756a3220..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-6.zig +++ /dev/null @@ -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: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-7.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-7.zig deleted file mode 100644 index c0e57424a948fa2b50b2ed88f4d00223386f5a40..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-7.zig +++ /dev/null @@ -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: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-9.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-9.zig deleted file mode 100644 index f7475332c1540149e921c03079cabb056ef5fc11..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-9.zig +++ /dev/null @@ -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: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-1.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-1.zig deleted file mode 100644 index 9cea337db46ceb33d12386fb64c57aa4f3a64635..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-1.zig +++ /dev/null @@ -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: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-2.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-2.zig deleted file mode 100644 index 5f02479f2e7d6b68de0a8323ffa1f91ccd934b2a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-2.zig +++ /dev/null @@ -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: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-3.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-3.zig deleted file mode 100644 index aed4cb90687f9394dfbf14664baa502ce0bf465d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-3.zig +++ /dev/null @@ -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: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-4.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-4.zig deleted file mode 100644 index dce2771048c9baf8e2c1d452cb331e6fa3927267..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-4.zig +++ /dev/null @@ -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: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_union_field_access_in_comptime.zig b/test/cases/compile_errors/stage1/obj/invalid_union_field_access_in_comptime.zig deleted file mode 100644 index 6d55f3b04fb3c0dcfde90f94d70023ae81a053c5..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_union_field_access_in_comptime.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/issue_9346_return_outside_of_function_scope.zig b/test/cases/compile_errors/stage1/obj/issue_9346_return_outside_of_function_scope.zig deleted file mode 100644 index d12bff2b49c542ef7b07e4832e606c23c247c616..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/issue_9346_return_outside_of_function_scope.zig +++ /dev/null @@ -1,7 +0,0 @@ -pub const empty = return 1; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:19: error: 'return' outside function scope diff --git a/test/cases/compile_errors/stage1/obj/labeled_break_not_found.zig b/test/cases/compile_errors/stage1/obj/labeled_break_not_found.zig deleted file mode 100644 index 754e1864b096a6c76fcbdb3359c2dba8452da8c2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/labeled_break_not_found.zig +++ /dev/null @@ -1,13 +0,0 @@ -export fn entry() void { - blah: while (true) { - while (true) { - break :outer; - } - } -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:20: error: label not found: 'outer' diff --git a/test/cases/compile_errors/stage1/obj/labeled_continue_not_found.zig b/test/cases/compile_errors/stage1/obj/labeled_continue_not_found.zig deleted file mode 100644 index b112e9b3557ffc9b463a1d6a3221151820e37490..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/labeled_continue_not_found.zig +++ /dev/null @@ -1,14 +0,0 @@ -export fn entry() void { - var i: usize = 0; - blah: while (i < 10) : (i += 1) { - while (true) { - continue :outer; - } - } -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:23: error: label not found: 'outer' diff --git a/test/cases/compile_errors/stage1/obj/local_shadows_global_that_occurs_later.zig b/test/cases/compile_errors/stage1/obj/local_shadows_global_that_occurs_later.zig deleted file mode 100644 index 4b9b58871ff0e689880772d357e433597f16275e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/local_shadows_global_that_occurs_later.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/local_variable_redeclaration.zig b/test/cases/compile_errors/stage1/obj/local_variable_redeclaration.zig deleted file mode 100644 index 79eba0d4288233f7dd4f4d2ceba0f8b076d2b8eb..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/local_variable_redeclaration.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/local_variable_redeclares_parameter.zig b/test/cases/compile_errors/stage1/obj/local_variable_redeclares_parameter.zig deleted file mode 100644 index 854ef080c526909f13f0fc442303b6fc579a3bcd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/local_variable_redeclares_parameter.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/local_variable_shadowing_global.zig b/test/cases/compile_errors/stage1/obj/local_variable_shadowing_global.zig deleted file mode 100644 index 3f1af3a4cb891aab5048a4f5218f62489a557d8d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/local_variable_shadowing_global.zig +++ /dev/null @@ -1,14 +0,0 @@ -const Foo = struct {}; -const Bar = struct {}; - -export fn entry() void { - var Bar : i32 = undefined; - _ = Bar; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:9: error: local shadows declaration of 'Bar' -// tmp.zig:2:1: note: declared here diff --git a/test/cases/compile_errors/stage1/obj/locally_shadowing_a_primitive_type.zig b/test/cases/compile_errors/stage1/obj/locally_shadowing_a_primitive_type.zig deleted file mode 100644 index e66a2082ea87fbf27a9338a7a5c7cfcda12e13c5..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/locally_shadowing_a_primitive_type.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/main_function_with_bogus_args_type.zig b/test/cases/compile_errors/stage1/obj/main_function_with_bogus_args_type.zig deleted file mode 100644 index 5808ab90ecc7b10d2587e6186a9ab28ecc6ff88b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/main_function_with_bogus_args_type.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/missing_boolean_switch_value.zig b/test/cases/compile_errors/stage1/obj/missing_boolean_switch_value.zig deleted file mode 100644 index 2e9d4b48ce3f0ced8088ab957f22e995fc170054..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/missing_boolean_switch_value.zig +++ /dev/null @@ -1,19 +0,0 @@ -comptime { - const x = switch (true) { - true => false, - }; - _ = x; -} -comptime { - const x = switch (true) { - false => true, - }; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: switch must handle all possibilities -// tmp.zig:8:15: error: switch must handle all possibilities diff --git a/test/cases/compile_errors/stage1/obj/missing_else_clause.zig b/test/cases/compile_errors/stage1/obj/missing_else_clause.zig deleted file mode 100644 index f331933437f2579377b6f3b29d607fa68787d5af..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/missing_else_clause.zig +++ /dev/null @@ -1,16 +0,0 @@ -fn f(b: bool) void { - const x : i32 = if (b) h: { break :h 1; }; - _ = x; -} -fn g(b: bool) void { - const y = if (b) h: { break :h @as(i32, 1); }; - _ = y; -} -export fn entry() void { f(true); g(true); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected type 'i32', found 'void' -// tmp.zig:6:15: error: incompatible types: 'i32' and 'void' diff --git a/test/cases/compile_errors/stage1/obj/missing_field_in_struct_value_expression.zig b/test/cases/compile_errors/stage1/obj/missing_field_in_struct_value_expression.zig deleted file mode 100644 index 9eb4246c8f76fa40b7901040d43e321514a5b375..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/missing_field_in_struct_value_expression.zig +++ /dev/null @@ -1,20 +0,0 @@ -const A = struct { - x : i32, - y : i32, - z : i32, -}; -export fn f() void { - // we want the error on the '{' not the 'A' because - // the A could be a complicated expression - const a = A { - .z = 4, - .y = 2, - }; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:9:17: error: missing field: 'x' diff --git a/test/cases/compile_errors/stage1/obj/missing_function_name.zig b/test/cases/compile_errors/stage1/obj/missing_function_name.zig deleted file mode 100644 index cd9a3ca7ee96c625ea7b43a0867a29d9fedd4bb7..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/missing_function_name.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/missing_param_name.zig b/test/cases/compile_errors/stage1/obj/missing_param_name.zig deleted file mode 100644 index febb16d2cacc7adfb10ebc908e775c15128e2606..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/missing_param_name.zig +++ /dev/null @@ -1,8 +0,0 @@ -fn f(i32) void {} -export fn entry() usize { return @sizeOf(@TypeOf(f)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:6: error: missing parameter name diff --git a/test/cases/compile_errors/stage1/obj/missing_parameter_name_of_generic_function.zig b/test/cases/compile_errors/stage1/obj/missing_parameter_name_of_generic_function.zig deleted file mode 100644 index 041c0c4a47726ba9a806587c8b3fd7d1ae91cc1d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/missing_parameter_name_of_generic_function.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn dump(anytype) void {} -export fn entry() void { - var a: u8 = 9; - dump(a); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:9: error: missing parameter name diff --git a/test/cases/compile_errors/stage1/obj/misspelled_type_with_pointer_only_reference.zig b/test/cases/compile_errors/stage1/obj/misspelled_type_with_pointer_only_reference.zig deleted file mode 100644 index 8e2055a829912c9d3b4d55c24f09027d3407f94e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/misspelled_type_with_pointer_only_reference.zig +++ /dev/null @@ -1,37 +0,0 @@ -const JasonHM = u8; -const JasonList = *JsonNode; - -const JsonOA = union(enum) { - JSONArray: JsonList, - JSONObject: JasonHM, -}; - -const JsonType = union(enum) { - JSONNull: void, - JSONInteger: isize, - JSONDouble: f64, - JSONBool: bool, - JSONString: []u8, - JSONArray: void, - JSONObject: void, -}; - -pub const JsonNode = struct { - kind: JsonType, - jobject: ?JsonOA, -}; - -fn foo() void { - var jll: JasonList = undefined; - jll.init(1234); - var jd = JsonNode {.kind = JsonType.JSONArray , .jobject = JsonOA.JSONArray {jll} }; - _ = jd; -} - -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:16: error: use of undeclared identifier 'JsonList' diff --git a/test/cases/compile_errors/stage1/obj/mod_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/mod_assign_on_undefined_value.zig deleted file mode 100644 index c127e256e8bd23f73517ed1dd5be34c20580a324..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/mod_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/mod_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/mod_on_undefined_value.zig deleted file mode 100644 index 8bd7774a4638148af6666ccca95c504195423e28..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/mod_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/mult_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/mult_assign_on_undefined_value.zig deleted file mode 100644 index 04040b975643bdefbc4045ab94a96991527f1871..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/mult_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/mult_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/mult_on_undefined_value.zig deleted file mode 100644 index 0dcd2b02f2d08afdee284ca4571bd5847ae97f74..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/mult_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/mult_wrap_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/mult_wrap_assign_on_undefined_value.zig deleted file mode 100644 index db54af9f0b53687ac4e8c863efd40d61878b1080..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/mult_wrap_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/mult_wrap_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/mult_wrap_on_undefined_value.zig deleted file mode 100644 index 9ad09f7e9306fc682e2a346f413040281999a378..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/mult_wrap_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/multiple_function_definitions.zig b/test/cases/compile_errors/stage1/obj/multiple_function_definitions.zig deleted file mode 100644 index baa4a43048fccc340dd41de0f735a992fb1160aa..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/multiple_function_definitions.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/negate_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/negate_on_undefined_value.zig deleted file mode 100644 index f8d5f6128d48743bcacdcd267550e05d9903e203..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/negate_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: i64 = undefined; - _ = -a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:10: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/negate_wrap_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/negate_wrap_on_undefined_value.zig deleted file mode 100644 index 4ca32956de7e8bb4de3c877b8246bdd017d44394..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/negate_wrap_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: i64 = undefined; - _ = -%a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:11: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/non-const_expression_function_call_with_struct_return_value_outside_function.zig b/test/cases/compile_errors/stage1/obj/non-const_expression_function_call_with_struct_return_value_outside_function.zig deleted file mode 100644 index 25e33d1435425bb78f249de714ae593ce47d71e5..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/non-const_expression_function_call_with_struct_return_value_outside_function.zig +++ /dev/null @@ -1,17 +0,0 @@ -const Foo = struct { - x: i32, -}; -const a = get_it(); -fn get_it() Foo { - global_side_effect = true; - return Foo {.x = 13}; -} -var global_side_effect = false; - -export fn entry() usize { return @sizeOf(@TypeOf(a)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:26: error: unable to evaluate constant expression diff --git a/test/cases/compile_errors/stage1/obj/non-const_expression_in_struct_literal_outside_function.zig b/test/cases/compile_errors/stage1/obj/non-const_expression_in_struct_literal_outside_function.zig deleted file mode 100644 index 46b94f1f96994ad0d1193ba9431c0d0fe13c0cb2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/non-const_expression_in_struct_literal_outside_function.zig +++ /dev/null @@ -1,13 +0,0 @@ -const Foo = struct { - x: i32, -}; -const a = Foo {.x = get_it()}; -extern fn get_it() i32; - -export fn entry() usize { return @sizeOf(@TypeOf(a)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:21: error: unable to evaluate constant expression diff --git a/test/cases/compile_errors/stage1/obj/non-const_switch_number_literal.zig b/test/cases/compile_errors/stage1/obj/non-const_switch_number_literal.zig deleted file mode 100644 index 005db548ed7bbce6cbcedb79491ce64aa288d57a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/non-const_switch_number_literal.zig +++ /dev/null @@ -1,17 +0,0 @@ -export fn foo() void { - const x = switch (bar()) { - 1, 2 => 1, - 3, 4 => 2, - else => 3, - }; - _ = x; -} -fn bar() i32 { - return 2; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:17: error: cannot store runtime value in type 'comptime_int' diff --git a/test/cases/compile_errors/stage1/obj/non-extern_function_with_var_args.zig b/test/cases/compile_errors/stage1/obj/non-extern_function_with_var_args.zig deleted file mode 100644 index 9e5463d451c92e4a36dfb568df084b9570cd7968..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/non-extern_function_with_var_args.zig +++ /dev/null @@ -1,10 +0,0 @@ -fn foo(args: ...) void {} -export fn entry() void { - foo(); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:14: error: expected type expression, found '...' diff --git a/test/cases/compile_errors/stage1/obj/non-pure_function_returns_type.zig b/test/cases/compile_errors/stage1/obj/non-pure_function_returns_type.zig deleted file mode 100644 index 9d1c642273a5268eb34867626a7095a176a08a1a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/non-pure_function_returns_type.zig +++ /dev/null @@ -1,24 +0,0 @@ -var a: u32 = 0; -pub fn List(comptime T: type) type { - a += 1; - return SmallList(T, 8); -} - -pub fn SmallList(comptime T: type, comptime STATIC_SIZE: usize) type { - return struct { - items: []T, - length: usize, - prealloc_items: [STATIC_SIZE]T, - }; -} - -export fn function_with_return_type_type() void { - var list: List(i32) = undefined; - list.length = 10; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:7: error: unable to evaluate constant expression diff --git a/test/cases/compile_errors/stage1/obj/non_float_passed_to_floatToInt.zig b/test/cases/compile_errors/stage1/obj/non_float_passed_to_floatToInt.zig deleted file mode 100644 index c91025906a66cfaf91b1cb91072cbe9adbd49f75..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/non_float_passed_to_floatToInt.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - const x = @floatToInt(i32, @as(i32, 54)); - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:32: error: expected float type, found 'i32' diff --git a/test/cases/compile_errors/stage1/obj/non_int_passed_to_intToFloat.zig b/test/cases/compile_errors/stage1/obj/non_int_passed_to_intToFloat.zig deleted file mode 100644 index 8f6acca51e083db32fbbb0a7bf1e90a1a974f069..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/non_int_passed_to_intToFloat.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - const x = @intToFloat(f32, 1.1); - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:32: error: expected int type, found 'comptime_float' diff --git a/test/cases/compile_errors/stage1/obj/non_pointer_given_to_ptrToInt.zig b/test/cases/compile_errors/stage1/obj/non_pointer_given_to_ptrToInt.zig deleted file mode 100644 index 7824c0f7964f68a586301350a515afc5cd4ac5c7..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/non_pointer_given_to_ptrToInt.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry(x: i32) usize { - return @ptrToInt(x); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:22: error: expected pointer, found 'i32' diff --git a/test/cases/compile_errors/stage1/obj/normal_string_with_newline.zig b/test/cases/compile_errors/stage1/obj/normal_string_with_newline.zig deleted file mode 100644 index f6c1d1b1b9b1a47bd26f4f544a35c5b8df64078f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/normal_string_with_newline.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/offsetOf-bad_field_name.zig b/test/cases/compile_errors/stage1/obj/offsetOf-bad_field_name.zig deleted file mode 100644 index de5b82c22c6c68a7f8d835e421266f5327948859..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/offsetOf-bad_field_name.zig +++ /dev/null @@ -1,12 +0,0 @@ -const Foo = struct { - derp: i32, -}; -export fn foo() usize { - return @offsetOf(Foo, "a",); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:27: error: struct 'Foo' has no field 'a' diff --git a/test/cases/compile_errors/stage1/obj/offsetOf-non_struct.zig b/test/cases/compile_errors/stage1/obj/offsetOf-non_struct.zig deleted file mode 100644 index 15275b827b2fedb3a8c28f17d1957b38d8f013f5..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/offsetOf-non_struct.zig +++ /dev/null @@ -1,10 +0,0 @@ -const Foo = i32; -export fn foo() usize { - return @offsetOf(Foo, "a",); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:22: error: expected struct type, found 'i32' diff --git a/test/cases/compile_errors/stage1/obj/only_equality_binary_operator_allowed_for_error_sets.zig b/test/cases/compile_errors/stage1/obj/only_equality_binary_operator_allowed_for_error_sets.zig deleted file mode 100644 index ff9c4d18a29ccbe9350b203f18ad284e572b9622..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/only_equality_binary_operator_allowed_for_error_sets.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - const z = error.A > error.B; - _ = z; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:23: error: operator not allowed for errors diff --git a/test/cases/compile_errors/stage1/obj/or_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/or_on_undefined_value.zig deleted file mode 100644 index 11e6c41deaa52764da050eea129327b3e530550e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/or_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: bool = undefined; - _ = a or a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/orelse_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/orelse_on_undefined_value.zig deleted file mode 100644 index 3042c208eb3fbe2ad65e0ccb95d087147a78cfda..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/orelse_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: ?bool = undefined; - _ = a orelse false; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:11: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/out_of_range_comptime_int_passed_to_floatToInt.zig b/test/cases/compile_errors/stage1/obj/out_of_range_comptime_int_passed_to_floatToInt.zig deleted file mode 100644 index 1a1dd541c91517a3289bb1b4a9d22bd339cef0ea..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/out_of_range_comptime_int_passed_to_floatToInt.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - const x = @floatToInt(i8, 200); - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:31: error: integer value 200 cannot be coerced to type 'i8' diff --git a/test/cases/compile_errors/stage1/obj/parameter_redeclaration.zig b/test/cases/compile_errors/stage1/obj/parameter_redeclaration.zig deleted file mode 100644 index 528eee8374400973c1e1b7dac9927050f2d32bf9..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/parameter_redeclaration.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/parameter_shadowing_global.zig b/test/cases/compile_errors/stage1/obj/parameter_shadowing_global.zig deleted file mode 100644 index ce417d7188a1ced348d7a53380acbf285ddb7f11..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/parameter_shadowing_global.zig +++ /dev/null @@ -1,12 +0,0 @@ -const Foo = struct {}; -fn f(Foo: i32) void {} -export fn entry() void { - f(1234); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:6: error: local shadows declaration of 'Foo' -// tmp.zig:1:1: note: declared here diff --git a/test/cases/compile_errors/stage1/obj/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig b/test/cases/compile_errors/stage1/obj/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig deleted file mode 100644 index c1725f1ee85fa9d7236c598ce30e54fd06d73578..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig +++ /dev/null @@ -1,12 +0,0 @@ -const AtomicOrder = @import("std").builtin.AtomicOrder; -export fn entry() bool { - var x: i32 align(1) = 1234; - while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.SeqCst, AtomicOrder.SeqCst)) {} - return x == 5678; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:32: error: expected type '*i32', found '*align(1) i32' diff --git a/test/cases/compile_errors/stage1/obj/pointer_arithmetic_on_pointer-to-array.zig b/test/cases/compile_errors/stage1/obj/pointer_arithmetic_on_pointer-to-array.zig deleted file mode 100644 index 6542aa69687b243b695ff0344045f0f79097d16e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/pointer_arithmetic_on_pointer-to-array.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/popCount-non-integer.zig b/test/cases/compile_errors/stage1/obj/popCount-non-integer.zig deleted file mode 100644 index a58a98faa336f69afd3229e41055310ef973df47..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/popCount-non-integer.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry(x: f32) u32 { - return @popCount(f32, x); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:22: error: expected integer type, found 'f32' diff --git a/test/cases/compile_errors/stage1/obj/prevent_bad_implicit_casting_of_anyframe_types.zig b/test/cases/compile_errors/stage1/obj/prevent_bad_implicit_casting_of_anyframe_types.zig index 2e21d45c124d65f15c316631a4c2202cb42d6c4b..066bf1c1078762194d4d509fdf795a6362af8eff 100644 --- a/test/cases/compile_errors/stage1/obj/prevent_bad_implicit_casting_of_anyframe_types.zig +++ b/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 diff --git a/test/cases/compile_errors/stage1/obj/primitives_take_precedence_over_declarations.zig b/test/cases/compile_errors/stage1/obj/primitives_take_precedence_over_declarations.zig deleted file mode 100644 index 6f6107e88c9829ab12c192c029d9d6d6aed356f8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/primitives_take_precedence_over_declarations.zig +++ /dev/null @@ -1,11 +0,0 @@ -const @"u8" = u16; -export fn entry() void { - const a: u8 = 300; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:19: error: integer value 300 cannot be coerced to type 'u8' diff --git a/test/cases/compile_errors/stage1/obj/ptrToInt_0_to_non_optional_pointer.zig b/test/cases/compile_errors/stage1/obj/ptrToInt_0_to_non_optional_pointer.zig deleted file mode 100644 index b8a5d1b0aa48ce8e293fd60d4509875bc82ba817..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/ptrToInt_0_to_non_optional_pointer.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var b = @intToPtr(*i32, 0); - _ = b; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:13: error: pointer type '*i32' does not allow address zero diff --git a/test/cases/compile_errors/stage1/obj/ptrcast_to_non-pointer.zig b/test/cases/compile_errors/stage1/obj/ptrcast_to_non-pointer.zig deleted file mode 100644 index 7e9e9a99b719b2ff978802aec36a08a2e30138bd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/ptrcast_to_non-pointer.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry(a: *i32) usize { - return @ptrCast(usize, a); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected pointer, found 'usize' diff --git a/test/cases/compile_errors/stage1/obj/redefinition_of_enums.zig b/test/cases/compile_errors/stage1/obj/redefinition_of_enums.zig deleted file mode 100644 index a95eb88935a25fc36e4939019c826e96622dbdb3..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/redefinition_of_enums.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/redefinition_of_global_variables.zig b/test/cases/compile_errors/stage1/obj/redefinition_of_global_variables.zig deleted file mode 100644 index 3651946ffefa9fb3c97a39763158b3d11a9f6e6a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/redefinition_of_global_variables.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/redefinition_of_struct.zig b/test/cases/compile_errors/stage1/obj/redefinition_of_struct.zig deleted file mode 100644 index 8367a05e43729ca57acd871dd2451a7a91eb5f3a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/redefinition_of_struct.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/refer_to_the_type_of_a_generic_function.zig b/test/cases/compile_errors/stage1/obj/refer_to_the_type_of_a_generic_function.zig deleted file mode 100644 index 99ab1da8a3c5c8969af94af66b36f82606f5974e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/refer_to_the_type_of_a_generic_function.zig +++ /dev/null @@ -1,11 +0,0 @@ -export fn entry() void { - const Func = fn (type) void; - const f: Func = undefined; - f(i32); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:5: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/referring_to_a_struct_that_is_invalid.zig b/test/cases/compile_errors/stage1/obj/referring_to_a_struct_that_is_invalid.zig deleted file mode 100644 index 433650cddbb2913b6548105972d3526238eea913..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/referring_to_a_struct_that_is_invalid.zig +++ /dev/null @@ -1,17 +0,0 @@ -const UsbDeviceRequest = struct { - Type: u8, -}; - -export fn foo() void { - comptime assert(@sizeOf(UsbDeviceRequest) == 0x8); -} - -fn assert(ok: bool) void { - if (!ok) unreachable; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:10:14: error: reached unreachable code diff --git a/test/cases/compile_errors/stage1/obj/return_from_defer_expression.zig b/test/cases/compile_errors/stage1/obj/return_from_defer_expression.zig deleted file mode 100644 index cbe9542176d01eff318e8eda739dc9e7424e8c11..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/return_from_defer_expression.zig +++ /dev/null @@ -1,21 +0,0 @@ -pub fn testTrickyDefer() !void { - defer canFail() catch {}; - - defer try canFail(); - - const a = maybeInt() orelse return; -} - -fn canFail() anyerror!void { } - -pub fn maybeInt() ?i32 { - return 0; -} - -export fn entry() usize { return @sizeOf(@TypeOf(testTrickyDefer)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:11: error: 'try' not allowed inside defer expression diff --git a/test/cases/compile_errors/stage1/obj/runtime_cast_to_union_which_has_non-void_fields.zig b/test/cases/compile_errors/stage1/obj/runtime_cast_to_union_which_has_non-void_fields.zig deleted file mode 100644 index d25c815c7e01d6df0b4bda73c3727b2f06ef6e8b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/runtime_cast_to_union_which_has_non-void_fields.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/saturating_arithmetic_does_not_allow_floats.zig b/test/cases/compile_errors/stage1/obj/saturating_arithmetic_does_not_allow_floats.zig deleted file mode 100644 index 7bda134af6106e249610d83810afd6a74f26eff6..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/saturating_arithmetic_does_not_allow_floats.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/setAlignStack_in_naked_function.zig b/test/cases/compile_errors/stage1/obj/setAlignStack_in_naked_function.zig deleted file mode 100644 index b9adc84ed540f1a0c4a1c10bc9b34c3017fc5ae5..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/setAlignStack_in_naked_function.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() callconv(.Naked) void { - @setAlignStack(16); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: @setAlignStack in naked function diff --git a/test/cases/compile_errors/stage1/obj/setAlignStack_outside_function.zig b/test/cases/compile_errors/stage1/obj/setAlignStack_outside_function.zig deleted file mode 100644 index 754756012b4fd77e4dadfeca2175ac923712739a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/setAlignStack_outside_function.zig +++ /dev/null @@ -1,9 +0,0 @@ -comptime { - @setAlignStack(16); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: @setAlignStack outside function diff --git a/test/cases/compile_errors/stage1/obj/setAlignStack_set_twice.zig b/test/cases/compile_errors/stage1/obj/setAlignStack_set_twice.zig deleted file mode 100644 index 244db9d96208061e2cd1540cab696bf5634b3945..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/setAlignStack_set_twice.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/setAlignStack_too_big.zig b/test/cases/compile_errors/stage1/obj/setAlignStack_too_big.zig deleted file mode 100644 index 601631e15840ec7c1360190b0dcbab78734ae679..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/setAlignStack_too_big.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/setting_a_section_on_a_local_variable.zig b/test/cases/compile_errors/stage1/obj/setting_a_section_on_a_local_variable.zig deleted file mode 100644 index 90d605dc40215c54d6ac969cc96c1a55c549a2c2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/setting_a_section_on_a_local_variable.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() i32 { - var foo: i32 linksection(".text2") = 1234; - return foo; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:30: error: cannot set section of local variable 'foo' diff --git a/test/cases/compile_errors/stage1/obj/shift_left_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/shift_left_assign_on_undefined_value.zig deleted file mode 100644 index 575bf0ee6b60cd3bc30b6b520773dfaee5fe3b56..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/shift_left_assign_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: i64 = undefined; - a >>= 2; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/shift_left_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/shift_left_on_undefined_value.zig deleted file mode 100644 index abd06fbbabebfe422aee08e3ab758b13c028f7da..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/shift_left_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: i64 = undefined; - _ = a << 2; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/shift_right_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/shift_right_assign_on_undefined_value.zig deleted file mode 100644 index 575bf0ee6b60cd3bc30b6b520773dfaee5fe3b56..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/shift_right_assign_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: i64 = undefined; - a >>= 2; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/shift_right_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/shift_right_on_undefined_value.zig deleted file mode 100644 index e24cbe473a09a23618353883e9458d632939918d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/shift_right_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: i64 = undefined; - _ = a >> 2; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/shifting_RHS_is_log2_of_LHS_int_bit_width.zig b/test/cases/compile_errors/stage1/obj/shifting_RHS_is_log2_of_LHS_int_bit_width.zig deleted file mode 100644 index d9b9bbfce36755bf318250d73451fc61c6012983..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/shifting_RHS_is_log2_of_LHS_int_bit_width.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry(x: u8, y: u8) u8 { - return x << y; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:17: error: expected type 'u3', found 'u8' diff --git a/test/cases/compile_errors/stage1/obj/slicing_single-item_pointer.zig b/test/cases/compile_errors/stage1/obj/slicing_single-item_pointer.zig deleted file mode 100644 index d8c82fa3aff677a450d0505c102816c97c468c22..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/slicing_single-item_pointer.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry(ptr: *i32) void { - const slice = ptr[0..2]; - _ = slice; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:22: error: slice of single-item pointer diff --git a/test/cases/compile_errors/stage1/obj/struct_field_missing_type.zig b/test/cases/compile_errors/stage1/obj/struct_field_missing_type.zig deleted file mode 100644 index 175f1c7df771210fc691b14ffda9aa57bc38e516..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/struct_field_missing_type.zig +++ /dev/null @@ -1,13 +0,0 @@ -const Letter = struct { - A, -}; -export fn entry() void { - var a = Letter { .A = {} }; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: struct field missing type diff --git a/test/cases/compile_errors/stage1/obj/struct_init_syntax_for_array.zig b/test/cases/compile_errors/stage1/obj/struct_init_syntax_for_array.zig deleted file mode 100644 index 6362e05114651cc82838d8e9a0295a0bceec3a00..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/struct_init_syntax_for_array.zig +++ /dev/null @@ -1,10 +0,0 @@ -const foo = [3]u16{ .x = 1024 }; -comptime { - _ = foo; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:13: error: initializing array with struct syntax diff --git a/test/cases/compile_errors/stage1/obj/struct_with_declarations_unavailable_for_reify_type.zig b/test/cases/compile_errors/stage1/obj/struct_with_declarations_unavailable_for_reify_type.zig deleted file mode 100644 index 409020ca257f480a5ccbb16b4fdb8147d3fef35c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/struct_with_declarations_unavailable_for_reify_type.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - _ = @Type(@typeInfo(struct { const foo = 1; })); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: Type.Struct.decls must be empty for @Type diff --git a/test/cases/compile_errors/stage1/obj/struct_with_invalid_field.zig b/test/cases/compile_errors/stage1/obj/struct_with_invalid_field.zig deleted file mode 100644 index dcc9d26f65bae996f07fdcde1aab66b1266f593f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/struct_with_invalid_field.zig +++ /dev/null @@ -1,30 +0,0 @@ -const std = @import("std",); -const Allocator = std.mem.Allocator; -const ArrayList = std.ArrayList; - -const HeaderWeight = enum { - H1, H2, H3, H4, H5, H6, -}; - -const MdText = ArrayList(u8); - -const MdNode = union(enum) { - Header: struct { - text: MdText, - weight: HeaderValue, - }, -}; - -export fn entry() void { - const a = MdNode.Header { - .text = MdText.init(std.testing.allocator), - .weight = HeaderWeight.H1, - }; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:14:17: error: use of undeclared identifier 'HeaderValue' diff --git a/test/cases/compile_errors/stage1/obj/sub_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/sub_assign_on_undefined_value.zig deleted file mode 100644 index 74b705a154bfbd141d5e538c8bd09c113700421e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/sub_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/sub_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/sub_on_undefined_value.zig deleted file mode 100644 index 08c590ee3ff3bf66c3e2dbe838bc8ecc215e9f33..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/sub_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/sub_wrap_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/sub_wrap_assign_on_undefined_value.zig deleted file mode 100644 index 41aa1ca14b08c74891486a50150d0a09ad3b1715..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/sub_wrap_assign_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/sub_wrap_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/sub_wrap_on_undefined_value.zig deleted file mode 100644 index 68e4e78512f47387e83c7f20340829bca1003814..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/sub_wrap_on_undefined_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/suspend_inside_suspend_block.zig b/test/cases/compile_errors/stage1/obj/suspend_inside_suspend_block.zig deleted file mode 100644 index 4adffd2f2574b7f7216e3c2e93151779773978c4..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/suspend_inside_suspend_block.zig +++ /dev/null @@ -1,16 +0,0 @@ -export fn entry() void { - _ = async foo(); -} -fn foo() void { - suspend { - suspend { - } - } -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:9: error: cannot suspend inside suspend block -// tmp.zig:5:5: note: other suspend block here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong.zig b/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong.zig deleted file mode 100644 index 056aebe3dd415d5b069aaa62f1bd7da083120d89..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong.zig +++ /dev/null @@ -1,24 +0,0 @@ -const Number = enum { - One, - Two, - Three, - Four, -}; -fn f(n: Number) i32 { - switch (n) { - Number.One => 1, - Number.Two => 2, - Number.Three => @as(i32, 3), - Number.Four => 4, - Number.Two => 2, - } -} - -export fn entry() usize { return @sizeOf(@TypeOf(f)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:13:15: error: duplicate switch value -// tmp.zig:10:15: note: other value here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong_when_else_present.zig b/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong_when_else_present.zig deleted file mode 100644 index 4d891c3917f19c9ea21418cea7461c509a803d86..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong_when_else_present.zig +++ /dev/null @@ -1,25 +0,0 @@ -const Number = enum { - One, - Two, - Three, - Four, -}; -fn f(n: Number) i32 { - switch (n) { - Number.One => 1, - Number.Two => 2, - Number.Three => @as(i32, 3), - Number.Four => 4, - Number.Two => 2, - else => 10, - } -} - -export fn entry() usize { return @sizeOf(@TypeOf(f)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:13:15: error: duplicate switch value -// tmp.zig:10:15: note: other value here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type.zig b/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type.zig deleted file mode 100644 index b84c4622a2e0c55cb74aa8935a91e1b406286c70..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type.zig +++ /dev/null @@ -1,17 +0,0 @@ -fn foo(comptime T: type, x: T) u8 { - _ = x; - return switch (T) { - u32 => 0, - u64 => 1, - u32 => 2, - else => 3, - }; -} -export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:9: error: duplicate switch value -// tmp.zig:4:9: note: previous value here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type_struct_alias.zig b/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type_struct_alias.zig deleted file mode 100644 index 057e674e5a97623c9518c24fc6f93f159738ddad..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type_struct_alias.zig +++ /dev/null @@ -1,21 +0,0 @@ -const Test = struct { - bar: i32, -}; -const Test2 = Test; -fn foo(comptime T: type, x: T) u8 { - _ = x; - return switch (T) { - Test => 0, - u64 => 1, - Test2 => 2, - else => 3, - }; -} -export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:10:9: error: duplicate switch value -// tmp.zig:8:9: note: previous value here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-missing_enumeration_prong.zig b/test/cases/compile_errors/stage1/obj/switch_expression-missing_enumeration_prong.zig deleted file mode 100644 index 1a13730223b9ee9a1a7f7930f311e64956b1b31d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-missing_enumeration_prong.zig +++ /dev/null @@ -1,21 +0,0 @@ -const Number = enum { - One, - Two, - Three, - Four, -}; -fn f(n: Number) i32 { - switch (n) { - Number.One => 1, - Number.Two => 2, - Number.Three => @as(i32, 3), - } -} - -export fn entry() usize { return @sizeOf(@TypeOf(f)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:8:5: error: enumeration value 'Number.Four' not handled in switch diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-multiple_else_prongs.zig b/test/cases/compile_errors/stage1/obj/switch_expression-multiple_else_prongs.zig deleted file mode 100644 index 82672220925567bcb41f41d0f38bffb7cafbbae7..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-multiple_else_prongs.zig +++ /dev/null @@ -1,16 +0,0 @@ -fn f(x: u32) void { - const value: bool = switch (x) { - 1234 => false, - else => true, - else => true, - }; -} -export fn entry() void { - f(1234); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:9: error: multiple else prongs in switch expression diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-non_exhaustive_integer_prongs.zig b/test/cases/compile_errors/stage1/obj/switch_expression-non_exhaustive_integer_prongs.zig deleted file mode 100644 index 940338edb98e409668a53bb63990a9f10c99b2a2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-non_exhaustive_integer_prongs.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_enum.zig b/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_enum.zig deleted file mode 100644 index bcf840ab97769c77b5521a5d40cca55544db9973..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_enum.zig +++ /dev/null @@ -1,24 +0,0 @@ -const TestEnum = enum{ T1, T2 }; - -fn err(x: u8) TestEnum { - switch (x) { - 0 => return TestEnum.T1, - else => return TestEnum.T2, - } -} - -fn foo(x: u8) void { - switch (err(x)) { - TestEnum.T1 => {}, - TestEnum.T2 => {}, - else => {}, - } -} - -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:14:9: error: unreachable else prong, all cases already handled diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_i8.zig b/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_i8.zig deleted file mode 100644 index f0c9d7a08a3b32fa33f0663abc152ef3649e11c4..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_i8.zig +++ /dev/null @@ -1,17 +0,0 @@ -fn foo(x: i8) void { - switch (x) { - -128...0 => {}, - 1 => {}, - 2 => {}, - 3 => {}, - 4...127 => {}, - else => {}, - } -} -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:8:9: error: unreachable else prong, all cases already handled diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_u8.zig b/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_u8.zig deleted file mode 100644 index 9342ce8c32f26b8939b01f3db0d642b4dde0b32b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_u8.zig +++ /dev/null @@ -1,17 +0,0 @@ -fn foo(x: u8) void { - switch (x) { - 0 => {}, - 1 => {}, - 2 => {}, - 3 => {}, - 4...255 => {}, - else => {}, - } -} -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:8:9: error: unreachable else prong, all cases already handled diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u1.zig b/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u1.zig deleted file mode 100644 index 90abf5074bebd8bf5c411d0c75752a6f2c4c2d48..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u1.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u2.zig b/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u2.zig deleted file mode 100644 index a523046e162008ce1eff29ce29396b7060e90f0c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u2.zig +++ /dev/null @@ -1,16 +0,0 @@ -fn foo(x: u2) void { - switch (x) { - 0 => {}, - 1 => {}, - 2 => {}, - 3 => {}, - else => {}, - } -} -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:7:9: error: unreachable else prong, all cases already handled diff --git a/test/cases/compile_errors/stage1/obj/switch_on_enum_with_1_field_with_no_prongs.zig b/test/cases/compile_errors/stage1/obj/switch_on_enum_with_1_field_with_no_prongs.zig deleted file mode 100644 index 97f7de121d69086f701c4eb986ec7329d6449c8d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/switch_on_enum_with_1_field_with_no_prongs.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/threadlocal_qualifier_on_const.zig b/test/cases/compile_errors/stage1/obj/threadlocal_qualifier_on_const.zig deleted file mode 100644 index d34ba06879c2d6b0107941a1e4bbdd97bcf7ab7d..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/threadlocal_qualifier_on_const.zig +++ /dev/null @@ -1,10 +0,0 @@ -threadlocal const x: i32 = 1234; -export fn entry() i32 { - return x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:1: error: threadlocal variable cannot be constant diff --git a/test/cases/compile_errors/stage1/obj/truncate_sign_mismatch.zig b/test/cases/compile_errors/stage1/obj/truncate_sign_mismatch.zig deleted file mode 100644 index 8434d9ed16da32a0f0052227d147a1ca94dbe715..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/truncate_sign_mismatch.zig +++ /dev/null @@ -1,25 +0,0 @@ -export fn entry1() i8 { - var x: u32 = 10; - return @truncate(i8, x); -} -export fn entry2() u8 { - var x: i32 = -10; - return @truncate(u8, x); -} -export fn entry3() i8 { - comptime var x: u32 = 10; - return @truncate(i8, x); -} -export fn entry4() u8 { - comptime var x: i32 = -10; - return @truncate(u8, x); -} - -// error -// backend=stage1 -// 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' diff --git a/test/cases/compile_errors/stage1/obj/truncate_undefined_value.zig b/test/cases/compile_errors/stage1/obj/truncate_undefined_value.zig deleted file mode 100644 index 67a1f17ba783dfbd83c79483ba8f78e7ea0f1f47..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/truncate_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var z = @truncate(u8, @as(u16, undefined)); - _ = z; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:27: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/try_in_function_with_non_error_return_type.zig b/test/cases/compile_errors/stage1/obj/try_in_function_with_non_error_return_type.zig deleted file mode 100644 index c00fa2709f726bfe0b8da730520e9b3fa546c9ba..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/try_in_function_with_non_error_return_type.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn f() void { - try something(); -} -fn something() anyerror!void { } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: expected type 'void', found 'anyerror' diff --git a/test/cases/compile_errors/stage1/obj/type_variables_must_be_constant.zig b/test/cases/compile_errors/stage1/obj/type_variables_must_be_constant.zig index f8cadf8520e55f99c3c8d1e623bc22dc91ff0494..8273e24b99e741b5e2a6442add804662103a3d86 100644 --- a/test/cases/compile_errors/stage1/obj/type_variables_must_be_constant.zig +++ b/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 diff --git a/test/cases/compile_errors/stage1/obj/undeclared_identifier.zig b/test/cases/compile_errors/stage1/obj/undeclared_identifier.zig deleted file mode 100644 index 297a618eb8978af2398460dfaeea449a6af0ca7e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/undeclared_identifier.zig +++ /dev/null @@ -1,11 +0,0 @@ -export fn a() void { - return - b + - c; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: use of undeclared identifier 'b' diff --git a/test/cases/compile_errors/stage1/obj/undeclared_identifier_error_should_mark_fn_as_impure.zig b/test/cases/compile_errors/stage1/obj/undeclared_identifier_error_should_mark_fn_as_impure.zig deleted file mode 100644 index 697b7ccb55db0f3ff23265d131f2584e2f8cb0b9..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/undeclared_identifier_error_should_mark_fn_as_impure.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn foo() void { - test_a_thing(); -} -fn test_a_thing() void { - bad_fn_call(); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:5: error: use of undeclared identifier 'bad_fn_call' diff --git a/test/cases/compile_errors/stage1/obj/undeclared_identifier_in_unanalyzed_branch.zig b/test/cases/compile_errors/stage1/obj/undeclared_identifier_in_unanalyzed_branch.zig deleted file mode 100644 index 2efa8ca115ac96fb9b91edfc07cd81c22957ce69..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/undeclared_identifier_in_unanalyzed_branch.zig +++ /dev/null @@ -1,11 +0,0 @@ -export fn a() void { - if (false) { - lol_this_doesnt_exist = nonsense; - } -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: use of undeclared identifier 'lol_this_doesnt_exist' diff --git a/test/cases/compile_errors/stage1/obj/undefined_as_field_type_is_rejected.zig b/test/cases/compile_errors/stage1/obj/undefined_as_field_type_is_rejected.zig deleted file mode 100644 index b6eb059661c10877af4c38e0e120196ae482960e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/undefined_as_field_type_is_rejected.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/undefined_function_call.zig b/test/cases/compile_errors/stage1/obj/undefined_function_call.zig deleted file mode 100644 index a9627961fe514824e433319bc959dc413b108aff..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/undefined_function_call.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn a() void { - b(); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: use of undeclared identifier 'b' diff --git a/test/cases/compile_errors/stage1/obj/underscore_is_not_a_declarable_symbol.zig b/test/cases/compile_errors/stage1/obj/underscore_is_not_a_declarable_symbol.zig deleted file mode 100644 index f4318af8fd085db48ca01898965fe29a25d3fb28..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/underscore_is_not_a_declarable_symbol.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn f1() usize { - var _: usize = 2; - return _; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:9: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_for.zig b/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_for.zig deleted file mode 100644 index fe89c8372d6fa93d84df83f5dc0b9bd422a01cfa..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_for.zig +++ /dev/null @@ -1,13 +0,0 @@ -export fn returns() void { - for ([_]void{}) |_, i| { - for ([_]void{}) |_, j| { - return _; - } - } -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:20: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while.zig b/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while.zig deleted file mode 100644 index 7f694e06031349b551bdc3bd2f21136e05c59f55..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while.zig +++ /dev/null @@ -1,16 +0,0 @@ -export fn returns() void { - while (optionalReturn()) |_| { - while (optionalReturn()) |_| { - return _; - } - } -} -fn optionalReturn() ?u32 { - return 1; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:20: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while_else.zig b/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while_else.zig deleted file mode 100644 index 87a705ee698afa010defbdc94d540c3f6e41910f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while_else.zig +++ /dev/null @@ -1,18 +0,0 @@ -export fn returns() void { - while (optionalReturnError()) |_| { - while (optionalReturnError()) |_| { - return; - } else |_| { - if (_ == error.optionalReturnError) return; - } - } -} -fn optionalReturnError() !?u32 { - return error.optionalReturnError; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:17: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/stage1/obj/union_fields_with_value_assignments.zig b/test/cases/compile_errors/stage1/obj/union_fields_with_value_assignments.zig deleted file mode 100644 index 94568d55c3aef0032243009e50ae8d598b2bf7c3..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/union_fields_with_value_assignments.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/union_with_0_fields.zig b/test/cases/compile_errors/stage1/obj/union_with_0_fields.zig deleted file mode 100644 index a6f3d69faa49f63d86a2d7fac6b480fdad0a5286..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/union_with_0_fields.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/union_with_specified_enum_omits_field.zig b/test/cases/compile_errors/stage1/obj/union_with_specified_enum_omits_field.zig deleted file mode 100644 index 0bb677a18cdb128090acdbcdcba57079bbc3fdef..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/union_with_specified_enum_omits_field.zig +++ /dev/null @@ -1,19 +0,0 @@ -const Letter = enum { - A, - B, - C, -}; -const Payload = union(Letter) { - A: i32, - B: f64, -}; -export fn entry() usize { - return @sizeOf(Payload); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:6:17: error: enum field missing: 'C' -// tmp.zig:4:5: note: declared here diff --git a/test/cases/compile_errors/stage1/obj/unreachable_code-double_break.zig b/test/cases/compile_errors/stage1/obj/unreachable_code-double_break.zig deleted file mode 100644 index 0a19337af844a7fae0915f4d8ac9fbf64c7b47a1..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/unreachable_code-double_break.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn a() void { - const b = blk: { - break :blk break :blk @as(u32, 1); - }; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: unreachable code -// tmp.zig:3:20: note: control flow is diverted here diff --git a/test/cases/compile_errors/stage1/obj/unreachable_code-nested_returns.zig b/test/cases/compile_errors/stage1/obj/unreachable_code-nested_returns.zig deleted file mode 100644 index 8a80fcd161c2d5c7f18c6398d5bd59a20dd7bf02..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/unreachable_code-nested_returns.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/unreachable_code.zig b/test/cases/compile_errors/stage1/obj/unreachable_code.zig deleted file mode 100644 index 30a92d06bf6f48883da302015a404e381cf0476f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/unreachable_code.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/unreachable_variable.zig b/test/cases/compile_errors/stage1/obj/unreachable_variable.zig deleted file mode 100644 index 7f822a8bceb9fe50102f6a50c9f9849ac047de15..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/unreachable_variable.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn f() void { - const a: noreturn = {}; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:25: error: expected type 'noreturn', found 'void' diff --git a/test/cases/compile_errors/stage1/obj/unreachable_with_return.zig b/test/cases/compile_errors/stage1/obj/unreachable_with_return.zig deleted file mode 100644 index 6410d24913a4ad88416b445dbd87600eb352b6e5..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/unreachable_with_return.zig +++ /dev/null @@ -1,8 +0,0 @@ -fn a() noreturn {return;} -export fn entry() void { a(); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:18: error: expected type 'noreturn', found 'void' diff --git a/test/cases/compile_errors/stage1/obj/use_invalid_number_literal_as_array_index.zig b/test/cases/compile_errors/stage1/obj/use_invalid_number_literal_as_array_index.zig deleted file mode 100644 index b1d0aaa6f47ec8ccdd11f73a53d58ae8c351386c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/use_invalid_number_literal_as_array_index.zig +++ /dev/null @@ -1,11 +0,0 @@ -var v = 25; -export fn entry() void { - var arr: [v]u8 = undefined; - _ = arr; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:1: error: unable to infer variable type diff --git a/test/cases/compile_errors/stage1/obj/use_of_undeclared_identifier.zig b/test/cases/compile_errors/stage1/obj/use_of_undeclared_identifier.zig deleted file mode 100644 index c1297731a30de29d0538068a391507011a99c383..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/use_of_undeclared_identifier.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/using_invalid_types_in_function_call_raises_an_error.zig b/test/cases/compile_errors/stage1/obj/using_invalid_types_in_function_call_raises_an_error.zig deleted file mode 100644 index f1fda15ea75a7395f3f9316fbf7ccda770c02fe8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/using_invalid_types_in_function_call_raises_an_error.zig +++ /dev/null @@ -1,11 +0,0 @@ -const MenuEffect = enum {}; -fn func(effect: MenuEffect) void { _ = effect; } -export fn entry() void { - func(MenuEffect.ThisDoesNotExist); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:20: error: enum declarations must have at least one tag diff --git a/test/cases/compile_errors/stage1/obj/usingnamespace_with_wrong_type.zig b/test/cases/compile_errors/stage1/obj/usingnamespace_with_wrong_type.zig deleted file mode 100644 index 86b5f0dcfb3daa295b711d20871b595b68a75331..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/usingnamespace_with_wrong_type.zig +++ /dev/null @@ -1,7 +0,0 @@ -usingnamespace void; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:1: error: expected struct, enum, or union; found 'void' diff --git a/test/cases/compile_errors/stage1/obj/variable_has_wrong_type.zig b/test/cases/compile_errors/stage1/obj/variable_has_wrong_type.zig deleted file mode 100644 index 52dcf150de0e57ad064cc6c702a9d06d221e06e7..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/variable_has_wrong_type.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/obj/variable_initialization_compile_error_then_referenced.zig b/test/cases/compile_errors/stage1/obj/variable_initialization_compile_error_then_referenced.zig deleted file mode 100644 index 91b70481a1955cb6c9b77f59e502c1ca1ca7406c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/variable_initialization_compile_error_then_referenced.zig +++ /dev/null @@ -1,19 +0,0 @@ -fn Undeclared() type { - return T; -} -fn Gen() type { - const X = Undeclared(); - return struct { - x: X, - }; -} -export fn entry() void { - const S = Gen(); - _ = S; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:12: error: use of undeclared identifier 'T' diff --git a/test/cases/compile_errors/stage1/obj/variable_with_type_noreturn.zig b/test/cases/compile_errors/stage1/obj/variable_with_type_noreturn.zig deleted file mode 100644 index e2ba9183be83259ca69bc9f3fe4309189c59ffbe..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/variable_with_type_noreturn.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/obj/volatile_on_global_assembly.zig b/test/cases/compile_errors/stage1/obj/volatile_on_global_assembly.zig deleted file mode 100644 index 2157fe6a71f5f1542665f595bd7ba9b17350d658..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/volatile_on_global_assembly.zig +++ /dev/null @@ -1,9 +0,0 @@ -comptime { - asm volatile (""); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:9: error: volatile is meaningless on global assembly diff --git a/test/cases/compile_errors/stage1/obj/while_expected_bool_got_error_union.zig b/test/cases/compile_errors/stage1/obj/while_expected_bool_got_error_union.zig deleted file mode 100644 index 9fc327e6c9b24a4052063387e1406b6f38dc1b73..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/while_expected_bool_got_error_union.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn foo() void { - while (bar()) {} -} -fn bar() anyerror!i32 { return 1; } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: expected type 'bool', found 'anyerror!i32' diff --git a/test/cases/compile_errors/stage1/obj/while_expected_bool_got_optional.zig b/test/cases/compile_errors/stage1/obj/while_expected_bool_got_optional.zig deleted file mode 100644 index 5948d627867a3b3f7dd97a58d2de58d1bbca4f91..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/while_expected_bool_got_optional.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn foo() void { - while (bar()) {} -} -fn bar() ?i32 { return 1; } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: expected type 'bool', found '?i32' diff --git a/test/cases/compile_errors/stage1/obj/write_to_const_global_variable.zig b/test/cases/compile_errors/stage1/obj/write_to_const_global_variable.zig deleted file mode 100644 index 4ce93e6b519fe0f52971bb42b3bb44b8908daa9c..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/write_to_const_global_variable.zig +++ /dev/null @@ -1,11 +0,0 @@ -const x : i32 = 99; -fn f() void { - x = 1; -} -export fn entry() void { f(); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/wrong_size_to_an_array_literal.zig b/test/cases/compile_errors/stage1/obj/wrong_size_to_an_array_literal.zig deleted file mode 100644 index 909d89458728e960b4034e434ddf2844e8a3ca9a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/wrong_size_to_an_array_literal.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - const array = [2]u8{1, 2, 3}; - _ = array; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:31: error: index 2 outside array of size 2 diff --git a/test/cases/compile_errors/stage1/obj/wrong_type_passed_to_panic.zig b/test/cases/compile_errors/stage1/obj/wrong_type_passed_to_panic.zig deleted file mode 100644 index ed237f81dfcee0c19e9ab3c0042323b3ae03bcae..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/wrong_type_passed_to_panic.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var e = error.Foo; - @panic(e); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:12: error: expected type '[]const u8', found 'error{Foo}' diff --git a/test/cases/compile_errors/stage1/obj/wrong_type_to_hasField.zig b/test/cases/compile_errors/stage1/obj/wrong_type_to_hasField.zig deleted file mode 100644 index 680c19a6fbaa10e038d56f89bd6b63efb8cbfd7a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/obj/wrong_type_to_hasField.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() bool { - return @hasField(i32, "hi"); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:22: error: type 'i32' does not support @hasField diff --git a/test/cases/compile_errors/stage1/or_on_undefined_value.zig b/test/cases/compile_errors/stage1/or_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..11e6c41deaa52764da050eea129327b3e530550e --- /dev/null +++ b/test/cases/compile_errors/stage1/or_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: bool = undefined; + _ = a or a; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/orelse_on_undefined_value.zig b/test/cases/compile_errors/stage1/orelse_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..3042c208eb3fbe2ad65e0ccb95d087147a78cfda --- /dev/null +++ b/test/cases/compile_errors/stage1/orelse_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: ?bool = undefined; + _ = a orelse false; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:11: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/ptrToInt_with_pointer_to_zero-sized_type.zig b/test/cases/compile_errors/stage1/ptrToInt_with_pointer_to_zero-sized_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..143dc9135d435bbb32aed09820d56961366accd3 --- /dev/null +++ b/test/cases/compile_errors/stage1/ptrToInt_with_pointer_to_zero-sized_type.zig @@ -0,0 +1,11 @@ +export fn entry() void { + var pointer: ?*u0 = null; + var x = @ptrToInt(pointer); + _ = x; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:23: error: pointer to size 0 type has no address diff --git a/test/cases/compile_errors/stage1/shift_left_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/shift_left_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..575bf0ee6b60cd3bc30b6b520773dfaee5fe3b56 --- /dev/null +++ b/test/cases/compile_errors/stage1/shift_left_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: i64 = undefined; + a >>= 2; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:5: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/shift_left_on_undefined_value.zig b/test/cases/compile_errors/stage1/shift_left_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..abd06fbbabebfe422aee08e3ab758b13c028f7da --- /dev/null +++ b/test/cases/compile_errors/stage1/shift_left_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: i64 = undefined; + _ = a << 2; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/shift_right_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/shift_right_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..575bf0ee6b60cd3bc30b6b520773dfaee5fe3b56 --- /dev/null +++ b/test/cases/compile_errors/stage1/shift_right_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: i64 = undefined; + a >>= 2; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:5: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/shift_right_on_undefined_value.zig b/test/cases/compile_errors/stage1/shift_right_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..e24cbe473a09a23618353883e9458d632939918d --- /dev/null +++ b/test/cases/compile_errors/stage1/shift_right_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: i64 = undefined; + _ = a >> 2; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/sub_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/sub_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..74b705a154bfbd141d5e538c8bd09c113700421e --- /dev/null +++ b/test/cases/compile_errors/stage1/sub_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/sub_on_undefined_value.zig b/test/cases/compile_errors/stage1/sub_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..08c590ee3ff3bf66c3e2dbe838bc8ecc215e9f33 --- /dev/null +++ b/test/cases/compile_errors/stage1/sub_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/sub_wrap_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/sub_wrap_assign_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..41aa1ca14b08c74891486a50150d0a09ad3b1715 --- /dev/null +++ b/test/cases/compile_errors/stage1/sub_wrap_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/sub_wrap_on_undefined_value.zig b/test/cases/compile_errors/stage1/sub_wrap_on_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..68e4e78512f47387e83c7f20340829bca1003814 --- /dev/null +++ b/test/cases/compile_errors/stage1/sub_wrap_on_undefined_value.zig @@ -0,0 +1,10 @@ +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 diff --git a/test/cases/compile_errors/stage1/test/access_invalid_typeInfo_decl.zig b/test/cases/compile_errors/stage1/test/access_invalid_typeInfo_decl.zig deleted file mode 100644 index 40e31a085505b75ca9b0842868bf5f8c2bdb5e85..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/access_invalid_typeInfo_decl.zig +++ /dev/null @@ -1,11 +0,0 @@ -const A = B; -test "Crash" { - _ = @typeInfo(@This()).Struct.decls[0]; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:1:11: error: use of undeclared identifier 'B' diff --git a/test/cases/compile_errors/stage1/test/alignCast_of_zero_sized_types.zig b/test/cases/compile_errors/stage1/test/alignCast_of_zero_sized_types.zig deleted file mode 100644 index f83d22759cac095e9052141c74b10b7c11b49cef..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/alignCast_of_zero_sized_types.zig +++ /dev/null @@ -1,28 +0,0 @@ -export fn foo() void { - const a: *void = undefined; - _ = @alignCast(2, a); -} -export fn bar() void { - const a: ?*void = undefined; - _ = @alignCast(2, a); -} -export fn baz() void { - const a: []void = undefined; - _ = @alignCast(2, a); -} -export fn qux() void { - const a = struct { - fn a(comptime b: u32) void { _ = b; } - }.a; - _ = @alignCast(2, a); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:3:23: error: cannot adjust alignment of zero sized type '*void' -// tmp.zig:7:23: error: cannot adjust alignment of zero sized type '?*void' -// tmp.zig:11:23: error: cannot adjust alignment of zero sized type '[]void' -// tmp.zig:17:23: error: cannot adjust alignment of zero sized type 'fn(u32) anytype' diff --git a/test/cases/compile_errors/stage1/test/bad_splat_type.zig b/test/cases/compile_errors/stage1/test/bad_splat_type.zig deleted file mode 100644 index 94e3d052a6cd8b2de19c239b1aa3e9f65c6d1df2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/bad_splat_type.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/test/binary_OR_operator_on_error_sets.zig b/test/cases/compile_errors/stage1/test/binary_OR_operator_on_error_sets.zig deleted file mode 100644 index eb2d21c6eddcc44b2e9571dff3f19ec9cb9e67ff..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/binary_OR_operator_on_error_sets.zig +++ /dev/null @@ -1,13 +0,0 @@ -pub const A = error.A; -pub const AB = A | error.B; -export fn entry() void { - var x: AB = undefined; - _ = x; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:2:18: error: invalid operands to binary expression: 'error{A}' and 'error{B}' diff --git a/test/cases/compile_errors/stage1/test/call_rejects_non_comptime-known_fn-always_inline.zig b/test/cases/compile_errors/stage1/test/call_rejects_non_comptime-known_fn-always_inline.zig deleted file mode 100644 index a010414a57ad349bf2b9065ddc4f08d29c6491fe..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/call_rejects_non_comptime-known_fn-always_inline.zig +++ /dev/null @@ -1,11 +0,0 @@ -pub export fn entry() void { - var call_me: fn () void = undefined; - @call(.{ .modifier = .always_inline }, call_me, .{}); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:3:5: error: the specified modifier requires a comptime-known function diff --git a/test/cases/compile_errors/stage1/test/call_rejects_non_comptime-known_fn-compile_time.zig b/test/cases/compile_errors/stage1/test/call_rejects_non_comptime-known_fn-compile_time.zig deleted file mode 100644 index b3ffcc6ec2bb77169efd68539817c9f80e7b6e11..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/call_rejects_non_comptime-known_fn-compile_time.zig +++ /dev/null @@ -1,11 +0,0 @@ -pub export fn entry() void { - var call_me: fn () void = undefined; - @call(.{ .modifier = .compile_time }, call_me, .{}); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:3:5: error: the specified modifier requires a comptime-known function diff --git a/test/cases/compile_errors/stage1/test/combination_of_nosuspend_and_async.zig b/test/cases/compile_errors/stage1/test/combination_of_nosuspend_and_async.zig deleted file mode 100644 index 43731c964861741e99c353de416ed6b7c4544d4f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/combination_of_nosuspend_and_async.zig +++ /dev/null @@ -1,16 +0,0 @@ -export fn entry() void { - nosuspend { - const bar = async foo(); - suspend {} - resume bar; - } -} -fn foo() void {} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:4:9: error: suspend inside nosuspend block -// tmp.zig:2:5: note: nosuspend block here diff --git a/test/cases/compile_errors/stage1/test/comparison_of_non-tagged_union_and_enum_literal.zig b/test/cases/compile_errors/stage1/test/comparison_of_non-tagged_union_and_enum_literal.zig deleted file mode 100644 index 4898ac744ca97c646e04cb59ea1c9fce85ada31b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/comparison_of_non-tagged_union_and_enum_literal.zig +++ /dev/null @@ -1,14 +0,0 @@ -export fn entry() void { - const U = union { A: u32, B: u64 }; - var u = U{ .A = 42 }; - var ok = u == .A; - _ = ok; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:4:16: error: comparison of union and enum literal is only valid for tagged union types -// tmp.zig:2:15: note: type U is not a tagged union diff --git a/test/cases/compile_errors/stage1/test/comptime_vector_overflow_shows_the_index.zig b/test/cases/compile_errors/stage1/test/comptime_vector_overflow_shows_the_index.zig deleted file mode 100644 index a1f026ab70ca4ea344aa7ea8a213e83fde32ca74..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/comptime_vector_overflow_shows_the_index.zig +++ /dev/null @@ -1,14 +0,0 @@ -comptime { - var a: @import("std").meta.Vector(4, u8) = [_]u8{ 1, 2, 255, 4 }; - var b: @import("std").meta.Vector(4, u8) = [_]u8{ 5, 6, 1, 8 }; - var x = a + b; - _ = x; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:4:15: error: operation caused overflow -// tmp.zig:4:15: note: when computing vector element at index 2 diff --git a/test/cases/compile_errors/stage1/test/error_in_struct_initializer_doesnt_crash_the_compiler.zig b/test/cases/compile_errors/stage1/test/error_in_struct_initializer_doesnt_crash_the_compiler.zig deleted file mode 100644 index 2858fd6a0115c33210172a4e34d6bf0548260e39..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/error_in_struct_initializer_doesnt_crash_the_compiler.zig +++ /dev/null @@ -1,15 +0,0 @@ -pub export fn entry() void { - const bitfield = struct { - e: u8, - e: u8, - }; - var a = .{@sizeOf(bitfield)}; - _ = a; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:4:9: error: duplicate struct field: 'e' diff --git a/test/cases/compile_errors/stage1/test/errors_in_for_loop_bodies_are_propagated.zig b/test/cases/compile_errors/stage1/test/errors_in_for_loop_bodies_are_propagated.zig deleted file mode 100644 index d8be29e39b453032ffd09d38c2452bd88b13eaac..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/errors_in_for_loop_bodies_are_propagated.zig +++ /dev/null @@ -1,11 +0,0 @@ -pub export fn entry() void { - var arr: [100]u8 = undefined; - for (arr) |bits| _ = @popCount(bits); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:3:26: error: expected 2 arguments, found 1 diff --git a/test/cases/compile_errors/stage1/test/export_with_empty_name_string.zig b/test/cases/compile_errors/stage1/test/export_with_empty_name_string.zig deleted file mode 100644 index b882d11723afefc50ae5d605b36e200276b82525..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/export_with_empty_name_string.zig +++ /dev/null @@ -1,11 +0,0 @@ -pub export fn entry() void { } -comptime { - @export(entry, .{ .name = "" }); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:3:5: error: exported symbol name cannot be empty diff --git a/test/cases/compile_errors/stage1/test/int-float_conversion_to_comptime_int-float.zig b/test/cases/compile_errors/stage1/test/int-float_conversion_to_comptime_int-float.zig deleted file mode 100644 index de439168ae36788f367d1ceeb70d3cad065c4f19..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/int-float_conversion_to_comptime_int-float.zig +++ /dev/null @@ -1,16 +0,0 @@ -export fn foo() void { - var a: f32 = 2; - _ = @floatToInt(comptime_int, a); -} -export fn bar() void { - var a: u32 = 2; - _ = @intToFloat(comptime_float, a); -} - -// error -// backend=stage1 -// 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 diff --git a/test/cases/compile_errors/stage1/test/invalid_assignments.zig b/test/cases/compile_errors/stage1/test/invalid_assignments.zig deleted file mode 100644 index 75f45a8bcb94e526334a65f466beb80ceb625a07..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/invalid_assignments.zig +++ /dev/null @@ -1,20 +0,0 @@ -export fn entry1() void { - var a: []const u8 = "foo"; - a[0..2] = "bar"; -} -export fn entry2() void { - var a: u8 = 2; - a + 2 = 3; -} -export fn entry4() void { - 2 + 2 = 3; -} - -// error -// backend=stage1 -// 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 diff --git a/test/cases/compile_errors/stage1/test/invalid_float_casts.zig b/test/cases/compile_errors/stage1/test/invalid_float_casts.zig deleted file mode 100644 index 2fe8003728e0e74131f66725c2b596f5f0151d50..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/invalid_float_casts.zig +++ /dev/null @@ -1,26 +0,0 @@ -export fn foo() void { - var a: f32 = 2; - _ = @floatCast(comptime_float, a); -} -export fn bar() void { - var a: f32 = 2; - _ = @floatToInt(f32, a); -} -export fn baz() void { - var a: f32 = 2; - _ = @intToFloat(f32, a); -} -export fn qux() void { - var a: u32 = 2; - _ = @floatCast(f32, a); -} - -// error -// backend=stage1 -// 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' diff --git a/test/cases/compile_errors/stage1/test/invalid_int_casts.zig b/test/cases/compile_errors/stage1/test/invalid_int_casts.zig deleted file mode 100644 index 9945751ef5765baab60e2afe8f47ee2c5725f643..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/invalid_int_casts.zig +++ /dev/null @@ -1,26 +0,0 @@ -export fn foo() void { - var a: u32 = 2; - _ = @intCast(comptime_int, a); -} -export fn bar() void { - var a: u32 = 2; - _ = @intToFloat(u32, a); -} -export fn baz() void { - var a: u32 = 2; - _ = @floatToInt(u32, a); -} -export fn qux() void { - var a: f32 = 2; - _ = @intCast(u32, a); -} - -// error -// backend=stage1 -// 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' diff --git a/test/cases/compile_errors/stage1/test/invalid_non-exhaustive_enum_to_union.zig b/test/cases/compile_errors/stage1/test/invalid_non-exhaustive_enum_to_union.zig deleted file mode 100644 index 804e83a66aab2642a9191c21c7bdf52f3a64ed88..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/invalid_non-exhaustive_enum_to_union.zig +++ /dev/null @@ -1,27 +0,0 @@ -const E = enum(u8) { - a, - b, - _, -}; -const U = union(E) { - a, - b, -}; -export fn foo() void { - var e = @intToEnum(E, 15); - var u: U = e; - _ = u; -} -export fn bar() void { - const e = @intToEnum(E, 15); - var u: U = e; - _ = u; -} - -// error -// backend=stage1 -// 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 diff --git a/test/cases/compile_errors/stage1/test/invalid_pointer_with_reify_type.zig b/test/cases/compile_errors/stage1/test/invalid_pointer_with_reify_type.zig deleted file mode 100644 index bf1cf6bd6f97e716677cf542bcfec45d166ab042..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/invalid_pointer_with_reify_type.zig +++ /dev/null @@ -1,19 +0,0 @@ -export fn entry() void { - _ = @Type(.{ .Pointer = .{ - .size = .One, - .is_const = false, - .is_volatile = false, - .alignment = 1, - .address_space = .generic, - .child = u8, - .is_allowzero = false, - .sentinel = &@as(u8, 0), - }}); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:2:16: error: sentinels are only allowed on slices and unknown-length pointers diff --git a/test/cases/compile_errors/stage1/test/nested_vectors.zig b/test/cases/compile_errors/stage1/test/nested_vectors.zig deleted file mode 100644 index 9e87ac814b2f21d33add49e6e89405837f17c8c2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/nested_vectors.zig +++ /dev/null @@ -1,13 +0,0 @@ -export fn entry() void { - const V1 = @import("std").meta.Vector(4, u8); - const V2 = @Type(.{ .Vector = .{ .len = 4, .child = V1 } }); - var v: V2 = undefined; - _ = v; -} - -// error -// backend=stage1 -// 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 diff --git a/test/cases/compile_errors/stage1/test/non-exhaustive_enum_marker_assigned_a_value.zig b/test/cases/compile_errors/stage1/test/non-exhaustive_enum_marker_assigned_a_value.zig deleted file mode 100644 index 609af248dfcc2e7ead10dc39ecd4a865202bfc0b..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/non-exhaustive_enum_marker_assigned_a_value.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/test/non-exhaustive_enums.zig b/test/cases/compile_errors/stage1/test/non-exhaustive_enums.zig deleted file mode 100644 index 3b5f8af7cbb7f51d9a6e78a2bd59e683f5622851..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/non-exhaustive_enums.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/test/not_an_enum_type.zig b/test/cases/compile_errors/stage1/test/not_an_enum_type.zig deleted file mode 100644 index 99c733b4d02a10727e88195105bc7e631f34d0c8..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/not_an_enum_type.zig +++ /dev/null @@ -1,20 +0,0 @@ -export fn entry() void { - var self: Error = undefined; - switch (self) { - InvalidToken => |x| return x.token, - ExpectedVarDeclOrFn => |x| return x.token, - } -} -const Error = union(enum) { - A: InvalidToken, - B: ExpectedVarDeclOrFn, -}; -const InvalidToken = struct {}; -const ExpectedVarDeclOrFn = struct {}; - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:4:9: error: expected type '@typeInfo(Error).Union.tag_type.?', found 'type' diff --git a/test/cases/compile_errors/stage1/test/ptrToInt_with_pointer_to_zero-sized_type.zig b/test/cases/compile_errors/stage1/test/ptrToInt_with_pointer_to_zero-sized_type.zig deleted file mode 100644 index 7c2ba184c4246887e970e69e17f2b7d92b9b5190..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/ptrToInt_with_pointer_to_zero-sized_type.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - var pointer: ?*u0 = null; - var x = @ptrToInt(pointer); - _ = x; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:3:23: error: pointer to size 0 type has no address diff --git a/test/cases/compile_errors/stage1/test/reassign_to_array_parameter.zig b/test/cases/compile_errors/stage1/test/reassign_to_array_parameter.zig deleted file mode 100644 index f3b51d2c0fd742aae14e5287a013144e04e0bfcd..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/reassign_to_array_parameter.zig +++ /dev/null @@ -1,13 +0,0 @@ -fn reassign(a: [3]f32) void { - a = [3]f32{4, 5, 6}; -} -export fn entry() void { - reassign(.{1, 2, 3}); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:2:15: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/test/reassign_to_slice_parameter.zig b/test/cases/compile_errors/stage1/test/reassign_to_slice_parameter.zig deleted file mode 100644 index 34bd5541a15e391ecd3bd9a7c93cf874e15200fb..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/reassign_to_slice_parameter.zig +++ /dev/null @@ -1,13 +0,0 @@ -pub fn reassign(s: []const u8) void { - s = s[0..]; -} -export fn entry() void { - reassign("foo"); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:2:10: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/test/reassign_to_struct_parameter.zig b/test/cases/compile_errors/stage1/test/reassign_to_struct_parameter.zig deleted file mode 100644 index 994833d989bfe0687d02feebbb3770427ee7c6ca..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/reassign_to_struct_parameter.zig +++ /dev/null @@ -1,16 +0,0 @@ -const S = struct { - x: u32, -}; -fn reassign(s: S) void { - s = S{.x = 2}; -} -export fn entry() void { - reassign(S{.x = 3}); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:5:10: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/test/reference_to_const_data.zig b/test/cases/compile_errors/stage1/test/reference_to_const_data.zig deleted file mode 100644 index 6c98aefd7abd452725c2bdbaedbc52199ee5ba33..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/reference_to_const_data.zig +++ /dev/null @@ -1,30 +0,0 @@ -export fn foo() void { - var ptr = &[_]u8{0,0,0,0}; - ptr[1] = 2; -} -export fn bar() void { - var ptr = &@as(u32, 2); - ptr.* = 2; -} -export fn baz() void { - var ptr = &true; - ptr.* = false; -} -export fn qux() void { - const S = struct{ - x: usize, - y: usize, - }; - var ptr = &S{.x=1,.y=2}; - ptr.x = 2; -} - -// error -// backend=stage1 -// 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 diff --git a/test/cases/compile_errors/stage1/test/reify_typeOf_with_incompatible_arguments.zig b/test/cases/compile_errors/stage1/test/reify_typeOf_with_incompatible_arguments.zig deleted file mode 100644 index 2013a07e536d199827132902c0c5c24adc6f7f91..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/reify_typeOf_with_incompatible_arguments.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - var var_1: f32 = undefined; - var var_2: u32 = undefined; - _ = @TypeOf(var_1, var_2); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:4:9: error: incompatible types: 'f32' and 'u32' diff --git a/test/cases/compile_errors/stage1/test/reify_typeOf_with_no_arguments.zig b/test/cases/compile_errors/stage1/test/reify_typeOf_with_no_arguments.zig deleted file mode 100644 index 0626d453936f615271824bcdc93d5c6b405b37e2..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/reify_typeOf_with_no_arguments.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/test/reject_extern_function_definitions_with_body.zig b/test/cases/compile_errors/stage1/test/reject_extern_function_definitions_with_body.zig deleted file mode 100644 index a7b92e8399e3992b08b4c8ffcc887286bf0f560e..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/reject_extern_function_definitions_with_body.zig +++ /dev/null @@ -1,10 +0,0 @@ -extern "c" fn definitelyNotInLibC(a: i32, b: i32) i32 { - return a + b; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:1:1: error: extern functions have no body diff --git a/test/cases/compile_errors/stage1/test/reject_extern_variables_with_initializers.zig b/test/cases/compile_errors/stage1/test/reject_extern_variables_with_initializers.zig deleted file mode 100644 index 54239e0948e93fafaa3555ebe7c10c8c09a0ab07..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/reject_extern_variables_with_initializers.zig +++ /dev/null @@ -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 diff --git a/test/cases/compile_errors/stage1/test/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig b/test/cases/compile_errors/stage1/test/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig deleted file mode 100644 index 7499939b4a1bbd979861be1dcd8fc3fd17e5207f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig +++ /dev/null @@ -1,14 +0,0 @@ -pub fn A() type { - return Q; -} -test "1" { - _ = A().a; - _ = A().a; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:2:12: error: use of undeclared identifier 'Q' diff --git a/test/cases/compile_errors/stage1/test/return_invalid_type_from_test.zig b/test/cases/compile_errors/stage1/test/return_invalid_type_from_test.zig deleted file mode 100644 index 590ac3091860b3177105ede28ff9f39e20631a36..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/return_invalid_type_from_test.zig +++ /dev/null @@ -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' diff --git a/test/cases/compile_errors/stage1/test/shift_on_type_with_non-power-of-two_size.zig b/test/cases/compile_errors/stage1/test/shift_on_type_with_non-power-of-two_size.zig deleted file mode 100644 index 222cb2256308bec4cca5475a28ffdf7eadf1520a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/shift_on_type_with_non-power-of-two_size.zig +++ /dev/null @@ -1,34 +0,0 @@ -export fn entry() void { - const S = struct { - fn a() void { - var x: u24 = 42; - _ = x >> 24; - } - fn b() void { - var x: u24 = 42; - _ = x << 24; - } - fn c() void { - var x: u24 = 42; - _ = @shlExact(x, 24); - } - fn d() void { - var x: u24 = 42; - _ = @shrExact(x, 24); - } - }; - S.a(); - S.b(); - S.c(); - S.d(); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:5:19: error: RHS of shift is too large for LHS type -// tmp.zig:9:19: error: RHS of shift is too large for LHS type -// tmp.zig:13:17: error: RHS of shift is too large for LHS type -// tmp.zig:17:17: error: RHS of shift is too large for LHS type diff --git a/test/cases/compile_errors/stage1/test/shuffle_with_selected_index_past_first_vector_length.zig b/test/cases/compile_errors/stage1/test/shuffle_with_selected_index_past_first_vector_length.zig deleted file mode 100644 index 8b0c5ba780b12c79cdffca4edc911835bcd3a48f..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/shuffle_with_selected_index_past_first_vector_length.zig +++ /dev/null @@ -1,15 +0,0 @@ -export fn entry() void { - const v: @import("std").meta.Vector(4, u32) = [4]u32{ 10, 11, 12, 13 }; - const x: @import("std").meta.Vector(4, u32) = [4]u32{ 14, 15, 16, 17 }; - var z = @shuffle(u32, v, x, [8]i32{ 0, 1, 2, 3, 7, 6, 5, 4 }); - _ = z; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:4:39: error: mask index '4' has out-of-bounds selection -// tmp.zig:4:27: note: selected index '7' out of bounds of @Vector(4, u32) -// tmp.zig:4:30: note: selections from the second vector are specified with negative numbers diff --git a/test/cases/compile_errors/stage1/test/switch_ranges_endpoints_are_validated.zig b/test/cases/compile_errors/stage1/test/switch_ranges_endpoints_are_validated.zig deleted file mode 100644 index a44d59feedfdadc80c4f2a4b7335ce9d02400f64..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/switch_ranges_endpoints_are_validated.zig +++ /dev/null @@ -1,16 +0,0 @@ -pub export fn entry() void { - var x: i32 = 0; - switch (x) { - 6...1 => {}, - -1...-5 => {}, - else => unreachable, - } -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:4:9: error: range start value is greater than the end value -// tmp.zig:5:9: error: range start value is greater than the end value diff --git a/test/cases/compile_errors/stage1/test/switching_with_exhaustive_enum_has___prong_.zig b/test/cases/compile_errors/stage1/test/switching_with_exhaustive_enum_has___prong_.zig deleted file mode 100644 index 0ca489bdb82f78134b0e18ecb3e0fa6f319033b5..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/switching_with_exhaustive_enum_has___prong_.zig +++ /dev/null @@ -1,19 +0,0 @@ -const E = enum{ - a, - b, -}; -pub export fn entry() void { - var e: E = .b; - switch (e) { - .a => {}, - .b => {}, - _ => {}, - } -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:7:5: error: switch on exhaustive enum has `_` prong diff --git a/test/cases/compile_errors/stage1/test/tagName_on_invalid_value_of_non-exhaustive_enum.zig b/test/cases/compile_errors/stage1/test/tagName_on_invalid_value_of_non-exhaustive_enum.zig deleted file mode 100644 index a98470b681adf87d7f725d128ef3a88d5948d89a..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/tagName_on_invalid_value_of_non-exhaustive_enum.zig +++ /dev/null @@ -1,11 +0,0 @@ -test "enum" { - const E = enum(u8) {A, B, _}; - _ = @tagName(@intToEnum(E, 5)); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:3:18: error: no tag by value 5 diff --git a/test/cases/compile_errors/stage1/test/type_mismatch_in_C_prototype_with_varargs.zig b/test/cases/compile_errors/stage1/test/type_mismatch_in_C_prototype_with_varargs.zig deleted file mode 100644 index 1f78ef3999716b4f6ed7d4086cebc466a64902ec..0000000000000000000000000000000000000000 --- a/test/cases/compile_errors/stage1/test/type_mismatch_in_C_prototype_with_varargs.zig +++ /dev/null @@ -1,14 +0,0 @@ -const fn_ty = ?fn ([*c]u8, ...) callconv(.C) void; -extern fn fn_decl(fmt: [*:0]u8, ...) void; - -export fn main() void { - const x: fn_ty = fn_decl; - _ = x; -} - -// error -// backend=stage1 -// 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' diff --git a/test/cases/compile_errors/stage1/truncate_undefined_value.zig b/test/cases/compile_errors/stage1/truncate_undefined_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..67a1f17ba783dfbd83c79483ba8f78e7ea0f1f47 --- /dev/null +++ b/test/cases/compile_errors/stage1/truncate_undefined_value.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var z = @truncate(u8, @as(u16, undefined)); + _ = z; +} + +// error +// backend=stage1 +// target=native +// +// tmp.zig:2:27: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/struct_field_missing_type.zig b/test/cases/compile_errors/struct_field_missing_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..0e9151a5eb43f709e2ba848d6b24e4f8429bc3c6 --- /dev/null +++ b/test/cases/compile_errors/struct_field_missing_type.zig @@ -0,0 +1,13 @@ +const Letter = struct { + A, +}; +export fn entry() void { + var a = Letter { .A = {} }; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: struct field missing type diff --git a/test/cases/compile_errors/struct_init_syntax_for_array.zig b/test/cases/compile_errors/struct_init_syntax_for_array.zig new file mode 100644 index 0000000000000000000000000000000000000000..025d0057feb321d9d825cf1f12d1aa6ec12e29da --- /dev/null +++ b/test/cases/compile_errors/struct_init_syntax_for_array.zig @@ -0,0 +1,10 @@ +const foo = [3]u16{ .x = 1024 }; +comptime { + _ = foo; +} + +// error +// backend=stage2 +// target=native +// +// :1:13: error: initializing array with struct syntax diff --git a/test/cases/compile_errors/struct_with_declarations_unavailable_for_reify_type.zig b/test/cases/compile_errors/struct_with_declarations_unavailable_for_reify_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..81864160dcc184329535c19bd299ade7d96b9537 --- /dev/null +++ b/test/cases/compile_errors/struct_with_declarations_unavailable_for_reify_type.zig @@ -0,0 +1,9 @@ +export fn entry() void { + _ = @Type(@typeInfo(struct { const foo = 1; })); +} + +// error +// backend=stage2 +// target=native +// +// :2:9: error: reified structs must have no decls diff --git a/test/cases/compile_errors/struct_with_invalid_field.zig b/test/cases/compile_errors/struct_with_invalid_field.zig new file mode 100644 index 0000000000000000000000000000000000000000..aa24b029bb734f277f13f62b266279ccbd700431 --- /dev/null +++ b/test/cases/compile_errors/struct_with_invalid_field.zig @@ -0,0 +1,30 @@ +const std = @import("std",); +const Allocator = std.mem.Allocator; +const ArrayList = std.ArrayList; + +const HeaderWeight = enum { + H1, H2, H3, H4, H5, H6, +}; + +const MdText = ArrayList(u8); + +const MdNode = union(enum) { + Header: struct { + text: MdText, + weight: HeaderValue, + }, +}; + +export fn entry() void { + const a = MdNode.Header { + .text = MdText.init(std.testing.allocator), + .weight = HeaderWeight.H1, + }; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :14:17: error: use of undeclared identifier 'HeaderValue' diff --git a/test/cases/compile_errors/suspend_inside_suspend_block.zig b/test/cases/compile_errors/suspend_inside_suspend_block.zig new file mode 100644 index 0000000000000000000000000000000000000000..80436bd07f7f97d5c01dcd34202faa9370705ae4 --- /dev/null +++ b/test/cases/compile_errors/suspend_inside_suspend_block.zig @@ -0,0 +1,16 @@ +export fn entry() void { + _ = async foo(); +} +fn foo() void { + suspend { + suspend { + } + } +} + +// error +// backend=llvm +// target=native +// +// :6:9: error: cannot suspend inside suspend block +// :5:5: note: other suspend block here diff --git a/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig b/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig new file mode 100644 index 0000000000000000000000000000000000000000..7011f0a2d5a0405ba99639d9a456f7256fd00626 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig @@ -0,0 +1,24 @@ +const Number = enum { + One, + Two, + Three, + Four, +}; +fn f(n: Number) i32 { + switch (n) { + Number.One => 1, + Number.Two => 2, + Number.Three => @as(i32, 3), + Number.Four => 4, + Number.Two => 2, + } +} + +export fn entry() usize { return @sizeOf(@TypeOf(&f)); } + +// error +// backend=stage2 +// target=native +// +// :13:15: error: duplicate switch value +// :10:15: note: previous value here diff --git a/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig b/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig new file mode 100644 index 0000000000000000000000000000000000000000..89f19593757603697928d209b8e68eec7c5e1e32 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig @@ -0,0 +1,25 @@ +const Number = enum { + One, + Two, + Three, + Four, +}; +fn f(n: Number) i32 { + switch (n) { + Number.One => 1, + Number.Two => 2, + Number.Three => @as(i32, 3), + Number.Four => 4, + Number.Two => 2, + else => 10, + } +} + +export fn entry() usize { return @sizeOf(@TypeOf(&f)); } + +// error +// backend=stage2 +// target=native +// +// :13:15: error: duplicate switch value +// :10:15: note: previous value here diff --git a/test/cases/compile_errors/switch_expression-duplicate_type.zig b/test/cases/compile_errors/switch_expression-duplicate_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..59c9b0657a2601ed0bf0b319d4c7bc32cd514312 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-duplicate_type.zig @@ -0,0 +1,17 @@ +fn foo(comptime T: type, x: T) u8 { + _ = x; + return switch (T) { + u32 => 0, + u64 => 1, + u32 => 2, + else => 3, + }; +} +export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); } + +// error +// backend=stage2 +// target=native +// +// :6:9: error: duplicate switch value +// :4:9: note: previous value here diff --git a/test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig b/test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig new file mode 100644 index 0000000000000000000000000000000000000000..797d2bd50d30e7f49e62623ab8c8420612215985 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig @@ -0,0 +1,21 @@ +const Test = struct { + bar: i32, +}; +const Test2 = Test; +fn foo(comptime T: type, x: T) u8 { + _ = x; + return switch (T) { + Test => 0, + u64 => 1, + Test2 => 2, + else => 3, + }; +} +export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); } + +// error +// backend=stage2 +// target=native +// +// :10:9: error: duplicate switch value +// :8:9: note: previous value here diff --git a/test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig b/test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig new file mode 100644 index 0000000000000000000000000000000000000000..20b373f6b7a36cd0b387d985869aa90be1c01b59 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig @@ -0,0 +1,23 @@ +const Number = enum { + One, + Two, + Three, + Four, +}; +fn f(n: Number) i32 { + switch (n) { + Number.One => 1, + Number.Two => 2, + Number.Three => @as(i32, 3), + } +} + +export fn entry() usize { return @sizeOf(@TypeOf(&f)); } + +// error +// backend=stage2 +// target=native +// +// :8:5: error: switch must handle all possibilities +// :8:5: note: unhandled enumeration value: 'Four' +// :1:16: note: enum 'tmp.Number' declared here diff --git a/test/cases/compile_errors/switch_expression-multiple_else_prongs.zig b/test/cases/compile_errors/switch_expression-multiple_else_prongs.zig new file mode 100644 index 0000000000000000000000000000000000000000..f4cdb3b125c40ddfdfe7ac71176cea1f8ab873f5 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-multiple_else_prongs.zig @@ -0,0 +1,17 @@ +fn f(x: u32) void { + const value: bool = switch (x) { + 1234 => false, + else => true, + else => true, + }; +} +export fn entry() void { + f(1234); +} + +// error +// backend=stage2 +// target=native +// +// :5:9: error: multiple else prongs in switch expression +// :4:9: note: previous else prong here diff --git a/test/cases/compile_errors/switch_expression-non_exhaustive_integer_prongs.zig b/test/cases/compile_errors/switch_expression-non_exhaustive_integer_prongs.zig new file mode 100644 index 0000000000000000000000000000000000000000..6770b5a0555c5b63297f15225dcbfc75d425ca4b --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/switch_expression-unreachable_else_prong_enum.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_enum.zig new file mode 100644 index 0000000000000000000000000000000000000000..cc837b8b5e1f3b12564c4916c1b9da237d925cf9 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-unreachable_else_prong_enum.zig @@ -0,0 +1,24 @@ +const TestEnum = enum{ T1, T2 }; + +fn err(x: u8) TestEnum { + switch (x) { + 0 => return TestEnum.T1, + else => return TestEnum.T2, + } +} + +fn foo(x: u8) void { + switch (err(x)) { + TestEnum.T1 => {}, + TestEnum.T2 => {}, + else => {}, + } +} + +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } + +// error +// backend=llvm +// target=native +// +// :14:14: error: unreachable else prong; all cases already handled diff --git a/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_i8.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_i8.zig new file mode 100644 index 0000000000000000000000000000000000000000..bcb84eed122da1e136e51e7773ef937b5c93166b --- /dev/null +++ b/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_i8.zig @@ -0,0 +1,17 @@ +fn foo(x: i8) void { + switch (x) { + -128...0 => {}, + 1 => {}, + 2 => {}, + 3 => {}, + 4...127 => {}, + else => {}, + } +} +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } + +// error +// backend=stage2 +// target=native +// +// :8:14: error: unreachable else prong; all cases already handled diff --git a/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_u8.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_u8.zig new file mode 100644 index 0000000000000000000000000000000000000000..2230434ea0659edbddbf01af529e8270f679f266 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_u8.zig @@ -0,0 +1,17 @@ +fn foo(x: u8) void { + switch (x) { + 0 => {}, + 1 => {}, + 2 => {}, + 3 => {}, + 4...255 => {}, + else => {}, + } +} +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } + +// error +// backend=stage2 +// target=native +// +// :8:14: error: unreachable else prong; all cases already handled diff --git a/test/cases/compile_errors/switch_expression-unreachable_else_prong_u1.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_u1.zig new file mode 100644 index 0000000000000000000000000000000000000000..58458474a4fc9679f0c53c9cd2bb1d4a51f0ec40 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/switch_expression-unreachable_else_prong_u2.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_u2.zig new file mode 100644 index 0000000000000000000000000000000000000000..9e337cb2007c069fafee329b23ecc3c7fe15223e --- /dev/null +++ b/test/cases/compile_errors/switch_expression-unreachable_else_prong_u2.zig @@ -0,0 +1,16 @@ +fn foo(x: u2) void { + switch (x) { + 0 => {}, + 1 => {}, + 2 => {}, + 3 => {}, + else => {}, + } +} +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } + +// error +// backend=stage2 +// target=native +// +// :7:14: error: unreachable else prong; all cases already handled diff --git a/test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig b/test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig new file mode 100644 index 0000000000000000000000000000000000000000..dbf1cd948f16654786f76d4be0d93f1ce1554abc --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/switch_ranges_endpoints_are_validated.zig b/test/cases/compile_errors/switch_ranges_endpoints_are_validated.zig new file mode 100644 index 0000000000000000000000000000000000000000..72c17929c080d70f744e60fb070c46879776ebe1 --- /dev/null +++ b/test/cases/compile_errors/switch_ranges_endpoints_are_validated.zig @@ -0,0 +1,21 @@ +pub export fn entry1() void { + var x: i32 = 0; + switch (x) { + 6...1 => {}, + else => unreachable, + } +} +pub export fn entr2() void { + var x: i32 = 0; + switch (x) { + -1...-5 => {}, + else => unreachable, + } +} + +// error +// backend=stage2 +// target=native +// +// :4:9: error: range start value is greater than the end value +// :11:9: error: range start value is greater than the end value diff --git a/test/cases/compile_errors/switching_with_exhaustive_enum_has___prong_.zig b/test/cases/compile_errors/switching_with_exhaustive_enum_has___prong_.zig new file mode 100644 index 0000000000000000000000000000000000000000..3dad0be9df20b7c60d4bb71ecb16bd91dd98d9a9 --- /dev/null +++ b/test/cases/compile_errors/switching_with_exhaustive_enum_has___prong_.zig @@ -0,0 +1,19 @@ +const E = enum{ + a, + b, +}; +pub export fn entry() void { + var e: E = .b; + switch (e) { + .a => {}, + .b => {}, + _ => {}, + } +} + +// error +// backend=stage2 +// target=native +// +// :7:5: error: '_' prong only allowed when switching on non-exhaustive enums +// :10:11: note: '_' prong here diff --git a/test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig b/test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig new file mode 100644 index 0000000000000000000000000000000000000000..e9e63f0d7ac1884bcc7bb0e300baa954cc9d6c26 --- /dev/null +++ b/test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig @@ -0,0 +1,12 @@ +test "enum" { + const E = enum(u8) {A, B, _}; + _ = @tagName(@intToEnum(E, 5)); +} + +// error +// backend=stage2 +// target=native +// is_test=1 +// +// :3:9: error: no field with value '5' in enum 'test.enum.E' +// :1:1: note: declared here diff --git a/test/cases/compile_errors/threadlocal_qualifier_on_const.zig b/test/cases/compile_errors/threadlocal_qualifier_on_const.zig new file mode 100644 index 0000000000000000000000000000000000000000..21371785f3c22166ac372e2515a72a669ac36c4d --- /dev/null +++ b/test/cases/compile_errors/threadlocal_qualifier_on_const.zig @@ -0,0 +1,10 @@ +threadlocal const x: i32 = 1234; +export fn entry() i32 { + return x; +} + +// error +// backend=stage2 +// target=native +// +// :1:1: error: threadlocal variable cannot be constant diff --git a/test/cases/compile_errors/truncate_sign_mismatch.zig b/test/cases/compile_errors/truncate_sign_mismatch.zig new file mode 100644 index 0000000000000000000000000000000000000000..a05660e28cb4ccbda338cde2ac28c76efd657d1a --- /dev/null +++ b/test/cases/compile_errors/truncate_sign_mismatch.zig @@ -0,0 +1,25 @@ +export fn entry1() i8 { + var x: u32 = 10; + return @truncate(i8, x); +} +export fn entry2() u8 { + var x: i32 = -10; + return @truncate(u8, x); +} +export fn entry3() i8 { + comptime var x: u32 = 10; + return @truncate(i8, x); +} +export fn entry4() u8 { + comptime var x: i32 = -10; + return @truncate(u8, x); +} + +// error +// backend=stage2 +// target=native +// +// :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' diff --git a/test/cases/compile_errors/try_in_function_with_non_error_return_type.zig b/test/cases/compile_errors/try_in_function_with_non_error_return_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..2107c2a3971d62dcedd9457969bc2074dc52d5f8 --- /dev/null +++ b/test/cases/compile_errors/try_in_function_with_non_error_return_type.zig @@ -0,0 +1,10 @@ +export fn f() void { + try something(); +} +fn something() anyerror!void { } + +// error +// backend=stage2 +// target=native +// +// :2:5: error: expected type 'void', found 'anyerror' diff --git a/test/cases/compile_errors/type_mismatch_in_C_prototype_with_varargs.zig b/test/cases/compile_errors/type_mismatch_in_C_prototype_with_varargs.zig new file mode 100644 index 0000000000000000000000000000000000000000..125ded95d6e5a45f8f10884626dd7aa60dbaabeb --- /dev/null +++ b/test/cases/compile_errors/type_mismatch_in_C_prototype_with_varargs.zig @@ -0,0 +1,13 @@ +const fn_ty = ?fn ([*c]u8, ...) callconv(.C) void; +extern fn fn_decl(fmt: [*:0]u8, ...) void; + +export fn main() void { + const x: fn_ty = fn_decl; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :5:22: error: expected type 'fn([*c]u8, ...) callconv(.C) void', found 'fn([*:0]u8, ...) callconv(.C) void' diff --git a/test/cases/compile_errors/undeclared_identifier.zig b/test/cases/compile_errors/undeclared_identifier.zig new file mode 100644 index 0000000000000000000000000000000000000000..7edc0d2896bf7928f4ea8e40da63044acb0a6ae2 --- /dev/null +++ b/test/cases/compile_errors/undeclared_identifier.zig @@ -0,0 +1,11 @@ +export fn a() void { + return + b + + c; +} + +// error +// backend=stage2 +// target=native +// +// :3:5: error: use of undeclared identifier 'b' diff --git a/test/cases/compile_errors/undeclared_identifier_error_should_mark_fn_as_impure.zig b/test/cases/compile_errors/undeclared_identifier_error_should_mark_fn_as_impure.zig new file mode 100644 index 0000000000000000000000000000000000000000..f234bde8b892e5bdbb9c8ebaf07d1e0c4c097dad --- /dev/null +++ b/test/cases/compile_errors/undeclared_identifier_error_should_mark_fn_as_impure.zig @@ -0,0 +1,12 @@ +export fn foo() void { + test_a_thing(); +} +fn test_a_thing() void { + bad_fn_call(); +} + +// error +// backend=stage2 +// target=native +// +// :5:5: error: use of undeclared identifier 'bad_fn_call' diff --git a/test/cases/compile_errors/undeclared_identifier_in_unanalyzed_branch.zig b/test/cases/compile_errors/undeclared_identifier_in_unanalyzed_branch.zig new file mode 100644 index 0000000000000000000000000000000000000000..edbe156e6bd52b81ece6b0e8f9cb508960a328aa --- /dev/null +++ b/test/cases/compile_errors/undeclared_identifier_in_unanalyzed_branch.zig @@ -0,0 +1,11 @@ +export fn a() void { + if (false) { + lol_this_doesnt_exist = nonsense; + } +} + +// error +// backend=stage2 +// target=native +// +// :3:9: error: use of undeclared identifier 'lol_this_doesnt_exist' diff --git a/test/cases/compile_errors/undefined_as_field_type_is_rejected.zig b/test/cases/compile_errors/undefined_as_field_type_is_rejected.zig new file mode 100644 index 0000000000000000000000000000000000000000..e78cadc87818f66e67c28e3f3a3de714c3d4d699 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/undefined_function_call.zig b/test/cases/compile_errors/undefined_function_call.zig new file mode 100644 index 0000000000000000000000000000000000000000..e78cadc87818f66e67c28e3f3a3de714c3d4d699 --- /dev/null +++ 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' diff --git a/test/cases/compile_errors/underscore_is_not_a_declarable_symbol.zig b/test/cases/compile_errors/underscore_is_not_a_declarable_symbol.zig new file mode 100644 index 0000000000000000000000000000000000000000..04cc996d0503ae01c309d97ad3327fd3703e2460 --- /dev/null +++ b/test/cases/compile_errors/underscore_is_not_a_declarable_symbol.zig @@ -0,0 +1,10 @@ +export fn f1() usize { + var _: usize = 2; + return _; +} + +// error +// backend=stage2 +// target=native +// +// :2:9: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig b/test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig new file mode 100644 index 0000000000000000000000000000000000000000..1fb79e11bd702f4694852e6f4d2c7525ad3d05a3 --- /dev/null +++ b/test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig @@ -0,0 +1,13 @@ +export fn returns() void { + for ([_]void{}) |_, i| { + for ([_]void{}) |_, j| { + return _; + } + } +} + +// error +// backend=stage2 +// target=native +// +// :4:20: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/underscore_should_not_be_usable_inside_while.zig b/test/cases/compile_errors/underscore_should_not_be_usable_inside_while.zig new file mode 100644 index 0000000000000000000000000000000000000000..07d72393c76012225c5f37ab8575a77a3341395b --- /dev/null +++ b/test/cases/compile_errors/underscore_should_not_be_usable_inside_while.zig @@ -0,0 +1,16 @@ +export fn returns() void { + while (optionalReturn()) |_| { + while (optionalReturn()) |_| { + return _; + } + } +} +fn optionalReturn() ?u32 { + return 1; +} + +// error +// backend=stage2 +// target=native +// +// :4:20: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/underscore_should_not_be_usable_inside_while_else.zig b/test/cases/compile_errors/underscore_should_not_be_usable_inside_while_else.zig new file mode 100644 index 0000000000000000000000000000000000000000..74d5a86a244a9e97b69109fae4108af9f9432aa6 --- /dev/null +++ b/test/cases/compile_errors/underscore_should_not_be_usable_inside_while_else.zig @@ -0,0 +1,18 @@ +export fn returns() void { + while (optionalReturnError()) |_| { + while (optionalReturnError()) |_| { + return; + } else |_| { + if (_ == error.optionalReturnError) return; + } + } +} +fn optionalReturnError() !?u32 { + return error.optionalReturnError; +} + +// error +// backend=stage2 +// target=native +// +// :6:17: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/union_fields_with_value_assignments.zig b/test/cases/compile_errors/union_fields_with_value_assignments.zig new file mode 100644 index 0000000000000000000000000000000000000000..2121568dd20f610e6159106c029745c4946bb5e5 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/union_with_0_fields.zig b/test/cases/compile_errors/union_with_0_fields.zig new file mode 100644 index 0000000000000000000000000000000000000000..2121568dd20f610e6159106c029745c4946bb5e5 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/union_with_specified_enum_omits_field.zig b/test/cases/compile_errors/union_with_specified_enum_omits_field.zig new file mode 100644 index 0000000000000000000000000000000000000000..3033feb376305f66d53ad1e1b030ea851eda3939 --- /dev/null +++ b/test/cases/compile_errors/union_with_specified_enum_omits_field.zig @@ -0,0 +1,20 @@ +const Letter = enum { + A, + B, + C, +}; +const Payload = union(Letter) { + A: i32, + B: f64, +}; +export fn entry() usize { + return @sizeOf(Payload); +} + +// error +// backend=stage2 +// target=native +// +// :6:1: error: enum field(s) missing in union +// :4:5: note: field 'C' missing, declared here +// :1:16: note: enum declared here diff --git a/test/cases/compile_errors/unreachable_code-double_break.zig b/test/cases/compile_errors/unreachable_code-double_break.zig new file mode 100644 index 0000000000000000000000000000000000000000..f8e4b86a90a7e1f134d186cec27b8aa1ef587f49 --- /dev/null +++ b/test/cases/compile_errors/unreachable_code-double_break.zig @@ -0,0 +1,13 @@ +export fn a() void { + const b = blk: { + break :blk break :blk @as(u32, 1); + }; + _ = b; +} + +// error +// backend=stage2 +// target=native +// +// :3:9: error: unreachable code +// :3:20: note: control flow is diverted here diff --git a/test/cases/compile_errors/unreachable_code-nested_returns.zig b/test/cases/compile_errors/unreachable_code-nested_returns.zig new file mode 100644 index 0000000000000000000000000000000000000000..4f71ab2cec791fc3960c40b50077a5fdf88b85f0 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/unreachable_code.zig b/test/cases/compile_errors/unreachable_code.zig new file mode 100644 index 0000000000000000000000000000000000000000..25c412d254e4ba283ad3f08e8a732a01879d5fe9 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/unreachable_variable.zig b/test/cases/compile_errors/unreachable_variable.zig new file mode 100644 index 0000000000000000000000000000000000000000..fac4b72196f69b5f7b52d2f6ffe6979c263c1f5e --- /dev/null +++ b/test/cases/compile_errors/unreachable_variable.zig @@ -0,0 +1,10 @@ +export fn f() void { + const a: noreturn = {}; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :2:25: error: expected type 'noreturn', found 'void' diff --git a/test/cases/compile_errors/unreachable_with_return.zig b/test/cases/compile_errors/unreachable_with_return.zig new file mode 100644 index 0000000000000000000000000000000000000000..cc6439ca0fac5a100c1d1d61e9c2ebd275d86eb4 --- /dev/null +++ b/test/cases/compile_errors/unreachable_with_return.zig @@ -0,0 +1,8 @@ +fn a() noreturn {return;} +export fn entry() void { a(); } + +// error +// backend=stage2 +// target=native +// +// :1:18: error: expected type 'noreturn', found 'void' diff --git a/test/cases/compile_errors/use_invalid_number_literal_as_array_index.zig b/test/cases/compile_errors/use_invalid_number_literal_as_array_index.zig new file mode 100644 index 0000000000000000000000000000000000000000..6fab70abf8cc4342723d0f83380bebad44f212a5 --- /dev/null +++ b/test/cases/compile_errors/use_invalid_number_literal_as_array_index.zig @@ -0,0 +1,11 @@ +var v = 25; +export fn entry() void { + var arr: [v]u8 = undefined; + _ = arr; +} + +// error +// backend=stage2 +// target=native +// +// :1:1: error: variable of type 'comptime_int' must be const or comptime diff --git a/test/cases/compile_errors/use_of_undeclared_identifier.zig b/test/cases/compile_errors/use_of_undeclared_identifier.zig new file mode 100644 index 0000000000000000000000000000000000000000..2c90a7c718f9212d2361e94a8d0ba103bad5ed40 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/using_invalid_types_in_function_call_raises_an_error.zig b/test/cases/compile_errors/using_invalid_types_in_function_call_raises_an_error.zig new file mode 100644 index 0000000000000000000000000000000000000000..ee6d1b8b7c90762621d0c8c082116543f8e60332 --- /dev/null +++ b/test/cases/compile_errors/using_invalid_types_in_function_call_raises_an_error.zig @@ -0,0 +1,11 @@ +const MenuEffect = enum {}; +fn func(effect: MenuEffect) void { _ = effect; } +export fn entry() void { + func(MenuEffect.ThisDoesNotExist); +} + +// error +// backend=stage2 +// target=native +// +// :1:20: error: enum declarations must have at least one tag diff --git a/test/cases/compile_errors/usingnamespace_with_wrong_type.zig b/test/cases/compile_errors/usingnamespace_with_wrong_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..4ec4bf483801f91708657573741c47c489fb049a --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/variable_has_wrong_type.zig b/test/cases/compile_errors/variable_has_wrong_type.zig new file mode 100644 index 0000000000000000000000000000000000000000..ec21c610e064e0dbb9eb764cf9b05d7b915d4146 --- /dev/null +++ b/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' diff --git a/test/cases/compile_errors/variable_initialization_compile_error_then_referenced.zig b/test/cases/compile_errors/variable_initialization_compile_error_then_referenced.zig new file mode 100644 index 0000000000000000000000000000000000000000..774cd165d64d269af6f9037ffc5c0fd55f702855 --- /dev/null +++ b/test/cases/compile_errors/variable_initialization_compile_error_then_referenced.zig @@ -0,0 +1,19 @@ +fn Undeclared() type { + return T; +} +fn Gen() type { + const X = Undeclared(); + return struct { + x: X, + }; +} +export fn entry() void { + const S = Gen(); + _ = S; +} + +// error +// backend=stage2 +// target=native +// +// :2:12: error: use of undeclared identifier 'T' diff --git a/test/cases/compile_errors/variable_with_type_noreturn.zig b/test/cases/compile_errors/variable_with_type_noreturn.zig new file mode 100644 index 0000000000000000000000000000000000000000..837a6e696599224d038cfbc541db11d0619b0714 --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/volatile_on_global_assembly.zig b/test/cases/compile_errors/volatile_on_global_assembly.zig new file mode 100644 index 0000000000000000000000000000000000000000..84cde00113ca7cae7aaef2bad45ecaac495daade --- /dev/null +++ b/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 diff --git a/test/cases/compile_errors/while_expected_bool_got_error_union.zig b/test/cases/compile_errors/while_expected_bool_got_error_union.zig new file mode 100644 index 0000000000000000000000000000000000000000..ecf3dd0736faa126da61ca8a6855bd781ba9fec9 --- /dev/null +++ b/test/cases/compile_errors/while_expected_bool_got_error_union.zig @@ -0,0 +1,10 @@ +export fn foo() void { + while (bar()) {} +} +fn bar() anyerror!i32 { return 1; } + +// error +// backend=stage2 +// target=native +// +// :2:15: error: expected type 'bool', found 'anyerror!i32' diff --git a/test/cases/compile_errors/while_expected_bool_got_optional.zig b/test/cases/compile_errors/while_expected_bool_got_optional.zig new file mode 100644 index 0000000000000000000000000000000000000000..3db4b7ae74e42ce52a39d6904ad37fa4d081861f --- /dev/null +++ b/test/cases/compile_errors/while_expected_bool_got_optional.zig @@ -0,0 +1,10 @@ +export fn foo() void { + while (bar()) {} +} +fn bar() ?i32 { return 1; } + +// error +// backend=stage2 +// target=native +// +// :2:15: error: expected type 'bool', found '?i32' diff --git a/test/cases/compile_errors/write_to_const_global_variable.zig b/test/cases/compile_errors/write_to_const_global_variable.zig new file mode 100644 index 0000000000000000000000000000000000000000..eaa9353f000e1a8f59801c3ebb4505ce2d10eac3 --- /dev/null +++ b/test/cases/compile_errors/write_to_const_global_variable.zig @@ -0,0 +1,11 @@ +const x : i32 = 99; +fn f() void { + x = 1; +} +export fn entry() void { f(); } + +// error +// backend=stage2 +// target=native +// +// :3:9: error: cannot assign to constant diff --git a/test/cases/compile_errors/wrong_size_to_an_array_literal.zig b/test/cases/compile_errors/wrong_size_to_an_array_literal.zig new file mode 100644 index 0000000000000000000000000000000000000000..bb8b3c215c7b703d9996c249ca3bdec254745bb2 --- /dev/null +++ b/test/cases/compile_errors/wrong_size_to_an_array_literal.zig @@ -0,0 +1,10 @@ +comptime { + const array = [2]u8{1, 2, 3}; + _ = array; +} + +// error +// backend=stage2 +// target=native +// +// :2:31: error: index 2 outside array of length 2 diff --git a/test/cases/compile_errors/wrong_type_passed_to_panic.zig b/test/cases/compile_errors/wrong_type_passed_to_panic.zig new file mode 100644 index 0000000000000000000000000000000000000000..d6f142f24a15efd190390f05e41250ef1b30c8a8 --- /dev/null +++ b/test/cases/compile_errors/wrong_type_passed_to_panic.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var e = error.Foo; + @panic(e); +} + +// error +// backend=stage2 +// target=native +// +// :3:12: error: expected type '[]const u8', found 'error{Foo}' diff --git a/test/cases/compile_errors/wrong_type_to_hasField.zig b/test/cases/compile_errors/wrong_type_to_hasField.zig new file mode 100644 index 0000000000000000000000000000000000000000..5c05689413742f360091fd4d72b1a7af9ba2797a --- /dev/null +++ b/test/cases/compile_errors/wrong_type_to_hasField.zig @@ -0,0 +1,9 @@ +export fn entry() bool { + return @hasField(i32, "hi"); +} + +// error +// backend=stage2 +// target=native +// +// :2:22: error: type 'i32' does not support '@hasField' diff --git a/test/cases/compile_log.0.zig b/test/cases/compile_log.0.zig index c213ebb930ca78b5b25f6fec55acaf643761afb5..161a6f37ca51a83dcaa01928c0b2fed64071f515 100644 --- a/test/cases/compile_log.0.zig +++ b/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' diff --git a/test/cases/llvm/any_typed_null_to_any_typed_optional.zig b/test/cases/llvm/any_typed_null_to_any_typed_optional.zig deleted file mode 100644 index c155d044976655e1becf111027c00d25edadbb90..0000000000000000000000000000000000000000 --- a/test/cases/llvm/any_typed_null_to_any_typed_optional.zig +++ /dev/null @@ -1,11 +0,0 @@ -pub fn main() void { - var a: ?*anyopaque = undefined; - a = @as(?usize, null); -} - -// error -// output_mode=Exe -// backend=stage2,llvm -// target=x86_64-linux,x86_64-macos -// -// :3:21: error: expected *anyopaque, found ?usize diff --git a/test/cases/llvm/invalid_address_space_coercion.zig b/test/cases/llvm/invalid_address_space_coercion.zig deleted file mode 100644 index 6b72f1d5a8ada2bebfecc79b0b780d9af20eb3d8..0000000000000000000000000000000000000000 --- a/test/cases/llvm/invalid_address_space_coercion.zig +++ /dev/null @@ -1,13 +0,0 @@ -fn entry(a: *addrspace(.gs) i32) *i32 { - return a; -} -pub fn main() void { - _ = entry; -} - -// error -// output_mode=Exe -// backend=stage2,llvm -// target=x86_64-linux,x86_64-macos -// -// :2:12: error: expected *i32, found *addrspace(.gs) i32 diff --git a/test/cases/llvm/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig b/test/cases/llvm/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig deleted file mode 100644 index 26f68ce7895207a301eb192fc679156573e9d39d..0000000000000000000000000000000000000000 --- a/test/cases/llvm/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig +++ /dev/null @@ -1,13 +0,0 @@ -fn entry(a: *addrspace(.gs) i32) *i32 { - return &a.*; -} -pub fn main() void { - _ = entry; -} - -// error -// output_mode=Exe -// backend=stage2,llvm -// target=x86_64-linux,x86_64-macos -// -// :2:12: error: expected *i32, found *addrspace(.gs) i32 diff --git a/test/cases/llvm/pointer_with_different_address_spaces.zig b/test/cases/llvm/pointer_with_different_address_spaces.zig deleted file mode 100644 index 26540862ff65a77e0771eb57bc35cdb948bc1618..0000000000000000000000000000000000000000 --- a/test/cases/llvm/pointer_with_different_address_spaces.zig +++ /dev/null @@ -1,13 +0,0 @@ -fn entry(a: *addrspace(.gs) i32) *addrspace(.fs) i32 { - return a; -} -export fn entry2() void { - _ = entry; -} - -// error -// output_mode=Obj -// backend=stage2,llvm -// target=x86_64-linux,x86_64-macos -// -// :2:12: error: expected *addrspace(.fs) i32, found *addrspace(.gs) i32 diff --git a/test/cases/llvm/pointers_with_different_address_spaces.zig b/test/cases/llvm/pointers_with_different_address_spaces.zig deleted file mode 100644 index 39e5e6a6d176e58fd8237a425e06a9517edf3590..0000000000000000000000000000000000000000 --- a/test/cases/llvm/pointers_with_different_address_spaces.zig +++ /dev/null @@ -1,13 +0,0 @@ -fn entry(a: ?*addrspace(.gs) i32) *i32 { - return a.?; -} -pub fn main() void { - _ = entry; -} - -// error -// output_mode=Exe -// backend=stage2,llvm -// target=x86_64-linux,x86_64-macos -// -// :2:13: error: expected *i32, found *addrspace(.gs) i32 diff --git a/test/cases/x86_64-linux/hello_world_with_updates.1.zig b/test/cases/x86_64-linux/hello_world_with_updates.1.zig index 0f347b7f5069ccefb13bd680334cbba2a4beb4e7..9be388ab632a58567dd6edaa56b0c378e93f1535 100644 --- a/test/cases/x86_64-linux/hello_world_with_updates.1.zig +++ b/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' diff --git a/test/cases/x86_64-linux/inline_assembly.0.zig b/test/cases/x86_64-linux/inline_assembly.0.zig index e3c0f3badbb61fa8a53a63bcabb7b90edbe4657b..8356e05d80837e2f240013dbb0fd315018c71aab 100644 --- a/test/cases/x86_64-linux/inline_assembly.0.zig +++ b/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' diff --git a/test/cases/x86_64-macos/hello_world_with_updates.1.zig b/test/cases/x86_64-macos/hello_world_with_updates.1.zig index 909fc9ccfbcb343f761414446c0ec4d52e98aeef..435747c2ee1f8c43c7e5950011526fd0507f8a6f 100644 --- a/test/cases/x86_64-macos/hello_world_with_updates.1.zig +++ b/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' diff --git a/test/stage2/cbe.zig b/test/stage2/cbe.zig index 47ed7a53bea862ede93c3224d82d4433fd3850f2..f602c498850b2b330152ca9279a66b7c6b5eadbf 100644 --- a/test/stage2/cbe.zig +++ b/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", });