authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-06-27 18:32:59+03:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-06-30 09:57:38+02:00
log3204d00a5e7fe119b690e921138a439fb84dff5b
tree40dba7f0816a1a8cae35657aa0d6bcb0ec19b6ba
parentc248af3bdcd17c334e742d53a7ac7bda2422a688

move passing stage1 compile error tests to stage2


632 files changed, 4048 insertions(+), 3998 deletions(-)

src/AstGen.zig+6
......@@ -4464,6 +4464,7 @@ fn containerDecl(
44644464 var total_fields: usize = 0;
44654465 var decls: usize = 0;
44664466 var nonexhaustive_node: Ast.Node.Index = 0;
4467 var nonfinal_nonexhaustive = false;
44674468 for (container_decl.ast.members) |member_node| {
44684469 const member = switch (node_tags[member_node]) {
44694470 .container_field_init => tree.containerFieldInit(member_node),
......@@ -4515,6 +4516,8 @@ fn containerDecl(
45154516 return astgen.failNode(member.ast.value_expr, "'_' is used to mark an enum as non-exhaustive and cannot be assigned a value", .{});
45164517 }
45174518 continue;
4519 } else if (nonexhaustive_node != 0) {
4520 nonfinal_nonexhaustive = true;
45184521 }
45194522 total_fields += 1;
45204523 if (member.ast.value_expr != 0) {
......@@ -4524,6 +4527,9 @@ fn containerDecl(
45244527 values += 1;
45254528 }
45264529 }
4530 if (nonfinal_nonexhaustive) {
4531 return astgen.failNode(nonexhaustive_node, "'_' field of non-exhaustive enum must be last", .{});
4532 }
45274533 break :blk .{
45284534 .total_fields = total_fields,
45294535 .values = values,
src/Sema.zig+109-69
......@@ -1707,7 +1707,7 @@ fn failWithModRemNegative(sema: *Sema, block: *Block, src: LazySrcLoc, lhs_ty: T
17071707}
17081708
17091709fn failWithExpectedOptionalType(sema: *Sema, block: *Block, src: LazySrcLoc, optional_ty: Type) CompileError {
1710 return sema.fail(block, src, "expected optional type, found {}", .{optional_ty.fmt(sema.mod)});
1710 return sema.fail(block, src, "expected optional type, found '{}'", .{optional_ty.fmt(sema.mod)});
17111711}
17121712
17131713fn failWithArrayInitNotSupported(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) CompileError {
......@@ -1844,7 +1844,7 @@ pub fn resolveAlign(
18441844 const alignment = @intCast(u32, alignment_big); // We coerce to u16 in the prev line.
18451845 if (alignment == 0) return sema.fail(block, src, "alignment must be >= 1", .{});
18461846 if (!std.math.isPowerOfTwo(alignment)) {
1847 return sema.fail(block, src, "alignment value {d} is not a power of two", .{
1847 return sema.fail(block, src, "alignment value '{d}' is not a power of two", .{
18481848 alignment,
18491849 });
18501850 }
......@@ -2376,6 +2376,12 @@ fn zirEnumDecl(
23762376 }
23772377 }
23782378
2379 if (small.nonexhaustive) {
2380 if (fields_len > 1 and std.math.log2_int(u64, fields_len) == enum_obj.tag_ty.bitSize(sema.mod.getTarget())) {
2381 return sema.fail(block, src, "non-exhaustive enum specifies every value", .{});
2382 }
2383 }
2384
23792385 try enum_obj.fields.ensureTotalCapacity(new_decl_arena_allocator, fields_len);
23802386 const any_values = for (sema.code.extra[body_end..][0..bit_bags_count]) |bag| {
23812387 if (bag != 0) break true;
......@@ -4540,6 +4546,7 @@ fn analyzeBlockBody(
45404546 // to emit a jump instruction to after the block when it encounters the break.
45414547 try parent_block.instructions.append(gpa, merges.block_inst);
45424548 const resolved_ty = try sema.resolvePeerTypes(parent_block, src, merges.results.items, .none);
4549 // TODO add note "missing else causes void value"
45434550
45444551 const type_src = src; // TODO: better source location
45454552 const valid_rt = try sema.validateRunTimeType(child_block, type_src, resolved_ty, false);
......@@ -4761,7 +4768,7 @@ fn zirSetAlignStack(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.Inst
47614768 const msg = msg: {
47624769 const msg = try sema.errMsg(block, src, "multiple @setAlignStack in the same function body", .{});
47634770 errdefer msg.destroy(sema.gpa);
4764 try sema.errNote(block, src, msg, "other instance here", .{});
4771 try sema.errNote(block, gop.value_ptr.src, msg, "other instance here", .{});
47654772 break :msg msg;
47664773 };
47674774 return sema.failWithOwnedErrorMsg(block, msg);
......@@ -6155,7 +6162,7 @@ fn zirErrorUnionType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr
61556162 const payload = try sema.resolveType(block, rhs_src, extra.rhs);
61566163
61576164 if (error_set.zigTypeTag() != .ErrorSet) {
6158 return sema.fail(block, lhs_src, "expected error set type, found {}", .{
6165 return sema.fail(block, lhs_src, "expected error set type, found '{}'", .{
61596166 error_set.fmt(sema.mod),
61606167 });
61616168 }
......@@ -6243,7 +6250,7 @@ fn zirIntToError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
62436250 if (try sema.resolveDefinedValue(block, operand_src, operand)) |value| {
62446251 const int = try sema.usizeCast(block, operand_src, value.toUnsignedInt(target));
62456252 if (int > sema.mod.global_error_set.count() or int == 0)
6246 return sema.fail(block, operand_src, "integer value {d} represents no error", .{int});
6253 return sema.fail(block, operand_src, "integer value '{d}' represents no error", .{int});
62476254 const payload = try sema.arena.create(Value.Payload.Error);
62486255 payload.* = .{
62496256 .base = .{ .tag = .@"error" },
......@@ -6288,9 +6295,9 @@ fn zirMergeErrorSets(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr
62886295 const lhs_ty = try sema.analyzeAsType(block, lhs_src, lhs);
62896296 const rhs_ty = try sema.analyzeAsType(block, rhs_src, rhs);
62906297 if (lhs_ty.zigTypeTag() != .ErrorSet)
6291 return sema.fail(block, lhs_src, "expected error set type, found {}", .{lhs_ty.fmt(sema.mod)});
6298 return sema.fail(block, lhs_src, "expected error set type, found '{}'", .{lhs_ty.fmt(sema.mod)});
62926299 if (rhs_ty.zigTypeTag() != .ErrorSet)
6293 return sema.fail(block, rhs_src, "expected error set type, found {}", .{rhs_ty.fmt(sema.mod)});
6300 return sema.fail(block, rhs_src, "expected error set type, found '{}'", .{rhs_ty.fmt(sema.mod)});
62946301
62956302 // Anything merged with anyerror is anyerror.
62966303 if (lhs_ty.tag() == .anyerror or rhs_ty.tag() == .anyerror) {
......@@ -6351,7 +6358,7 @@ fn zirEnumToInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
63516358 break :blk try sema.unionToTag(block, tag_ty, operand, operand_src);
63526359 },
63536360 else => {
6354 return sema.fail(block, operand_src, "expected enum or tagged union, found {}", .{
6361 return sema.fail(block, operand_src, "expected enum or tagged union, found '{}'", .{
63556362 operand_ty.fmt(sema.mod),
63566363 });
63576364 },
......@@ -6385,7 +6392,7 @@ fn zirIntToEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
63856392 const operand = try sema.resolveInst(extra.rhs);
63866393
63876394 if (dest_ty.zigTypeTag() != .Enum) {
6388 return sema.fail(block, dest_ty_src, "expected enum, found {}", .{dest_ty.fmt(sema.mod)});
6395 return sema.fail(block, dest_ty_src, "expected enum, found '{}'", .{dest_ty.fmt(sema.mod)});
63896396 }
63906397
63916398 if (try sema.resolveMaybeUndefVal(block, operand_src, operand)) |int_val| {
......@@ -6400,7 +6407,7 @@ fn zirIntToEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
64006407 const msg = try sema.errMsg(
64016408 block,
64026409 src,
6403 "enum '{}' has no tag with value {}",
6410 "enum '{}' has no tag with value '{}'",
64046411 .{ dest_ty.fmt(sema.mod), int_val.fmtValue(sema.typeOf(operand), sema.mod) },
64056412 );
64066413 errdefer msg.destroy(sema.gpa);
......@@ -6452,7 +6459,7 @@ fn analyzeOptionalPayloadPtr(
64526459
64536460 const opt_type = optional_ptr_ty.elemType();
64546461 if (opt_type.zigTypeTag() != .Optional) {
6455 return sema.fail(block, src, "expected optional type, found {}", .{opt_type.fmt(sema.mod)});
6462 return sema.fail(block, src, "expected optional type, found '{}'", .{opt_type.fmt(sema.mod)});
64566463 }
64576464
64586465 const child_type = try opt_type.optionalChildAlloc(sema.arena);
......@@ -6640,7 +6647,7 @@ fn analyzeErrUnionPayloadPtr(
66406647 assert(operand_ty.zigTypeTag() == .Pointer);
66416648
66426649 if (operand_ty.elemType().zigTypeTag() != .ErrorUnion) {
6643 return sema.fail(block, src, "expected error union type, found {}", .{
6650 return sema.fail(block, src, "expected error union type, found '{}'", .{
66446651 operand_ty.elemType().fmt(sema.mod),
66456652 });
66466653 }
......@@ -6739,7 +6746,7 @@ fn zirErrUnionCodePtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE
67396746 assert(operand_ty.zigTypeTag() == .Pointer);
67406747
67416748 if (operand_ty.elemType().zigTypeTag() != .ErrorUnion) {
6742 return sema.fail(block, src, "expected error union type, found {}", .{
6749 return sema.fail(block, src, "expected error union type, found '{}'", .{
67436750 operand_ty.elemType().fmt(sema.mod),
67446751 });
67456752 }
......@@ -7639,7 +7646,6 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
76397646 defer tracy.end();
76407647
76417648 const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
7642 const src = inst_data.src();
76437649 const dest_ty_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
76447650 const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
76457651 const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
......@@ -7674,7 +7680,7 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
76747680 return sema.addConstant(dest_ty, try operand_val.floatCast(sema.arena, dest_ty, target));
76757681 }
76767682 if (dest_is_comptime_float) {
7677 return sema.fail(block, src, "unable to cast runtime value to 'comptime_float'", .{});
7683 return sema.fail(block, operand_src, "unable to cast runtime value to 'comptime_float'", .{});
76787684 }
76797685 const src_bits = operand_ty.floatBits(target);
76807686 const dst_bits = dest_ty.floatBits(target);
......@@ -11664,8 +11670,8 @@ fn analyzeCmp(
1166411670 const instructions = &[_]Air.Inst.Ref{ lhs, rhs };
1166511671 const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{ .override = &[_]LazySrcLoc{ lhs_src, rhs_src } });
1166611672 if (!resolved_type.isSelfComparable(is_equality_cmp)) {
11667 return sema.fail(block, src, "{s} operator not allowed for type '{}'", .{
11668 @tagName(op), resolved_type.fmt(sema.mod),
11673 return sema.fail(block, src, "operator {s} not allowed for type '{}'", .{
11674 compareOperatorName(op), resolved_type.fmt(sema.mod),
1166911675 });
1167011676 }
1167111677 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
......@@ -11673,6 +11679,17 @@ fn analyzeCmp(
1167311679 return sema.cmpSelf(block, casted_lhs, casted_rhs, op, lhs_src, rhs_src);
1167411680}
1167511681
11682fn compareOperatorName(comp: std.math.CompareOperator) []const u8 {
11683 return switch (comp) {
11684 .lt => "<",
11685 .lte => "<=",
11686 .eq => "==",
11687 .gte => ">=",
11688 .gt => ">",
11689 .neq => "!=",
11690 };
11691}
11692
1167611693fn cmpSelf(
1167711694 sema: *Sema,
1167811695 block: *Block,
......@@ -14382,7 +14399,7 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
1438214399 };
1438314400 return sema.failWithOwnedErrorMsg(block, msg);
1438414401 },
14385 else => return sema.fail(block, operand_src, "expected enum or union; found {}", .{
14402 else => return sema.fail(block, operand_src, "expected enum or union; found '{}'", .{
1438614403 operand_ty.fmt(mod),
1438714404 }),
1438814405 };
......@@ -14392,8 +14409,8 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
1439214409 const field_index = enum_ty.enumTagFieldIndex(val, mod) orelse {
1439314410 const enum_decl = mod.declPtr(enum_decl_index);
1439414411 const msg = msg: {
14395 const msg = try sema.errMsg(block, src, "no field with value {} in enum '{s}'", .{
14396 casted_operand, enum_decl.name,
14412 const msg = try sema.errMsg(block, src, "no field with value '{}' in enum '{s}'", .{
14413 val.fmtValue(enum_ty, sema.mod), enum_decl.name,
1439714414 });
1439814415 errdefer msg.destroy(sema.gpa);
1439914416 try mod.errNoteNonLazy(enum_decl.srcLoc(), msg, "declared here", .{});
......@@ -14458,6 +14475,8 @@ fn zirReify(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I
1445814475 var buffer: Value.ToTypeBuffer = undefined;
1445914476 const child_ty = child_val.toType(&buffer);
1446014477
14478 try sema.checkVectorElemType(block, src, child_ty);
14479
1446114480 const ty = try Type.vector(sema.arena, len, try child_ty.copy(sema.arena));
1446214481 return sema.addType(ty);
1446314482 },
......@@ -15099,6 +15118,8 @@ fn zirFloatToInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
1509915118 if (try sema.resolveMaybeUndefVal(block, operand_src, operand)) |val| {
1510015119 const result_val = try sema.floatToInt(block, operand_src, val, operand_ty, dest_ty);
1510115120 return sema.addConstant(dest_ty, result_val);
15121 } else if (dest_ty.zigTypeTag() == .ComptimeInt) {
15122 return sema.failWithNeededComptime(block, operand_src);
1510215123 }
1510315124
1510415125 try sema.requireRuntimeBlock(block, operand_src);
......@@ -15121,6 +15142,8 @@ fn zirIntToFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
1512115142 const target = sema.mod.getTarget();
1512215143 const result_val = try val.intToFloat(sema.arena, operand_ty, dest_ty, target);
1512315144 return sema.addConstant(dest_ty, result_val);
15145 } else if (dest_ty.zigTypeTag() == .ComptimeFloat) {
15146 return sema.failWithNeededComptime(block, operand_src);
1512415147 }
1512515148
1512615149 try sema.requireRuntimeBlock(block, operand_src);
......@@ -15242,7 +15265,7 @@ fn zirErrSetCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat
1524215265 const msg = try sema.errMsg(
1524315266 block,
1524415267 src,
15245 "error.{s} not a member of error set '{}'",
15268 "'error.{s}' not a member of error set '{}'",
1524615269 .{ error_name, dest_ty.fmt(sema.mod) },
1524715270 );
1524815271 errdefer msg.destroy(sema.gpa);
......@@ -15633,22 +15656,29 @@ fn bitOffsetOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!u6
1563315656
1563415657 try sema.resolveTypeLayout(block, lhs_src, ty);
1563515658 if (ty.tag() != .@"struct") {
15636 return sema.fail(
15637 block,
15638 lhs_src,
15639 "expected struct type, found '{}'",
15640 .{ty.fmt(sema.mod)},
15641 );
15659 const msg = msg: {
15660 const msg = try sema.errMsg(block, lhs_src, "expected struct type, found '{}'", .{ty.fmt(sema.mod)});
15661 errdefer msg.destroy(sema.gpa);
15662 try sema.addDeclaredHereNote(msg, ty);
15663 break :msg msg;
15664 };
15665 return sema.failWithOwnedErrorMsg(block, msg);
1564215666 }
1564315667
1564415668 const fields = ty.structFields();
1564515669 const index = fields.getIndex(field_name) orelse {
15646 return sema.fail(
15647 block,
15648 rhs_src,
15649 "struct '{}' has no field '{s}'",
15650 .{ ty.fmt(sema.mod), field_name },
15651 );
15670 const msg = msg: {
15671 const msg = try sema.errMsg(
15672 block,
15673 rhs_src,
15674 "struct '{}' has no field '{s}'",
15675 .{ ty.fmt(sema.mod), field_name },
15676 );
15677 errdefer msg.destroy(sema.gpa);
15678 try sema.addDeclaredHereNote(msg, ty);
15679 break :msg msg;
15680 };
15681 return sema.failWithOwnedErrorMsg(block, msg);
1565215682 };
1565315683
1565415684 switch (ty.containerLayout()) {
......@@ -15701,7 +15731,7 @@ fn checkPtrOperand(
1570115731 const msg = try sema.errMsg(
1570215732 block,
1570315733 ty_src,
15704 "expected pointer, found {}",
15734 "expected pointer, found '{}'",
1570515735 .{ty.fmt(sema.mod)},
1570615736 );
1570715737 errdefer msg.destroy(sema.gpa);
......@@ -15817,7 +15847,7 @@ fn checkAtomicPtrOperand(
1581715847 error.BadType => return sema.fail(
1581815848 block,
1581915849 elem_ty_src,
15820 "expected bool, integer, float, enum, or pointer type; found {}",
15850 "expected bool, integer, float, enum, or pointer type; found '{}'",
1582115851 .{elem_ty.fmt(sema.mod)},
1582215852 ),
1582315853 };
......@@ -16026,7 +16056,7 @@ fn checkVectorizableBinaryOperands(
1602616056 }
1602716057 } else {
1602816058 const msg = msg: {
16029 const msg = try sema.errMsg(block, src, "mixed scalar and vector operands: {} and {}", .{
16059 const msg = try sema.errMsg(block, src, "mixed scalar and vector operands: '{}' and '{}'", .{
1603016060 lhs_ty.fmt(sema.mod), rhs_ty.fmt(sema.mod),
1603116061 });
1603216062 errdefer msg.destroy(sema.gpa);
......@@ -16069,6 +16099,10 @@ fn resolveExportOptions(
1606916099 const visibility_val = try sema.resolveConstValue(block, src, visibility_operand);
1607016100 const visibility = visibility_val.toEnum(std.builtin.SymbolVisibility);
1607116101
16102 if (name.len < 1) {
16103 return sema.fail(block, src, "exported symbol name cannot be empty", .{});
16104 }
16105
1607216106 if (visibility != .default and linkage == .Internal) {
1607316107 return sema.fail(block, src, "symbol '{s}' exported with internal linkage has non-default visibility {s}", .{
1607416108 name, @tagName(visibility),
......@@ -16247,7 +16281,7 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
1624716281 const target = sema.mod.getTarget();
1624816282
1624916283 if (operand_ty.zigTypeTag() != .Vector) {
16250 return sema.fail(block, operand_src, "expected vector, found {}", .{operand_ty.fmt(sema.mod)});
16284 return sema.fail(block, operand_src, "expected vector, found '{}'", .{operand_ty.fmt(sema.mod)});
1625116285 }
1625216286
1625316287 const scalar_ty = operand_ty.childType();
......@@ -16256,13 +16290,13 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
1625616290 switch (operation) {
1625716291 .And, .Or, .Xor => switch (scalar_ty.zigTypeTag()) {
1625816292 .Int, .Bool => {},
16259 else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or boolean operand; found {}", .{
16293 else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or boolean operand; found '{}'", .{
1626016294 @tagName(operation), operand_ty.fmt(sema.mod),
1626116295 }),
1626216296 },
1626316297 .Min, .Max, .Add, .Mul => switch (scalar_ty.zigTypeTag()) {
1626416298 .Int, .Float => {},
16265 else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or float operand; found {}", .{
16299 else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or float operand; found '{}'", .{
1626616300 @tagName(operation), operand_ty.fmt(sema.mod),
1626716301 }),
1626816302 },
......@@ -16321,7 +16355,7 @@ fn zirShuffle(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
1632116355
1632216356 const mask_len = switch (sema.typeOf(mask).zigTypeTag()) {
1632316357 .Array, .Vector => sema.typeOf(mask).arrayLen(),
16324 else => return sema.fail(block, mask_src, "expected vector or array, found {}", .{sema.typeOf(mask).fmt(sema.mod)}),
16358 else => return sema.fail(block, mask_src, "expected vector or array, found '{}'", .{sema.typeOf(mask).fmt(sema.mod)}),
1632516359 };
1632616360 mask_ty = try Type.Tag.vector.create(sema.arena, .{
1632716361 .len = mask_len,
......@@ -16356,7 +16390,7 @@ fn analyzeShuffle(
1635616390 var maybe_a_len = switch (sema.typeOf(a).zigTypeTag()) {
1635716391 .Array, .Vector => sema.typeOf(a).arrayLen(),
1635816392 .Undefined => null,
16359 else => return sema.fail(block, a_src, "expected vector or array with element type {}, found {}", .{
16393 else => return sema.fail(block, a_src, "expected vector or array with element type '{}', found '{}'", .{
1636016394 elem_ty.fmt(sema.mod),
1636116395 sema.typeOf(a).fmt(sema.mod),
1636216396 }),
......@@ -16364,7 +16398,7 @@ fn analyzeShuffle(
1636416398 var maybe_b_len = switch (sema.typeOf(b).zigTypeTag()) {
1636516399 .Array, .Vector => sema.typeOf(b).arrayLen(),
1636616400 .Undefined => null,
16367 else => return sema.fail(block, b_src, "expected vector or array with element type {}, found {}", .{
16401 else => return sema.fail(block, b_src, "expected vector or array with element type '{}', found '{}'", .{
1636816402 elem_ty.fmt(sema.mod),
1636916403 sema.typeOf(b).fmt(sema.mod),
1637016404 }),
......@@ -16412,7 +16446,7 @@ fn analyzeShuffle(
1641216446 const msg = try sema.errMsg(block, mask_src, "mask index {d} has out-of-bounds selection", .{i});
1641316447 errdefer msg.destroy(sema.gpa);
1641416448
16415 try sema.errNote(block, operand_info[chosen][1], msg, "selected index {d} out of bounds of {}", .{
16449 try sema.errNote(block, operand_info[chosen][1], msg, "selected index {d} out of bounds of '{}'", .{
1641616450 unsigned,
1641716451 operand_info[chosen][2].fmt(sema.mod),
1641816452 });
......@@ -16881,7 +16915,7 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
1688116915
1688216916 const args_ty = sema.typeOf(args);
1688316917 if (!args_ty.isTuple() and args_ty.tag() != .empty_struct_literal) {
16884 return sema.fail(block, args_src, "expected a tuple, found {}", .{args_ty.fmt(sema.mod)});
16918 return sema.fail(block, args_src, "expected a tuple, found '{}'", .{args_ty.fmt(sema.mod)});
1688516919 }
1688616920
1688716921 var resolved_args: []Air.Inst.Ref = undefined;
......@@ -18217,9 +18251,15 @@ fn fieldVal(
1821718251 if (payload.data.names.getEntry(field_name)) |entry| {
1821818252 break :blk entry.key_ptr.*;
1821918253 }
18220 return sema.fail(block, src, "no error named '{s}' in '{}'", .{
18221 field_name, child_type.fmt(sema.mod),
18222 });
18254 const msg = msg: {
18255 const msg = try sema.errMsg(block, src, "no error named '{s}' in '{}'", .{
18256 field_name, child_type.fmt(sema.mod),
18257 });
18258 errdefer msg.destroy(sema.gpa);
18259 try sema.addDeclaredHereNote(msg, child_type);
18260 break :msg msg;
18261 };
18262 return sema.failWithOwnedErrorMsg(block, msg);
1822318263 } else (try sema.mod.getErrorValue(field_name)).key;
1822418264
1822518265 return sema.addConstant(
......@@ -18894,12 +18934,12 @@ fn tupleFieldIndex(
1889418934 field_name_src: LazySrcLoc,
1889518935) CompileError!u32 {
1889618936 const field_index = std.fmt.parseUnsigned(u32, field_name, 10) catch |err| {
18897 return sema.fail(block, field_name_src, "tuple {} has no such field '{s}': {s}", .{
18937 return sema.fail(block, field_name_src, "tuple '{}' has no such field '{s}': {s}", .{
1889818938 tuple_ty.fmt(sema.mod), field_name, @errorName(err),
1889918939 });
1890018940 };
1890118941 if (field_index >= tuple_ty.structFieldCount()) {
18902 return sema.fail(block, field_name_src, "tuple {} has no such field '{s}'", .{
18942 return sema.fail(block, field_name_src, "tuple '{}' has no such field '{s}'", .{
1890318943 tuple_ty.fmt(sema.mod), field_name,
1890418944 });
1890518945 }
......@@ -19809,7 +19849,7 @@ fn coerce(
1980919849 return sema.fail(
1981019850 block,
1981119851 inst_src,
19812 "fractional component prevents float value {} from coercion to type '{}'",
19852 "fractional component prevents float value '{}' from coercion to type '{}'",
1981319853 .{ val.fmtValue(inst_ty, sema.mod), dest_ty.fmt(sema.mod) },
1981419854 );
1981519855 }
......@@ -19820,7 +19860,7 @@ fn coerce(
1982019860 if (try sema.resolveDefinedValue(block, inst_src, inst)) |val| {
1982119861 // comptime known integer to other number
1982219862 if (!(try sema.intFitsInType(block, inst_src, val, dest_ty))) {
19823 return sema.fail(block, inst_src, "type {} cannot represent integer value {}", .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) });
19863 return sema.fail(block, inst_src, "type '{}' cannot represent integer value '{}'", .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) });
1982419864 }
1982519865 return try sema.addConstant(dest_ty, val);
1982619866 }
......@@ -19854,7 +19894,7 @@ fn coerce(
1985419894 return sema.fail(
1985519895 block,
1985619896 inst_src,
19857 "type {} cannot represent float value {}",
19897 "type '{}' cannot represent float value '{}'",
1985819898 .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) },
1985919899 );
1986019900 }
......@@ -19878,7 +19918,7 @@ fn coerce(
1987819918 // return sema.fail(
1987919919 // block,
1988019920 // inst_src,
19881 // "type {} cannot represent integer value {}",
19921 // "type '{}' cannot represent integer value '{}'",
1988219922 // .{ dest_ty.fmt(sema.mod), val },
1988319923 // );
1988419924 //}
......@@ -20021,7 +20061,7 @@ fn coerce(
2002120061 return sema.addConstUndef(dest_ty);
2002220062 }
2002320063
20024 return sema.fail(block, inst_src, "expected {}, found {}", .{ dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod) });
20064 return sema.fail(block, inst_src, "expected type '{}', found '{}'", .{ dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod) });
2002520065}
2002620066
2002720067const InMemoryCoercionResult = enum {
......@@ -21541,7 +21581,7 @@ fn coerceEnumToUnion(
2154121581
2154221582 const tag_ty = union_ty.unionTagType() orelse {
2154321583 const msg = msg: {
21544 const msg = try sema.errMsg(block, inst_src, "expected {}, found {}", .{
21584 const msg = try sema.errMsg(block, inst_src, "expected type '{}', found '{}'", .{
2154521585 union_ty.fmt(sema.mod), inst_ty.fmt(sema.mod),
2154621586 });
2154721587 errdefer msg.destroy(sema.gpa);
......@@ -21557,7 +21597,7 @@ fn coerceEnumToUnion(
2155721597 const union_obj = union_ty.cast(Type.Payload.Union).?.data;
2155821598 const field_index = union_obj.tag_ty.enumTagFieldIndex(val, sema.mod) orelse {
2155921599 const msg = msg: {
21560 const msg = try sema.errMsg(block, inst_src, "union {} has no tag with value {}", .{
21600 const msg = try sema.errMsg(block, inst_src, "union '{}' has no tag with value '{}'", .{
2156121601 union_ty.fmt(sema.mod), val.fmtValue(tag_ty, sema.mod),
2156221602 });
2156321603 errdefer msg.destroy(sema.gpa);
......@@ -21593,7 +21633,7 @@ fn coerceEnumToUnion(
2159321633
2159421634 if (tag_ty.isNonexhaustiveEnum()) {
2159521635 const msg = msg: {
21596 const msg = try sema.errMsg(block, inst_src, "runtime coercion to union {} from non-exhaustive enum", .{
21636 const msg = try sema.errMsg(block, inst_src, "runtime coercion to union '{}' from non-exhaustive enum", .{
2159721637 union_ty.fmt(sema.mod),
2159821638 });
2159921639 errdefer msg.destroy(sema.gpa);
......@@ -21710,7 +21750,7 @@ fn coerceArrayLike(
2171021750
2171121751 if (dest_len != inst_len) {
2171221752 const msg = msg: {
21713 const msg = try sema.errMsg(block, inst_src, "expected {}, found {}", .{
21753 const msg = try sema.errMsg(block, inst_src, "expected type '{}', found '{}'", .{
2171421754 dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod),
2171521755 });
2171621756 errdefer msg.destroy(sema.gpa);
......@@ -21781,7 +21821,7 @@ fn coerceTupleToArray(
2178121821
2178221822 if (dest_len != inst_len) {
2178321823 const msg = msg: {
21784 const msg = try sema.errMsg(block, inst_src, "expected {}, found {}", .{
21824 const msg = try sema.errMsg(block, inst_src, "expected type '{}', found '{}'", .{
2178521825 dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod),
2178621826 });
2178721827 errdefer msg.destroy(sema.gpa);
......@@ -23553,7 +23593,7 @@ fn resolveStructLayout(
2355323593 switch (struct_obj.status) {
2355423594 .none, .have_field_types => {},
2355523595 .field_types_wip, .layout_wip => {
23556 return sema.fail(block, src, "struct {} depends on itself", .{ty.fmt(sema.mod)});
23596 return sema.fail(block, src, "struct '{}' depends on itself", .{ty.fmt(sema.mod)});
2355723597 },
2355823598 .have_layout, .fully_resolved_wip, .fully_resolved => return,
2355923599 }
......@@ -23584,7 +23624,7 @@ fn resolveUnionLayout(
2358423624 switch (union_obj.status) {
2358523625 .none, .have_field_types => {},
2358623626 .field_types_wip, .layout_wip => {
23587 return sema.fail(block, src, "union {} depends on itself", .{ty.fmt(sema.mod)});
23627 return sema.fail(block, src, "union '{}' depends on itself", .{ty.fmt(sema.mod)});
2358823628 },
2358923629 .have_layout, .fully_resolved_wip, .fully_resolved => return,
2359023630 }
......@@ -23752,7 +23792,7 @@ fn resolveTypeFieldsStruct(
2375223792 switch (struct_obj.status) {
2375323793 .none => {},
2375423794 .field_types_wip => {
23755 return sema.fail(block, src, "struct {} depends on itself", .{ty.fmt(sema.mod)});
23795 return sema.fail(block, src, "struct '{}' depends on itself", .{ty.fmt(sema.mod)});
2375623796 },
2375723797 .have_field_types,
2375823798 .have_layout,
......@@ -23782,7 +23822,7 @@ fn resolveTypeFieldsUnion(
2378223822 switch (union_obj.status) {
2378323823 .none => {},
2378423824 .field_types_wip => {
23785 return sema.fail(block, src, "union {} depends on itself", .{ty.fmt(sema.mod)});
23825 return sema.fail(block, src, "union '{}' depends on itself", .{ty.fmt(sema.mod)});
2378623826 },
2378723827 .have_field_types,
2378823828 .have_layout,
......@@ -25005,7 +25045,7 @@ fn pointerDeref(sema: *Sema, block: *Block, src: LazySrcLoc, ptr_val: Value, ptr
2500525045 // The type is not in-memory coercible or the direct dereference failed, so it must
2500625046 // be bitcast according to the pointer type we are performing the load through.
2500725047 if (!load_ty.hasWellDefinedLayout())
25008 return sema.fail(block, src, "comptime dereference requires {} to have a well-defined layout, but it does not.", .{load_ty.fmt(sema.mod)});
25048 return sema.fail(block, src, "comptime dereference requires '{}' to have a well-defined layout, but it does not.", .{load_ty.fmt(sema.mod)});
2500925049
2501025050 const load_sz = try sema.typeAbiSize(block, src, load_ty);
2501125051
......@@ -25020,11 +25060,11 @@ fn pointerDeref(sema: *Sema, block: *Block, src: LazySrcLoc, ptr_val: Value, ptr
2502025060 if (deref.ty_without_well_defined_layout) |bad_ty| {
2502125061 // We got no parent for bit-casting, or the parent we got was too small. Either way, the problem
2502225062 // is that some type we encountered when de-referencing does not have a well-defined layout.
25023 return sema.fail(block, src, "comptime dereference requires {} to have a well-defined layout, but it does not.", .{bad_ty.fmt(sema.mod)});
25063 return sema.fail(block, src, "comptime dereference requires '{}' to have a well-defined layout, but it does not.", .{bad_ty.fmt(sema.mod)});
2502425064 } else {
2502525065 // If all encountered types had well-defined layouts, the parent is the root decl and it just
2502625066 // wasn't big enough for the load.
25027 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) });
25067 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) });
2502825068 }
2502925069}
2503025070
......@@ -25032,7 +25072,7 @@ fn pointerDeref(sema: *Sema, block: *Block, src: LazySrcLoc, ptr_val: Value, ptr
2503225072/// is too big to fit.
2503325073fn usizeCast(sema: *Sema, block: *Block, src: LazySrcLoc, int: u64) CompileError!usize {
2503425074 if (@bitSizeOf(u64) <= @bitSizeOf(usize)) return int;
25035 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});
25075 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});
2503625076}
2503725077
2503825078/// For pointer-like optionals, it returns the pointer type. For pointers,
......@@ -25387,7 +25427,7 @@ fn anonStructFieldIndex(
2538725427 return @intCast(u32, i);
2538825428 }
2538925429 }
25390 return sema.fail(block, field_src, "anonymous struct {} has no such field '{s}'", .{
25430 return sema.fail(block, field_src, "anonymous struct '{}' has no such field '{s}'", .{
2539125431 struct_ty.fmt(sema.mod), field_name,
2539225432 });
2539325433}
......@@ -25768,7 +25808,7 @@ fn floatToIntScalar(
2576825808 try Value.Tag.int_big_positive.create(sema.arena, result_limbs);
2576925809
2577025810 if (!(try sema.intFitsInType(block, src, result, int_ty))) {
25771 return sema.fail(block, src, "float value {} cannot be stored in integer type '{}'", .{
25811 return sema.fail(block, src, "float value '{}' cannot be stored in integer type '{}'", .{
2577225812 val.fmtValue(float_ty, sema.mod), int_ty.fmt(sema.mod),
2577325813 });
2577425814 }
src/TypedValue.zig+5-5
......@@ -409,11 +409,11 @@ pub fn print(
409409 }
410410 return writer.writeAll(" }");
411411 },
412 .float_16 => return writer.print("{}", .{val.castTag(.float_16).?.data}),
413 .float_32 => return writer.print("{}", .{val.castTag(.float_32).?.data}),
414 .float_64 => return writer.print("{}", .{val.castTag(.float_64).?.data}),
415 .float_80 => return writer.print("{}", .{val.castTag(.float_80).?.data}),
416 .float_128 => return writer.print("{}", .{val.castTag(.float_128).?.data}),
412 .float_16 => return writer.print("{d}", .{val.castTag(.float_16).?.data}),
413 .float_32 => return writer.print("{d}", .{val.castTag(.float_32).?.data}),
414 .float_64 => return writer.print("{d}", .{val.castTag(.float_64).?.data}),
415 .float_80 => return writer.print("{d}", .{@floatCast(f64, val.castTag(.float_80).?.data)}),
416 .float_128 => return writer.print("{d}", .{@floatCast(f64, val.castTag(.float_128).?.data)}),
417417 .@"error" => return writer.print("error.{s}", .{val.castTag(.@"error").?.data.name}),
418418 .eu_payload => {
419419 val = val.castTag(.eu_payload).?.data;
test/cases/aarch64-macos/hello_world_with_updates.1.zig+1-1
......@@ -2,4 +2,4 @@ pub export fn main() noreturn {}
22
33// error
44//
5// :1:32: error: expected noreturn, found void
5// :1:32: error: expected type 'noreturn', found 'void'
test/cases/compile_errors/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig created+16
......@@ -0,0 +1,16 @@
1export fn f1(x: u32) u32 {
2 const y = -%x;
3 return -y;
4}
5const V = @import("std").meta.Vector;
6export fn f2(x: V(4, u32)) V(4, u32) {
7 const y = -%x;
8 return -y;
9}
10
11// error
12// backend=stage2
13// target=native
14//
15// :3:12: error: negation of type 'u32'
16// :8:12: error: negation of type '@Vector(4, u32)'
test/cases/compile_errors/Issue_6823_dont_allow_._to_be_followed_by_.zig created+10
......@@ -0,0 +1,10 @@
1fn foo() void {
2 var sequence = "repeat".*** 10;
3 _ = sequence;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:28: error: '.*' cannot be followed by '*'. Are you missing a space?
test/cases/compile_errors/access_invalid_typeInfo_decl.zig created+11
......@@ -0,0 +1,11 @@
1const A = B;
2test "Crash" {
3 _ = @typeInfo(@This()).Struct.decls[0];
4}
5
6// error
7// backend=stage2
8// target=native
9// is_test=1
10//
11// :1:11: error: use of undeclared identifier 'B'
test/cases/compile_errors/access_non-existent_member_of_error_set.zig created+12
......@@ -0,0 +1,12 @@
1const Foo = error{A};
2comptime {
3 const z = Foo.Bar;
4 _ = z;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:18: error: no error named 'Bar' in 'error{A}'
12// :1:13: note: error set declared here
test/cases/compile_errors/add_assign_on_undefined_value.zig created+10
......@@ -0,0 +1,10 @@
1comptime {
2 var a: i64 = undefined;
3 a += a;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:10: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/add_on_undefined_value.zig created+10
......@@ -0,0 +1,10 @@
1comptime {
2 var a: i64 = undefined;
3 _ = a + a;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:13: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/add_overflow_in_function_evaluation.zig created+13
......@@ -0,0 +1,13 @@
1const y = add(65530, 10);
2fn add(a: u16, b: u16) u16 {
3 return a + b;
4}
5
6export fn entry() usize { return @sizeOf(@TypeOf(y)); }
7
8// error
9// backend=stage2
10// target=native
11//
12// :3:14: error: overflow of integer type 'u16' with value '65540'
13// :1:14: note: called from here
test/cases/compile_errors/addition_with_non_numbers.zig created+12
......@@ -0,0 +1,12 @@
1const Foo = struct {
2 field: i32,
3};
4const x = Foo {.field = 1} + Foo {.field = 2};
5
6export fn entry() usize { return @sizeOf(@TypeOf(x)); }
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:28: error: invalid operands to binary expression: 'Struct' and 'Struct'
test/cases/compile_errors/address_of_number_literal.zig created+10
......@@ -0,0 +1,10 @@
1const x = 3;
2const y = &x;
3fn foo() *const i32 { return y; }
4export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:30: error: expected type '*const i32', found '*const comptime_int'
test/cases/compile_errors/alignCast_expects_pointer_or_slice.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 @alignCast(4, @as(u32, 3));
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:19: error: expected pointer type, found 'u32'
test/cases/compile_errors/alignment_of_enum_field_specified.zig created+14
......@@ -0,0 +1,14 @@
1const Number = enum {
2 a,
3 b align(i32),
4};
5export fn entry1() void {
6 var x: Number = undefined;
7 _ = x;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :3:7: error: expected ',' after field
test/cases/compile_errors/ambiguous_decl_reference.zig created+21
......@@ -0,0 +1,21 @@
1fn foo() void {}
2fn bar() void {
3 const S = struct {
4 fn baz() void {
5 foo();
6 }
7 fn foo() void {}
8 };
9 S.baz();
10}
11export fn entry() void {
12 bar();
13}
14
15// error
16// backend=stage2
17// target=native
18//
19// :5:13: error: ambiguous reference
20// :7:9: note: declared here
21// :1:1: note: also declared here
test/cases/compile_errors/any_typed_null_to_any_typed_optional.zig created+11
......@@ -0,0 +1,11 @@
1pub fn main() void {
2 var a: ?*anyopaque = undefined;
3 a = @as(?usize, null);
4}
5
6// error
7// output_mode=Exe
8// backend=stage2,llvm
9// target=x86_64-linux,x86_64-macos
10//
11// :3:21: error: expected type '*anyopaque', found '?usize'
test/cases/compile_errors/array_access_of_undeclared_identifier.zig created+9
......@@ -0,0 +1,9 @@
1export fn f() void {
2 i[i] = i[i];
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: use of undeclared identifier 'i'
test/cases/compile_errors/array_concatenation_with_wrong_type.zig created+11
......@@ -0,0 +1,11 @@
1const src = "aoeu";
2const derp: usize = 1234;
3const a = derp ++ "foo";
4
5export fn entry() usize { return @sizeOf(@TypeOf(a)); }
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:11: error: expected indexable; found 'usize'
test/cases/compile_errors/asm_at_compile_time.zig created+17
......@@ -0,0 +1,17 @@
1comptime {
2 doSomeAsm();
3}
4
5fn doSomeAsm() void {
6 asm volatile (
7 \\.globl aoeu;
8 \\.type aoeu, @function;
9 \\.set aoeu, derp;
10 );
11}
12
13// error
14// backend=llvm
15// target=native
16//
17// :6:5: error: unable to evaluate constant expression
test/cases/compile_errors/assign_null_to_non-optional_pointer.zig created+9
......@@ -0,0 +1,9 @@
1const a: *u8 = null;
2
3export fn entry() usize { return @sizeOf(@TypeOf(a)); }
4
5// error
6// backend=stage2
7// target=native
8//
9// :1:16: error: expected type '*u8', found '@TypeOf(null)'
test/cases/compile_errors/assign_through_constant_pointer.zig created+10
......@@ -0,0 +1,10 @@
1export fn f() void {
2 var cstr = "Hat";
3 cstr[0] = 'W';
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:13: error: cannot assign to constant
test/cases/compile_errors/assign_through_constant_slice.zig created+10
......@@ -0,0 +1,10 @@
1export fn f() void {
2 var cstr: []const u8 = "Hat";
3 cstr[0] = 'W';
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:13: error: cannot assign to constant
test/cases/compile_errors/assign_to_constant_field.zig created+13
......@@ -0,0 +1,13 @@
1const Foo = struct {
2 field: i32,
3};
4export fn derp() void {
5 const f = Foo {.field = 1234,};
6 f.field = 0;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :6:15: error: cannot assign to constant
test/cases/compile_errors/assign_to_constant_variable.zig created+10
......@@ -0,0 +1,10 @@
1export fn f() void {
2 const a = 3;
3 a = 4;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:9: error: cannot assign to constant
test/cases/compile_errors/assign_too_big_number_to_u16.zig created+10
......@@ -0,0 +1,10 @@
1export fn foo() void {
2 var vga_mem: u16 = 0xB8000;
3 _ = vga_mem;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:24: error: type 'u16' cannot represent integer value '753664'
test/cases/compile_errors/assign_unreachable.zig created+11
......@@ -0,0 +1,11 @@
1export fn f() void {
2 const a = return;
3 _ = a;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:5: error: unreachable code
11// :2:15: note: control flow is diverted here
test/cases/compile_errors/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var x: u32 = 0;
3 @atomicStore(u32, &x, 1, .Acquire);
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:31: error: @atomicStore atomic ordering must not be Acquire or AcqRel
test/cases/compile_errors/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig created+11
......@@ -0,0 +1,11 @@
1const AtomicOrder = @import("std").builtin.AtomicOrder;
2export fn f() void {
3 var x: i32 = 1234;
4 while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.Monotonic, AtomicOrder.SeqCst)) {}
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :4:81: error: failure atomic ordering must be no stricter than success
test/cases/compile_errors/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig created+11
......@@ -0,0 +1,11 @@
1const AtomicOrder = @import("std").builtin.AtomicOrder;
2export fn f() void {
3 var x: i32 = 1234;
4 while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.Unordered, AtomicOrder.Unordered)) {}
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :4:58: error: success atomic ordering must be Monotonic or stricter
test/cases/compile_errors/atomic_orderings_of_fence_Acquire_or_stricter.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 @fence(.Monotonic);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:13: error: atomic ordering must be Acquire or stricter
test/cases/compile_errors/atomicrmw_with_bool_op_not_.Xchg.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var x = false;
3 _ = @atomicRmw(bool, &x, .Add, true, .SeqCst);
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:31: error: @atomicRmw with bool only allowed with .Xchg
test/cases/compile_errors/atomicrmw_with_enum_op_not_.Xchg.zig created+16
......@@ -0,0 +1,16 @@
1export fn entry() void {
2 const E = enum(u8) {
3 a,
4 b,
5 c,
6 d,
7 };
8 var x: E = .a;
9 _ = @atomicRmw(E, &x, .Add, .b, .SeqCst);
10}
11
12// error
13// backend=stage2
14// target=native
15//
16// :9:28: error: @atomicRmw with enum only allowed with .Xchg
test/cases/compile_errors/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var x: f32 = 0;
3 _ = @atomicRmw(f32, &x, .And, 2, .SeqCst);
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:30: error: @atomicRmw with float only allowed with .Xchg, .Add, and .Sub
test/cases/compile_errors/attempt_to_cast_enum_literal_to_error.zig created+11
......@@ -0,0 +1,11 @@
1export fn entry() void {
2 switch (error.Hi) {
3 .Hi => {},
4 }
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:10: error: expected type 'error{Hi}', found '@TypeOf(.enum_literal)'
test/cases/compile_errors/attempt_to_close_over_comptime_variable_from_outer_scope.zig created+14
......@@ -0,0 +1,14 @@
1fn SimpleList(comptime L: usize) type {
2 var T = u8;
3 return struct {
4 array: [L]T,
5 };
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:19: error: mutable 'T' not accessible from here
13// :2:9: note: declared mutable here
14// :3:12: note: crosses namespace boundary here
test/cases/compile_errors/attempt_to_create_17_bit_float_type.zig created+10
......@@ -0,0 +1,10 @@
1const builtin = @import("std").builtin;
2comptime {
3 _ = @Type(.{ .Float = .{ .bits = 17 } });
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:9: error: 17-bit float unsupported
test/cases/compile_errors/attempted_double_ampersand.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry(a: bool, b: bool) i32 {
2 if (a && b) {
3 return 1234;
4 }
5 return 5678;
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :2:11: error: ambiguous use of '&&'; use 'and' for logical AND, or change whitespace to ' & &' for bitwise AND
test/cases/compile_errors/attempted_double_pipe_on_boolean_values.zig created+13
......@@ -0,0 +1,13 @@
1export fn entry(a: bool, b: bool) i32 {
2 if (a || b) {
3 return 1234;
4 }
5 return 5678;
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :2:9: error: expected error set type, found 'bool'
13// :2:11: note: '||' merges error sets; 'or' performs boolean OR
test/cases/compile_errors/attempted_implicit_cast_from_T_to_slice_const_T.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const x: [*]const bool = true;
3 _ = x;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:30: error: expected type '[*]const bool', found 'bool'
test/cases/compile_errors/attempted_implicit_cast_from_const_T_to_sliceT.zig created+11
......@@ -0,0 +1,11 @@
1export fn entry() void {
2 const u: u32 = 42;
3 const x: []u32 = &u;
4 _ = x;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:22: error: expected type '[]u32', found '*const u32'
test/cases/compile_errors/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig created+17
......@@ -0,0 +1,17 @@
1export fn entry() void {
2 const BlockKind = u32;
3
4 const Block = struct {
5 kind: BlockKind,
6 };
7
8 bogus;
9
10 _ = Block;
11}
12
13// error
14// backend=stage2
15// target=native
16//
17// :8:5: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/bad_import.zig created+7
......@@ -0,0 +1,7 @@
1const bogus = @import("bogus-does-not-exist.zig",);
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:23: error: unable to load '${DIR}bogus-does-not-exist.zig': FileNotFound
test/cases/compile_errors/bad_splat_type.zig created+11
......@@ -0,0 +1,11 @@
1export fn entry() void {
2 const c = 4;
3 var v = @splat(4, c);
4 _ = v;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:23: error: expected integer, float, bool, or pointer for the vector element type; found 'comptime_int'
test/cases/compile_errors/binary_OR_operator_on_error_sets.zig created+12
......@@ -0,0 +1,12 @@
1pub const A = error.A;
2pub const AB = A | error.B;
3export fn entry() void {
4 var x: AB = undefined;
5 _ = x;
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :2:18: error: invalid operands to binary bitwise expression: 'ErrorSet' and 'ErrorSet'
test/cases/compile_errors/binary_not_on_number_literal.zig created+11
......@@ -0,0 +1,11 @@
1const TINY_QUANTUM_SHIFT = 4;
2const TINY_QUANTUM_SIZE = 1 << TINY_QUANTUM_SHIFT;
3var block_aligned_stuff: usize = (4 + TINY_QUANTUM_SIZE) & ~(TINY_QUANTUM_SIZE - 1);
4
5export fn entry() usize { return @sizeOf(@TypeOf(block_aligned_stuff)); }
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:60: error: unable to perform binary not operation on type 'comptime_int'
test/cases/compile_errors/bitCast_same_size_but_bit_count_mismatch.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry(byte: u8) void {
2 var oops = @bitCast(u7, byte);
3 _ = oops;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:29: error: @bitCast size mismatch: destination type 'u7' has 7 bits but source type 'u8' has 8 bits
test/cases/compile_errors/bitCast_with_different_sizes_inside_an_expression.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var foo = (@bitCast(u8, @as(f32, 1.0)) == 0xf);
3 _ = foo;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:29: error: @bitCast size mismatch: destination type 'u8' has 8 bits but source type 'f32' has 32 bits
test/cases/compile_errors/bit_shifting_only_works_on_integer_types.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const x = &@as(u8, 1) << 10;
3 _ = x;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:15: error: bit shifting operation expected integer type, found '*const u8'
test/cases/compile_errors/bogus_method_call_on_slice.zig created+11
......@@ -0,0 +1,11 @@
1var self = "aoeu";
2fn f(m: []const u8) void {
3 m.copy(u8, self[0..], m);
4}
5export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:6: error: type '[]const u8' has no field or member function named 'copy'
test/cases/compile_errors/branch_on_undefined_value.zig created+9
......@@ -0,0 +1,9 @@
1const x = if (undefined) true else false;
2
3export fn entry() usize { return @sizeOf(@TypeOf(x)); }
4
5// error
6// backend=stage2
7// target=native
8//
9// :1:15: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/call_assigned_to_constant.zig created+24
......@@ -0,0 +1,24 @@
1const Foo = struct {
2 x: i32,
3};
4fn foo() Foo {
5 return .{ .x = 42 };
6}
7fn bar(val: anytype) Foo {
8 return .{ .x = val };
9}
10export fn entry() void {
11 const baz: Foo = undefined;
12 baz = foo();
13}
14export fn entry1() void {
15 const baz: Foo = undefined;
16 baz = bar(42);
17}
18
19// error
20// backend=stage2
21// target=native
22//
23// :12:14: error: cannot assign to constant
24// :16:14: error: cannot assign to constant
test/cases/compile_errors/calling_var_args_extern_function_passing_array_instead_of_pointer.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 foo("hello".*,);
3}
4pub extern fn foo(format: *const u8, ...) void;
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:8: error: expected type '*const u8', found '[5:0]u8'
test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig created+15
......@@ -0,0 +1,15 @@
1const Foo = enum {
2 a,
3 b,
4};
5export fn entry() void {
6 const x: Foo = .c;
7 _ = x;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :6:21: error: enum 'tmp.Foo' has no field named 'c'
15// :1:13: note: enum declared here
test/cases/compile_errors/cast_negative_integer_literal_to_usize.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const x = @as(usize, -10);
3 _ = x;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:26: error: type 'usize' cannot represent integer value '-10'
test/cases/compile_errors/cast_negative_value_to_unsigned_integer.zig created+17
......@@ -0,0 +1,17 @@
1comptime {
2 const value: i32 = -1;
3 const unsigned = @intCast(u32, value);
4 _ = unsigned;
5}
6export fn entry1() void {
7 const value: i32 = -1;
8 const unsigned: u32 = value;
9 _ = unsigned;
10}
11
12// error
13// backend=stage2
14// target=native
15//
16// :3:36: error: type 'u32' cannot represent integer value '-1'
17// :8:27: error: type 'u32' cannot represent integer value '-1'
test/cases/compile_errors/cast_unreachable.zig created+13
......@@ -0,0 +1,13 @@
1fn f() i32 {
2 return @as(i32, return 1);
3}
4export fn entry() void { _ = f(); }
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:12: error: unreachable code
11// :2:21: note: control flow is diverted here
12// :2:5: error: unreachable code
13// :2:12: note: control flow is diverted here
test/cases/compile_errors/casting_bit_offset_pointer_to_regular_pointer.zig created+21
......@@ -0,0 +1,21 @@
1const BitField = packed struct {
2 a: u3,
3 b: u3,
4 c: u2,
5};
6
7fn foo(bit_field: *const BitField) u3 {
8 return bar(&bit_field.b);
9}
10
11fn bar(x: *const u3) u3 {
12 return x.*;
13}
14
15export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
16
17// error
18// backend=stage2
19// target=native
20//
21// :8:15: error: expected type '*const u3', found '*align(0:3:1) const u3'
test/cases/compile_errors/chained_comparison_operators.zig created+9
......@@ -0,0 +1,9 @@
1export fn a(value: u32) bool {
2 return 1 < value < 1000;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:22: error: comparison operators cannot be chained
test/cases/compile_errors/cmpxchg_with_float.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var x: f32 = 0;
3 _ = @cmpxchgWeak(f32, &x, 1, 2, .SeqCst, .SeqCst);
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:22: error: expected bool, integer, enum, or pointer type; found 'f32'
test/cases/compile_errors/colliding_invalid_top_level_functions.zig created+12
......@@ -0,0 +1,12 @@
1fn func() bogus {}
2fn func() bogus {}
3export fn entry() usize { return @sizeOf(@TypeOf(func)); }
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:1: error: redeclaration of 'func'
10// :1:1: note: other declaration here
11// :1:11: error: use of undeclared identifier 'bogus'
12// :2:11: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/combination_of_nosuspend_and_async.zig created+15
......@@ -0,0 +1,15 @@
1export fn entry() void {
2 nosuspend {
3 const bar = async foo();
4 suspend {}
5 resume bar;
6 }
7}
8fn foo() void {}
9
10// error
11// backend=stage2
12// target=native
13//
14// :4:9: error: suspend inside nosuspend block
15// :2:5: note: nosuspend block here
test/cases/compile_errors/comparing_a_non-optional_pointer_against_null.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var x: i32 = 1;
3 _ = &x == null;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:12: error: comparison of '*i32' with null
test/cases/compile_errors/comparison_operators_with_undefined_value.zig created+47
......@@ -0,0 +1,47 @@
1// operator ==
2comptime {
3 var a: i64 = undefined;
4 var x: i32 = 0;
5 if (a == a) x += 1;
6}
7// operator !=
8comptime {
9 var a: i64 = undefined;
10 var x: i32 = 0;
11 if (a != a) x += 1;
12}
13// operator >
14comptime {
15 var a: i64 = undefined;
16 var x: i32 = 0;
17 if (a > a) x += 1;
18}
19// operator <
20comptime {
21 var a: i64 = undefined;
22 var x: i32 = 0;
23 if (a < a) x += 1;
24}
25// operator >=
26comptime {
27 var a: i64 = undefined;
28 var x: i32 = 0;
29 if (a >= a) x += 1;
30}
31// operator <=
32comptime {
33 var a: i64 = undefined;
34 var x: i32 = 0;
35 if (a <= a) x += 1;
36}
37
38// error
39// backend=stage2
40// target=native
41//
42// :5:11: error: use of undefined value here causes undefined behavior
43// :11:11: error: use of undefined value here causes undefined behavior
44// :17:11: error: use of undefined value here causes undefined behavior
45// :23:11: error: use of undefined value here causes undefined behavior
46// :29:11: error: use of undefined value here causes undefined behavior
47// :35:11: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/comparison_with_error_union_and_error_value.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var number_or_error: anyerror!i32 = error.SomethingAwful;
3 _ = number_or_error == error.SomethingAwful;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:25: error: operator == not allowed for type 'anyerror!i32'
test/cases/compile_errors/compileError_shows_traceback_of_references_that_caused_it.zig created+14
......@@ -0,0 +1,14 @@
1const foo = @compileError("aoeu",);
2
3const bar = baz + foo;
4const baz = 1;
5
6export fn entry() i32 {
7 return bar;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :1:13: error: aoeu
test/cases/compile_errors/compile_error_in_struct_init_expression.zig created+16
......@@ -0,0 +1,16 @@
1const Foo = struct {
2 a: i32 = crap,
3 b: i32,
4};
5export fn entry() void {
6 var x = Foo{
7 .b = 5,
8 };
9 _ = x;
10}
11
12// error
13// backend=stage2
14// target=native
15//
16// :2:14: error: use of undeclared identifier 'crap'
test/cases/compile_errors/compile_error_when_evaluating_return_type_of_inferred_error_set.zig created+14
......@@ -0,0 +1,14 @@
1const Car = struct {
2 foo: *SymbolThatDoesNotExist,
3 pub fn init() !Car {}
4};
5export fn entry() void {
6 const car = Car.init();
7 _ = car;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist'
test/cases/compile_errors/compile_log_a_pointer_to_an_opaque_value.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 @compileLog(@ptrCast(*const anyopaque, &entry));
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: found compile log statement
test/cases/compile_errors/compile_log_statement_warning_deduplication_in_generic_fn.zig created+15
......@@ -0,0 +1,15 @@
1export fn entry() void {
2 inner(1);
3 inner(2);
4}
5fn inner(comptime n: usize) void {
6 comptime var i = 0;
7 inline while (i < n) : (i += 1) { @compileLog("!@#$"); }
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :7:39: error: found compile log statement
15// :7:39: note: also here
test/cases/compile_errors/comptime_cast_enum_to_union_but_field_has_payload.zig created+18
......@@ -0,0 +1,18 @@
1const Letter = enum { A, B, C };
2const Value = union(Letter) {
3 A: i32,
4 B,
5 C,
6};
7export fn entry() void {
8 var x: Value = Letter.A;
9 _ = x;
10}
11
12// error
13// backend=stage2
14// target=native
15//
16// :8:26: error: coercion from enum 'tmp.Letter' to union 'tmp.Value' must initialize 'i32' field 'A'
17// :3:5: note: field 'A' declared here
18// :2:15: note: union declared here
test/cases/compile_errors/comptime_slice_of_undefined_pointer_non-zero_len.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const slice = @as([*]i32, undefined)[0..1];
3 _ = slice;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:41: error: non-zero length slice of undefined pointer
test/cases/compile_errors/comptime_struct_field_no_init_value.zig created+13
......@@ -0,0 +1,13 @@
1const Foo = struct {
2 comptime b: i32,
3};
4export fn entry() void {
5 var f: Foo = undefined;
6 _ = f;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :2:5: error: comptime field without default initialization value
test/cases/compile_errors/const_is_a_statement_not_an_expression.zig created+9
......@@ -0,0 +1,9 @@
1export fn f() void {
2 (const a = 0);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:6: error: expected expression, found 'const'
test/cases/compile_errors/container_init_with_non-type.zig created+10
......@@ -0,0 +1,10 @@
1const zero: i32 = 0;
2const a = zero{1};
3
4export fn entry() usize { return @sizeOf(@TypeOf(a)); }
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:15: error: expected type 'type', found 'i32'
test/cases/compile_errors/control_flow_uses_comptime_var_at_runtime.zig created+15
......@@ -0,0 +1,15 @@
1export fn foo() void {
2 comptime var i = 0;
3 while (i < 5) : (i += 1) {
4 bar();
5 }
6}
7
8fn bar() void { }
9
10// error
11// backend=stage2
12// target=native
13//
14// :3:24: error: cannot store to comptime variable in non-inline loop
15// :3:5: note: non-inline loop here
test/cases/compile_errors/declaration_between_fields.zig created+24
......@@ -0,0 +1,24 @@
1const S = struct {
2 const foo = 2;
3 const bar = 2;
4 const baz = 2;
5 a: struct {
6 a: u32,
7 b: u32,
8 },
9 const foo1 = 2;
10 const bar1 = 2;
11 const baz1 = 2;
12 b: usize,
13};
14comptime {
15 _ = S;
16}
17
18// error
19// backend=stage2
20// target=native
21//
22// :9:5: error: declarations are not allowed between container fields
23// :5:5: note: field before declarations here
24// :12:5: note: field after declarations here
test/cases/compile_errors/declaration_with_same_name_as_primitive_must_use_special_syntax.zig created+12
......@@ -0,0 +1,12 @@
1const u8 = u16;
2export fn entry() void {
3 const a: u8 = 300;
4 _ = a;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :1:7: error: name shadows primitive 'u8'
12// :1:7: note: consider using @"u8" to disambiguate
test/cases/compile_errors/deduplicate_undeclared_identifier.zig created+13
......@@ -0,0 +1,13 @@
1export fn a() void {
2 x += 1;
3}
4export fn b() void {
5 x += 1;
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :2:5: error: use of undeclared identifier 'x'
13// :5:5: error: use of undeclared identifier 'x'
test/cases/compile_errors/dont_implicit_cast_double_pointer_to_anyopaque.zig created+13
......@@ -0,0 +1,13 @@
1export fn entry() void {
2 var a: u32 = 1;
3 var ptr: *align(@alignOf(u32)) anyopaque = &a;
4 var b: *u32 = @ptrCast(*u32, ptr);
5 var ptr2: *anyopaque = &b;
6 _ = ptr2;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :5:28: error: expected type '*anyopaque', found '**u32'
test/cases/compile_errors/duplicate_boolean_switch_value.zig created+23
......@@ -0,0 +1,23 @@
1comptime {
2 const x = switch (true) {
3 true => false,
4 false => true,
5 true => false,
6 };
7 _ = x;
8}
9comptime {
10 const x = switch (true) {
11 false => true,
12 true => false,
13 false => true,
14 };
15 _ = x;
16}
17
18// error
19// backend=stage2
20// target=native
21//
22// :5:9: error: duplicate switch value
23// :13:9: error: duplicate switch value
test/cases/compile_errors/duplicate_error_value_in_error_set.zig created+15
......@@ -0,0 +1,15 @@
1const Foo = error {
2 Bar,
3 Bar,
4};
5export fn entry() void {
6 const a: Foo = undefined;
7 _ = a;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :3:5: error: duplicate error set field 'Bar'
15// :2:5: note: previous declaration here
test/cases/compile_errors/duplicate_field_in_struct_value_expression.zig created+21
......@@ -0,0 +1,21 @@
1const A = struct {
2 x : i32,
3 y : i32,
4 z : i32,
5};
6export fn f() void {
7 const a = A {
8 .z = 1,
9 .y = 2,
10 .x = 3,
11 .z = 4,
12 };
13 _ = a;
14}
15
16// error
17// backend=stage2
18// target=native
19//
20// :11:10: error: duplicate field
21// :8:10: note: other field here
test/cases/compile_errors/duplicate_struct_field.zig created+16
......@@ -0,0 +1,16 @@
1const Foo = struct {
2 Bar: i32,
3 Bar: usize,
4};
5export fn entry() void {
6 const a: Foo = undefined;
7 _ = a;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :3:5: error: duplicate struct field: 'Bar'
15// :2:5: note: other field here
16// :1:13: note: struct declared here
test/cases/compile_errors/duplicate_union_field.zig created+16
......@@ -0,0 +1,16 @@
1const Foo = union {
2 Bar: i32,
3 Bar: usize,
4};
5export fn entry() void {
6 const a: Foo = undefined;
7 _ = a;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :3:5: error: duplicate union field: 'Bar'
15// :2:5: note: other field here
16// :1:13: note: union declared here
test/cases/compile_errors/embedFile_with_bogus_file.zig created+9
......@@ -0,0 +1,9 @@
1const resource = @embedFile("bogus.txt",);
2
3export fn entry() usize { return @sizeOf(@TypeOf(resource)); }
4
5// error
6// backend=stage2
7// target=native
8//
9// :1:29: error: unable to open 'bogus.txt': FileNotFound
test/cases/compile_errors/empty_for_loop_body.zig created+9
......@@ -0,0 +1,9 @@
1export fn a() void {
2 for(undefined) |x|;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:23: error: expected block or assignment, found ';'
test/cases/compile_errors/empty_if_body.zig created+9
......@@ -0,0 +1,9 @@
1export fn a() void {
2 if(true);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:13: error: expected block or assignment, found ';'
test/cases/compile_errors/empty_switch_on_an_integer.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var x: u32 = 0;
3 switch(x) {}
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:5: error: switch must handle all possibilities
test/cases/compile_errors/empty_while_loop_body.zig created+9
......@@ -0,0 +1,9 @@
1export fn a() void {
2 while(true);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:16: error: expected block or assignment, found ';'
test/cases/compile_errors/endless_loop_in_function_evaluation.zig created+14
......@@ -0,0 +1,14 @@
1const seventh_fib_number = fibonacci(7);
2fn fibonacci(x: i32) i32 {
3 return fibonacci(x - 1) + fibonacci(x - 2);
4}
5
6export fn entry() usize { return @sizeOf(@TypeOf(seventh_fib_number)); }
7
8// error
9// backend=stage2
10// target=native
11//
12// :3:21: error: evaluation exceeded 1000 backwards branches
13// :3:21: note: called from here (999 times)
14// :1:37: note: called from here
test/cases/compile_errors/enum_in_field_count_range_but_not_matching_tag.zig created+15
......@@ -0,0 +1,15 @@
1const Foo = enum(u32) {
2 A = 10,
3 B = 11,
4};
5export fn entry() void {
6 var x = @intToEnum(Foo, 0);
7 _ = x;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :6:13: error: enum 'tmp.Foo' has no tag with value '0'
15// :1:13: note: enum declared here
test/cases/compile_errors/enum_with_0_fields.zig created+7
......@@ -0,0 +1,7 @@
1const Foo = enum {};
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:13: error: enum declarations must have at least one tag
test/cases/compile_errors/enum_with_declarations_unavailable_for_reify_type.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 _ = @Type(@typeInfo(enum { foo, const bar = 1; }));
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:9: error: reified enums must have no decls
test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig created+16
......@@ -0,0 +1,16 @@
1pub export fn entry() void {
2 const bitfield = struct {
3 e: u8,
4 e: u8,
5 };
6 var a = .{@sizeOf(bitfield)};
7 _ = a;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :4:9: error: duplicate struct field: 'e'
15// :3:9: note: other field here
16// :2:22: note: struct declared here
test/cases/compile_errors/error_union_operator_with_non_error_set_LHS.zig created+11
......@@ -0,0 +1,11 @@
1comptime {
2 const z = i32!i32;
3 var x: z = undefined;
4 _ = x;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :2:15: error: expected error set type, found 'i32'
test/cases/compile_errors/errors_in_for_loop_bodies_are_propagated.zig created+10
......@@ -0,0 +1,10 @@
1pub export fn entry() void {
2 var arr: [100]u8 = undefined;
3 for (arr) |bits| _ = @popCount(bits);
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:26: error: expected 2 arguments, found 1
test/cases/compile_errors/exceeded_maximum_bit_width_of_integer.zig created+15
......@@ -0,0 +1,15 @@
1export fn entry1() void {
2 const T = u65536;
3 _ = T;
4}
5export fn entry2() void {
6 var x: i65536 = 1;
7 _ = x;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :2:15: error: primitive integer type 'u65536' exceeds maximum bit width of 65535
15// :6:12: error: primitive integer type 'i65536' exceeds maximum bit width of 65535
test/cases/compile_errors/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() i32 {
2 return @as(i32, 12.34);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:21: error: fractional component prevents float value '12.34' from coercion to type 'i32'
test/cases/compile_errors/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig created+14
......@@ -0,0 +1,14 @@
1const Set1 = error {A, B};
2const Set2 = error {A, C};
3comptime {
4 var x = Set1.B;
5 var y = @errSetCast(Set2, x);
6 _ = y;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :5:13: error: 'error.B' not a member of error set 'error{A,C}'
14// :2:14: note: error set declared here
test/cases/compile_errors/export_with_empty_name_string.zig created+10
......@@ -0,0 +1,10 @@
1pub export fn entry() void { }
2comptime {
3 @export(entry, .{ .name = "" });
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:21: error: exported symbol name cannot be empty
test/cases/compile_errors/extern_union_field_missing_type.zig created+13
......@@ -0,0 +1,13 @@
1const Letter = extern union {
2 A,
3};
4export fn entry() void {
5 var a = Letter { .A = {} };
6 _ = a;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :2:5: error: union field missing type
test/cases/compile_errors/extern_variable_has_no_type.zig created+10
......@@ -0,0 +1,10 @@
1extern var foo;
2pub export fn entry() void {
3 foo;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :1:8: error: unable to infer variable type
test/cases/compile_errors/fieldParentPtr-bad_field_name.zig created+13
......@@ -0,0 +1,13 @@
1const Foo = extern struct {
2 derp: i32,
3};
4export fn foo(a: *i32) *Foo {
5 return @fieldParentPtr(Foo, "a", a);
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :5:33: error: no field named 'a' in struct 'tmp.Foo'
13// :1:20: note: struct declared here
test/cases/compile_errors/fieldParentPtr-non_struct.zig created+10
......@@ -0,0 +1,10 @@
1const Foo = i32;
2export fn foo(a: *i32) *Foo {
3 return @fieldParentPtr(Foo, "a", a);
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:28: error: expected struct type, found 'i32'
test/cases/compile_errors/field_type_supplied_in_an_enum.zig created+12
......@@ -0,0 +1,12 @@
1const Letter = enum {
2 A: void,
3 B,
4 C,
5};
6
7// error
8// backend=stage2
9// target=native
10//
11// :2:8: error: enum fields do not have types
12// :1:16: note: consider 'union(enum)' here to make it a tagged union
test/cases/compile_errors/function_call_assigned_to_incorrect_type.zig created+13
......@@ -0,0 +1,13 @@
1export fn entry() void {
2 var arr: [4]f32 = undefined;
3 arr = concat();
4}
5fn concat() [16]f32 {
6 return [1]f32{0}**16;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :3:17: error: expected type '[4]f32', found '[16]f32'
test/cases/compile_errors/function_prototype_with_no_body.zig created+10
......@@ -0,0 +1,10 @@
1fn foo() void;
2export fn entry() void {
3 foo();
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :1:1: error: non-extern function has no body
test/cases/compile_errors/function_with_invalid_return_type.zig created+7
......@@ -0,0 +1,7 @@
1export fn foo() boid {}
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:17: error: use of undeclared identifier 'boid'
test/cases/compile_errors/generic_function_call_assigned_to_incorrect_type.zig created+13
......@@ -0,0 +1,13 @@
1pub export fn entry() void {
2 var res: []i32 = undefined;
3 res = myAlloc(i32);
4}
5fn myAlloc(comptime arg: type) anyerror!arg{
6 unreachable;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :3:18: error: expected type '[]i32', found 'anyerror!i32'
test/cases/compile_errors/global_variable_initializer_must_be_constant_expression.zig created+9
......@@ -0,0 +1,9 @@
1extern fn foo() i32;
2const x = foo();
3export fn entry() i32 { return x; }
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:14: error: comptime call of extern function
test/cases/compile_errors/hasDecl_with_non-container.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 _ = @hasDecl(i32, "hi");
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:18: error: expected struct, enum, union, or opaque; found 'i32'
test/cases/compile_errors/if_condition_is_bool_not_int.zig created+9
......@@ -0,0 +1,9 @@
1export fn f() void {
2 if (0) {}
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:9: error: expected type 'bool', found 'comptime_int'
test/cases/compile_errors/ignored_assert-err-ok_return_value.zig created+10
......@@ -0,0 +1,10 @@
1export fn foo() void {
2 bar() catch unreachable;
3}
4fn bar() anyerror!i32 { return 0; }
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:11: error: expression value is ignored
test/cases/compile_errors/ignored_comptime_statement_value.zig created+9
......@@ -0,0 +1,9 @@
1export fn foo() void {
2 comptime {1;}
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:15: error: expression value is ignored
test/cases/compile_errors/ignored_comptime_value.zig created+9
......@@ -0,0 +1,9 @@
1export fn foo() void {
2 comptime 1;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: expression value is ignored
test/cases/compile_errors/ignored_deferred_statement_value.zig created+9
......@@ -0,0 +1,9 @@
1export fn foo() void {
2 defer {1;}
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:12: error: expression value is ignored
test/cases/compile_errors/ignored_return_value.zig created+10
......@@ -0,0 +1,10 @@
1export fn foo() void {
2 bar();
3}
4fn bar() i32 { return 0; }
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:8: error: expression value is ignored
test/cases/compile_errors/ignored_statement_value.zig created+9
......@@ -0,0 +1,9 @@
1export fn foo() void {
2 1;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: expression value is ignored
test/cases/compile_errors/implicit_semicolon-block_expr.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = {};
3 var good = {};
4 _ = {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:11: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-block_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 {}
3 var good = {};
4 ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:9: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-comptime_expression.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = comptime {};
3 var good = {};
4 _ = comptime {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:20: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-comptime_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 comptime {}
3 var good = {};
4 comptime ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:18: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-defer.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 defer {}
3 var good = {};
4 defer ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:15: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-for_expression.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = for(foo()) |_| {};
3 var good = {};
4 _ = for(foo()) |_| {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:26: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-for_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 for(foo()) |_| {}
3 var good = {};
4 for(foo()) |_| ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:24: error: expected ';' or 'else' after statement
test/cases/compile_errors/implicit_semicolon-if-else-if-else_expression.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = if(true) {} else if(true) {} else {};
3 var good = {};
4 _ = if(true) {} else if(true) {} else {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:45: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-if-else-if-else_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 if(true) {} else if(true) {} else {}
3 var good = {};
4 if(true) ({}) else if(true) ({}) else ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:47: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-if-else-if_expression.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = if(true) {} else if(true) {};
3 var good = {};
4 _ = if(true) {} else if(true) {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:37: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-if-else-if_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 if(true) {} else if(true) {}
3 var good = {};
4 if(true) ({}) else if(true) ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:37: error: expected ';' or 'else' after statement
test/cases/compile_errors/implicit_semicolon-if-else_expression.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = if(true) {} else {};
3 var good = {};
4 _ = if(true) {} else {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:28: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-if-else_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 if(true) {} else {}
3 var good = {};
4 if(true) ({}) else ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:28: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-if_expression.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = if(true) {};
3 var good = {};
4 _ = if(true) {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:20: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-if_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 if(true) {}
3 var good = {};
4 if(true) ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:18: error: expected ';' or 'else' after statement
test/cases/compile_errors/implicit_semicolon-test_expression.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = if (foo()) |_| {};
3 var good = {};
4 _ = if (foo()) |_| {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:26: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-test_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 if (foo()) |_| {}
3 var good = {};
4 if (foo()) |_| ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:24: error: expected ';' or 'else' after statement
test/cases/compile_errors/implicit_semicolon-while-continue_expression.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = while(true):({}) {};
3 var good = {};
4 _ = while(true):({}) {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:28: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-while-continue_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 while(true):({}) {}
3 var good = {};
4 while(true):({}) ({})
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:26: error: expected ';' or 'else' after statement
test/cases/compile_errors/implicit_semicolon-while_expression.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 _ = while(true) {};
3 var good = {};
4 _ = while(true) {}
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:23: error: expected ';' after statement
test/cases/compile_errors/implicit_semicolon-while_statement.zig created+12
......@@ -0,0 +1,12 @@
1export fn entry() void {
2 while(true) {}
3 var good = {};
4 while(true) 1
5 var bad = {};
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:18: error: expected ';' or 'else' after statement
test/cases/compile_errors/import_outside_package_path.zig created+9
......@@ -0,0 +1,9 @@
1comptime{
2 _ = @import("../a.zig");
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:17: error: import of file outside package path: '../a.zig'
test/cases/compile_errors/inferred_array_size_invalid_here.zig created+16
......@@ -0,0 +1,16 @@
1export fn entry() void {
2 const x = [_]u8;
3 _ = x;
4}
5export fn entry2() void {
6 const S = struct { a: *const [_]u8 };
7 var a = .{ S{} };
8 _ = a;
9}
10
11// error
12// backend=stage2
13// target=native
14//
15// :2:16: error: unable to infer array size
16// :6:35: error: unable to infer array size
test/cases/compile_errors/inferring_error_set_of_function_pointer.zig created+9
......@@ -0,0 +1,9 @@
1comptime {
2 const z: ?fn()!void = null;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:19: error: function prototype may not have inferred error set
test/cases/compile_errors/initializing_array_with_struct_syntax.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const x = [_]u8{ .y = 2 };
3 _ = x;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:15: error: initializing array with struct syntax
test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig created+15
......@@ -0,0 +1,15 @@
1export fn foo() void {
2 var a: f32 = 2;
3 _ = @floatToInt(comptime_int, a);
4}
5export fn bar() void {
6 var a: u32 = 2;
7 _ = @intToFloat(comptime_float, a);
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :3:35: error: unable to resolve comptime value
15// :7:37: error: unable to resolve comptime value
test/cases/compile_errors/int_to_err_global_invalid_number.zig created+15
......@@ -0,0 +1,15 @@
1const Set1 = error{
2 A,
3 B,
4};
5comptime {
6 var x: u16 = 3;
7 var y = @intToError(x);
8 _ = y;
9}
10
11// error
12// backend=stage2
13// target=native
14//
15// :7:25: error: integer value '3' represents no error
test/cases/compile_errors/int_to_err_non_global_invalid_number.zig created+20
......@@ -0,0 +1,20 @@
1const Set1 = error{
2 A,
3 B,
4};
5const Set2 = error{
6 A,
7 C,
8};
9comptime {
10 var x = @errorToInt(Set1.B);
11 var y = @errSetCast(Set2, @intToError(x));
12 _ = y;
13}
14
15// error
16// backend=stage2
17// target=native
18//
19// :11:13: error: 'error.B' not a member of error set 'error{A,C}'
20// :5:14: note: error set declared here
test/cases/compile_errors/integer_overflow_error.zig created+8
......@@ -0,0 +1,8 @@
1const x : u8 = 300;
2export fn entry() usize { return @sizeOf(@TypeOf(x)); }
3
4// error
5// backend=stage2
6// target=native
7//
8// :1:16: error: type 'u8' cannot represent integer value '300'
test/cases/compile_errors/integer_underflow_error.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 _ = @intToPtr(*anyopaque, ~@as(usize, @import("std").math.maxInt(usize)) - 1);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:78: error: overflow of integer type 'usize' with value '-1'
test/cases/compile_errors/invalid_address_space_coercion.zig created+13
......@@ -0,0 +1,13 @@
1fn entry(a: *addrspace(.gs) i32) *i32 {
2 return a;
3}
4pub fn main() void {
5 _ = entry;
6}
7
8// error
9// output_mode=Exe
10// backend=stage2,llvm
11// target=x86_64-linux,x86_64-macos
12//
13// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32'
test/cases/compile_errors/invalid_array_elem_ty.zig+1-1
......@@ -9,4 +9,4 @@ pub export fn entry() void {
99// target=native
1010// backend=stage2
1111//
12// :4:1: error: expected type, found fn() type
12// :4:1: error: expected type 'type', found 'fn() type'
test/cases/compile_errors/invalid_assignments.zig created+19
......@@ -0,0 +1,19 @@
1export fn entry1() void {
2 var a: []const u8 = "foo";
3 a[0..2] = "bar";
4}
5export fn entry2() void {
6 var a: u8 = 2;
7 a + 2 = 3;
8}
9export fn entry4() void {
10 2 + 2 = 3;
11}
12
13// error
14// backend=stage2
15// target=native
16//
17// :3:6: error: invalid left-hand side to assignment
18// :7:7: error: invalid left-hand side to assignment
19// :10:7: error: invalid left-hand side to assignment
test/cases/compile_errors/invalid_break_expression.zig created+9
......@@ -0,0 +1,9 @@
1export fn f() void {
2 break;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: break expression outside loop
test/cases/compile_errors/invalid_builtin_fn.zig created+9
......@@ -0,0 +1,9 @@
1fn f() @bogus(foo) {
2}
3export fn entry() void { _ = f(); }
4
5// error
6// backend=stage2
7// target=native
8//
9// :1:8: error: invalid builtin function: '@bogus'
test/cases/compile_errors/invalid_comparison_for_function_pointers.zig created+10
......@@ -0,0 +1,10 @@
1fn foo() void {}
2const invalid = foo > foo;
3
4export fn entry() usize { return @sizeOf(@TypeOf(invalid)); }
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: operator > not allowed for type 'fn() void'
test/cases/compile_errors/invalid_continue_expression.zig created+9
......@@ -0,0 +1,9 @@
1export fn f() void {
2 continue;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: continue expression outside loop
test/cases/compile_errors/invalid_empty_unicode_escape.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 const a = '\u{}';
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:19: error: empty unicode escape sequence
test/cases/compile_errors/invalid_exponent_in_float_literal-1.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 0x1.0p1ab1;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:28: note: invalid byte: 'a'
test/cases/compile_errors/invalid_exponent_in_float_literal-2.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 0x1.0p50F;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:29: note: invalid byte: 'F'
test/cases/compile_errors/invalid_field_access_in_comptime.zig created+7
......@@ -0,0 +1,7 @@
1comptime { var x = doesnt_exist.whatever; _ = x; }
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:20: error: use of undeclared identifier 'doesnt_exist'
test/cases/compile_errors/invalid_field_in_struct_value_expression.zig created+20
......@@ -0,0 +1,20 @@
1const A = struct {
2 x : i32,
3 y : i32,
4 z : i32,
5};
6export fn f() void {
7 const a = A {
8 .z = 4,
9 .y = 2,
10 .foo = 42,
11 };
12 _ = a;
13}
14
15// error
16// backend=stage2
17// target=native
18//
19// :10:10: error: no field named 'foo' in struct 'tmp.A'
20// :1:11: note: struct declared here
test/cases/compile_errors/invalid_float_casts.zig created+25
......@@ -0,0 +1,25 @@
1export fn foo() void {
2 var a: f32 = 2;
3 _ = @floatCast(comptime_float, a);
4}
5export fn bar() void {
6 var a: f32 = 2;
7 _ = @floatToInt(f32, a);
8}
9export fn baz() void {
10 var a: f32 = 2;
11 _ = @intToFloat(f32, a);
12}
13export fn qux() void {
14 var a: u32 = 2;
15 _ = @floatCast(f32, a);
16}
17
18// error
19// backend=stage2
20// target=native
21//
22// :3:36: error: unable to cast runtime value to 'comptime_float'
23// :7:21: error: expected integer type, found 'f32'
24// :11:26: error: expected integer type, found 'f32'
25// :15:25: error: expected float type, found 'u32'
test/cases/compile_errors/invalid_float_literal.zig created+13
......@@ -0,0 +1,13 @@
1const std = @import("std");
2
3pub fn main() void {
4 var bad_float :f32 = 0.0;
5 bad_float = bad_float + .20;
6 std.debug.assert(bad_float < 1.0);
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :5:29: error: expected expression, found '.'
test/cases/compile_errors/invalid_int_casts.zig created+25
......@@ -0,0 +1,25 @@
1export fn foo() void {
2 var a: u32 = 2;
3 _ = @intCast(comptime_int, a);
4}
5export fn bar() void {
6 var a: u32 = 2;
7 _ = @intToFloat(u32, a);
8}
9export fn baz() void {
10 var a: u32 = 2;
11 _ = @floatToInt(u32, a);
12}
13export fn qux() void {
14 var a: f32 = 2;
15 _ = @intCast(u32, a);
16}
17
18// error
19// backend=stage2
20// target=native
21//
22// :3:32: error: unable to cast runtime value to 'comptime_int'
23// :7:21: error: expected float type, found 'u32'
24// :11:26: error: expected float type, found 'u32'
25// :15:23: error: expected integer or vector, found 'f32'
test/cases/compile_errors/invalid_legacy_unicode_escape.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const a = '\U1234';
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:15: error: expected expression, found 'invalid bytes'
10// :2:18: note: invalid byte: '1'
test/cases/compile_errors/invalid_member_of_builtin_enum.zig created+12
......@@ -0,0 +1,12 @@
1const builtin = @import("std").builtin;
2export fn entry() void {
3 const foo = builtin.Mode.x86;
4 _ = foo;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:30: error: enum 'builtin.Mode' has no member named 'x86'
12// :?:18: note: enum declared here
test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig created+28
......@@ -0,0 +1,28 @@
1const E = enum(u8) {
2 a,
3 b,
4 _,
5};
6const U = union(E) {
7 a,
8 b,
9};
10export fn foo() void {
11 var e = @intToEnum(E, 15);
12 var u: U = e;
13 _ = u;
14}
15export fn bar() void {
16 const e = @intToEnum(E, 15);
17 var u: U = e;
18 _ = u;
19}
20
21// error
22// backend=stage2
23// target=native
24//
25// :12:16: error: runtime coercion to union 'tmp.U' from non-exhaustive enum
26// :1:11: note: enum declared here
27// :17:16: error: union 'tmp.U' has no tag with value '15'
28// :6:11: note: union declared here
test/cases/compile_errors/invalid_pointer_for_var_type.zig created+13
......@@ -0,0 +1,13 @@
1extern fn ext() usize;
2var bytes: [ext()]u8 = undefined;
3export fn f() void {
4 for (bytes) |*b, i| {
5 b.* = @as(u8, i);
6 }
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :2:16: error: comptime call of extern function
test/cases/compile_errors/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig created+13
......@@ -0,0 +1,13 @@
1fn entry(a: *addrspace(.gs) i32) *i32 {
2 return &a.*;
3}
4pub fn main() void {
5 _ = entry;
6}
7
8// error
9// output_mode=Exe
10// backend=stage2,llvm
11// target=x86_64-linux,x86_64-macos
12//
13// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32'
test/cases/compile_errors/invalid_pointer_syntax.zig created+9
......@@ -0,0 +1,9 @@
1export fn foo() void {
2 var guid: *:0 const u8 = undefined;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:16: error: expected type expression, found ':'
test/cases/compile_errors/invalid_pointer_with_reify_type.zig created+18
......@@ -0,0 +1,18 @@
1export fn entry() void {
2 _ = @Type(.{ .Pointer = .{
3 .size = .One,
4 .is_const = false,
5 .is_volatile = false,
6 .alignment = 1,
7 .address_space = .generic,
8 .child = u8,
9 .is_allowzero = false,
10 .sentinel = &@as(u8, 0),
11 }});
12}
13
14// error
15// backend=stage2
16// target=native
17//
18// :2:9: error: sentinels are only allowed on slices and unknown-length pointers
test/cases/compile_errors/invalid_shift_amount_error.zig created+11
......@@ -0,0 +1,11 @@
1const x : u8 = 2;
2fn f() u16 {
3 return x << 8;
4}
5export fn entry() u16 { return f(); }
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:17: error: type 'u3' cannot represent integer value '8'
test/cases/compile_errors/invalid_struct_field.zig created+21
......@@ -0,0 +1,21 @@
1const A = struct { x : i32, };
2export fn f() void {
3 var a : A = undefined;
4 a.foo = 1;
5 const y = a.bar;
6 _ = y;
7}
8export fn g() void {
9 var a : A = undefined;
10 const y = a.bar;
11 _ = y;
12}
13
14// error
15// backend=stage2
16// target=native
17//
18// :4:7: error: no field named 'foo' in struct 'tmp.A'
19// :1:11: note: struct declared here
20// :10:17: error: no field named 'bar' in struct 'tmp.A'
21// :1:11: note: struct declared here
test/cases/compile_errors/invalid_type.zig created+8
......@@ -0,0 +1,8 @@
1fn a() bogus {}
2export fn entry() void { _ = a(); }
3
4// error
5// backend=stage2
6// target=native
7//
8// :1:8: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/invalid_type_used_in_array_type.zig created+14
......@@ -0,0 +1,14 @@
1const Item = struct {
2 field: SomeNonexistentType,
3};
4var items: [100]Item = undefined;
5export fn entry() void {
6 const a = items[0];
7 _ = a;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :2:12: error: use of undeclared identifier 'SomeNonexistentType'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-1.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 0._0;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:23: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-10.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 1.0__0e-1;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:25: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-11.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 1.0e-1__0;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:28: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-12.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 0_x0.0;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:23: note: invalid byte: 'x'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-13.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 0x_0.0;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:23: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-14.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 0x0.0_p1;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:27: note: invalid byte: 'p'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-2.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 0_.0;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:23: note: invalid byte: '.'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-3.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 0.0_;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:25: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-4.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 1.0e_1;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:25: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-5.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 1.0e+_1;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:26: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-6.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 1.0e-_1;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:26: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-7.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 1.0e-1_;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:28: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_float_literal-9.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: f128 = 1__0.0e-1;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:23: note: invalid byte: '_'
test/cases/compile_errors/invalid_underscore_placement_in_int_literal-1.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: u128 = 0010_;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:26: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_int_literal-2.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: u128 = 0b0010_;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:28: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_int_literal-3.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: u128 = 0o0010_;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:28: note: invalid byte: ';'
test/cases/compile_errors/invalid_underscore_placement_in_int_literal-4.zig created+11
......@@ -0,0 +1,11 @@
1fn main() void {
2 var bad: u128 = 0x0010_;
3 _ = bad;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:21: error: expected expression, found 'invalid bytes'
11// :2:28: note: invalid byte: ';'
test/cases/compile_errors/issue_9346_return_outside_of_function_scope.zig created+7
......@@ -0,0 +1,7 @@
1pub const empty = return 1;
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:19: error: 'return' outside function scope
test/cases/compile_errors/labeled_break_not_found.zig created+13
......@@ -0,0 +1,13 @@
1export fn entry() void {
2 blah: while (true) {
3 while (true) {
4 break :outer;
5 }
6 }
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :4:20: error: label not found: 'outer'
test/cases/compile_errors/labeled_continue_not_found.zig created+14
......@@ -0,0 +1,14 @@
1export fn entry() void {
2 var i: usize = 0;
3 blah: while (i < 10) : (i += 1) {
4 while (true) {
5 continue :outer;
6 }
7 }
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :5:23: error: label not found: 'outer'
test/cases/compile_errors/local_shadows_global_that_occurs_later.zig created+12
......@@ -0,0 +1,12 @@
1pub fn main() void {
2 var foo = true;
3 _ = foo;
4}
5fn foo() void {}
6
7// error
8// backend=stage2
9// target=native
10//
11// :2:9: error: local shadows declaration of 'foo'
12// :5:1: note: declared here
test/cases/compile_errors/local_variable_redeclaration.zig created+11
......@@ -0,0 +1,11 @@
1export fn f() void {
2 const a : i32 = 0;
3 var a = 0;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:9: error: redeclaration of local constant 'a'
11// :2:11: note: previous declaration here
test/cases/compile_errors/local_variable_redeclares_parameter.zig created+11
......@@ -0,0 +1,11 @@
1fn f(a : i32) void {
2 const a = 0;
3}
4export fn entry() void { f(1); }
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:11: error: redeclaration of function parameter 'a'
11// :1:6: note: previous declaration here
test/cases/compile_errors/local_variable_shadowing_global.zig created+14
......@@ -0,0 +1,14 @@
1const Foo = struct {};
2const Bar = struct {};
3
4export fn entry() void {
5 var Bar : i32 = undefined;
6 _ = Bar;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :5:9: error: local shadows declaration of 'Bar'
14// :2:1: note: declared here
test/cases/compile_errors/locally_shadowing_a_primitive_type.zig created+12
......@@ -0,0 +1,12 @@
1export fn foo() void {
2 const u8 = u16;
3 const a: u8 = 300;
4 _ = a;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :2:11: error: name shadows primitive 'u8'
12// :2:11: note: consider using @"u8" to disambiguate
test/cases/compile_errors/main_function_with_bogus_args_type.zig created+7
......@@ -0,0 +1,7 @@
1pub fn main(args: [][]bogus) !void {_ = args;}
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:23: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/main_missing_name.zig created+8
......@@ -0,0 +1,8 @@
1pub fn (main) void {}
2
3// error
4// backend=stage2
5// target=native
6// output_mode=Exe
7//
8// :1:5: error: missing function name
test/cases/compile_errors/missing_boolean_switch_value.zig created+19
......@@ -0,0 +1,19 @@
1comptime {
2 const x = switch (true) {
3 true => false,
4 };
5 _ = x;
6}
7comptime {
8 const x = switch (true) {
9 false => true,
10 };
11 _ = x;
12}
13
14// error
15// backend=stage2
16// target=native
17//
18// :2:15: error: switch must handle all possibilities
19// :8:15: error: switch must handle all possibilities
test/cases/compile_errors/missing_else_clause.zig created+16
......@@ -0,0 +1,16 @@
1fn f(b: bool) void {
2 const x : i32 = if (b) h: { break :h 1; };
3 _ = x;
4}
5fn g(b: bool) void {
6 const y = if (b) h: { break :h @as(i32, 1); };
7 _ = y;
8}
9export fn entry() void { f(true); g(true); }
10
11// error
12// backend=stage2
13// target=native
14//
15// :2:21: error: incompatible types: 'i32' and 'void'
16// :6:15: error: incompatible types: 'i32' and 'void'
test/cases/compile_errors/missing_field_in_struct_value_expression.zig created+21
......@@ -0,0 +1,21 @@
1const A = struct {
2 x : i32,
3 y : i32,
4 z : i32,
5};
6export fn f() void {
7 // we want the error on the '{' not the 'A' because
8 // the A could be a complicated expression
9 const a = A {
10 .z = 4,
11 .y = 2,
12 };
13 _ = a;
14}
15
16// error
17// backend=stage2
18// target=native
19//
20// :9:17: error: missing struct field: x
21// :1:11: note: struct 'tmp.A' declared here
test/cases/compile_errors/missing_function_name.zig created+7
......@@ -0,0 +1,7 @@
1fn () void {}
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:1: error: missing function name
test/cases/compile_errors/missing_param_name.zig created+8
......@@ -0,0 +1,8 @@
1fn f(i32) void {}
2export fn entry() usize { return @sizeOf(@TypeOf(f)); }
3
4// error
5// backend=stage2
6// target=native
7//
8// :1:6: error: missing parameter name
test/cases/compile_errors/missing_parameter_name_of_generic_function.zig created+11
......@@ -0,0 +1,11 @@
1fn dump(anytype) void {}
2export fn entry() void {
3 var a: u8 = 9;
4 dump(a);
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :1:9: error: missing parameter name
test/cases/compile_errors/misspelled_type_with_pointer_only_reference.zig created+37
......@@ -0,0 +1,37 @@
1const JasonHM = u8;
2const JasonList = *JsonNode;
3
4const JsonOA = union(enum) {
5 JSONArray: JsonList,
6 JSONObject: JasonHM,
7};
8
9const JsonType = union(enum) {
10 JSONNull: void,
11 JSONInteger: isize,
12 JSONDouble: f64,
13 JSONBool: bool,
14 JSONString: []u8,
15 JSONArray: void,
16 JSONObject: void,
17};
18
19pub const JsonNode = struct {
20 kind: JsonType,
21 jobject: ?JsonOA,
22};
23
24fn foo() void {
25 var jll: JasonList = undefined;
26 jll.init(1234);
27 var jd = JsonNode {.kind = JsonType.JSONArray , .jobject = JsonOA.JSONArray {jll} };
28 _ = jd;
29}
30
31export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
32
33// error
34// backend=stage2
35// target=native
36//
37// :5:16: error: use of undeclared identifier 'JsonList'
test/cases/compile_errors/multiple_function_definitions.zig created+10
......@@ -0,0 +1,10 @@
1fn a() void {}
2fn a() void {}
3export fn entry() void { a(); }
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:1: error: redeclaration of 'a'
10// :1:1: note: other declaration here
test/cases/compile_errors/nested_vectors.zig created+13
......@@ -0,0 +1,13 @@
1export fn entry() void {
2 const V1 = @import("std").meta.Vector(4, u8);
3 const V2 = @Type(.{ .Vector = .{ .len = 4, .child = V1 } });
4 var v: V2 = undefined;
5 _ = v;
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :3:16: error: expected integer, float, bool, or pointer for the vector element type; found '@Vector(4, u8)'
13
test/cases/compile_errors/non-const_expression_function_call_with_struct_return_value_outside_function.zig created+18
......@@ -0,0 +1,18 @@
1const Foo = struct {
2 x: i32,
3};
4const a = get_it();
5fn get_it() Foo {
6 global_side_effect = true;
7 return Foo {.x = 13};
8}
9var global_side_effect = false;
10
11export fn entry() usize { return @sizeOf(@TypeOf(a)); }
12
13// error
14// backend=stage2
15// target=native
16//
17// :6:26: error: unable to resolve comptime value
18// :4:17: note: called from here
test/cases/compile_errors/non-const_expression_in_struct_literal_outside_function.zig created+13
......@@ -0,0 +1,13 @@
1const Foo = struct {
2 x: i32,
3};
4const a = Foo {.x = get_it()};
5extern fn get_it() i32;
6
7export fn entry() usize { return @sizeOf(@TypeOf(a)); }
8
9// error
10// backend=stage2
11// target=native
12//
13// :4:27: error: comptime call of extern function
test/cases/compile_errors/non-const_switch_number_literal.zig created+18
......@@ -0,0 +1,18 @@
1export fn foo() void {
2 const x = switch (bar()) {
3 1, 2 => 1,
4 3, 4 => 2,
5 else => 3,
6 };
7 _ = x;
8}
9fn bar() i32 {
10 return 2;
11}
12
13// error
14// backend=stage2
15// target=native
16//
17// :2:15: error: value with comptime only type 'comptime_int' depends on runtime control flow
18// :2:26: note: runtime control flow here
test/cases/compile_errors/non-exhaustive_enum_field_non_final.zig created+11
......@@ -0,0 +1,11 @@
1const B = enum(u1) {
2 a,
3 _,
4 b,
5};
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:5: error: '_' field of non-exhaustive enum must be last
test/cases/compile_errors/non-exhaustive_enum_marker_assigned_a_value.zig created+19
......@@ -0,0 +1,19 @@
1const A = enum {
2 a,
3 b,
4 _ = 1,
5};
6const B = enum {
7 a,
8 b,
9 _,
10};
11comptime { _ = A; _ = B; }
12
13// error
14// backend=stage2
15// target=native
16//
17// :4:9: error: '_' is used to mark an enum as non-exhaustive and cannot be assigned a value
18// :6:11: error: non-exhaustive enum missing integer tag type
19// :9:5: note: marked non-exhaustive here
test/cases/compile_errors/non-exhaustive_enum_specifies_every_value.zig created+14
......@@ -0,0 +1,14 @@
1const C = enum(u1) {
2 a,
3 b,
4 _,
5};
6pub export fn entry() void {
7 _ = C;
8}
9
10// error
11// backend=stage2
12// target=native
13//
14// :1:11: error: non-exhaustive enum specifies every value
test/cases/compile_errors/non-extern_function_with_var_args.zig created+10
......@@ -0,0 +1,10 @@
1fn foo(args: ...) void {}
2export fn entry() void {
3 foo();
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :1:14: error: expected type expression, found '...'
test/cases/compile_errors/non-pure_function_returns_type.zig created+25
......@@ -0,0 +1,25 @@
1var a: u32 = 0;
2pub fn List(comptime T: type) type {
3 a += 1;
4 return SmallList(T, 8);
5}
6
7pub fn SmallList(comptime T: type, comptime STATIC_SIZE: usize) type {
8 return struct {
9 items: []T,
10 length: usize,
11 prealloc_items: [STATIC_SIZE]T,
12 };
13}
14
15export fn function_with_return_type_type() void {
16 var list: List(i32) = undefined;
17 list.length = 10;
18}
19
20// error
21// backend=stage2
22// target=native
23//
24// :3:7: error: unable to resolve comptime value
25// :16:19: note: called from here
test/cases/compile_errors/non_float_passed_to_floatToInt.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const x = @floatToInt(i32, @as(i32, 54));
3 _ = x;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:32: error: expected float type, found 'i32'
test/cases/compile_errors/non_int_passed_to_intToFloat.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const x = @intToFloat(f32, 1.1);
3 _ = x;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:32: error: expected integer type, found 'comptime_float'
test/cases/compile_errors/non_pointer_given_to_ptrToInt.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry(x: i32) usize {
2 return @ptrToInt(x);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:22: error: expected pointer, found 'i32'
test/cases/compile_errors/normal_string_with_newline.zig created+9
......@@ -0,0 +1,9 @@
1const foo = "a
2b";
3
4// error
5// backend=stage2
6// target=native
7//
8// :1:13: error: expected expression, found 'invalid bytes'
9// :1:15: note: invalid byte: '\n'
test/cases/compile_errors/offsetOf-bad_field_name.zig created+13
......@@ -0,0 +1,13 @@
1const Foo = struct {
2 derp: i32,
3};
4export fn foo() usize {
5 return @offsetOf(Foo, "a",);
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :5:27: error: struct 'tmp.Foo' has no field 'a'
13// :1:13: note: struct declared here
test/cases/compile_errors/offsetOf-non_struct.zig created+10
......@@ -0,0 +1,10 @@
1const Foo = i32;
2export fn foo() usize {
3 return @offsetOf(Foo, "a",);
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:22: error: expected struct type, found 'i32'
test/cases/compile_errors/only_equality_binary_operator_allowed_for_error_sets.zig created+10
......@@ -0,0 +1,10 @@
1comptime {
2 const z = error.A > error.B;
3 _ = z;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:23: error: operator > not allowed for type 'error{A,B}'
test/cases/compile_errors/out_of_range_comptime_int_passed_to_floatToInt.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const x = @floatToInt(i8, 200);
3 _ = x;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:31: error: float value '200' cannot be stored in integer type 'i8'
test/cases/compile_errors/parameter_redeclaration.zig created+10
......@@ -0,0 +1,10 @@
1fn f(a : i32, a : i32) void {
2}
3export fn entry() void { f(1, 2); }
4
5// error
6// backend=stage2
7// target=native
8//
9// :1:15: error: redeclaration of function parameter 'a'
10// :1:6: note: previous declaration here
test/cases/compile_errors/parameter_shadowing_global.zig created+12
......@@ -0,0 +1,12 @@
1const Foo = struct {};
2fn f(Foo: i32) void {}
3export fn entry() void {
4 f(1234);
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :2:6: error: local shadows declaration of 'Foo'
12// :1:1: note: declared here
test/cases/compile_errors/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig created+12
......@@ -0,0 +1,12 @@
1const AtomicOrder = @import("std").builtin.AtomicOrder;
2export fn entry() bool {
3 var x: i32 align(1) = 1234;
4 while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.SeqCst, AtomicOrder.SeqCst)) {}
5 return x == 5678;
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:31: error: expected type '*i32', found '*align(1) i32'
test/cases/compile_errors/pointer_arithmetic_on_pointer-to-array.zig created+14
......@@ -0,0 +1,14 @@
1export fn foo() void {
2 var x: [10]u8 = undefined;
3 var y = &x;
4 var z = y + 1;
5 _ = z;
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :4:15: error: incompatible types: '*[10]u8' and 'comptime_int'
13// :4:13: note: type '*[10]u8' here
14// :4:17: note: type 'comptime_int' here
test/cases/compile_errors/pointer_with_different_address_spaces.zig created+13
......@@ -0,0 +1,13 @@
1fn entry(a: *addrspace(.gs) i32) *addrspace(.fs) i32 {
2 return a;
3}
4export fn entry2() void {
5 _ = entry;
6}
7
8// error
9// output_mode=Obj
10// backend=stage2,llvm
11// target=x86_64-linux,x86_64-macos
12//
13// :2:12: error: expected type '*addrspace(.fs) i32', found '*addrspace(.gs) i32'
test/cases/compile_errors/pointers_with_different_address_spaces.zig created+13
......@@ -0,0 +1,13 @@
1fn entry(a: ?*addrspace(.gs) i32) *i32 {
2 return a.?;
3}
4pub fn main() void {
5 _ = entry;
6}
7
8// error
9// output_mode=Exe
10// backend=stage2,llvm
11// target=x86_64-linux,x86_64-macos
12//
13// :2:13: error: expected type '*i32', found '*addrspace(.gs) i32'
test/cases/compile_errors/popCount-non-integer.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry(x: f32) u32 {
2 return @popCount(f32, x);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:27: error: expected integer or vector, found 'f32'
test/cases/compile_errors/primitives_take_precedence_over_declarations.zig created+11
......@@ -0,0 +1,11 @@
1const @"u8" = u16;
2export fn entry() void {
3 const a: u8 = 300;
4 _ = a;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:19: error: type 'u8' cannot represent integer value '300'
test/cases/compile_errors/ptrToInt_0_to_non_optional_pointer.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var b = @intToPtr(*i32, 0);
3 _ = b;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:29: error: pointer type '*i32' does not allow address zero
test/cases/compile_errors/ptrcast_to_non-pointer.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry(a: *i32) usize {
2 return @ptrCast(usize, a);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:21: error: expected pointer type, found 'usize'
test/cases/compile_errors/reassign_to_slice_parameter.zig created+12
......@@ -0,0 +1,12 @@
1pub fn reassign(s: []const u8) void {
2 s = s[0..];
3}
4export fn entry() void {
5 reassign("foo");
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :2:10: error: cannot assign to constant
test/cases/compile_errors/redefinition_of_enums.zig created+9
......@@ -0,0 +1,9 @@
1const A = enum {x};
2const A = enum {x};
3
4// error
5// backend=stage2
6// target=native
7//
8// :2:1: error: redeclaration of 'A'
9// :1:1: note: other declaration here
test/cases/compile_errors/redefinition_of_global_variables.zig created+9
......@@ -0,0 +1,9 @@
1var a : i32 = 1;
2var a : i32 = 2;
3
4// error
5// backend=stage2
6// target=native
7//
8// :2:1: error: redeclaration of 'a'
9// :1:1: note: other declaration here
test/cases/compile_errors/redefinition_of_struct.zig created+9
......@@ -0,0 +1,9 @@
1const A = struct { x : i32, };
2const A = struct { y : i32, };
3
4// error
5// backend=stage2
6// target=native
7//
8// :2:1: error: redeclaration of 'A'
9// :1:1: note: other declaration here
test/cases/compile_errors/refer_to_the_type_of_a_generic_function.zig created+11
......@@ -0,0 +1,11 @@
1export fn entry() void {
2 const Func = fn (type) void;
3 const f: Func = undefined;
4 f(i32);
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :4:5: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/reference_to_const_data.zig created+29
......@@ -0,0 +1,29 @@
1export fn foo() void {
2 var ptr = &[_]u8{0,0,0,0};
3 ptr[1] = 2;
4}
5export fn bar() void {
6 var ptr = &@as(u32, 2);
7 ptr.* = 2;
8}
9export fn baz() void {
10 var ptr = &true;
11 ptr.* = false;
12}
13export fn qux() void {
14 const S = struct{
15 x: usize,
16 y: usize,
17 };
18 var ptr = &S{.x=1,.y=2};
19 ptr.x = 2;
20}
21
22// error
23// backend=stage2
24// target=native
25//
26// :3:14: error: cannot assign to constant
27// :7:13: error: cannot assign to constant
28// :11:13: error: cannot assign to constant
29// :19:13: error: cannot assign to constant
test/cases/compile_errors/referring_to_a_struct_that_is_invalid.zig created+18
......@@ -0,0 +1,18 @@
1const UsbDeviceRequest = struct {
2 Type: u8,
3};
4
5export fn foo() void {
6 comptime assert(@sizeOf(UsbDeviceRequest) == 0x8);
7}
8
9fn assert(ok: bool) void {
10 if (!ok) unreachable;
11}
12
13// error
14// backend=stage2
15// target=native
16//
17// :10:14: error: reached unreachable code
18// :6:20: note: called from here
test/cases/compile_errors/reify_typeOf_with_incompatible_arguments.zig created+13
......@@ -0,0 +1,13 @@
1export fn entry() void {
2 var var_1: f32 = undefined;
3 var var_2: u32 = undefined;
4 _ = @TypeOf(var_1, var_2);
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :4:9: error: incompatible types: 'f32' and 'u32'
12// :4:17: note: type 'f32' here
13// :4:24: note: type 'u32' here
test/cases/compile_errors/reify_typeOf_with_no_arguments.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 _ = @TypeOf();
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:9: error: expected at least 1 argument, found 0
test/cases/compile_errors/reject_extern_function_definitions_with_body.zig created+9
......@@ -0,0 +1,9 @@
1extern "c" fn definitelyNotInLibC(a: i32, b: i32) i32 {
2 return a + b;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :1:1: error: extern functions have no body
test/cases/compile_errors/reject_extern_variables_with_initializers.zig created+7
......@@ -0,0 +1,7 @@
1extern var foo: int = 2;
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:23: error: extern variables have no initializers
test/cases/compile_errors/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig created+14
......@@ -0,0 +1,14 @@
1pub fn A() type {
2 return Q;
3}
4test "1" {
5 _ = A().a;
6 _ = A().a;
7}
8
9// error
10// backend=stage2
11// target=native
12// is_test=1
13//
14// :2:12: error: use of undeclared identifier 'Q'
test/cases/compile_errors/return_from_defer_expression.zig created+21
......@@ -0,0 +1,21 @@
1pub fn testTrickyDefer() !void {
2 defer canFail() catch {};
3
4 defer try canFail();
5
6 const a = maybeInt() orelse return;
7}
8
9fn canFail() anyerror!void { }
10
11pub fn maybeInt() ?i32 {
12 return 0;
13}
14
15export fn entry() usize { return @sizeOf(@TypeOf(testTrickyDefer)); }
16
17// error
18// backend=stage2
19// target=native
20//
21// :4:11: error: 'try' not allowed inside defer expression
test/cases/compile_errors/return_invalid_type_from_test.zig created+8
......@@ -0,0 +1,8 @@
1test "example" { return 1; }
2
3// error
4// backend=stage2
5// target=native
6// is_test=1
7//
8// :1:25: error: expected type 'void', found 'comptime_int'
test/cases/compile_errors/runtime_cast_to_union_which_has_non-void_fields.zig created+23
......@@ -0,0 +1,23 @@
1const Letter = enum { A, B, C };
2const Value = union(Letter) {
3 A: i32,
4 B,
5 C,
6};
7export fn entry() void {
8 foo(Letter.A);
9}
10fn foo(l: Letter) void {
11 var x: Value = l;
12 _ = x;
13}
14
15// error
16// backend=stage2
17// target=native
18//
19// :11:20: error: runtime coercion from enum 'tmp.Letter' to union 'tmp.Value' which has non-void fields
20// :3:5: note: field 'A' has type 'i32'
21// :4:5: note: field 'B' has type 'void'
22// :5:5: note: field 'C' has type 'void'
23// :2:15: note: union declared here
test/cases/compile_errors/saturating_arithmetic_does_not_allow_floats.zig created+9
......@@ -0,0 +1,9 @@
1export fn a() void {
2 _ = @as(f32, 1.0) +| @as(f32, 1.0);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:23: error: invalid operands to binary expression: 'Float' and 'Float'
test/cases/compile_errors/setAlignStack_in_naked_function.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() callconv(.Naked) void {
2 @setAlignStack(16);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: @setAlignStack in naked function
test/cases/compile_errors/setAlignStack_outside_function.zig created+9
......@@ -0,0 +1,9 @@
1comptime {
2 @setAlignStack(16);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: @setAlignStack outside function body
test/cases/compile_errors/setAlignStack_set_twice.zig created+11
......@@ -0,0 +1,11 @@
1export fn entry() void {
2 @setAlignStack(16);
3 @setAlignStack(16);
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:5: error: multiple @setAlignStack in the same function body
11// :2:5: note: other instance here
test/cases/compile_errors/setAlignStack_too_big.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 @setAlignStack(511 + 1);
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: attempt to @setAlignStack(512); maximum is 256
test/cases/compile_errors/setting_a_section_on_a_local_variable.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() i32 {
2 var foo: i32 linksection(".text2") = 1234;
3 return foo;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:30: error: cannot set section of local variable 'foo'
test/cases/compile_errors/shifting_RHS_is_log2_of_LHS_int_bit_width.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry(x: u8, y: u8) u8 {
2 return x << y;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:17: error: expected type 'u3', found 'u8'
test/cases/compile_errors/slicing_single-item_pointer.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry(ptr: *i32) void {
2 const slice = ptr[0..2];
3 _ = slice;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:22: error: slice of single-item pointer
test/cases/compile_errors/stage1/exe/main_missing_name.zig deleted-8
......@@ -1,8 +0,0 @@
1pub fn (main) void {}
2
3// error
4// backend=stage1
5// target=native
6// output_mode=Exe
7//
8// tmp.zig:1:5: error: missing function name
test/cases/compile_errors/stage1/obj/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig deleted-16
......@@ -1,16 +0,0 @@
1export fn f1(x: u32) u32 {
2 const y = -%x;
3 return -y;
4}
5const V = @import("std").meta.Vector;
6export fn f2(x: V(4, u32)) V(4, u32) {
7 const y = -%x;
8 return -y;
9}
10
11// error
12// backend=stage1
13// target=native
14//
15// tmp.zig:3:12: error: negation of type 'u32'
16// tmp.zig:8:12: error: negation of type 'u32'
test/cases/compile_errors/stage1/obj/Issue_6823_dont_allow_._to_be_followed_by_.zig deleted-10
......@@ -1,10 +0,0 @@
1fn foo() void {
2 var sequence = "repeat".*** 10;
3 _ = sequence;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:28: error: '.*' cannot be followed by '*'. Are you missing a space?
test/cases/compile_errors/stage1/obj/access_non-existent_member_of_error_set.zig deleted-11
......@@ -1,11 +0,0 @@
1const Foo = error{A};
2comptime {
3 const z = Foo.Bar;
4 _ = z;
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:18: error: no error named 'Bar' in 'Foo'
test/cases/compile_errors/stage1/obj/add_assign_on_undefined_value.zig deleted-10
......@@ -1,10 +0,0 @@
1comptime {
2 var a: i64 = undefined;
3 a += a;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:5: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/add_on_undefined_value.zig deleted-10
......@@ -1,10 +0,0 @@
1comptime {
2 var a: i64 = undefined;
3 _ = a + a;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:9: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/add_overflow_in_function_evaluation.zig deleted-12
......@@ -1,12 +0,0 @@
1const y = add(65530, 10);
2fn add(a: u16, b: u16) u16 {
3 return a + b;
4}
5
6export fn entry() usize { return @sizeOf(@TypeOf(y)); }
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:3:14: error: operation caused overflow
test/cases/compile_errors/stage1/obj/addition_with_non_numbers.zig deleted-12
......@@ -1,12 +0,0 @@
1const Foo = struct {
2 field: i32,
3};
4const x = Foo {.field = 1} + Foo {.field = 2};
5
6export fn entry() usize { return @sizeOf(@TypeOf(x)); }
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:28: error: invalid operands to binary expression: 'Foo' and 'Foo'
test/cases/compile_errors/stage1/obj/address_of_number_literal.zig deleted-10
......@@ -1,10 +0,0 @@
1const x = 3;
2const y = &x;
3fn foo() *const i32 { return y; }
4export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:30: error: expected type '*const i32', found '*const comptime_int'
test/cases/compile_errors/stage1/obj/alignCast_expects_pointer_or_slice.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() void {
2 @alignCast(4, @as(u32, 3));
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:19: error: expected pointer or slice, found 'u32'
test/cases/compile_errors/stage1/obj/alignment_of_enum_field_specified.zig deleted-14
......@@ -1,14 +0,0 @@
1const Number = enum {
2 a,
3 b align(i32),
4};
5export fn entry1() void {
6 var x: Number = undefined;
7 _ = x;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:3:7: error: expected ',' after field
test/cases/compile_errors/stage1/obj/ambiguous_decl_reference.zig deleted-21
......@@ -1,21 +0,0 @@
1fn foo() void {}
2fn bar() void {
3 const S = struct {
4 fn baz() void {
5 foo();
6 }
7 fn foo() void {}
8 };
9 S.baz();
10}
11export fn entry() void {
12 bar();
13}
14
15// error
16// backend=stage1
17// target=native
18//
19// tmp.zig:5:13: error: ambiguous reference
20// tmp.zig:7:9: note: declared here
21// tmp.zig:1:1: note: also declared here
test/cases/compile_errors/stage1/obj/array_access_of_undeclared_identifier.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn f() void {
2 i[i] = i[i];
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: use of undeclared identifier 'i'
test/cases/compile_errors/stage1/obj/array_concatenation_with_wrong_type.zig deleted-11
......@@ -1,11 +0,0 @@
1const src = "aoeu";
2const derp: usize = 1234;
3const a = derp ++ "foo";
4
5export fn entry() usize { return @sizeOf(@TypeOf(a)); }
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:11: error: expected array, found 'usize'
test/cases/compile_errors/stage1/obj/asm_at_compile_time.zig deleted-17
......@@ -1,17 +0,0 @@
1comptime {
2 doSomeAsm();
3}
4
5fn doSomeAsm() void {
6 asm volatile (
7 \\.globl aoeu;
8 \\.type aoeu, @function;
9 \\.set aoeu, derp;
10 );
11}
12
13// error
14// backend=stage1
15// target=native
16//
17// tmp.zig:6:5: error: unable to evaluate constant expression
test/cases/compile_errors/stage1/obj/assign_null_to_non-optional_pointer.zig deleted-9
......@@ -1,9 +0,0 @@
1const a: *u8 = null;
2
3export fn entry() usize { return @sizeOf(@TypeOf(a)); }
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:1:16: error: expected type '*u8', found '@Type(.Null)'
test/cases/compile_errors/stage1/obj/assign_through_constant_pointer.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn f() void {
2 var cstr = "Hat";
3 cstr[0] = 'W';
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:13: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/assign_through_constant_slice.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn f() void {
2 var cstr: []const u8 = "Hat";
3 cstr[0] = 'W';
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:13: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/assign_to_constant_field.zig deleted-13
......@@ -1,13 +0,0 @@
1const Foo = struct {
2 field: i32,
3};
4export fn derp() void {
5 const f = Foo {.field = 1234,};
6 f.field = 0;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:6:15: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/assign_to_constant_variable.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn f() void {
2 const a = 3;
3 a = 4;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:9: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/assign_too_big_number_to_u16.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn foo() void {
2 var vga_mem: u16 = 0xB8000;
3 _ = vga_mem;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:24: error: integer value 753664 cannot be coerced to type 'u16'
test/cases/compile_errors/stage1/obj/assign_unreachable.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn f() void {
2 const a = return;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: unreachable code
10// tmp.zig:2:15: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var x: u32 = 0;
3 @atomicStore(u32, &x, 1, .Acquire);
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:30: error: @atomicStore atomic ordering must not be Acquire or AcqRel
test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig deleted-11
......@@ -1,11 +0,0 @@
1const AtomicOrder = @import("std").builtin.AtomicOrder;
2export fn f() void {
3 var x: i32 = 1234;
4 while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.Monotonic, AtomicOrder.SeqCst)) {}
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:4:81: error: failure atomic ordering must be no stricter than success
test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig deleted-11
......@@ -1,11 +0,0 @@
1const AtomicOrder = @import("std").builtin.AtomicOrder;
2export fn f() void {
3 var x: i32 = 1234;
4 while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.Unordered, AtomicOrder.Unordered)) {}
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:4:58: error: success atomic ordering must be Monotonic or stricter
test/cases/compile_errors/stage1/obj/atomic_orderings_of_fence_Acquire_or_stricter.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() void {
2 @fence(.Monotonic);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:12: error: atomic ordering must be Acquire or stricter
test/cases/compile_errors/stage1/obj/atomicrmw_with_bool_op_not_.Xchg.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var x = false;
3 _ = @atomicRmw(bool, &x, .Add, true, .SeqCst);
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:30: error: @atomicRmw with bool only allowed with .Xchg
test/cases/compile_errors/stage1/obj/atomicrmw_with_enum_op_not_.Xchg.zig deleted-16
......@@ -1,16 +0,0 @@
1export fn entry() void {
2 const E = enum(u8) {
3 a,
4 b,
5 c,
6 d,
7 };
8 var x: E = .a;
9 _ = @atomicRmw(E, &x, .Add, .b, .SeqCst);
10}
11
12// error
13// backend=stage1
14// target=native
15//
16// tmp.zig:9:27: error: @atomicRmw with enum only allowed with .Xchg
test/cases/compile_errors/stage1/obj/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var x: f32 = 0;
3 _ = @atomicRmw(f32, &x, .And, 2, .SeqCst);
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:29: error: @atomicRmw with float only allowed with .Xchg, .Add and .Sub
test/cases/compile_errors/stage1/obj/attempt_to_cast_enum_literal_to_error.zig deleted-11
......@@ -1,11 +0,0 @@
1export fn entry() void {
2 switch (error.Hi) {
3 .Hi => {},
4 }
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:9: error: expected type 'error{Hi}', found '@Type(.EnumLiteral)'
test/cases/compile_errors/stage1/obj/attempt_to_close_over_comptime_variable_from_outer_scope.zig deleted-14
......@@ -1,14 +0,0 @@
1fn SimpleList(comptime L: usize) type {
2 var T = u8;
3 return struct {
4 array: [L]T,
5 };
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:19: error: mutable 'T' not accessible from here
13// tmp.zig:2:9: note: declared mutable here
14// tmp.zig:3:12: note: crosses namespace boundary here
test/cases/compile_errors/stage1/obj/attempt_to_create_17_bit_float_type.zig deleted-10
......@@ -1,10 +0,0 @@
1const builtin = @import("std").builtin;
2comptime {
3 _ = @Type(.{ .Float = .{ .bits = 17 } });
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:16: error: 17-bit float unsupported
test/cases/compile_errors/stage1/obj/attempted_double_ampersand.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry(a: bool, b: bool) i32 {
2 if (a && b) {
3 return 1234;
4 }
5 return 5678;
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:2:11: error: ambiguous use of '&&'; use 'and' for logical AND, or change whitespace to ' & &' for bitwise AND
test/cases/compile_errors/stage1/obj/attempted_double_pipe_on_boolean_values.zig deleted-13
......@@ -1,13 +0,0 @@
1export fn entry(a: bool, b: bool) i32 {
2 if (a || b) {
3 return 1234;
4 }
5 return 5678;
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:2:9: error: expected error set type, found 'bool'
13// tmp.zig:2:11: note: `||` merges error sets; `or` performs boolean OR
test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_T_to_slice_const_T.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 const x: [*]const bool = true;
3 _ = x;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:30: error: expected type '[*]const bool', found 'bool'
test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_const_T_to_sliceT.zig deleted-11
......@@ -1,11 +0,0 @@
1export fn entry() void {
2 const u: u32 = 42;
3 const x: []u32 = &u;
4 _ = x;
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:23: error: expected type '[]u32', found '*const u32'
test/cases/compile_errors/stage1/obj/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig deleted-17
......@@ -1,17 +0,0 @@
1export fn entry() void {
2 const BlockKind = u32;
3
4 const Block = struct {
5 kind: BlockKind,
6 };
7
8 bogus;
9
10 _ = Block;
11}
12
13// error
14// backend=stage1
15// target=native
16//
17// tmp.zig:8:5: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/stage1/obj/bad_import.zig deleted-7
......@@ -1,7 +0,0 @@
1const bogus = @import("bogus-does-not-exist.zig",);
2
3// error
4// backend=stage1
5// target=native
6//
7// tmp.zig:1:23: error: unable to load '${DIR}bogus-does-not-exist.zig': FileNotFound
test/cases/compile_errors/stage1/obj/binary_not_on_number_literal.zig deleted-11
......@@ -1,11 +0,0 @@
1const TINY_QUANTUM_SHIFT = 4;
2const TINY_QUANTUM_SIZE = 1 << TINY_QUANTUM_SHIFT;
3var block_aligned_stuff: usize = (4 + TINY_QUANTUM_SIZE) & ~(TINY_QUANTUM_SIZE - 1);
4
5export fn entry() usize { return @sizeOf(@TypeOf(block_aligned_stuff)); }
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:60: error: unable to perform binary not operation on type 'comptime_int'
test/cases/compile_errors/stage1/obj/bitCast_same_size_but_bit_count_mismatch.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry(byte: u8) void {
2 var oops = @bitCast(u7, byte);
3 _ = oops;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:25: error: destination type 'u7' has 7 bits but source type 'u8' has 8 bits
test/cases/compile_errors/stage1/obj/bitCast_with_different_sizes_inside_an_expression.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var foo = (@bitCast(u8, @as(f32, 1.0)) == 0xf);
3 _ = foo;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:25: error: destination type 'u8' has size 1 but source type 'f32' has size 4
test/cases/compile_errors/stage1/obj/bit_shifting_only_works_on_integer_types.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 const x = &@as(u8, 1) << 10;
3 _ = x;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:16: error: bit shifting operation expected integer type, found '*const u8'
test/cases/compile_errors/stage1/obj/bogus_method_call_on_slice.zig deleted-11
......@@ -1,11 +0,0 @@
1var self = "aoeu";
2fn f(m: []const u8) void {
3 m.copy(u8, self[0..], m);
4}
5export fn entry() usize { return @sizeOf(@TypeOf(f)); }
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:6: error: no member named 'copy' in '[]const u8'
test/cases/compile_errors/stage1/obj/branch_on_undefined_value.zig deleted-9
......@@ -1,9 +0,0 @@
1const x = if (undefined) true else false;
2
3export fn entry() usize { return @sizeOf(@TypeOf(x)); }
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:1:15: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/call_assigned_to_constant.zig deleted-24
......@@ -1,24 +0,0 @@
1const Foo = struct {
2 x: i32,
3};
4fn foo() Foo {
5 return .{ .x = 42 };
6}
7fn bar(val: anytype) Foo {
8 return .{ .x = val };
9}
10export fn entry() void {
11 const baz: Foo = undefined;
12 baz = foo();
13}
14export fn entry1() void {
15 const baz: Foo = undefined;
16 baz = bar(42);
17}
18
19// error
20// backend=stage1
21// target=native
22//
23// tmp.zig:12:14: error: cannot assign to constant
24// tmp.zig:16:14: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/calling_var_args_extern_function_passing_array_instead_of_pointer.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 foo("hello".*,);
3}
4pub extern fn foo(format: *const u8, ...) void;
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:16: error: expected type '*const u8', found '[5:0]u8'
test/cases/compile_errors/stage1/obj/cast_enum_literal_to_enum_but_it_doesnt_match.zig deleted-15
......@@ -1,15 +0,0 @@
1const Foo = enum {
2 a,
3 b,
4};
5export fn entry() void {
6 const x: Foo = .c;
7 _ = x;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:6:20: error: enum 'Foo' has no field named 'c'
15// tmp.zig:1:13: note: 'Foo' declared here
test/cases/compile_errors/stage1/obj/cast_negative_integer_literal_to_usize.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 const x = @as(usize, -10);
3 _ = x;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:26: error: cannot cast negative value -10 to unsigned integer type 'usize'
test/cases/compile_errors/stage1/obj/cast_negative_value_to_unsigned_integer.zig deleted-17
......@@ -1,17 +0,0 @@
1comptime {
2 const value: i32 = -1;
3 const unsigned = @intCast(u32, value);
4 _ = unsigned;
5}
6export fn entry1() void {
7 const value: i32 = -1;
8 const unsigned: u32 = value;
9 _ = unsigned;
10}
11
12// error
13// backend=stage1
14// target=native
15//
16// tmp.zig:3:22: error: attempt to cast negative value to unsigned integer
17// tmp.zig:8:27: error: cannot cast negative value -1 to unsigned integer type 'u32'
test/cases/compile_errors/stage1/obj/cast_unreachable.zig deleted-11
......@@ -1,11 +0,0 @@
1fn f() i32 {
2 return @as(i32, return 1);
3}
4export fn entry() void { _ = f(); }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:12: error: unreachable code
11// tmp.zig:2:21: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/casting_bit_offset_pointer_to_regular_pointer.zig deleted-21
......@@ -1,21 +0,0 @@
1const BitField = packed struct {
2 a: u3,
3 b: u3,
4 c: u2,
5};
6
7fn foo(bit_field: *const BitField) u3 {
8 return bar(&bit_field.b);
9}
10
11fn bar(x: *const u3) u3 {
12 return x.*;
13}
14
15export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
16
17// error
18// backend=stage1
19// target=native
20//
21// tmp.zig:8:26: error: expected type '*const u3', found '*align(:3:1) const u3'
test/cases/compile_errors/stage1/obj/chained_comparison_operators.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn a(value: u32) bool {
2 return 1 < value < 1000;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:22: error: comparison operators cannot be chained
test/cases/compile_errors/stage1/obj/cmpxchg_with_float.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var x: f32 = 0;
3 _ = @cmpxchgWeak(f32, &x, 1, 2, .SeqCst, .SeqCst);
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:22: error: expected bool, integer, enum or pointer type, found 'f32'
test/cases/compile_errors/stage1/obj/colliding_invalid_top_level_functions.zig deleted-10
......@@ -1,10 +0,0 @@
1fn func() bogus {}
2fn func() bogus {}
3export fn entry() usize { return @sizeOf(@TypeOf(func)); }
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:1: error: redeclaration of 'func'
10// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/comparing_a_non-optional_pointer_against_null.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var x: i32 = 1;
3 _ = &x == null;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:12: error: comparison of '*i32' with null
test/cases/compile_errors/stage1/obj/comparison_operators_with_undefined_value.zig deleted-47
......@@ -1,47 +0,0 @@
1// operator ==
2comptime {
3 var a: i64 = undefined;
4 var x: i32 = 0;
5 if (a == a) x += 1;
6}
7// operator !=
8comptime {
9 var a: i64 = undefined;
10 var x: i32 = 0;
11 if (a != a) x += 1;
12}
13// operator >
14comptime {
15 var a: i64 = undefined;
16 var x: i32 = 0;
17 if (a > a) x += 1;
18}
19// operator <
20comptime {
21 var a: i64 = undefined;
22 var x: i32 = 0;
23 if (a < a) x += 1;
24}
25// operator >=
26comptime {
27 var a: i64 = undefined;
28 var x: i32 = 0;
29 if (a >= a) x += 1;
30}
31// operator <=
32comptime {
33 var a: i64 = undefined;
34 var x: i32 = 0;
35 if (a <= a) x += 1;
36}
37
38// error
39// backend=stage1
40// target=native
41//
42// tmp.zig:5:11: error: use of undefined value here causes undefined behavior
43// tmp.zig:11:11: error: use of undefined value here causes undefined behavior
44// tmp.zig:17:11: error: use of undefined value here causes undefined behavior
45// tmp.zig:23:11: error: use of undefined value here causes undefined behavior
46// tmp.zig:29:11: error: use of undefined value here causes undefined behavior
47// tmp.zig:35:11: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/comparison_with_error_union_and_error_value.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var number_or_error: anyerror!i32 = error.SomethingAwful;
3 _ = number_or_error == error.SomethingAwful;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:25: error: operator not allowed for type 'anyerror!i32'
test/cases/compile_errors/stage1/obj/compileError_shows_traceback_of_references_that_caused_it.zig deleted-14
......@@ -1,14 +0,0 @@
1const foo = @compileError("aoeu",);
2
3const bar = baz + foo;
4const baz = 1;
5
6export fn entry() i32 {
7 return bar;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:1:13: error: aoeu
test/cases/compile_errors/stage1/obj/compile_error_in_struct_init_expression.zig deleted-16
......@@ -1,16 +0,0 @@
1const Foo = struct {
2 a: i32 = crap,
3 b: i32,
4};
5export fn entry() void {
6 var x = Foo{
7 .b = 5,
8 };
9 _ = x;
10}
11
12// error
13// backend=stage1
14// target=native
15//
16// tmp.zig:2:14: error: use of undeclared identifier 'crap'
test/cases/compile_errors/stage1/obj/compile_error_when_evaluating_return_type_of_inferred_error_set.zig deleted-14
......@@ -1,14 +0,0 @@
1const Car = struct {
2 foo: *SymbolThatDoesNotExist,
3 pub fn init() !Car {}
4};
5export fn entry() void {
6 const car = Car.init();
7 _ = car;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist'
test/cases/compile_errors/stage1/obj/compile_log_a_pointer_to_an_opaque_value.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() void {
2 @compileLog(@ptrCast(*const anyopaque, &entry));
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: found compile log statement
test/cases/compile_errors/stage1/obj/compile_log_statement_warning_deduplication_in_generic_fn.zig deleted-14
......@@ -1,14 +0,0 @@
1export fn entry() void {
2 inner(1);
3 inner(2);
4}
5fn inner(comptime n: usize) void {
6 comptime var i = 0;
7 inline while (i < n) : (i += 1) { @compileLog("!@#$"); }
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:7:39: error: found compile log statement
test/cases/compile_errors/stage1/obj/comptime_cast_enum_to_union_but_field_has_payload.zig deleted-17
......@@ -1,17 +0,0 @@
1const Letter = enum { A, B, C };
2const Value = union(Letter) {
3 A: i32,
4 B,
5 C,
6};
7export fn entry() void {
8 var x: Value = Letter.A;
9 _ = x;
10}
11
12// error
13// backend=stage1
14// target=native
15//
16// tmp.zig:8:26: error: cast to union 'Value' must initialize 'i32' field 'A'
17// tmp.zig:3:5: note: field 'A' declared here
test/cases/compile_errors/stage1/obj/comptime_slice_of_undefined_pointer_non-zero_len.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 const slice = @as([*]i32, undefined)[0..1];
3 _ = slice;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:41: error: non-zero length slice of undefined pointer
test/cases/compile_errors/stage1/obj/comptime_struct_field_no_init_value.zig deleted-13
......@@ -1,13 +0,0 @@
1const Foo = struct {
2 comptime b: i32,
3};
4export fn entry() void {
5 var f: Foo = undefined;
6 _ = f;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:2:5: error: comptime field without default initialization value
test/cases/compile_errors/stage1/obj/const_is_a_statement_not_an_expression.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn f() void {
2 (const a = 0);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:6: error: expected expression, found 'const'
test/cases/compile_errors/stage1/obj/container_init_with_non-type.zig deleted-10
......@@ -1,10 +0,0 @@
1const zero: i32 = 0;
2const a = zero{1};
3
4export fn entry() usize { return @sizeOf(@TypeOf(a)); }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:11: error: expected type 'type', found 'i32'
test/cases/compile_errors/stage1/obj/control_flow_uses_comptime_var_at_runtime.zig deleted-15
......@@ -1,15 +0,0 @@
1export fn foo() void {
2 comptime var i = 0;
3 while (i < 5) : (i += 1) {
4 bar();
5 }
6}
7
8fn bar() void { }
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:3:5: error: control flow attempts to use compile-time variable at runtime
15// tmp.zig:3:24: note: compile-time variable assigned here
test/cases/compile_errors/stage1/obj/declaration_between_fields.zig deleted-24
......@@ -1,24 +0,0 @@
1const S = struct {
2 const foo = 2;
3 const bar = 2;
4 const baz = 2;
5 a: struct {
6 a: u32,
7 b: u32,
8 },
9 const foo1 = 2;
10 const bar1 = 2;
11 const baz1 = 2;
12 b: usize,
13};
14comptime {
15 _ = S;
16}
17
18// error
19// backend=stage1
20// target=native
21//
22// tmp.zig:9:5: error: declarations are not allowed between container fields
23// tmp.zig:5:5: note: field before declarations here
24// tmp.zig:12:5: note: field after declarations here
test/cases/compile_errors/stage1/obj/declaration_with_same_name_as_primitive_must_use_special_syntax.zig deleted-12
......@@ -1,12 +0,0 @@
1const u8 = u16;
2export fn entry() void {
3 const a: u8 = 300;
4 _ = a;
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:1:7: error: name shadows primitive 'u8'
12// tmp.zig:1:7: note: consider using @"u8" to disambiguate
test/cases/compile_errors/stage1/obj/deduplicate_undeclared_identifier.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn a() void {
2 x += 1;
3}
4export fn b() void {
5 x += 1;
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:2:5: error: use of undeclared identifier 'x'
test/cases/compile_errors/stage1/obj/dont_implicit_cast_double_pointer_to_anyopaque.zig deleted-13
......@@ -1,13 +0,0 @@
1export fn entry() void {
2 var a: u32 = 1;
3 var ptr: *align(@alignOf(u32)) anyopaque = &a;
4 var b: *u32 = @ptrCast(*u32, ptr);
5 var ptr2: *anyopaque = &b;
6 _ = ptr2;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:5:29: error: expected type '*anyopaque', found '**u32'
test/cases/compile_errors/stage1/obj/duplicate_boolean_switch_value.zig deleted-23
......@@ -1,23 +0,0 @@
1comptime {
2 const x = switch (true) {
3 true => false,
4 false => true,
5 true => false,
6 };
7 _ = x;
8}
9comptime {
10 const x = switch (true) {
11 false => true,
12 true => false,
13 false => true,
14 };
15 _ = x;
16}
17
18// error
19// backend=stage1
20// target=native
21//
22// tmp.zig:5:9: error: duplicate switch value
23// tmp.zig:13:9: error: duplicate switch value
test/cases/compile_errors/stage1/obj/duplicate_error_value_in_error_set.zig deleted-15
......@@ -1,15 +0,0 @@
1const Foo = error {
2 Bar,
3 Bar,
4};
5export fn entry() void {
6 const a: Foo = undefined;
7 _ = a;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:3:5: error: duplicate error set field 'Bar'
15// tmp.zig:2:5: note: previous declaration here
test/cases/compile_errors/stage1/obj/duplicate_field_in_struct_value_expression.zig deleted-20
......@@ -1,20 +0,0 @@
1const A = struct {
2 x : i32,
3 y : i32,
4 z : i32,
5};
6export fn f() void {
7 const a = A {
8 .z = 1,
9 .y = 2,
10 .x = 3,
11 .z = 4,
12 };
13 _ = a;
14}
15
16// error
17// backend=stage1
18// target=native
19//
20// tmp.zig:11:9: error: duplicate field
test/cases/compile_errors/stage1/obj/duplicate_struct_field.zig deleted-15
......@@ -1,15 +0,0 @@
1const Foo = struct {
2 Bar: i32,
3 Bar: usize,
4};
5export fn entry() void {
6 const a: Foo = undefined;
7 _ = a;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:3:5: error: duplicate struct field: 'Bar'
15// tmp.zig:2:5: note: other field here
test/cases/compile_errors/stage1/obj/duplicate_union_field.zig deleted-15
......@@ -1,15 +0,0 @@
1const Foo = union {
2 Bar: i32,
3 Bar: usize,
4};
5export fn entry() void {
6 const a: Foo = undefined;
7 _ = a;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:3:5: error: duplicate union field: 'Bar'
15// tmp.zig:2:5: note: other field here
test/cases/compile_errors/stage1/obj/embedFile_with_bogus_file.zig deleted-9
......@@ -1,9 +0,0 @@
1const resource = @embedFile("bogus.txt",);
2
3export fn entry() usize { return @sizeOf(@TypeOf(resource)); }
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:1:29: error: unable to find '
test/cases/compile_errors/stage1/obj/empty_for_loop_body.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn a() void {
2 for(undefined) |x|;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:23: error: expected block or assignment, found ';'
test/cases/compile_errors/stage1/obj/empty_if_body.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn a() void {
2 if(true);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:13: error: expected block or assignment, found ';'
test/cases/compile_errors/stage1/obj/empty_switch_on_an_integer.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var x: u32 = 0;
3 switch(x) {}
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:5: error: switch must handle all possibilities
test/cases/compile_errors/stage1/obj/empty_while_loop_body.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn a() void {
2 while(true);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:16: error: expected block or assignment, found ';'
test/cases/compile_errors/stage1/obj/endless_loop_in_function_evaluation.zig deleted-12
......@@ -1,12 +0,0 @@
1const seventh_fib_number = fibonacci(7);
2fn fibonacci(x: i32) i32 {
3 return fibonacci(x - 1) + fibonacci(x - 2);
4}
5
6export fn entry() usize { return @sizeOf(@TypeOf(seventh_fib_number)); }
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:3:21: error: evaluation exceeded 1000 backwards branches
test/cases/compile_errors/stage1/obj/enum_in_field_count_range_but_not_matching_tag.zig deleted-15
......@@ -1,15 +0,0 @@
1const Foo = enum(u32) {
2 A = 10,
3 B = 11,
4};
5export fn entry() void {
6 var x = @intToEnum(Foo, 0);
7 _ = x;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:6:13: error: enum 'Foo' has no tag matching integer value 0
15// tmp.zig:1:13: note: 'Foo' declared here
test/cases/compile_errors/stage1/obj/enum_with_0_fields.zig deleted-7
......@@ -1,7 +0,0 @@
1const Foo = enum {};
2
3// error
4// backend=stage1
5// target=native
6//
7// tmp.zig:1:13: error: enum declarations must have at least one tag
test/cases/compile_errors/stage1/obj/enum_with_declarations_unavailable_for_reify_type.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() void {
2 _ = @Type(@typeInfo(enum { foo, const bar = 1; }));
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:15: error: Type.Enum.decls must be empty for @Type
test/cases/compile_errors/stage1/obj/error_union_operator_with_non_error_set_LHS.zig deleted-11
......@@ -1,11 +0,0 @@
1comptime {
2 const z = i32!i32;
3 var x: z = undefined;
4 _ = x;
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:2:15: error: expected error set type, found type 'i32'
test/cases/compile_errors/stage1/obj/exceeded_maximum_bit_width_of_integer.zig deleted-15
......@@ -1,15 +0,0 @@
1export fn entry1() void {
2 const T = u65536;
3 _ = T;
4}
5export fn entry2() void {
6 var x: i65536 = 1;
7 _ = x;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:2:15: error: primitive integer type 'u65536' exceeds maximum bit width of 65535
15// tmp.zig:6:12: error: primitive integer type 'i65536' exceeds maximum bit width of 65535
test/cases/compile_errors/stage1/obj/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() i32 {
2 return @as(i32, 12.34);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:21: error: fractional component prevents float value 12.340000 from being casted to type 'i32'
test/cases/compile_errors/stage1/obj/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig deleted-13
......@@ -1,13 +0,0 @@
1const Set1 = error {A, B};
2const Set2 = error {A, C};
3comptime {
4 var x = Set1.B;
5 var y = @errSetCast(Set2, x);
6 _ = y;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:5:13: error: error.B not a member of error set 'Set2'
test/cases/compile_errors/stage1/obj/extern_union_field_missing_type.zig deleted-13
......@@ -1,13 +0,0 @@
1const Letter = extern union {
2 A,
3};
4export fn entry() void {
5 var a = Letter { .A = {} };
6 _ = a;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:2:5: error: union field missing type
test/cases/compile_errors/stage1/obj/extern_variable_has_no_type.zig deleted-10
......@@ -1,10 +0,0 @@
1extern var foo;
2pub export fn entry() void {
3 foo;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:1:8: error: unable to infer variable type
test/cases/compile_errors/stage1/obj/fieldParentPtr-bad_field_name.zig deleted-12
......@@ -1,12 +0,0 @@
1const Foo = extern struct {
2 derp: i32,
3};
4export fn foo(a: *i32) *Foo {
5 return @fieldParentPtr(Foo, "a", a);
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:5:33: error: struct 'Foo' has no field 'a'
test/cases/compile_errors/stage1/obj/fieldParentPtr-non_struct.zig deleted-10
......@@ -1,10 +0,0 @@
1const Foo = i32;
2export fn foo(a: *i32) *Foo {
3 return @fieldParentPtr(Foo, "a", a);
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:28: error: expected struct type, found 'i32'
test/cases/compile_errors/stage1/obj/field_type_supplied_in_an_enum.zig deleted-12
......@@ -1,12 +0,0 @@
1const Letter = enum {
2 A: void,
3 B,
4 C,
5};
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:2:8: error: enum fields do not have types
12// tmp.zig:1:16: note: consider 'union(enum)' here to make it a tagged union
test/cases/compile_errors/stage1/obj/function_call_assigned_to_incorrect_type.zig deleted-13
......@@ -1,13 +0,0 @@
1export fn entry() void {
2 var arr: [4]f32 = undefined;
3 arr = concat();
4}
5fn concat() [16]f32 {
6 return [1]f32{0}**16;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:3:17: error: expected type '[4]f32', found '[16]f32'
test/cases/compile_errors/stage1/obj/function_prototype_with_no_body.zig deleted-10
......@@ -1,10 +0,0 @@
1fn foo() void;
2export fn entry() void {
3 foo();
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:1:1: error: non-extern function has no body
test/cases/compile_errors/stage1/obj/function_with_invalid_return_type.zig deleted-7
......@@ -1,7 +0,0 @@
1export fn foo() boid {}
2
3// error
4// backend=stage1
5// target=native
6//
7// tmp.zig:1:17: error: use of undeclared identifier 'boid'
test/cases/compile_errors/stage1/obj/generic_function_call_assigned_to_incorrect_type.zig deleted-13
......@@ -1,13 +0,0 @@
1pub export fn entry() void {
2 var res: []i32 = undefined;
3 res = myAlloc(i32);
4}
5fn myAlloc(comptime arg: type) anyerror!arg{
6 unreachable;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:3:18: error: expected type '[]i32', found 'anyerror!i32
test/cases/compile_errors/stage1/obj/global_variable_initializer_must_be_constant_expression.zig deleted-9
......@@ -1,9 +0,0 @@
1extern fn foo() i32;
2const x = foo();
3export fn entry() i32 { return x; }
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:11: error: unable to evaluate constant expression
test/cases/compile_errors/stage1/obj/hasDecl_with_non-container.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() void {
2 _ = @hasDecl(i32, "hi");
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:18: error: expected struct, enum, or union; found 'i32'
test/cases/compile_errors/stage1/obj/if_condition_is_bool_not_int.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn f() void {
2 if (0) {}
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:9: error: expected type 'bool', found 'comptime_int'
test/cases/compile_errors/stage1/obj/ignored_assert-err-ok_return_value.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn foo() void {
2 bar() catch unreachable;
3}
4fn bar() anyerror!i32 { return 0; }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:11: error: expression value is ignored
test/cases/compile_errors/stage1/obj/ignored_comptime_statement_value.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn foo() void {
2 comptime {1;}
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:15: error: expression value is ignored
test/cases/compile_errors/stage1/obj/ignored_comptime_value.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn foo() void {
2 comptime 1;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: expression value is ignored
test/cases/compile_errors/stage1/obj/ignored_deferred_statement_value.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn foo() void {
2 defer {1;}
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:12: error: expression value is ignored
test/cases/compile_errors/stage1/obj/ignored_return_value.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn foo() void {
2 bar();
3}
4fn bar() i32 { return 0; }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:8: error: expression value is ignored
test/cases/compile_errors/stage1/obj/ignored_statement_value.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn foo() void {
2 1;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: expression value is ignored
test/cases/compile_errors/stage1/obj/implicit_semicolon-block_expr.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = {};
3 var good = {};
4 _ = {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:11: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-block_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 {}
3 var good = {};
4 ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:9: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_expression.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = comptime {};
3 var good = {};
4 _ = comptime {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:20: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 comptime {}
3 var good = {};
4 comptime ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:18: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-defer.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 defer {}
3 var good = {};
4 defer ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:15: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-for_expression.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = for(foo()) |_| {};
3 var good = {};
4 _ = for(foo()) |_| {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:26: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-for_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 for(foo()) |_| {}
3 var good = {};
4 for(foo()) |_| ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:24: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_expression.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = if(true) {} else if(true) {} else {};
3 var good = {};
4 _ = if(true) {} else if(true) {} else {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:45: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 if(true) {} else if(true) {} else {}
3 var good = {};
4 if(true) ({}) else if(true) ({}) else ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:47: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_expression.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = if(true) {} else if(true) {};
3 var good = {};
4 _ = if(true) {} else if(true) {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:37: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 if(true) {} else if(true) {}
3 var good = {};
4 if(true) ({}) else if(true) ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:37: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_expression.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = if(true) {} else {};
3 var good = {};
4 _ = if(true) {} else {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:28: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 if(true) {} else {}
3 var good = {};
4 if(true) ({}) else ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:28: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if_expression.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = if(true) {};
3 var good = {};
4 _ = if(true) {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:20: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-if_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 if(true) {}
3 var good = {};
4 if(true) ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:18: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-test_expression.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = if (foo()) |_| {};
3 var good = {};
4 _ = if (foo()) |_| {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:26: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-test_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 if (foo()) |_| {}
3 var good = {};
4 if (foo()) |_| ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:24: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_expression.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = while(true):({}) {};
3 var good = {};
4 _ = while(true):({}) {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:28: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 while(true):({}) {}
3 var good = {};
4 while(true):({}) ({})
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:26: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-while_expression.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 _ = while(true) {};
3 var good = {};
4 _ = while(true) {}
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:23: error: expected ';' after statement
test/cases/compile_errors/stage1/obj/implicit_semicolon-while_statement.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 while(true) {}
3 var good = {};
4 while(true) 1
5 var bad = {};
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:18: error: expected ';' or 'else' after statement
test/cases/compile_errors/stage1/obj/import_outside_package_path.zig deleted-9
......@@ -1,9 +0,0 @@
1comptime{
2 _ = @import("../a.zig");
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:9: error: import of file outside package path: '../a.zig'
test/cases/compile_errors/stage1/obj/inferred_array_size_invalid_here.zig deleted-16
......@@ -1,16 +0,0 @@
1export fn entry() void {
2 const x = [_]u8;
3 _ = x;
4}
5export fn entry2() void {
6 const S = struct { a: *const [_]u8 };
7 var a = .{ S{} };
8 _ = a;
9}
10
11// error
12// backend=stage1
13// target=native
14//
15// tmp.zig:2:16: error: unable to infer array size
16// tmp.zig:6:35: error: unable to infer array size
test/cases/compile_errors/stage1/obj/inferring_error_set_of_function_pointer.zig deleted-9
......@@ -1,9 +0,0 @@
1comptime {
2 const z: ?fn()!void = null;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:19: error: function prototype may not have inferred error set
test/cases/compile_errors/stage1/obj/initializing_array_with_struct_syntax.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 const x = [_]u8{ .y = 2 };
3 _ = x;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:15: error: initializing array with struct syntax
test/cases/compile_errors/stage1/obj/int_to_err_global_invalid_number.zig deleted-15
......@@ -1,15 +0,0 @@
1const Set1 = error{
2 A,
3 B,
4};
5comptime {
6 var x: u16 = 3;
7 var y = @intToError(x);
8 _ = y;
9}
10
11// error
12// backend=stage1
13// target=native
14//
15// tmp.zig:7:13: error: integer value 3 represents no error
test/cases/compile_errors/stage1/obj/int_to_err_non_global_invalid_number.zig deleted-19
......@@ -1,19 +0,0 @@
1const Set1 = error{
2 A,
3 B,
4};
5const Set2 = error{
6 A,
7 C,
8};
9comptime {
10 var x = @errorToInt(Set1.B);
11 var y = @errSetCast(Set2, @intToError(x));
12 _ = y;
13}
14
15// error
16// backend=stage1
17// target=native
18//
19// tmp.zig:11:13: error: error.B not a member of error set 'Set2'
test/cases/compile_errors/stage1/obj/integer_overflow_error.zig deleted-8
......@@ -1,8 +0,0 @@
1const x : u8 = 300;
2export fn entry() usize { return @sizeOf(@TypeOf(x)); }
3
4// error
5// backend=stage1
6// target=native
7//
8// tmp.zig:1:16: error: integer value 300 cannot be coerced to type 'u8'
test/cases/compile_errors/stage1/obj/integer_underflow_error.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() void {
2 _ = @intToPtr(*anyopaque, ~@as(usize, @import("std").math.maxInt(usize)) - 1);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// :2:78: error: operation caused overflow
test/cases/compile_errors/stage1/obj/invalid_break_expression.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn f() void {
2 break;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: break expression outside loop
test/cases/compile_errors/stage1/obj/invalid_builtin_fn.zig deleted-9
......@@ -1,9 +0,0 @@
1fn f() @bogus(foo) {
2}
3export fn entry() void { _ = f(); }
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:1:8: error: invalid builtin function: '@bogus'
test/cases/compile_errors/stage1/obj/invalid_comparison_for_function_pointers.zig deleted-10
......@@ -1,10 +0,0 @@
1fn foo() void {}
2const invalid = foo > foo;
3
4export fn entry() usize { return @sizeOf(@TypeOf(invalid)); }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: operator not allowed for type 'fn() void'
test/cases/compile_errors/stage1/obj/invalid_continue_expression.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn f() void {
2 continue;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: continue expression outside loop
test/cases/compile_errors/stage1/obj/invalid_empty_unicode_escape.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() void {
2 const a = '\u{}';
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:19: error: empty unicode escape sequence
test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-1.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 0x1.0p1ab1;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:28: note: invalid byte: 'a'
test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-2.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 0x1.0p50F;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:29: note: invalid byte: 'F'
test/cases/compile_errors/stage1/obj/invalid_field_access_in_comptime.zig deleted-7
......@@ -1,7 +0,0 @@
1comptime { var x = doesnt_exist.whatever; _ = x; }
2
3// error
4// backend=stage1
5// target=native
6//
7// tmp.zig:1:20: error: use of undeclared identifier 'doesnt_exist'
test/cases/compile_errors/stage1/obj/invalid_field_in_struct_value_expression.zig deleted-19
......@@ -1,19 +0,0 @@
1const A = struct {
2 x : i32,
3 y : i32,
4 z : i32,
5};
6export fn f() void {
7 const a = A {
8 .z = 4,
9 .y = 2,
10 .foo = 42,
11 };
12 _ = a;
13}
14
15// error
16// backend=stage1
17// target=native
18//
19// tmp.zig:10:9: error: no member named 'foo' in struct 'A'
test/cases/compile_errors/stage1/obj/invalid_float_literal.zig deleted-13
......@@ -1,13 +0,0 @@
1const std = @import("std");
2
3pub fn main() void {
4 var bad_float :f32 = 0.0;
5 bad_float = bad_float + .20;
6 std.debug.assert(bad_float < 1.0);
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:5:29: error: expected expression, found '.'
test/cases/compile_errors/stage1/obj/invalid_legacy_unicode_escape.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 const a = '\U1234';
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:15: error: expected expression, found 'invalid bytes'
10// tmp.zig:2:18: note: invalid byte: '1'
test/cases/compile_errors/stage1/obj/invalid_member_of_builtin_enum.zig deleted-11
......@@ -1,11 +0,0 @@
1const builtin = @import("std").builtin;
2export fn entry() void {
3 const foo = builtin.Mode.x86;
4 _ = foo;
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:29: error: container 'std.builtin.Mode' has no member called 'x86'
test/cases/compile_errors/stage1/obj/invalid_pointer_for_var_type.zig deleted-13
......@@ -1,13 +0,0 @@
1extern fn ext() usize;
2var bytes: [ext()]u8 = undefined;
3export fn f() void {
4 for (bytes) |*b, i| {
5 b.* = @as(u8, i);
6 }
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:2:13: error: unable to evaluate constant expression
test/cases/compile_errors/stage1/obj/invalid_pointer_syntax.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn foo() void {
2 var guid: *:0 const u8 = undefined;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:16: error: expected type expression, found ':'
test/cases/compile_errors/stage1/obj/invalid_shift_amount_error.zig deleted-11
......@@ -1,11 +0,0 @@
1const x : u8 = 2;
2fn f() u16 {
3 return x << 8;
4}
5export fn entry() u16 { return f(); }
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:17: error: integer value 8 cannot be coerced to type 'u3'
test/cases/compile_errors/stage1/obj/invalid_struct_field.zig deleted-19
......@@ -1,19 +0,0 @@
1const A = struct { x : i32, };
2export fn f() void {
3 var a : A = undefined;
4 a.foo = 1;
5 const y = a.bar;
6 _ = y;
7}
8export fn g() void {
9 var a : A = undefined;
10 const y = a.bar;
11 _ = y;
12}
13
14// error
15// backend=stage1
16// target=native
17//
18// tmp.zig:4:6: error: no member named 'foo' in struct 'A'
19// tmp.zig:10:16: error: no member named 'bar' in struct 'A'
test/cases/compile_errors/stage1/obj/invalid_type.zig deleted-8
......@@ -1,8 +0,0 @@
1fn a() bogus {}
2export fn entry() void { _ = a(); }
3
4// error
5// backend=stage1
6// target=native
7//
8// tmp.zig:1:8: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/stage1/obj/invalid_type_used_in_array_type.zig deleted-14
......@@ -1,14 +0,0 @@
1const Item = struct {
2 field: SomeNonexistentType,
3};
4var items: [100]Item = undefined;
5export fn entry() void {
6 const a = items[0];
7 _ = a;
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:2:12: error: use of undeclared identifier 'SomeNonexistentType'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-1.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 0._0;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:23: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-10.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 1.0__0e-1;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:25: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-11.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 1.0e-1__0;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:28: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-12.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 0_x0.0;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:23: note: invalid byte: 'x'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-13.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 0x_0.0;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:23: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-14.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 0x0.0_p1;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:27: note: invalid byte: 'p'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-2.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 0_.0;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:23: note: invalid byte: '.'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-3.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 0.0_;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:25: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-4.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 1.0e_1;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:25: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-5.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 1.0e+_1;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:26: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-6.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 1.0e-_1;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:26: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-7.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 1.0e-1_;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:28: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-9.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: f128 = 1__0.0e-1;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:23: note: invalid byte: '_'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-1.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: u128 = 0010_;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:26: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-2.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: u128 = 0b0010_;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:28: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-3.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: u128 = 0o0010_;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:28: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-4.zig deleted-11
......@@ -1,11 +0,0 @@
1fn main() void {
2 var bad: u128 = 0x0010_;
3 _ = bad;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:21: error: expected expression, found 'invalid bytes'
11// tmp.zig:2:28: note: invalid byte: ';'
test/cases/compile_errors/stage1/obj/invalid_union_field_access_in_comptime.zig deleted-15
......@@ -1,15 +0,0 @@
1const Foo = union {
2 Bar: u8,
3 Baz: void,
4};
5comptime {
6 var foo = Foo {.Baz = {}};
7 const bar_val = foo.Bar;
8 _ = bar_val;
9}
10
11// error
12// backend=stage1
13// target=native
14//
15// tmp.zig:7:24: error: accessing union field 'Bar' while field 'Baz' is set
test/cases/compile_errors/stage1/obj/issue_9346_return_outside_of_function_scope.zig deleted-7
......@@ -1,7 +0,0 @@
1pub const empty = return 1;
2
3// error
4// backend=stage1
5// target=native
6//
7// tmp.zig:1:19: error: 'return' outside function scope
test/cases/compile_errors/stage1/obj/labeled_break_not_found.zig deleted-13
......@@ -1,13 +0,0 @@
1export fn entry() void {
2 blah: while (true) {
3 while (true) {
4 break :outer;
5 }
6 }
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:4:20: error: label not found: 'outer'
test/cases/compile_errors/stage1/obj/labeled_continue_not_found.zig deleted-14
......@@ -1,14 +0,0 @@
1export fn entry() void {
2 var i: usize = 0;
3 blah: while (i < 10) : (i += 1) {
4 while (true) {
5 continue :outer;
6 }
7 }
8}
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:5:23: error: label not found: 'outer'
test/cases/compile_errors/stage1/obj/local_shadows_global_that_occurs_later.zig deleted-12
......@@ -1,12 +0,0 @@
1pub fn main() void {
2 var foo = true;
3 _ = foo;
4}
5fn foo() void {}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:2:9: error: local shadows declaration of 'foo'
12// tmp.zig:5:1: note: declared here
test/cases/compile_errors/stage1/obj/local_variable_redeclaration.zig deleted-11
......@@ -1,11 +0,0 @@
1export fn f() void {
2 const a : i32 = 0;
3 var a = 0;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:9: error: redeclaration of local constant 'a'
11// tmp.zig:2:11: note: previous declaration here
test/cases/compile_errors/stage1/obj/local_variable_redeclares_parameter.zig deleted-11
......@@ -1,11 +0,0 @@
1fn f(a : i32) void {
2 const a = 0;
3}
4export fn entry() void { f(1); }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:11: error: redeclaration of function parameter 'a'
11// tmp.zig:1:6: note: previous declaration here
test/cases/compile_errors/stage1/obj/local_variable_shadowing_global.zig deleted-14
......@@ -1,14 +0,0 @@
1const Foo = struct {};
2const Bar = struct {};
3
4export fn entry() void {
5 var Bar : i32 = undefined;
6 _ = Bar;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:5:9: error: local shadows declaration of 'Bar'
14// tmp.zig:2:1: note: declared here
test/cases/compile_errors/stage1/obj/locally_shadowing_a_primitive_type.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn foo() void {
2 const u8 = u16;
3 const a: u8 = 300;
4 _ = a;
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:2:11: error: name shadows primitive 'u8'
12// tmp.zig:2:11: note: consider using @"u8" to disambiguate
test/cases/compile_errors/stage1/obj/main_function_with_bogus_args_type.zig deleted-7
......@@ -1,7 +0,0 @@
1pub fn main(args: [][]bogus) !void {_ = args;}
2
3// error
4// backend=stage1
5// target=native
6//
7// tmp.zig:1:23: error: use of undeclared identifier 'bogus'
test/cases/compile_errors/stage1/obj/missing_boolean_switch_value.zig deleted-19
......@@ -1,19 +0,0 @@
1comptime {
2 const x = switch (true) {
3 true => false,
4 };
5 _ = x;
6}
7comptime {
8 const x = switch (true) {
9 false => true,
10 };
11 _ = x;
12}
13
14// error
15// backend=stage1
16// target=native
17//
18// tmp.zig:2:15: error: switch must handle all possibilities
19// tmp.zig:8:15: error: switch must handle all possibilities
test/cases/compile_errors/stage1/obj/missing_else_clause.zig deleted-16
......@@ -1,16 +0,0 @@
1fn f(b: bool) void {
2 const x : i32 = if (b) h: { break :h 1; };
3 _ = x;
4}
5fn g(b: bool) void {
6 const y = if (b) h: { break :h @as(i32, 1); };
7 _ = y;
8}
9export fn entry() void { f(true); g(true); }
10
11// error
12// backend=stage1
13// target=native
14//
15// tmp.zig:2:21: error: expected type 'i32', found 'void'
16// tmp.zig:6:15: error: incompatible types: 'i32' and 'void'
test/cases/compile_errors/stage1/obj/missing_field_in_struct_value_expression.zig deleted-20
......@@ -1,20 +0,0 @@
1const A = struct {
2 x : i32,
3 y : i32,
4 z : i32,
5};
6export fn f() void {
7 // we want the error on the '{' not the 'A' because
8 // the A could be a complicated expression
9 const a = A {
10 .z = 4,
11 .y = 2,
12 };
13 _ = a;
14}
15
16// error
17// backend=stage1
18// target=native
19//
20// tmp.zig:9:17: error: missing field: 'x'
test/cases/compile_errors/stage1/obj/missing_function_name.zig deleted-8
......@@ -1,8 +0,0 @@
1fn () void {}
2export fn entry() usize { return @sizeOf(@TypeOf(f)); }
3
4// error
5// backend=stage1
6// target=native
7//
8// tmp.zig:1:1: error: missing function name
test/cases/compile_errors/stage1/obj/missing_param_name.zig deleted-8
......@@ -1,8 +0,0 @@
1fn f(i32) void {}
2export fn entry() usize { return @sizeOf(@TypeOf(f)); }
3
4// error
5// backend=stage1
6// target=native
7//
8// tmp.zig:1:6: error: missing parameter name
test/cases/compile_errors/stage1/obj/missing_parameter_name_of_generic_function.zig deleted-11
......@@ -1,11 +0,0 @@
1fn dump(anytype) void {}
2export fn entry() void {
3 var a: u8 = 9;
4 dump(a);
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:1:9: error: missing parameter name
test/cases/compile_errors/stage1/obj/misspelled_type_with_pointer_only_reference.zig deleted-37
......@@ -1,37 +0,0 @@
1const JasonHM = u8;
2const JasonList = *JsonNode;
3
4const JsonOA = union(enum) {
5 JSONArray: JsonList,
6 JSONObject: JasonHM,
7};
8
9const JsonType = union(enum) {
10 JSONNull: void,
11 JSONInteger: isize,
12 JSONDouble: f64,
13 JSONBool: bool,
14 JSONString: []u8,
15 JSONArray: void,
16 JSONObject: void,
17};
18
19pub const JsonNode = struct {
20 kind: JsonType,
21 jobject: ?JsonOA,
22};
23
24fn foo() void {
25 var jll: JasonList = undefined;
26 jll.init(1234);
27 var jd = JsonNode {.kind = JsonType.JSONArray , .jobject = JsonOA.JSONArray {jll} };
28 _ = jd;
29}
30
31export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
32
33// error
34// backend=stage1
35// target=native
36//
37// tmp.zig:5:16: error: use of undeclared identifier 'JsonList'
test/cases/compile_errors/stage1/obj/multiple_function_definitions.zig deleted-10
......@@ -1,10 +0,0 @@
1fn a() void {}
2fn a() void {}
3export fn entry() void { a(); }
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:1: error: redeclaration of 'a'
10// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/non-const_expression_function_call_with_struct_return_value_outside_function.zig deleted-17
......@@ -1,17 +0,0 @@
1const Foo = struct {
2 x: i32,
3};
4const a = get_it();
5fn get_it() Foo {
6 global_side_effect = true;
7 return Foo {.x = 13};
8}
9var global_side_effect = false;
10
11export fn entry() usize { return @sizeOf(@TypeOf(a)); }
12
13// error
14// backend=stage1
15// target=native
16//
17// tmp.zig:6:26: error: unable to evaluate constant expression
test/cases/compile_errors/stage1/obj/non-const_expression_in_struct_literal_outside_function.zig deleted-13
......@@ -1,13 +0,0 @@
1const Foo = struct {
2 x: i32,
3};
4const a = Foo {.x = get_it()};
5extern fn get_it() i32;
6
7export fn entry() usize { return @sizeOf(@TypeOf(a)); }
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:4:21: error: unable to evaluate constant expression
test/cases/compile_errors/stage1/obj/non-const_switch_number_literal.zig deleted-17
......@@ -1,17 +0,0 @@
1export fn foo() void {
2 const x = switch (bar()) {
3 1, 2 => 1,
4 3, 4 => 2,
5 else => 3,
6 };
7 _ = x;
8}
9fn bar() i32 {
10 return 2;
11}
12
13// error
14// backend=stage1
15// target=native
16//
17// tmp.zig:5:17: error: cannot store runtime value in type 'comptime_int'
test/cases/compile_errors/stage1/obj/non-extern_function_with_var_args.zig deleted-10
......@@ -1,10 +0,0 @@
1fn foo(args: ...) void {}
2export fn entry() void {
3 foo();
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:1:14: error: expected type expression, found '...'
test/cases/compile_errors/stage1/obj/non-pure_function_returns_type.zig deleted-24
......@@ -1,24 +0,0 @@
1var a: u32 = 0;
2pub fn List(comptime T: type) type {
3 a += 1;
4 return SmallList(T, 8);
5}
6
7pub fn SmallList(comptime T: type, comptime STATIC_SIZE: usize) type {
8 return struct {
9 items: []T,
10 length: usize,
11 prealloc_items: [STATIC_SIZE]T,
12 };
13}
14
15export fn function_with_return_type_type() void {
16 var list: List(i32) = undefined;
17 list.length = 10;
18}
19
20// error
21// backend=stage1
22// target=native
23//
24// tmp.zig:3:7: error: unable to evaluate constant expression
test/cases/compile_errors/stage1/obj/non_float_passed_to_floatToInt.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 const x = @floatToInt(i32, @as(i32, 54));
3 _ = x;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:32: error: expected float type, found 'i32'
test/cases/compile_errors/stage1/obj/non_int_passed_to_intToFloat.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 const x = @intToFloat(f32, 1.1);
3 _ = x;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:32: error: expected int type, found 'comptime_float'
test/cases/compile_errors/stage1/obj/non_pointer_given_to_ptrToInt.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry(x: i32) usize {
2 return @ptrToInt(x);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:22: error: expected pointer, found 'i32'
test/cases/compile_errors/stage1/obj/normal_string_with_newline.zig deleted-9
......@@ -1,9 +0,0 @@
1const foo = "a
2b";
3
4// error
5// backend=stage1
6// target=native
7//
8// tmp.zig:1:13: error: expected expression, found 'invalid bytes'
9// tmp.zig:1:15: note: invalid byte: '\n'
test/cases/compile_errors/stage1/obj/offsetOf-bad_field_name.zig deleted-12
......@@ -1,12 +0,0 @@
1const Foo = struct {
2 derp: i32,
3};
4export fn foo() usize {
5 return @offsetOf(Foo, "a",);
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:5:27: error: struct 'Foo' has no field 'a'
test/cases/compile_errors/stage1/obj/offsetOf-non_struct.zig deleted-10
......@@ -1,10 +0,0 @@
1const Foo = i32;
2export fn foo() usize {
3 return @offsetOf(Foo, "a",);
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:22: error: expected struct type, found 'i32'
test/cases/compile_errors/stage1/obj/only_equality_binary_operator_allowed_for_error_sets.zig deleted-10
......@@ -1,10 +0,0 @@
1comptime {
2 const z = error.A > error.B;
3 _ = z;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:23: error: operator not allowed for errors
test/cases/compile_errors/stage1/obj/out_of_range_comptime_int_passed_to_floatToInt.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 const x = @floatToInt(i8, 200);
3 _ = x;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:31: error: integer value 200 cannot be coerced to type 'i8'
test/cases/compile_errors/stage1/obj/parameter_redeclaration.zig deleted-10
......@@ -1,10 +0,0 @@
1fn f(a : i32, a : i32) void {
2}
3export fn entry() void { f(1, 2); }
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:1:15: error: redeclaration of function parameter 'a'
10// tmp.zig:1:6: note: previous declaration here
test/cases/compile_errors/stage1/obj/parameter_shadowing_global.zig deleted-12
......@@ -1,12 +0,0 @@
1const Foo = struct {};
2fn f(Foo: i32) void {}
3export fn entry() void {
4 f(1234);
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:2:6: error: local shadows declaration of 'Foo'
12// tmp.zig:1:1: note: declared here
test/cases/compile_errors/stage1/obj/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig deleted-12
......@@ -1,12 +0,0 @@
1const AtomicOrder = @import("std").builtin.AtomicOrder;
2export fn entry() bool {
3 var x: i32 align(1) = 1234;
4 while (!@cmpxchgWeak(i32, &x, 1234, 5678, AtomicOrder.SeqCst, AtomicOrder.SeqCst)) {}
5 return x == 5678;
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:32: error: expected type '*i32', found '*align(1) i32'
test/cases/compile_errors/stage1/obj/pointer_arithmetic_on_pointer-to-array.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn foo() void {
2 var x: [10]u8 = undefined;
3 var y = &x;
4 var z = y + 1;
5 _ = z;
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:4:17: error: integer value 1 cannot be coerced to type '*[10]u8'
test/cases/compile_errors/stage1/obj/popCount-non-integer.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry(x: f32) u32 {
2 return @popCount(f32, x);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:22: error: expected integer type, found 'f32'
test/cases/compile_errors/stage1/obj/prevent_bad_implicit_casting_of_anyframe_types.zig+3-3
......@@ -19,6 +19,6 @@ fn func() void {}
1919// backend=stage1
2020// target=native
2121//
22// tmp.zig:3:28: error: expected type 'anyframe->i32', found 'anyframe'
23// tmp.zig:8:28: error: expected type 'anyframe->i32', found 'i32'
24// tmp.zig:13:29: error: expected type 'anyframe->i32', found '*@Frame(func)'
22// :3:28: error: expected type 'anyframe->i32', found 'anyframe'
23// :8:28: error: expected type 'anyframe->i32', found 'i32'
24// tmp.zig:13:29: error: expected type 'anyframe->i32', found '*@Frame(func)'
\ No newline at end of file
test/cases/compile_errors/stage1/obj/primitives_take_precedence_over_declarations.zig deleted-11
......@@ -1,11 +0,0 @@
1const @"u8" = u16;
2export fn entry() void {
3 const a: u8 = 300;
4 _ = a;
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:19: error: integer value 300 cannot be coerced to type 'u8'
test/cases/compile_errors/stage1/obj/ptrToInt_0_to_non_optional_pointer.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var b = @intToPtr(*i32, 0);
3 _ = b;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:13: error: pointer type '*i32' does not allow address zero
test/cases/compile_errors/stage1/obj/ptrcast_to_non-pointer.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry(a: *i32) usize {
2 return @ptrCast(usize, a);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:21: error: expected pointer, found 'usize'
test/cases/compile_errors/stage1/obj/redefinition_of_enums.zig deleted-9
......@@ -1,9 +0,0 @@
1const A = enum {x};
2const A = enum {x};
3
4// error
5// backend=stage1
6// target=native
7//
8// tmp.zig:2:1: error: redeclaration of 'A'
9// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/redefinition_of_global_variables.zig deleted-9
......@@ -1,9 +0,0 @@
1var a : i32 = 1;
2var a : i32 = 2;
3
4// error
5// backend=stage1
6// target=native
7//
8// tmp.zig:2:1: error: redeclaration of 'a'
9// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/redefinition_of_struct.zig deleted-9
......@@ -1,9 +0,0 @@
1const A = struct { x : i32, };
2const A = struct { y : i32, };
3
4// error
5// backend=stage1
6// target=native
7//
8// tmp.zig:2:1: error: redeclaration of 'A'
9// tmp.zig:1:1: note: other declaration here
test/cases/compile_errors/stage1/obj/refer_to_the_type_of_a_generic_function.zig deleted-11
......@@ -1,11 +0,0 @@
1export fn entry() void {
2 const Func = fn (type) void;
3 const f: Func = undefined;
4 f(i32);
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:4:5: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/referring_to_a_struct_that_is_invalid.zig deleted-17
......@@ -1,17 +0,0 @@
1const UsbDeviceRequest = struct {
2 Type: u8,
3};
4
5export fn foo() void {
6 comptime assert(@sizeOf(UsbDeviceRequest) == 0x8);
7}
8
9fn assert(ok: bool) void {
10 if (!ok) unreachable;
11}
12
13// error
14// backend=stage1
15// target=native
16//
17// tmp.zig:10:14: error: reached unreachable code
test/cases/compile_errors/stage1/obj/return_from_defer_expression.zig deleted-21
......@@ -1,21 +0,0 @@
1pub fn testTrickyDefer() !void {
2 defer canFail() catch {};
3
4 defer try canFail();
5
6 const a = maybeInt() orelse return;
7}
8
9fn canFail() anyerror!void { }
10
11pub fn maybeInt() ?i32 {
12 return 0;
13}
14
15export fn entry() usize { return @sizeOf(@TypeOf(testTrickyDefer)); }
16
17// error
18// backend=stage1
19// target=native
20//
21// tmp.zig:4:11: error: 'try' not allowed inside defer expression
test/cases/compile_errors/stage1/obj/runtime_cast_to_union_which_has_non-void_fields.zig deleted-20
......@@ -1,20 +0,0 @@
1const Letter = enum { A, B, C };
2const Value = union(Letter) {
3 A: i32,
4 B,
5 C,
6};
7export fn entry() void {
8 foo(Letter.A);
9}
10fn foo(l: Letter) void {
11 var x: Value = l;
12 _ = x;
13}
14
15// error
16// backend=stage1
17// target=native
18//
19// tmp.zig:11:20: error: runtime cast to union 'Value' which has non-void fields
20// tmp.zig:3:5: note: field 'A' has type 'i32'
test/cases/compile_errors/stage1/obj/saturating_arithmetic_does_not_allow_floats.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn a() void {
2 _ = @as(f32, 1.0) +| @as(f32, 1.0);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// error: invalid operands to binary expression: 'f32' and 'f32'
test/cases/compile_errors/stage1/obj/setAlignStack_in_naked_function.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() callconv(.Naked) void {
2 @setAlignStack(16);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: @setAlignStack in naked function
test/cases/compile_errors/stage1/obj/setAlignStack_outside_function.zig deleted-9
......@@ -1,9 +0,0 @@
1comptime {
2 @setAlignStack(16);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: @setAlignStack outside function
test/cases/compile_errors/stage1/obj/setAlignStack_set_twice.zig deleted-11
......@@ -1,11 +0,0 @@
1export fn entry() void {
2 @setAlignStack(16);
3 @setAlignStack(16);
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:5: error: alignstack set twice
11// tmp.zig:2:5: note: first set here
test/cases/compile_errors/stage1/obj/setAlignStack_too_big.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() void {
2 @setAlignStack(511 + 1);
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: attempt to @setAlignStack(512); maximum is 256
test/cases/compile_errors/stage1/obj/setting_a_section_on_a_local_variable.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() i32 {
2 var foo: i32 linksection(".text2") = 1234;
3 return foo;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:30: error: cannot set section of local variable 'foo'
test/cases/compile_errors/stage1/obj/shifting_RHS_is_log2_of_LHS_int_bit_width.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry(x: u8, y: u8) u8 {
2 return x << y;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:17: error: expected type 'u3', found 'u8'
test/cases/compile_errors/stage1/obj/slicing_single-item_pointer.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry(ptr: *i32) void {
2 const slice = ptr[0..2];
3 _ = slice;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:22: error: slice of single-item pointer
test/cases/compile_errors/stage1/obj/struct_field_missing_type.zig deleted-13
......@@ -1,13 +0,0 @@
1const Letter = struct {
2 A,
3};
4export fn entry() void {
5 var a = Letter { .A = {} };
6 _ = a;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:2:5: error: struct field missing type
test/cases/compile_errors/stage1/obj/struct_init_syntax_for_array.zig deleted-10
......@@ -1,10 +0,0 @@
1const foo = [3]u16{ .x = 1024 };
2comptime {
3 _ = foo;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:1:13: error: initializing array with struct syntax
test/cases/compile_errors/stage1/obj/struct_with_declarations_unavailable_for_reify_type.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() void {
2 _ = @Type(@typeInfo(struct { const foo = 1; }));
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:15: error: Type.Struct.decls must be empty for @Type
test/cases/compile_errors/stage1/obj/struct_with_invalid_field.zig deleted-30
......@@ -1,30 +0,0 @@
1const std = @import("std",);
2const Allocator = std.mem.Allocator;
3const ArrayList = std.ArrayList;
4
5const HeaderWeight = enum {
6 H1, H2, H3, H4, H5, H6,
7};
8
9const MdText = ArrayList(u8);
10
11const MdNode = union(enum) {
12 Header: struct {
13 text: MdText,
14 weight: HeaderValue,
15 },
16};
17
18export fn entry() void {
19 const a = MdNode.Header {
20 .text = MdText.init(std.testing.allocator),
21 .weight = HeaderWeight.H1,
22 };
23 _ = a;
24}
25
26// error
27// backend=stage1
28// target=native
29//
30// tmp.zig:14:17: error: use of undeclared identifier 'HeaderValue'
test/cases/compile_errors/stage1/obj/suspend_inside_suspend_block.zig deleted-16
......@@ -1,16 +0,0 @@
1export fn entry() void {
2 _ = async foo();
3}
4fn foo() void {
5 suspend {
6 suspend {
7 }
8 }
9}
10
11// error
12// backend=stage1
13// target=native
14//
15// tmp.zig:6:9: error: cannot suspend inside suspend block
16// tmp.zig:5:5: note: other suspend block here
test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong.zig deleted-24
......@@ -1,24 +0,0 @@
1const Number = enum {
2 One,
3 Two,
4 Three,
5 Four,
6};
7fn f(n: Number) i32 {
8 switch (n) {
9 Number.One => 1,
10 Number.Two => 2,
11 Number.Three => @as(i32, 3),
12 Number.Four => 4,
13 Number.Two => 2,
14 }
15}
16
17export fn entry() usize { return @sizeOf(@TypeOf(f)); }
18
19// error
20// backend=stage1
21// target=native
22//
23// tmp.zig:13:15: error: duplicate switch value
24// tmp.zig:10:15: note: other value here
test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong_when_else_present.zig deleted-25
......@@ -1,25 +0,0 @@
1const Number = enum {
2 One,
3 Two,
4 Three,
5 Four,
6};
7fn f(n: Number) i32 {
8 switch (n) {
9 Number.One => 1,
10 Number.Two => 2,
11 Number.Three => @as(i32, 3),
12 Number.Four => 4,
13 Number.Two => 2,
14 else => 10,
15 }
16}
17
18export fn entry() usize { return @sizeOf(@TypeOf(f)); }
19
20// error
21// backend=stage1
22// target=native
23//
24// tmp.zig:13:15: error: duplicate switch value
25// tmp.zig:10:15: note: other value here
test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type.zig deleted-17
......@@ -1,17 +0,0 @@
1fn foo(comptime T: type, x: T) u8 {
2 _ = x;
3 return switch (T) {
4 u32 => 0,
5 u64 => 1,
6 u32 => 2,
7 else => 3,
8 };
9}
10export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); }
11
12// error
13// backend=stage1
14// target=native
15//
16// tmp.zig:6:9: error: duplicate switch value
17// tmp.zig:4:9: note: previous value here
test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type_struct_alias.zig deleted-21
......@@ -1,21 +0,0 @@
1const Test = struct {
2 bar: i32,
3};
4const Test2 = Test;
5fn foo(comptime T: type, x: T) u8 {
6 _ = x;
7 return switch (T) {
8 Test => 0,
9 u64 => 1,
10 Test2 => 2,
11 else => 3,
12 };
13}
14export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); }
15
16// error
17// backend=stage1
18// target=native
19//
20// tmp.zig:10:9: error: duplicate switch value
21// tmp.zig:8:9: note: previous value here
test/cases/compile_errors/stage1/obj/switch_expression-missing_enumeration_prong.zig deleted-21
......@@ -1,21 +0,0 @@
1const Number = enum {
2 One,
3 Two,
4 Three,
5 Four,
6};
7fn f(n: Number) i32 {
8 switch (n) {
9 Number.One => 1,
10 Number.Two => 2,
11 Number.Three => @as(i32, 3),
12 }
13}
14
15export fn entry() usize { return @sizeOf(@TypeOf(f)); }
16
17// error
18// backend=stage1
19// target=native
20//
21// tmp.zig:8:5: error: enumeration value 'Number.Four' not handled in switch
test/cases/compile_errors/stage1/obj/switch_expression-multiple_else_prongs.zig deleted-16
......@@ -1,16 +0,0 @@
1fn f(x: u32) void {
2 const value: bool = switch (x) {
3 1234 => false,
4 else => true,
5 else => true,
6 };
7}
8export fn entry() void {
9 f(1234);
10}
11
12// error
13// backend=stage1
14// target=native
15//
16// tmp.zig:5:9: error: multiple else prongs in switch expression
test/cases/compile_errors/stage1/obj/switch_expression-non_exhaustive_integer_prongs.zig deleted-12
......@@ -1,12 +0,0 @@
1fn foo(x: u8) void {
2 switch (x) {
3 0 => {},
4 }
5}
6export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:2:5: error: switch must handle all possibilities
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_enum.zig deleted-24
......@@ -1,24 +0,0 @@
1const TestEnum = enum{ T1, T2 };
2
3fn err(x: u8) TestEnum {
4 switch (x) {
5 0 => return TestEnum.T1,
6 else => return TestEnum.T2,
7 }
8}
9
10fn foo(x: u8) void {
11 switch (err(x)) {
12 TestEnum.T1 => {},
13 TestEnum.T2 => {},
14 else => {},
15 }
16}
17
18export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
19
20// error
21// backend=stage1
22// target=native
23//
24// tmp.zig:14:9: error: unreachable else prong, all cases already handled
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_i8.zig deleted-17
......@@ -1,17 +0,0 @@
1fn foo(x: i8) void {
2 switch (x) {
3 -128...0 => {},
4 1 => {},
5 2 => {},
6 3 => {},
7 4...127 => {},
8 else => {},
9 }
10}
11export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
12
13// error
14// backend=stage1
15// target=native
16//
17// tmp.zig:8:9: error: unreachable else prong, all cases already handled
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_u8.zig deleted-17
......@@ -1,17 +0,0 @@
1fn foo(x: u8) void {
2 switch (x) {
3 0 => {},
4 1 => {},
5 2 => {},
6 3 => {},
7 4...255 => {},
8 else => {},
9 }
10}
11export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
12
13// error
14// backend=stage1
15// target=native
16//
17// tmp.zig:8:9: error: unreachable else prong, all cases already handled
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u1.zig deleted-14
......@@ -1,14 +0,0 @@
1fn foo(x: u1) void {
2 switch (x) {
3 0 => {},
4 1 => {},
5 else => {},
6 }
7}
8export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
9
10// error
11// backend=stage1
12// target=native
13//
14// tmp.zig:5:9: error: unreachable else prong, all cases already handled
test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u2.zig deleted-16
......@@ -1,16 +0,0 @@
1fn foo(x: u2) void {
2 switch (x) {
3 0 => {},
4 1 => {},
5 2 => {},
6 3 => {},
7 else => {},
8 }
9}
10export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
11
12// error
13// backend=stage1
14// target=native
15//
16// tmp.zig:7:9: error: unreachable else prong, all cases already handled
test/cases/compile_errors/stage1/obj/switch_on_enum_with_1_field_with_no_prongs.zig deleted-12
......@@ -1,12 +0,0 @@
1const Foo = enum { M };
2
3export fn entry() void {
4 var f = Foo.M;
5 switch (f) {}
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:5:5: error: enumeration value 'Foo.M' not handled in switch
test/cases/compile_errors/stage1/obj/threadlocal_qualifier_on_const.zig deleted-10
......@@ -1,10 +0,0 @@
1threadlocal const x: i32 = 1234;
2export fn entry() i32 {
3 return x;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:1:1: error: threadlocal variable cannot be constant
test/cases/compile_errors/stage1/obj/truncate_sign_mismatch.zig deleted-25
......@@ -1,25 +0,0 @@
1export fn entry1() i8 {
2 var x: u32 = 10;
3 return @truncate(i8, x);
4}
5export fn entry2() u8 {
6 var x: i32 = -10;
7 return @truncate(u8, x);
8}
9export fn entry3() i8 {
10 comptime var x: u32 = 10;
11 return @truncate(i8, x);
12}
13export fn entry4() u8 {
14 comptime var x: i32 = -10;
15 return @truncate(u8, x);
16}
17
18// error
19// backend=stage1
20// target=native
21//
22// tmp.zig:3:26: error: expected signed integer type, found 'u32'
23// tmp.zig:7:26: error: expected unsigned integer type, found 'i32'
24// tmp.zig:11:26: error: expected signed integer type, found 'u32'
25// tmp.zig:15:26: error: expected unsigned integer type, found 'i32'
test/cases/compile_errors/stage1/obj/try_in_function_with_non_error_return_type.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn f() void {
2 try something();
3}
4fn something() anyerror!void { }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:5: error: expected type 'void', found 'anyerror'
test/cases/compile_errors/stage1/obj/type_variables_must_be_constant.zig+1-1
......@@ -7,4 +7,4 @@ export fn entry() foo {
77// backend=stage1
88// target=native
99//
10// tmp.zig:1:1: error: variable of type 'type' must be constant
10// :1:1: error: variable of type 'type' must be constant
test/cases/compile_errors/stage1/obj/undeclared_identifier.zig deleted-11
......@@ -1,11 +0,0 @@
1export fn a() void {
2 return
3 b +
4 c;
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/stage1/obj/undeclared_identifier_error_should_mark_fn_as_impure.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn foo() void {
2 test_a_thing();
3}
4fn test_a_thing() void {
5 bad_fn_call();
6}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:5:5: error: use of undeclared identifier 'bad_fn_call'
test/cases/compile_errors/stage1/obj/undeclared_identifier_in_unanalyzed_branch.zig deleted-11
......@@ -1,11 +0,0 @@
1export fn a() void {
2 if (false) {
3 lol_this_doesnt_exist = nonsense;
4 }
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:9: error: use of undeclared identifier 'lol_this_doesnt_exist'
test/cases/compile_errors/stage1/obj/undefined_as_field_type_is_rejected.zig deleted-13
......@@ -1,13 +0,0 @@
1const Foo = struct {
2 a: undefined,
3};
4export fn entry1() void {
5 const foo: Foo = undefined;
6 _ = foo;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:2:8: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/stage1/obj/undefined_function_call.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn a() void {
2 b();
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/stage1/obj/underscore_is_not_a_declarable_symbol.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn f1() usize {
2 var _: usize = 2;
3 return _;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:9: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_for.zig deleted-13
......@@ -1,13 +0,0 @@
1export fn returns() void {
2 for ([_]void{}) |_, i| {
3 for ([_]void{}) |_, j| {
4 return _;
5 }
6 }
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:4:20: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while.zig deleted-16
......@@ -1,16 +0,0 @@
1export fn returns() void {
2 while (optionalReturn()) |_| {
3 while (optionalReturn()) |_| {
4 return _;
5 }
6 }
7}
8fn optionalReturn() ?u32 {
9 return 1;
10}
11
12// error
13// backend=stage1
14// target=native
15//
16// tmp.zig:4:20: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while_else.zig deleted-18
......@@ -1,18 +0,0 @@
1export fn returns() void {
2 while (optionalReturnError()) |_| {
3 while (optionalReturnError()) |_| {
4 return;
5 } else |_| {
6 if (_ == error.optionalReturnError) return;
7 }
8 }
9}
10fn optionalReturnError() !?u32 {
11 return error.optionalReturnError;
12}
13
14// error
15// backend=stage1
16// target=native
17//
18// tmp.zig:6:17: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/stage1/obj/union_fields_with_value_assignments.zig deleted-14
......@@ -1,14 +0,0 @@
1const MultipleChoice = union {
2 A: i32 = 20,
3};
4export fn entry() void {
5 var x: MultipleChoice = undefined;
6 _ = x;
7}
8
9// error
10// backend=stage1
11// target=native
12//
13// tmp.zig:1:24: error: explicitly valued tagged union missing integer tag type
14// tmp.zig:2:14: note: tag value specified here
test/cases/compile_errors/stage1/obj/union_with_0_fields.zig deleted-7
......@@ -1,7 +0,0 @@
1const Foo = union {};
2
3// error
4// backend=stage1
5// target=native
6//
7// tmp.zig:1:13: error: union declarations must have at least one tag
test/cases/compile_errors/stage1/obj/union_with_specified_enum_omits_field.zig deleted-19
......@@ -1,19 +0,0 @@
1const Letter = enum {
2 A,
3 B,
4 C,
5};
6const Payload = union(Letter) {
7 A: i32,
8 B: f64,
9};
10export fn entry() usize {
11 return @sizeOf(Payload);
12}
13
14// error
15// backend=stage1
16// target=native
17//
18// tmp.zig:6:17: error: enum field missing: 'C'
19// tmp.zig:4:5: note: declared here
test/cases/compile_errors/stage1/obj/unreachable_code-double_break.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn a() void {
2 const b = blk: {
3 break :blk break :blk @as(u32, 1);
4 };
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:9: error: unreachable code
12// tmp.zig:3:20: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/unreachable_code-nested_returns.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn a() i32 {
2 return return 1;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: unreachable code
10// tmp.zig:2:12: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/unreachable_code.zig deleted-13
......@@ -1,13 +0,0 @@
1export fn a() void {
2 return;
3 b();
4}
5
6fn b() void {}
7
8// error
9// backend=stage1
10// target=native
11//
12// tmp.zig:3:6: error: unreachable code
13// tmp.zig:2:5: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/unreachable_variable.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn f() void {
2 const a: noreturn = {};
3 _ = a;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:25: error: expected type 'noreturn', found 'void'
test/cases/compile_errors/stage1/obj/unreachable_with_return.zig deleted-8
......@@ -1,8 +0,0 @@
1fn a() noreturn {return;}
2export fn entry() void { a(); }
3
4// error
5// backend=stage1
6// target=native
7//
8// tmp.zig:1:18: error: expected type 'noreturn', found 'void'
test/cases/compile_errors/stage1/obj/use_invalid_number_literal_as_array_index.zig deleted-11
......@@ -1,11 +0,0 @@
1var v = 25;
2export fn entry() void {
3 var arr: [v]u8 = undefined;
4 _ = arr;
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:1:1: error: unable to infer variable type
test/cases/compile_errors/stage1/obj/use_of_undeclared_identifier.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn f() void {
2 b = 3;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/stage1/obj/using_invalid_types_in_function_call_raises_an_error.zig deleted-11
......@@ -1,11 +0,0 @@
1const MenuEffect = enum {};
2fn func(effect: MenuEffect) void { _ = effect; }
3export fn entry() void {
4 func(MenuEffect.ThisDoesNotExist);
5}
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:1:20: error: enum declarations must have at least one tag
test/cases/compile_errors/stage1/obj/usingnamespace_with_wrong_type.zig deleted-7
......@@ -1,7 +0,0 @@
1usingnamespace void;
2
3// error
4// backend=stage1
5// target=native
6//
7// tmp.zig:1:1: error: expected struct, enum, or union; found 'void'
test/cases/compile_errors/stage1/obj/variable_has_wrong_type.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn f() i32 {
2 const a = "a";
3 return a;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:12: error: expected type 'i32', found '*const [1:0]u8'
test/cases/compile_errors/stage1/obj/variable_initialization_compile_error_then_referenced.zig deleted-19
......@@ -1,19 +0,0 @@
1fn Undeclared() type {
2 return T;
3}
4fn Gen() type {
5 const X = Undeclared();
6 return struct {
7 x: X,
8 };
9}
10export fn entry() void {
11 const S = Gen();
12 _ = S;
13}
14
15// error
16// backend=stage1
17// target=native
18//
19// tmp.zig:2:12: error: use of undeclared identifier 'T'
test/cases/compile_errors/stage1/obj/variable_with_type_noreturn.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry9() void {
2 var z: noreturn = return;
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:5: error: unreachable code
10// tmp.zig:2:23: note: control flow is diverted here
test/cases/compile_errors/stage1/obj/volatile_on_global_assembly.zig deleted-9
......@@ -1,9 +0,0 @@
1comptime {
2 asm volatile ("");
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:9: error: volatile is meaningless on global assembly
test/cases/compile_errors/stage1/obj/while_expected_bool_got_error_union.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn foo() void {
2 while (bar()) {}
3}
4fn bar() anyerror!i32 { return 1; }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:15: error: expected type 'bool', found 'anyerror!i32'
test/cases/compile_errors/stage1/obj/while_expected_bool_got_optional.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn foo() void {
2 while (bar()) {}
3}
4fn bar() ?i32 { return 1; }
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:15: error: expected type 'bool', found '?i32'
test/cases/compile_errors/stage1/obj/write_to_const_global_variable.zig deleted-11
......@@ -1,11 +0,0 @@
1const x : i32 = 99;
2fn f() void {
3 x = 1;
4}
5export fn entry() void { f(); }
6
7// error
8// backend=stage1
9// target=native
10//
11// tmp.zig:3:9: error: cannot assign to constant
test/cases/compile_errors/stage1/obj/wrong_size_to_an_array_literal.zig deleted-10
......@@ -1,10 +0,0 @@
1comptime {
2 const array = [2]u8{1, 2, 3};
3 _ = array;
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:2:31: error: index 2 outside array of size 2
test/cases/compile_errors/stage1/obj/wrong_type_passed_to_panic.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 var e = error.Foo;
3 @panic(e);
4}
5
6// error
7// backend=stage1
8// target=native
9//
10// tmp.zig:3:12: error: expected type '[]const u8', found 'error{Foo}'
test/cases/compile_errors/stage1/obj/wrong_type_to_hasField.zig deleted-9
......@@ -1,9 +0,0 @@
1export fn entry() bool {
2 return @hasField(i32, "hi");
3}
4
5// error
6// backend=stage1
7// target=native
8//
9// tmp.zig:2:22: error: type 'i32' does not support @hasField
test/cases/compile_errors/stage1/test/access_invalid_typeInfo_decl.zig deleted-11
......@@ -1,11 +0,0 @@
1const A = B;
2test "Crash" {
3 _ = @typeInfo(@This()).Struct.decls[0];
4}
5
6// error
7// backend=stage1
8// target=native
9// is_test=1
10//
11// tmp.zig:1:11: error: use of undeclared identifier 'B'
test/cases/compile_errors/stage1/test/bad_splat_type.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 const c = 4;
3 var v = @splat(4, c);
4 _ = v;
5}
6
7// error
8// backend=stage1
9// target=native
10// is_test=1
11//
12// tmp.zig:3:23: error: vector element type must be integer, float, bool, or pointer; 'comptime_int' is invalid
test/cases/compile_errors/stage1/test/binary_OR_operator_on_error_sets.zig deleted-13
......@@ -1,13 +0,0 @@
1pub const A = error.A;
2pub const AB = A | error.B;
3export fn entry() void {
4 var x: AB = undefined;
5 _ = x;
6}
7
8// error
9// backend=stage1
10// target=native
11// is_test=1
12//
13// tmp.zig:2:18: error: invalid operands to binary expression: 'error{A}' and 'error{B}'
test/cases/compile_errors/stage1/test/combination_of_nosuspend_and_async.zig deleted-16
......@@ -1,16 +0,0 @@
1export fn entry() void {
2 nosuspend {
3 const bar = async foo();
4 suspend {}
5 resume bar;
6 }
7}
8fn foo() void {}
9
10// error
11// backend=stage1
12// target=native
13// is_test=1
14//
15// tmp.zig:4:9: error: suspend inside nosuspend block
16// tmp.zig:2:5: note: nosuspend block here
test/cases/compile_errors/stage1/test/error_in_struct_initializer_doesnt_crash_the_compiler.zig deleted-15
......@@ -1,15 +0,0 @@
1pub export fn entry() void {
2 const bitfield = struct {
3 e: u8,
4 e: u8,
5 };
6 var a = .{@sizeOf(bitfield)};
7 _ = a;
8}
9
10// error
11// backend=stage1
12// target=native
13// is_test=1
14//
15// tmp.zig:4:9: error: duplicate struct field: 'e'
test/cases/compile_errors/stage1/test/errors_in_for_loop_bodies_are_propagated.zig deleted-11
......@@ -1,11 +0,0 @@
1pub export fn entry() void {
2 var arr: [100]u8 = undefined;
3 for (arr) |bits| _ = @popCount(bits);
4}
5
6// error
7// backend=stage1
8// target=native
9// is_test=1
10//
11// tmp.zig:3:26: error: expected 2 arguments, found 1
test/cases/compile_errors/stage1/test/export_with_empty_name_string.zig deleted-11
......@@ -1,11 +0,0 @@
1pub export fn entry() void { }
2comptime {
3 @export(entry, .{ .name = "" });
4}
5
6// error
7// backend=stage1
8// target=native
9// is_test=1
10//
11// tmp.zig:3:5: error: exported symbol name cannot be empty
test/cases/compile_errors/stage1/test/int-float_conversion_to_comptime_int-float.zig deleted-16
......@@ -1,16 +0,0 @@
1export fn foo() void {
2 var a: f32 = 2;
3 _ = @floatToInt(comptime_int, a);
4}
5export fn bar() void {
6 var a: u32 = 2;
7 _ = @intToFloat(comptime_float, a);
8}
9
10// error
11// backend=stage1
12// target=native
13// is_test=1
14//
15// tmp.zig:3:35: error: unable to evaluate constant expression
16// tmp.zig:7:37: error: unable to evaluate constant expression
test/cases/compile_errors/stage1/test/invalid_assignments.zig deleted-20
......@@ -1,20 +0,0 @@
1export fn entry1() void {
2 var a: []const u8 = "foo";
3 a[0..2] = "bar";
4}
5export fn entry2() void {
6 var a: u8 = 2;
7 a + 2 = 3;
8}
9export fn entry4() void {
10 2 + 2 = 3;
11}
12
13// error
14// backend=stage1
15// target=native
16// is_test=1
17//
18// tmp.zig:3:6: error: invalid left-hand side to assignment
19// tmp.zig:7:7: error: invalid left-hand side to assignment
20// tmp.zig:10:7: error: invalid left-hand side to assignment
test/cases/compile_errors/stage1/test/invalid_float_casts.zig deleted-26
......@@ -1,26 +0,0 @@
1export fn foo() void {
2 var a: f32 = 2;
3 _ = @floatCast(comptime_float, a);
4}
5export fn bar() void {
6 var a: f32 = 2;
7 _ = @floatToInt(f32, a);
8}
9export fn baz() void {
10 var a: f32 = 2;
11 _ = @intToFloat(f32, a);
12}
13export fn qux() void {
14 var a: u32 = 2;
15 _ = @floatCast(f32, a);
16}
17
18// error
19// backend=stage1
20// target=native
21// is_test=1
22//
23// tmp.zig:3:36: error: unable to evaluate constant expression
24// tmp.zig:7:21: error: expected integer type, found 'f32'
25// tmp.zig:11:26: error: expected int type, found 'f32'
26// tmp.zig:15:25: error: expected float type, found 'u32'
test/cases/compile_errors/stage1/test/invalid_int_casts.zig deleted-26
......@@ -1,26 +0,0 @@
1export fn foo() void {
2 var a: u32 = 2;
3 _ = @intCast(comptime_int, a);
4}
5export fn bar() void {
6 var a: u32 = 2;
7 _ = @intToFloat(u32, a);
8}
9export fn baz() void {
10 var a: u32 = 2;
11 _ = @floatToInt(u32, a);
12}
13export fn qux() void {
14 var a: f32 = 2;
15 _ = @intCast(u32, a);
16}
17
18// error
19// backend=stage1
20// target=native
21// is_test=1
22//
23// tmp.zig:3:32: error: unable to evaluate constant expression
24// tmp.zig:7:21: error: expected float type, found 'u32'
25// tmp.zig:11:26: error: expected float type, found 'u32'
26// tmp.zig:15:23: error: expected integer type, found 'f32'
test/cases/compile_errors/stage1/test/invalid_non-exhaustive_enum_to_union.zig deleted-27
......@@ -1,27 +0,0 @@
1const E = enum(u8) {
2 a,
3 b,
4 _,
5};
6const U = union(E) {
7 a,
8 b,
9};
10export fn foo() void {
11 var e = @intToEnum(E, 15);
12 var u: U = e;
13 _ = u;
14}
15export fn bar() void {
16 const e = @intToEnum(E, 15);
17 var u: U = e;
18 _ = u;
19}
20
21// error
22// backend=stage1
23// target=native
24// is_test=1
25//
26// tmp.zig:12:16: error: runtime cast to union 'U' from non-exhaustive enum
27// tmp.zig:17:16: error: no tag by value 15
test/cases/compile_errors/stage1/test/invalid_pointer_with_reify_type.zig deleted-19
......@@ -1,19 +0,0 @@
1export fn entry() void {
2 _ = @Type(.{ .Pointer = .{
3 .size = .One,
4 .is_const = false,
5 .is_volatile = false,
6 .alignment = 1,
7 .address_space = .generic,
8 .child = u8,
9 .is_allowzero = false,
10 .sentinel = &@as(u8, 0),
11 }});
12}
13
14// error
15// backend=stage1
16// target=native
17// is_test=1
18//
19// tmp.zig:2:16: error: sentinels are only allowed on slices and unknown-length pointers
test/cases/compile_errors/stage1/test/nested_vectors.zig deleted-13
......@@ -1,13 +0,0 @@
1export fn entry() void {
2 const V1 = @import("std").meta.Vector(4, u8);
3 const V2 = @Type(.{ .Vector = .{ .len = 4, .child = V1 } });
4 var v: V2 = undefined;
5 _ = v;
6}
7
8// error
9// backend=stage1
10// target=native
11// is_test=1
12//
13// tmp.zig:3:23: error: vector element type must be integer, float, bool, or pointer; '@Vector(4, u8)' is invalid
test/cases/compile_errors/stage1/test/non-exhaustive_enum_marker_assigned_a_value.zig deleted-20
......@@ -1,20 +0,0 @@
1const A = enum {
2 a,
3 b,
4 _ = 1,
5};
6const B = enum {
7 a,
8 b,
9 _,
10};
11comptime { _ = A; _ = B; }
12
13// error
14// backend=stage1
15// target=native
16// is_test=1
17//
18// tmp.zig:4:9: error: '_' is used to mark an enum as non-exhaustive and cannot be assigned a value
19// tmp.zig:6:11: error: non-exhaustive enum missing integer tag type
20// tmp.zig:9:5: note: marked non-exhaustive here
test/cases/compile_errors/stage1/test/non-exhaustive_enums.zig deleted-22
......@@ -1,22 +0,0 @@
1const B = enum(u1) {
2 a,
3 _,
4 b,
5};
6const C = enum(u1) {
7 a,
8 b,
9 _,
10};
11pub export fn entry() void {
12 _ = B;
13 _ = C;
14}
15
16// error
17// backend=stage1
18// target=native
19// is_test=1
20//
21// tmp.zig:3:5: error: '_' field of non-exhaustive enum must be last
22// tmp.zig:6:11: error: non-exhaustive enum specifies every value
test/cases/compile_errors/stage1/test/reassign_to_slice_parameter.zig deleted-13
......@@ -1,13 +0,0 @@
1pub fn reassign(s: []const u8) void {
2 s = s[0..];
3}
4export fn entry() void {
5 reassign("foo");
6}
7
8// error
9// backend=stage1
10// target=native
11// is_test=1
12//
13// tmp.zig:2:10: error: cannot assign to constant
test/cases/compile_errors/stage1/test/reference_to_const_data.zig deleted-30
......@@ -1,30 +0,0 @@
1export fn foo() void {
2 var ptr = &[_]u8{0,0,0,0};
3 ptr[1] = 2;
4}
5export fn bar() void {
6 var ptr = &@as(u32, 2);
7 ptr.* = 2;
8}
9export fn baz() void {
10 var ptr = &true;
11 ptr.* = false;
12}
13export fn qux() void {
14 const S = struct{
15 x: usize,
16 y: usize,
17 };
18 var ptr = &S{.x=1,.y=2};
19 ptr.x = 2;
20}
21
22// error
23// backend=stage1
24// target=native
25// is_test=1
26//
27// tmp.zig:3:14: error: cannot assign to constant
28// tmp.zig:7:13: error: cannot assign to constant
29// tmp.zig:11:13: error: cannot assign to constant
30// tmp.zig:19:13: error: cannot assign to constant
test/cases/compile_errors/stage1/test/reify_typeOf_with_incompatible_arguments.zig deleted-12
......@@ -1,12 +0,0 @@
1export fn entry() void {
2 var var_1: f32 = undefined;
3 var var_2: u32 = undefined;
4 _ = @TypeOf(var_1, var_2);
5}
6
7// error
8// backend=stage1
9// target=native
10// is_test=1
11//
12// tmp.zig:4:9: error: incompatible types: 'f32' and 'u32'
test/cases/compile_errors/stage1/test/reify_typeOf_with_no_arguments.zig deleted-10
......@@ -1,10 +0,0 @@
1export fn entry() void {
2 _ = @TypeOf();
3}
4
5// error
6// backend=stage1
7// target=native
8// is_test=1
9//
10// tmp.zig:2:9: error: expected at least 1 argument, found 0
test/cases/compile_errors/stage1/test/reject_extern_function_definitions_with_body.zig deleted-10
......@@ -1,10 +0,0 @@
1extern "c" fn definitelyNotInLibC(a: i32, b: i32) i32 {
2 return a + b;
3}
4
5// error
6// backend=stage1
7// target=native
8// is_test=1
9//
10// tmp.zig:1:1: error: extern functions have no body
test/cases/compile_errors/stage1/test/reject_extern_variables_with_initializers.zig deleted-8
......@@ -1,8 +0,0 @@
1extern var foo: int = 2;
2
3// error
4// backend=stage1
5// target=native
6// is_test=1
7//
8// tmp.zig:1:23: error: extern variables have no initializers
test/cases/compile_errors/stage1/test/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig deleted-14
......@@ -1,14 +0,0 @@
1pub fn A() type {
2 return Q;
3}
4test "1" {
5 _ = A().a;
6 _ = A().a;
7}
8
9// error
10// backend=stage1
11// target=native
12// is_test=1
13//
14// tmp.zig:2:12: error: use of undeclared identifier 'Q'
test/cases/compile_errors/stage1/test/return_invalid_type_from_test.zig deleted-8
......@@ -1,8 +0,0 @@
1test "example" { return 1; }
2
3// error
4// backend=stage1
5// target=native
6// is_test=1
7//
8// tmp.zig:1:25: error: expected type 'void', found 'comptime_int'
test/cases/compile_errors/stage1/test/switching_with_exhaustive_enum_has___prong_.zig deleted-19
......@@ -1,19 +0,0 @@
1const E = enum{
2 a,
3 b,
4};
5pub export fn entry() void {
6 var e: E = .b;
7 switch (e) {
8 .a => {},
9 .b => {},
10 _ => {},
11 }
12}
13
14// error
15// backend=stage1
16// target=native
17// is_test=1
18//
19// tmp.zig:7:5: error: switch on exhaustive enum has `_` prong
test/cases/compile_errors/stage1/test/tagName_on_invalid_value_of_non-exhaustive_enum.zig deleted-11
......@@ -1,11 +0,0 @@
1test "enum" {
2 const E = enum(u8) {A, B, _};
3 _ = @tagName(@intToEnum(E, 5));
4}
5
6// error
7// backend=stage1
8// target=native
9// is_test=1
10//
11// tmp.zig:3:18: error: no tag by value 5
test/cases/compile_errors/stage1/test/type_mismatch_in_C_prototype_with_varargs.zig deleted-14
......@@ -1,14 +0,0 @@
1const fn_ty = ?fn ([*c]u8, ...) callconv(.C) void;
2extern fn fn_decl(fmt: [*:0]u8, ...) void;
3
4export fn main() void {
5 const x: fn_ty = fn_decl;
6 _ = x;
7}
8
9// error
10// backend=stage1
11// target=native
12// is_test=1
13//
14// tmp.zig:5:22: error: expected type 'fn([*c]u8, ...) callconv(.C) void', found 'fn([*:0]u8, ...) callconv(.C) void'
test/cases/compile_errors/struct_field_missing_type.zig created+13
......@@ -0,0 +1,13 @@
1const Letter = struct {
2 A,
3};
4export fn entry() void {
5 var a = Letter { .A = {} };
6 _ = a;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :2:5: error: struct field missing type
test/cases/compile_errors/struct_init_syntax_for_array.zig created+10
......@@ -0,0 +1,10 @@
1const foo = [3]u16{ .x = 1024 };
2comptime {
3 _ = foo;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :1:13: error: initializing array with struct syntax
test/cases/compile_errors/struct_with_declarations_unavailable_for_reify_type.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() void {
2 _ = @Type(@typeInfo(struct { const foo = 1; }));
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:9: error: reified structs must have no decls
test/cases/compile_errors/struct_with_invalid_field.zig created+30
......@@ -0,0 +1,30 @@
1const std = @import("std",);
2const Allocator = std.mem.Allocator;
3const ArrayList = std.ArrayList;
4
5const HeaderWeight = enum {
6 H1, H2, H3, H4, H5, H6,
7};
8
9const MdText = ArrayList(u8);
10
11const MdNode = union(enum) {
12 Header: struct {
13 text: MdText,
14 weight: HeaderValue,
15 },
16};
17
18export fn entry() void {
19 const a = MdNode.Header {
20 .text = MdText.init(std.testing.allocator),
21 .weight = HeaderWeight.H1,
22 };
23 _ = a;
24}
25
26// error
27// backend=stage2
28// target=native
29//
30// :14:17: error: use of undeclared identifier 'HeaderValue'
test/cases/compile_errors/suspend_inside_suspend_block.zig created+16
......@@ -0,0 +1,16 @@
1export fn entry() void {
2 _ = async foo();
3}
4fn foo() void {
5 suspend {
6 suspend {
7 }
8 }
9}
10
11// error
12// backend=stage2
13// target=native
14//
15// :6:9: error: cannot suspend inside suspend block
16// :5:5: note: other suspend block here
test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig created+24
......@@ -0,0 +1,24 @@
1const Number = enum {
2 One,
3 Two,
4 Three,
5 Four,
6};
7fn f(n: Number) i32 {
8 switch (n) {
9 Number.One => 1,
10 Number.Two => 2,
11 Number.Three => @as(i32, 3),
12 Number.Four => 4,
13 Number.Two => 2,
14 }
15}
16
17export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
18
19// error
20// backend=stage2
21// target=native
22//
23// :13:15: error: duplicate switch value
24// :10:15: note: previous value here
test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig created+25
......@@ -0,0 +1,25 @@
1const Number = enum {
2 One,
3 Two,
4 Three,
5 Four,
6};
7fn f(n: Number) i32 {
8 switch (n) {
9 Number.One => 1,
10 Number.Two => 2,
11 Number.Three => @as(i32, 3),
12 Number.Four => 4,
13 Number.Two => 2,
14 else => 10,
15 }
16}
17
18export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
19
20// error
21// backend=stage2
22// target=native
23//
24// :13:15: error: duplicate switch value
25// :10:15: note: previous value here
test/cases/compile_errors/switch_expression-duplicate_type.zig created+17
......@@ -0,0 +1,17 @@
1fn foo(comptime T: type, x: T) u8 {
2 _ = x;
3 return switch (T) {
4 u32 => 0,
5 u64 => 1,
6 u32 => 2,
7 else => 3,
8 };
9}
10export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); }
11
12// error
13// backend=stage2
14// target=native
15//
16// :6:9: error: duplicate switch value
17// :4:9: note: previous value here
test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig created+21
......@@ -0,0 +1,21 @@
1const Test = struct {
2 bar: i32,
3};
4const Test2 = Test;
5fn foo(comptime T: type, x: T) u8 {
6 _ = x;
7 return switch (T) {
8 Test => 0,
9 u64 => 1,
10 Test2 => 2,
11 else => 3,
12 };
13}
14export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); }
15
16// error
17// backend=stage2
18// target=native
19//
20// :10:9: error: duplicate switch value
21// :8:9: note: previous value here
test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig created+23
......@@ -0,0 +1,23 @@
1const Number = enum {
2 One,
3 Two,
4 Three,
5 Four,
6};
7fn f(n: Number) i32 {
8 switch (n) {
9 Number.One => 1,
10 Number.Two => 2,
11 Number.Three => @as(i32, 3),
12 }
13}
14
15export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
16
17// error
18// backend=stage2
19// target=native
20//
21// :8:5: error: switch must handle all possibilities
22// :8:5: note: unhandled enumeration value: 'Four'
23// :1:16: note: enum 'tmp.Number' declared here
test/cases/compile_errors/switch_expression-multiple_else_prongs.zig created+17
......@@ -0,0 +1,17 @@
1fn f(x: u32) void {
2 const value: bool = switch (x) {
3 1234 => false,
4 else => true,
5 else => true,
6 };
7}
8export fn entry() void {
9 f(1234);
10}
11
12// error
13// backend=stage2
14// target=native
15//
16// :5:9: error: multiple else prongs in switch expression
17// :4:9: note: previous else prong here
test/cases/compile_errors/switch_expression-non_exhaustive_integer_prongs.zig created+12
......@@ -0,0 +1,12 @@
1fn foo(x: u8) void {
2 switch (x) {
3 0 => {},
4 }
5}
6export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
7
8// error
9// backend=stage2
10// target=native
11//
12// :2:5: error: switch must handle all possibilities
test/cases/compile_errors/switch_expression-unreachable_else_prong_enum.zig created+24
......@@ -0,0 +1,24 @@
1const TestEnum = enum{ T1, T2 };
2
3fn err(x: u8) TestEnum {
4 switch (x) {
5 0 => return TestEnum.T1,
6 else => return TestEnum.T2,
7 }
8}
9
10fn foo(x: u8) void {
11 switch (err(x)) {
12 TestEnum.T1 => {},
13 TestEnum.T2 => {},
14 else => {},
15 }
16}
17
18export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
19
20// error
21// backend=stage2
22// target=native
23//
24// :14:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/switch_expression-unreachable_else_prong_range_i8.zig created+17
......@@ -0,0 +1,17 @@
1fn foo(x: i8) void {
2 switch (x) {
3 -128...0 => {},
4 1 => {},
5 2 => {},
6 3 => {},
7 4...127 => {},
8 else => {},
9 }
10}
11export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
12
13// error
14// backend=stage2
15// target=native
16//
17// :8:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/switch_expression-unreachable_else_prong_range_u8.zig created+17
......@@ -0,0 +1,17 @@
1fn foo(x: u8) void {
2 switch (x) {
3 0 => {},
4 1 => {},
5 2 => {},
6 3 => {},
7 4...255 => {},
8 else => {},
9 }
10}
11export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
12
13// error
14// backend=stage2
15// target=native
16//
17// :8:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/switch_expression-unreachable_else_prong_u1.zig created+14
......@@ -0,0 +1,14 @@
1fn foo(x: u1) void {
2 switch (x) {
3 0 => {},
4 1 => {},
5 else => {},
6 }
7}
8export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
9
10// error
11// backend=stage2
12// target=native
13//
14// :5:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/switch_expression-unreachable_else_prong_u2.zig created+16
......@@ -0,0 +1,16 @@
1fn foo(x: u2) void {
2 switch (x) {
3 0 => {},
4 1 => {},
5 2 => {},
6 3 => {},
7 else => {},
8 }
9}
10export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
11
12// error
13// backend=stage2
14// target=native
15//
16// :7:14: error: unreachable else prong; all cases already handled
test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig created+14
......@@ -0,0 +1,14 @@
1const Foo = enum { M };
2
3export fn entry() void {
4 var f = Foo.M;
5 switch (f) {}
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :5:5: error: switch must handle all possibilities
13// :5:5: note: unhandled enumeration value: 'M'
14// :1:13: note: enum 'tmp.Foo' declared here
test/cases/compile_errors/switching_with_exhaustive_enum_has___prong_.zig created+19
......@@ -0,0 +1,19 @@
1const E = enum{
2 a,
3 b,
4};
5pub export fn entry() void {
6 var e: E = .b;
7 switch (e) {
8 .a => {},
9 .b => {},
10 _ => {},
11 }
12}
13
14// error
15// backend=stage2
16// target=native
17//
18// :7:5: error: '_' prong only allowed when switching on non-exhaustive enums
19// :10:11: note: '_' prong here
test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig created+12
......@@ -0,0 +1,12 @@
1test "enum" {
2 const E = enum(u8) {A, B, _};
3 _ = @tagName(@intToEnum(E, 5));
4}
5
6// error
7// backend=stage2
8// target=native
9// is_test=1
10//
11// :3:9: error: no field with value '5' in enum 'test.enum.E'
12// :1:1: note: declared here
test/cases/compile_errors/threadlocal_qualifier_on_const.zig created+10
......@@ -0,0 +1,10 @@
1threadlocal const x: i32 = 1234;
2export fn entry() i32 {
3 return x;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :1:1: error: threadlocal variable cannot be constant
test/cases/compile_errors/truncate_sign_mismatch.zig created+25
......@@ -0,0 +1,25 @@
1export fn entry1() i8 {
2 var x: u32 = 10;
3 return @truncate(i8, x);
4}
5export fn entry2() u8 {
6 var x: i32 = -10;
7 return @truncate(u8, x);
8}
9export fn entry3() i8 {
10 comptime var x: u32 = 10;
11 return @truncate(i8, x);
12}
13export fn entry4() u8 {
14 comptime var x: i32 = -10;
15 return @truncate(u8, x);
16}
17
18// error
19// backend=stage2
20// target=native
21//
22// :3:26: error: expected signed integer type, found 'u32'
23// :7:26: error: expected unsigned integer type, found 'i32'
24// :11:26: error: expected signed integer type, found 'u32'
25// :15:26: error: expected unsigned integer type, found 'i32'
test/cases/compile_errors/try_in_function_with_non_error_return_type.zig created+10
......@@ -0,0 +1,10 @@
1export fn f() void {
2 try something();
3}
4fn something() anyerror!void { }
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:5: error: expected type 'void', found 'anyerror'
test/cases/compile_errors/type_mismatch_in_C_prototype_with_varargs.zig created+13
......@@ -0,0 +1,13 @@
1const fn_ty = ?fn ([*c]u8, ...) callconv(.C) void;
2extern fn fn_decl(fmt: [*:0]u8, ...) void;
3
4export fn main() void {
5 const x: fn_ty = fn_decl;
6 _ = x;
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :5:22: error: expected type 'fn([*c]u8, ...) callconv(.C) void', found 'fn([*:0]u8, ...) callconv(.C) void'
test/cases/compile_errors/undeclared_identifier.zig created+11
......@@ -0,0 +1,11 @@
1export fn a() void {
2 return
3 b +
4 c;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/undeclared_identifier_error_should_mark_fn_as_impure.zig created+12
......@@ -0,0 +1,12 @@
1export fn foo() void {
2 test_a_thing();
3}
4fn test_a_thing() void {
5 bad_fn_call();
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :5:5: error: use of undeclared identifier 'bad_fn_call'
test/cases/compile_errors/undeclared_identifier_in_unanalyzed_branch.zig created+11
......@@ -0,0 +1,11 @@
1export fn a() void {
2 if (false) {
3 lol_this_doesnt_exist = nonsense;
4 }
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:9: error: use of undeclared identifier 'lol_this_doesnt_exist'
test/cases/compile_errors/undefined_as_field_type_is_rejected.zig created+9
......@@ -0,0 +1,9 @@
1export fn a() void {
2 b();
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/undefined_function_call.zig created+9
......@@ -0,0 +1,9 @@
1export fn a() void {
2 b();
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/underscore_is_not_a_declarable_symbol.zig created+10
......@@ -0,0 +1,10 @@
1export fn f1() usize {
2 var _: usize = 2;
3 return _;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:9: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig created+13
......@@ -0,0 +1,13 @@
1export fn returns() void {
2 for ([_]void{}) |_, i| {
3 for ([_]void{}) |_, j| {
4 return _;
5 }
6 }
7}
8
9// error
10// backend=stage2
11// target=native
12//
13// :4:20: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/underscore_should_not_be_usable_inside_while.zig created+16
......@@ -0,0 +1,16 @@
1export fn returns() void {
2 while (optionalReturn()) |_| {
3 while (optionalReturn()) |_| {
4 return _;
5 }
6 }
7}
8fn optionalReturn() ?u32 {
9 return 1;
10}
11
12// error
13// backend=stage2
14// target=native
15//
16// :4:20: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/underscore_should_not_be_usable_inside_while_else.zig created+18
......@@ -0,0 +1,18 @@
1export fn returns() void {
2 while (optionalReturnError()) |_| {
3 while (optionalReturnError()) |_| {
4 return;
5 } else |_| {
6 if (_ == error.optionalReturnError) return;
7 }
8 }
9}
10fn optionalReturnError() !?u32 {
11 return error.optionalReturnError;
12}
13
14// error
15// backend=stage2
16// target=native
17//
18// :6:17: error: '_' used as an identifier without @"_" syntax
test/cases/compile_errors/union_fields_with_value_assignments.zig created+7
......@@ -0,0 +1,7 @@
1const Foo = union {};
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:13: error: union declarations must have at least one tag
test/cases/compile_errors/union_with_0_fields.zig created+7
......@@ -0,0 +1,7 @@
1const Foo = union {};
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:13: error: union declarations must have at least one tag
test/cases/compile_errors/union_with_specified_enum_omits_field.zig created+20
......@@ -0,0 +1,20 @@
1const Letter = enum {
2 A,
3 B,
4 C,
5};
6const Payload = union(Letter) {
7 A: i32,
8 B: f64,
9};
10export fn entry() usize {
11 return @sizeOf(Payload);
12}
13
14// error
15// backend=stage2
16// target=native
17//
18// :6:1: error: enum field(s) missing in union
19// :4:5: note: field 'C' missing, declared here
20// :1:16: note: enum declared here
test/cases/compile_errors/unreachable_code-double_break.zig created+13
......@@ -0,0 +1,13 @@
1export fn a() void {
2 const b = blk: {
3 break :blk break :blk @as(u32, 1);
4 };
5 _ = b;
6}
7
8// error
9// backend=stage2
10// target=native
11//
12// :3:9: error: unreachable code
13// :3:20: note: control flow is diverted here
test/cases/compile_errors/unreachable_code-nested_returns.zig created+10
......@@ -0,0 +1,10 @@
1export fn a() i32 {
2 return return 1;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: unreachable code
10// :2:12: note: control flow is diverted here
test/cases/compile_errors/unreachable_code.zig created+13
......@@ -0,0 +1,13 @@
1export fn a() void {
2 return;
3 b();
4}
5
6fn b() void {}
7
8// error
9// backend=stage2
10// target=native
11//
12// :3:6: error: unreachable code
13// :2:5: note: control flow is diverted here
test/cases/compile_errors/unreachable_variable.zig created+10
......@@ -0,0 +1,10 @@
1export fn f() void {
2 const a: noreturn = {};
3 _ = a;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:25: error: expected type 'noreturn', found 'void'
test/cases/compile_errors/unreachable_with_return.zig created+8
......@@ -0,0 +1,8 @@
1fn a() noreturn {return;}
2export fn entry() void { a(); }
3
4// error
5// backend=stage2
6// target=native
7//
8// :1:18: error: expected type 'noreturn', found 'void'
test/cases/compile_errors/use_invalid_number_literal_as_array_index.zig created+11
......@@ -0,0 +1,11 @@
1var v = 25;
2export fn entry() void {
3 var arr: [v]u8 = undefined;
4 _ = arr;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :1:1: error: variable of type 'comptime_int' must be const or comptime
test/cases/compile_errors/use_of_undeclared_identifier.zig created+9
......@@ -0,0 +1,9 @@
1export fn f() void {
2 b = 3;
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:5: error: use of undeclared identifier 'b'
test/cases/compile_errors/using_invalid_types_in_function_call_raises_an_error.zig created+11
......@@ -0,0 +1,11 @@
1const MenuEffect = enum {};
2fn func(effect: MenuEffect) void { _ = effect; }
3export fn entry() void {
4 func(MenuEffect.ThisDoesNotExist);
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :1:20: error: enum declarations must have at least one tag
test/cases/compile_errors/usingnamespace_with_wrong_type.zig created+7
......@@ -0,0 +1,7 @@
1usingnamespace void;
2
3// error
4// backend=stage2
5// target=native
6//
7// :1:1: error: type void has no namespace
test/cases/compile_errors/variable_has_wrong_type.zig created+10
......@@ -0,0 +1,10 @@
1export fn f() i32 {
2 const a = "a";
3 return a;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:12: error: expected type 'i32', found '*const [1:0]u8'
test/cases/compile_errors/variable_initialization_compile_error_then_referenced.zig created+19
......@@ -0,0 +1,19 @@
1fn Undeclared() type {
2 return T;
3}
4fn Gen() type {
5 const X = Undeclared();
6 return struct {
7 x: X,
8 };
9}
10export fn entry() void {
11 const S = Gen();
12 _ = S;
13}
14
15// error
16// backend=stage2
17// target=native
18//
19// :2:12: error: use of undeclared identifier 'T'
test/cases/compile_errors/variable_with_type_noreturn.zig created+11
......@@ -0,0 +1,11 @@
1export fn entry9() void {
2 var z: noreturn = return;
3 _ = z;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:5: error: unreachable code
11// :2:23: note: control flow is diverted here
test/cases/compile_errors/volatile_on_global_assembly.zig created+9
......@@ -0,0 +1,9 @@
1comptime {
2 asm volatile ("");
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:9: error: volatile is meaningless on global assembly
test/cases/compile_errors/while_expected_bool_got_error_union.zig created+10
......@@ -0,0 +1,10 @@
1export fn foo() void {
2 while (bar()) {}
3}
4fn bar() anyerror!i32 { return 1; }
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:15: error: expected type 'bool', found 'anyerror!i32'
test/cases/compile_errors/while_expected_bool_got_optional.zig created+10
......@@ -0,0 +1,10 @@
1export fn foo() void {
2 while (bar()) {}
3}
4fn bar() ?i32 { return 1; }
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:15: error: expected type 'bool', found '?i32'
test/cases/compile_errors/write_to_const_global_variable.zig created+11
......@@ -0,0 +1,11 @@
1const x : i32 = 99;
2fn f() void {
3 x = 1;
4}
5export fn entry() void { f(); }
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:9: error: cannot assign to constant
test/cases/compile_errors/wrong_size_to_an_array_literal.zig created+10
......@@ -0,0 +1,10 @@
1comptime {
2 const array = [2]u8{1, 2, 3};
3 _ = array;
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :2:31: error: index 2 outside array of length 2
test/cases/compile_errors/wrong_type_passed_to_panic.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 var e = error.Foo;
3 @panic(e);
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:12: error: expected type '[]const u8', found 'error{Foo}'
test/cases/compile_errors/wrong_type_to_hasField.zig created+9
......@@ -0,0 +1,9 @@
1export fn entry() bool {
2 return @hasField(i32, "hi");
3}
4
5// error
6// backend=stage2
7// target=native
8//
9// :2:22: error: type 'i32' does not support '@hasField'
test/cases/compile_log.0.zig+1-1
......@@ -14,4 +14,4 @@ fn x() void {}
1414
1515// error
1616//
17// :6:23: error: expected usize, found bool
17// :6:23: error: expected type 'usize', found 'bool'
test/cases/llvm/any_typed_null_to_any_typed_optional.zig deleted-11
......@@ -1,11 +0,0 @@
1pub fn main() void {
2 var a: ?*anyopaque = undefined;
3 a = @as(?usize, null);
4}
5
6// error
7// output_mode=Exe
8// backend=stage2,llvm
9// target=x86_64-linux,x86_64-macos
10//
11// :3:21: error: expected *anyopaque, found ?usize
test/cases/llvm/invalid_address_space_coercion.zig deleted-13
......@@ -1,13 +0,0 @@
1fn entry(a: *addrspace(.gs) i32) *i32 {
2 return a;
3}
4pub fn main() void {
5 _ = entry;
6}
7
8// error
9// output_mode=Exe
10// backend=stage2,llvm
11// target=x86_64-linux,x86_64-macos
12//
13// :2:12: error: expected *i32, found *addrspace(.gs) i32
test/cases/llvm/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig deleted-13
......@@ -1,13 +0,0 @@
1fn entry(a: *addrspace(.gs) i32) *i32 {
2 return &a.*;
3}
4pub fn main() void {
5 _ = entry;
6}
7
8// error
9// output_mode=Exe
10// backend=stage2,llvm
11// target=x86_64-linux,x86_64-macos
12//
13// :2:12: error: expected *i32, found *addrspace(.gs) i32
test/cases/llvm/pointer_with_different_address_spaces.zig deleted-13
......@@ -1,13 +0,0 @@
1fn entry(a: *addrspace(.gs) i32) *addrspace(.fs) i32 {
2 return a;
3}
4export fn entry2() void {
5 _ = entry;
6}
7
8// error
9// output_mode=Obj
10// backend=stage2,llvm
11// target=x86_64-linux,x86_64-macos
12//
13// :2:12: error: expected *addrspace(.fs) i32, found *addrspace(.gs) i32
test/cases/llvm/pointers_with_different_address_spaces.zig deleted-13
......@@ -1,13 +0,0 @@
1fn entry(a: ?*addrspace(.gs) i32) *i32 {
2 return a.?;
3}
4pub fn main() void {
5 _ = entry;
6}
7
8// error
9// output_mode=Exe
10// backend=stage2,llvm
11// target=x86_64-linux,x86_64-macos
12//
13// :2:13: error: expected *i32, found *addrspace(.gs) i32
test/cases/x86_64-linux/hello_world_with_updates.1.zig+1-1
......@@ -2,4 +2,4 @@ pub export fn _start() noreturn {}
22
33// error
44//
5// :1:34: error: expected noreturn, found void
5// :1:34: error: expected type 'noreturn', found 'void'
test/cases/x86_64-linux/inline_assembly.0.zig+1-1
......@@ -13,4 +13,4 @@ pub fn main() void {
1313// output_mode=Exe
1414// target=x86_64-linux
1515//
16// :4:27: error: expected type, found comptime_int
16// :4:27: error: expected type 'type', found 'comptime_int'
test/cases/x86_64-macos/hello_world_with_updates.1.zig+1-1
......@@ -2,4 +2,4 @@ pub export fn main() noreturn {}
22
33// error
44//
5// :1:32: error: expected noreturn, found void
5// :1:32: error: expected type 'noreturn', found 'void'
test/stage2/cbe.zig+5-5
......@@ -96,13 +96,13 @@ pub fn addCases(ctx: *TestContext) !void {
9696 \\ _ = @intToError(0);
9797 \\ return 0;
9898 \\}
99 , &.{":2:21: error: integer value 0 represents no error"});
99 , &.{":2:21: error: integer value '0' represents no error"});
100100 case.addError(
101101 \\pub export fn main() c_int {
102102 \\ _ = @intToError(3);
103103 \\ return 0;
104104 \\}
105 , &.{":2:21: error: integer value 3 represents no error"});
105 , &.{":2:21: error: integer value '3' represents no error"});
106106 }
107107
108108 {
......@@ -739,7 +739,7 @@ pub fn addCases(ctx: *TestContext) !void {
739739 \\ _ = @enumToInt(a);
740740 \\}
741741 , &.{
742 ":3:20: error: expected enum or tagged union, found bool",
742 ":3:20: error: expected enum or tagged union, found 'bool'",
743743 });
744744
745745 case.addError(
......@@ -748,7 +748,7 @@ pub fn addCases(ctx: *TestContext) !void {
748748 \\ _ = @intToEnum(bool, a);
749749 \\}
750750 , &.{
751 ":3:20: error: expected enum, found bool",
751 ":3:20: error: expected enum, found 'bool'",
752752 });
753753
754754 case.addError(
......@@ -757,7 +757,7 @@ pub fn addCases(ctx: *TestContext) !void {
757757 \\ _ = @intToEnum(E, 3);
758758 \\}
759759 , &.{
760 ":3:9: error: enum 'tmp.E' has no tag with value 3",
760 ":3:9: error: enum 'tmp.E' has no tag with value '3'",
761761 ":1:11: note: enum declared here",
762762 });
763763