move passing stage1 compile error tests to stage2
This commit is contained in:
committed by
Jakub Konka
parent
c248af3bdc
commit
3204d00a5e
@@ -9,8 +9,8 @@ export fn f2(x: V(4, u32)) V(4, u32) {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:12: error: negation of type 'u32'
|
||||
// tmp.zig:8:12: error: negation of type 'u32'
|
||||
// :3:12: error: negation of type 'u32'
|
||||
// :8:12: error: negation of type '@Vector(4, u32)'
|
||||
@@ -4,7 +4,7 @@ fn foo() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:28: error: '.*' cannot be followed by '*'. Are you missing a space?
|
||||
// :2:28: error: '.*' cannot be followed by '*'. Are you missing a space?
|
||||
@@ -4,8 +4,8 @@ test "Crash" {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
// is_test=1
|
||||
//
|
||||
// tmp.zig:1:11: error: use of undeclared identifier 'B'
|
||||
// :1:11: error: use of undeclared identifier 'B'
|
||||
@@ -0,0 +1,12 @@
|
||||
const Foo = error{A};
|
||||
comptime {
|
||||
const z = Foo.Bar;
|
||||
_ = z;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :3:18: error: no error named 'Bar' in 'error{A}'
|
||||
// :1:13: note: error set declared here
|
||||
10
test/cases/compile_errors/add_assign_on_undefined_value.zig
Normal file
10
test/cases/compile_errors/add_assign_on_undefined_value.zig
Normal file
@@ -0,0 +1,10 @@
|
||||
comptime {
|
||||
var a: i64 = undefined;
|
||||
a += a;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :3:10: error: use of undefined value here causes undefined behavior
|
||||
10
test/cases/compile_errors/add_on_undefined_value.zig
Normal file
10
test/cases/compile_errors/add_on_undefined_value.zig
Normal file
@@ -0,0 +1,10 @@
|
||||
comptime {
|
||||
var a: i64 = undefined;
|
||||
_ = a + a;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :3:13: error: use of undefined value here causes undefined behavior
|
||||
@@ -6,7 +6,8 @@ fn add(a: u16, b: u16) u16 {
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(y)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:14: error: operation caused overflow
|
||||
// :3:14: error: overflow of integer type 'u16' with value '65540'
|
||||
// :1:14: note: called from here
|
||||
@@ -6,7 +6,7 @@ const x = Foo {.field = 1} + Foo {.field = 2};
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(x)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:4:28: error: invalid operands to binary expression: 'Foo' and 'Foo'
|
||||
// :4:28: error: invalid operands to binary expression: 'Struct' and 'Struct'
|
||||
10
test/cases/compile_errors/address_of_number_literal.zig
Normal file
10
test/cases/compile_errors/address_of_number_literal.zig
Normal file
@@ -0,0 +1,10 @@
|
||||
const x = 3;
|
||||
const y = &x;
|
||||
fn foo() *const i32 { return y; }
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :3:30: error: expected type '*const i32', found '*const comptime_int'
|
||||
@@ -3,7 +3,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:19: error: expected pointer or slice, found 'u32'
|
||||
// :2:19: error: expected pointer type, found 'u32'
|
||||
@@ -8,7 +8,7 @@ export fn entry1() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:7: error: expected ',' after field
|
||||
// :3:7: error: expected ',' after field
|
||||
@@ -13,9 +13,9 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:5:13: error: ambiguous reference
|
||||
// tmp.zig:7:9: note: declared here
|
||||
// tmp.zig:1:1: note: also declared here
|
||||
// :5:13: error: ambiguous reference
|
||||
// :7:9: note: declared here
|
||||
// :1:1: note: also declared here
|
||||
@@ -0,0 +1,11 @@
|
||||
pub fn main() void {
|
||||
var a: ?*anyopaque = undefined;
|
||||
a = @as(?usize, null);
|
||||
}
|
||||
|
||||
// error
|
||||
// output_mode=Exe
|
||||
// backend=stage2,llvm
|
||||
// target=x86_64-linux,x86_64-macos
|
||||
//
|
||||
// :3:21: error: expected type '*anyopaque', found '?usize'
|
||||
@@ -0,0 +1,9 @@
|
||||
export fn f() void {
|
||||
i[i] = i[i];
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:5: error: use of undeclared identifier 'i'
|
||||
@@ -5,7 +5,7 @@ const a = derp ++ "foo";
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(a)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:11: error: expected array, found 'usize'
|
||||
// :3:11: error: expected indexable; found 'usize'
|
||||
@@ -11,7 +11,7 @@ fn doSomeAsm() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=llvm
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:6:5: error: unable to evaluate constant expression
|
||||
// :6:5: error: unable to evaluate constant expression
|
||||
@@ -3,7 +3,7 @@ const a: *u8 = null;
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(a)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:1:16: error: expected type '*u8', found '@Type(.Null)'
|
||||
// :1:16: error: expected type '*u8', found '@TypeOf(null)'
|
||||
@@ -4,7 +4,7 @@ export fn f() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:13: error: cannot assign to constant
|
||||
// :3:13: error: cannot assign to constant
|
||||
@@ -4,7 +4,7 @@ export fn f() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:13: error: cannot assign to constant
|
||||
// :3:13: error: cannot assign to constant
|
||||
@@ -7,7 +7,7 @@ export fn derp() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:6:15: error: cannot assign to constant
|
||||
// :6:15: error: cannot assign to constant
|
||||
@@ -4,7 +4,7 @@ export fn f() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:9: error: cannot assign to constant
|
||||
// :3:9: error: cannot assign to constant
|
||||
@@ -4,7 +4,7 @@ export fn foo() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:24: error: integer value 753664 cannot be coerced to type 'u16'
|
||||
// :2:24: error: type 'u16' cannot represent integer value '753664'
|
||||
11
test/cases/compile_errors/assign_unreachable.zig
Normal file
11
test/cases/compile_errors/assign_unreachable.zig
Normal file
@@ -0,0 +1,11 @@
|
||||
export fn f() void {
|
||||
const a = return;
|
||||
_ = a;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:5: error: unreachable code
|
||||
// :2:15: note: control flow is diverted here
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:30: error: @atomicStore atomic ordering must not be Acquire or AcqRel
|
||||
// :3:31: error: @atomicStore atomic ordering must not be Acquire or AcqRel
|
||||
@@ -5,7 +5,7 @@ export fn f() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:4:81: error: failure atomic ordering must be no stricter than success
|
||||
// :4:81: error: failure atomic ordering must be no stricter than success
|
||||
@@ -5,7 +5,7 @@ export fn f() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:4:58: error: success atomic ordering must be Monotonic or stricter
|
||||
// :4:58: error: success atomic ordering must be Monotonic or stricter
|
||||
@@ -0,0 +1,9 @@
|
||||
export fn entry() void {
|
||||
@fence(.Monotonic);
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:13: error: atomic ordering must be Acquire or stricter
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:30: error: @atomicRmw with bool only allowed with .Xchg
|
||||
// :3:31: error: @atomicRmw with bool only allowed with .Xchg
|
||||
@@ -10,7 +10,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:9:27: error: @atomicRmw with enum only allowed with .Xchg
|
||||
// :9:28: error: @atomicRmw with enum only allowed with .Xchg
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:29: error: @atomicRmw with float only allowed with .Xchg, .Add and .Sub
|
||||
// :3:30: error: @atomicRmw with float only allowed with .Xchg, .Add, and .Sub
|
||||
@@ -5,7 +5,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:9: error: expected type 'error{Hi}', found '@Type(.EnumLiteral)'
|
||||
// :3:10: error: expected type 'error{Hi}', found '@TypeOf(.enum_literal)'
|
||||
@@ -0,0 +1,14 @@
|
||||
fn SimpleList(comptime L: usize) type {
|
||||
var T = u8;
|
||||
return struct {
|
||||
array: [L]T,
|
||||
};
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :4:19: error: mutable 'T' not accessible from here
|
||||
// :2:9: note: declared mutable here
|
||||
// :3:12: note: crosses namespace boundary here
|
||||
@@ -4,7 +4,7 @@ comptime {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:16: error: 17-bit float unsupported
|
||||
// :3:9: error: 17-bit float unsupported
|
||||
12
test/cases/compile_errors/attempted_double_ampersand.zig
Normal file
12
test/cases/compile_errors/attempted_double_ampersand.zig
Normal file
@@ -0,0 +1,12 @@
|
||||
export fn entry(a: bool, b: bool) i32 {
|
||||
if (a && b) {
|
||||
return 1234;
|
||||
}
|
||||
return 5678;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:11: error: ambiguous use of '&&'; use 'and' for logical AND, or change whitespace to ' & &' for bitwise AND
|
||||
@@ -0,0 +1,13 @@
|
||||
export fn entry(a: bool, b: bool) i32 {
|
||||
if (a || b) {
|
||||
return 1234;
|
||||
}
|
||||
return 5678;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:9: error: expected error set type, found 'bool'
|
||||
// :2:11: note: '||' merges error sets; 'or' performs boolean OR
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:30: error: expected type '[*]const bool', found 'bool'
|
||||
// :2:30: error: expected type '[*]const bool', found 'bool'
|
||||
@@ -5,7 +5,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:23: error: expected type '[]u32', found '*const u32'
|
||||
// :3:22: error: expected type '[]u32', found '*const u32'
|
||||
@@ -11,7 +11,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:8:5: error: use of undeclared identifier 'bogus'
|
||||
// :8:5: error: use of undeclared identifier 'bogus'
|
||||
7
test/cases/compile_errors/bad_import.zig
Normal file
7
test/cases/compile_errors/bad_import.zig
Normal file
@@ -0,0 +1,7 @@
|
||||
const bogus = @import("bogus-does-not-exist.zig",);
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :1:23: error: unable to load '${DIR}bogus-does-not-exist.zig': FileNotFound
|
||||
11
test/cases/compile_errors/bad_splat_type.zig
Normal file
11
test/cases/compile_errors/bad_splat_type.zig
Normal file
@@ -0,0 +1,11 @@
|
||||
export fn entry() void {
|
||||
const c = 4;
|
||||
var v = @splat(4, c);
|
||||
_ = v;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :3:23: error: expected integer, float, bool, or pointer for the vector element type; found 'comptime_int'
|
||||
@@ -6,8 +6,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
// is_test=1
|
||||
//
|
||||
// tmp.zig:2:18: error: invalid operands to binary expression: 'error{A}' and 'error{B}'
|
||||
// :2:18: error: invalid operands to binary bitwise expression: 'ErrorSet' and 'ErrorSet'
|
||||
@@ -5,7 +5,7 @@ var block_aligned_stuff: usize = (4 + TINY_QUANTUM_SIZE) & ~(TINY_QUANTUM_SIZE -
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(block_aligned_stuff)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:60: error: unable to perform binary not operation on type 'comptime_int'
|
||||
// :3:60: error: unable to perform binary not operation on type 'comptime_int'
|
||||
@@ -0,0 +1,10 @@
|
||||
export fn entry(byte: u8) void {
|
||||
var oops = @bitCast(u7, byte);
|
||||
_ = oops;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:29: error: @bitCast size mismatch: destination type 'u7' has 7 bits but source type 'u8' has 8 bits
|
||||
@@ -0,0 +1,10 @@
|
||||
export fn entry() void {
|
||||
var foo = (@bitCast(u8, @as(f32, 1.0)) == 0xf);
|
||||
_ = foo;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:29: error: @bitCast size mismatch: destination type 'u8' has 8 bits but source type 'f32' has 32 bits
|
||||
@@ -0,0 +1,10 @@
|
||||
export fn entry() void {
|
||||
const x = &@as(u8, 1) << 10;
|
||||
_ = x;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:15: error: bit shifting operation expected integer type, found '*const u8'
|
||||
11
test/cases/compile_errors/bogus_method_call_on_slice.zig
Normal file
11
test/cases/compile_errors/bogus_method_call_on_slice.zig
Normal file
@@ -0,0 +1,11 @@
|
||||
var self = "aoeu";
|
||||
fn f(m: []const u8) void {
|
||||
m.copy(u8, self[0..], m);
|
||||
}
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :3:6: error: type '[]const u8' has no field or member function named 'copy'
|
||||
@@ -3,7 +3,7 @@ const x = if (undefined) true else false;
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(x)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:1:15: error: use of undefined value here causes undefined behavior
|
||||
// :1:15: error: use of undefined value here causes undefined behavior
|
||||
@@ -17,8 +17,8 @@ export fn entry1() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:12:14: error: cannot assign to constant
|
||||
// tmp.zig:16:14: error: cannot assign to constant
|
||||
// :12:14: error: cannot assign to constant
|
||||
// :16:14: error: cannot assign to constant
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
pub extern fn foo(format: *const u8, ...) void;
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:16: error: expected type '*const u8', found '[5:0]u8'
|
||||
// :2:8: error: expected type '*const u8', found '[5:0]u8'
|
||||
@@ -8,8 +8,8 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:6:20: error: enum 'Foo' has no field named 'c'
|
||||
// tmp.zig:1:13: note: 'Foo' declared here
|
||||
// :6:21: error: enum 'tmp.Foo' has no field named 'c'
|
||||
// :1:13: note: enum declared here
|
||||
@@ -0,0 +1,10 @@
|
||||
export fn entry() void {
|
||||
const x = @as(usize, -10);
|
||||
_ = x;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:26: error: type 'usize' cannot represent integer value '-10'
|
||||
@@ -10,8 +10,8 @@ export fn entry1() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:22: error: attempt to cast negative value to unsigned integer
|
||||
// tmp.zig:8:27: error: cannot cast negative value -1 to unsigned integer type 'u32'
|
||||
// :3:36: error: type 'u32' cannot represent integer value '-1'
|
||||
// :8:27: error: type 'u32' cannot represent integer value '-1'
|
||||
13
test/cases/compile_errors/cast_unreachable.zig
Normal file
13
test/cases/compile_errors/cast_unreachable.zig
Normal file
@@ -0,0 +1,13 @@
|
||||
fn f() i32 {
|
||||
return @as(i32, return 1);
|
||||
}
|
||||
export fn entry() void { _ = f(); }
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:12: error: unreachable code
|
||||
// :2:21: note: control flow is diverted here
|
||||
// :2:5: error: unreachable code
|
||||
// :2:12: note: control flow is diverted here
|
||||
@@ -12,10 +12,10 @@ fn bar(x: *const u3) u3 {
|
||||
return x.*;
|
||||
}
|
||||
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(foo)); }
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:8:26: error: expected type '*const u3', found '*align(:3:1) const u3'
|
||||
// :8:15: error: expected type '*const u3', found '*align(0:3:1) const u3'
|
||||
@@ -3,7 +3,7 @@ export fn a(value: u32) bool {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:22: error: comparison operators cannot be chained
|
||||
// :2:22: error: comparison operators cannot be chained
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:22: error: expected bool, integer, enum or pointer type, found 'f32'
|
||||
// :3:22: error: expected bool, integer, enum, or pointer type; found 'f32'
|
||||
@@ -0,0 +1,12 @@
|
||||
fn func() bogus {}
|
||||
fn func() bogus {}
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(func)); }
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:1: error: redeclaration of 'func'
|
||||
// :1:1: note: other declaration here
|
||||
// :1:11: error: use of undeclared identifier 'bogus'
|
||||
// :2:11: error: use of undeclared identifier 'bogus'
|
||||
@@ -8,9 +8,8 @@ export fn entry() void {
|
||||
fn foo() void {}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
// is_test=1
|
||||
//
|
||||
// tmp.zig:4:9: error: suspend inside nosuspend block
|
||||
// tmp.zig:2:5: note: nosuspend block here
|
||||
// :4:9: error: suspend inside nosuspend block
|
||||
// :2:5: note: nosuspend block here
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:12: error: comparison of '*i32' with null
|
||||
// :3:12: error: comparison of '*i32' with null
|
||||
@@ -36,12 +36,12 @@ comptime {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:5:11: error: use of undefined value here causes undefined behavior
|
||||
// tmp.zig:11:11: error: use of undefined value here causes undefined behavior
|
||||
// tmp.zig:17:11: error: use of undefined value here causes undefined behavior
|
||||
// tmp.zig:23:11: error: use of undefined value here causes undefined behavior
|
||||
// tmp.zig:29:11: error: use of undefined value here causes undefined behavior
|
||||
// tmp.zig:35:11: error: use of undefined value here causes undefined behavior
|
||||
// :5:11: error: use of undefined value here causes undefined behavior
|
||||
// :11:11: error: use of undefined value here causes undefined behavior
|
||||
// :17:11: error: use of undefined value here causes undefined behavior
|
||||
// :23:11: error: use of undefined value here causes undefined behavior
|
||||
// :29:11: error: use of undefined value here causes undefined behavior
|
||||
// :35:11: error: use of undefined value here causes undefined behavior
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:25: error: operator not allowed for type 'anyerror!i32'
|
||||
// :3:25: error: operator == not allowed for type 'anyerror!i32'
|
||||
@@ -8,7 +8,7 @@ export fn entry() i32 {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:1:13: error: aoeu
|
||||
// :1:13: error: aoeu
|
||||
@@ -10,7 +10,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:14: error: use of undeclared identifier 'crap'
|
||||
// :2:14: error: use of undeclared identifier 'crap'
|
||||
@@ -8,7 +8,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist'
|
||||
// :2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist'
|
||||
@@ -3,7 +3,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:5: error: found compile log statement
|
||||
// :2:5: error: found compile log statement
|
||||
@@ -8,7 +8,8 @@ fn inner(comptime n: usize) void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:7:39: error: found compile log statement
|
||||
// :7:39: error: found compile log statement
|
||||
// :7:39: note: also here
|
||||
@@ -0,0 +1,18 @@
|
||||
const Letter = enum { A, B, C };
|
||||
const Value = union(Letter) {
|
||||
A: i32,
|
||||
B,
|
||||
C,
|
||||
};
|
||||
export fn entry() void {
|
||||
var x: Value = Letter.A;
|
||||
_ = x;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :8:26: error: coercion from enum 'tmp.Letter' to union 'tmp.Value' must initialize 'i32' field 'A'
|
||||
// :3:5: note: field 'A' declared here
|
||||
// :2:15: note: union declared here
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:41: error: non-zero length slice of undefined pointer
|
||||
// :2:41: error: non-zero length slice of undefined pointer
|
||||
@@ -7,7 +7,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:5: error: comptime field without default initialization value
|
||||
// :2:5: error: comptime field without default initialization value
|
||||
@@ -0,0 +1,9 @@
|
||||
export fn f() void {
|
||||
(const a = 0);
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:6: error: expected expression, found 'const'
|
||||
@@ -4,7 +4,7 @@ const a = zero{1};
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(a)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:11: error: expected type 'type', found 'i32'
|
||||
// :2:15: error: expected type 'type', found 'i32'
|
||||
@@ -0,0 +1,15 @@
|
||||
export fn foo() void {
|
||||
comptime var i = 0;
|
||||
while (i < 5) : (i += 1) {
|
||||
bar();
|
||||
}
|
||||
}
|
||||
|
||||
fn bar() void { }
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :3:24: error: cannot store to comptime variable in non-inline loop
|
||||
// :3:5: note: non-inline loop here
|
||||
@@ -16,9 +16,9 @@ comptime {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:9:5: error: declarations are not allowed between container fields
|
||||
// tmp.zig:5:5: note: field before declarations here
|
||||
// tmp.zig:12:5: note: field after declarations here
|
||||
// :9:5: error: declarations are not allowed between container fields
|
||||
// :5:5: note: field before declarations here
|
||||
// :12:5: note: field after declarations here
|
||||
@@ -0,0 +1,12 @@
|
||||
const u8 = u16;
|
||||
export fn entry() void {
|
||||
const a: u8 = 300;
|
||||
_ = a;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :1:7: error: name shadows primitive 'u8'
|
||||
// :1:7: note: consider using @"u8" to disambiguate
|
||||
@@ -0,0 +1,13 @@
|
||||
export fn a() void {
|
||||
x += 1;
|
||||
}
|
||||
export fn b() void {
|
||||
x += 1;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:5: error: use of undeclared identifier 'x'
|
||||
// :5:5: error: use of undeclared identifier 'x'
|
||||
@@ -7,7 +7,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:5:29: error: expected type '*anyopaque', found '**u32'
|
||||
// :5:28: error: expected type '*anyopaque', found '**u32'
|
||||
@@ -16,8 +16,8 @@ comptime {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:5:9: error: duplicate switch value
|
||||
// tmp.zig:13:9: error: duplicate switch value
|
||||
// :5:9: error: duplicate switch value
|
||||
// :13:9: error: duplicate switch value
|
||||
@@ -8,8 +8,8 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:5: error: duplicate error set field 'Bar'
|
||||
// tmp.zig:2:5: note: previous declaration here
|
||||
// :3:5: error: duplicate error set field 'Bar'
|
||||
// :2:5: note: previous declaration here
|
||||
@@ -14,7 +14,8 @@ export fn f() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:11:9: error: duplicate field
|
||||
// :11:10: error: duplicate field
|
||||
// :8:10: note: other field here
|
||||
@@ -8,8 +8,9 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:5: error: duplicate struct field: 'Bar'
|
||||
// tmp.zig:2:5: note: other field here
|
||||
// :3:5: error: duplicate struct field: 'Bar'
|
||||
// :2:5: note: other field here
|
||||
// :1:13: note: struct declared here
|
||||
@@ -8,8 +8,9 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:5: error: duplicate union field: 'Bar'
|
||||
// tmp.zig:2:5: note: other field here
|
||||
// :3:5: error: duplicate union field: 'Bar'
|
||||
// :2:5: note: other field here
|
||||
// :1:13: note: union declared here
|
||||
@@ -3,7 +3,7 @@ const resource = @embedFile("bogus.txt",);
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(resource)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:1:29: error: unable to find '
|
||||
// :1:29: error: unable to open 'bogus.txt': FileNotFound
|
||||
9
test/cases/compile_errors/empty_for_loop_body.zig
Normal file
9
test/cases/compile_errors/empty_for_loop_body.zig
Normal file
@@ -0,0 +1,9 @@
|
||||
export fn a() void {
|
||||
for(undefined) |x|;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:23: error: expected block or assignment, found ';'
|
||||
9
test/cases/compile_errors/empty_if_body.zig
Normal file
9
test/cases/compile_errors/empty_if_body.zig
Normal file
@@ -0,0 +1,9 @@
|
||||
export fn a() void {
|
||||
if(true);
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:13: error: expected block or assignment, found ';'
|
||||
@@ -4,7 +4,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:5: error: switch must handle all possibilities
|
||||
// :3:5: error: switch must handle all possibilities
|
||||
9
test/cases/compile_errors/empty_while_loop_body.zig
Normal file
9
test/cases/compile_errors/empty_while_loop_body.zig
Normal file
@@ -0,0 +1,9 @@
|
||||
export fn a() void {
|
||||
while(true);
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:16: error: expected block or assignment, found ';'
|
||||
@@ -6,7 +6,9 @@ fn fibonacci(x: i32) i32 {
|
||||
export fn entry() usize { return @sizeOf(@TypeOf(seventh_fib_number)); }
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:3:21: error: evaluation exceeded 1000 backwards branches
|
||||
// :3:21: error: evaluation exceeded 1000 backwards branches
|
||||
// :3:21: note: called from here (999 times)
|
||||
// :1:37: note: called from here
|
||||
@@ -8,8 +8,8 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:6:13: error: enum 'Foo' has no tag matching integer value 0
|
||||
// tmp.zig:1:13: note: 'Foo' declared here
|
||||
// :6:13: error: enum 'tmp.Foo' has no tag with value '0'
|
||||
// :1:13: note: enum declared here
|
||||
7
test/cases/compile_errors/enum_with_0_fields.zig
Normal file
7
test/cases/compile_errors/enum_with_0_fields.zig
Normal file
@@ -0,0 +1,7 @@
|
||||
const Foo = enum {};
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :1:13: error: enum declarations must have at least one tag
|
||||
@@ -3,7 +3,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:15: error: Type.Enum.decls must be empty for @Type
|
||||
// :2:9: error: reified enums must have no decls
|
||||
@@ -8,8 +8,9 @@ pub export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
// is_test=1
|
||||
//
|
||||
// tmp.zig:4:9: error: duplicate struct field: 'e'
|
||||
// :4:9: error: duplicate struct field: 'e'
|
||||
// :3:9: note: other field here
|
||||
// :2:22: note: struct declared here
|
||||
@@ -5,7 +5,7 @@ comptime {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:15: error: expected error set type, found type 'i32'
|
||||
// :2:15: error: expected error set type, found 'i32'
|
||||
@@ -4,8 +4,7 @@ pub export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
// is_test=1
|
||||
//
|
||||
// tmp.zig:3:26: error: expected 2 arguments, found 1
|
||||
// :3:26: error: expected 2 arguments, found 1
|
||||
@@ -0,0 +1,15 @@
|
||||
export fn entry1() void {
|
||||
const T = u65536;
|
||||
_ = T;
|
||||
}
|
||||
export fn entry2() void {
|
||||
var x: i65536 = 1;
|
||||
_ = x;
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:15: error: primitive integer type 'u65536' exceeds maximum bit width of 65535
|
||||
// :6:12: error: primitive integer type 'i65536' exceeds maximum bit width of 65535
|
||||
@@ -0,0 +1,9 @@
|
||||
export fn entry() i32 {
|
||||
return @as(i32, 12.34);
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :2:21: error: fractional component prevents float value '12.34' from coercion to type 'i32'
|
||||
@@ -7,7 +7,8 @@ comptime {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:5:13: error: error.B not a member of error set 'Set2'
|
||||
// :5:13: error: 'error.B' not a member of error set 'error{A,C}'
|
||||
// :2:14: note: error set declared here
|
||||
@@ -4,8 +4,7 @@ comptime {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
// is_test=1
|
||||
//
|
||||
// tmp.zig:3:5: error: exported symbol name cannot be empty
|
||||
// :3:21: error: exported symbol name cannot be empty
|
||||
@@ -7,7 +7,7 @@ export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:2:5: error: union field missing type
|
||||
// :2:5: error: union field missing type
|
||||
@@ -4,7 +4,7 @@ pub export fn entry() void {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:1:8: error: unable to infer variable type
|
||||
// :1:8: error: unable to infer variable type
|
||||
@@ -6,7 +6,8 @@ export fn foo(a: *i32) *Foo {
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage1
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// tmp.zig:5:33: error: struct 'Foo' has no field 'a'
|
||||
// :5:33: error: no field named 'a' in struct 'tmp.Foo'
|
||||
// :1:20: note: struct declared here
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user