authorgravatar for r00ster91@proton.meWooster <r00ster91@proton.me> 2022-12-07 21:37:40+01:00
committergravatar for r00ster91@proton.meWooster <r00ster91@proton.me> 2022-12-10 12:34:42+01:00
log654e30069d5886d558dfa5f513836e4bee034545
treeb10b004a25c1305aa63b3e51f5bed35d83f5992f
parentbf863878acb6ac65ef10064b8ffd457ef756eba8

behavior and cases: more test coverage for old issues

Closes #2622 Closes #2727 Closes #6047 Closes #6947 Closes #6656

6 files changed, 85 insertions(+), 2 deletions(-)

test/behavior.zig+4
...@@ -43,7 +43,9 @@ test {...@@ -43,7 +43,9 @@ test {
43 _ = @import("behavior/bugs/2346.zig");43 _ = @import("behavior/bugs/2346.zig");
44 _ = @import("behavior/bugs/2557.zig");44 _ = @import("behavior/bugs/2557.zig");
45 _ = @import("behavior/bugs/2578.zig");45 _ = @import("behavior/bugs/2578.zig");
46 _ = @import("behavior/bugs/2622.zig");
46 _ = @import("behavior/bugs/2692.zig");47 _ = @import("behavior/bugs/2692.zig");
48 _ = @import("behavior/bugs/2727.zig");
47 _ = @import("behavior/bugs/2889.zig");49 _ = @import("behavior/bugs/2889.zig");
48 _ = @import("behavior/bugs/3007.zig");50 _ = @import("behavior/bugs/3007.zig");
49 _ = @import("behavior/bugs/3046.zig");51 _ = @import("behavior/bugs/3046.zig");
...@@ -62,10 +64,12 @@ test {...@@ -62,10 +64,12 @@ test {
62 _ = @import("behavior/bugs/5413.zig");64 _ = @import("behavior/bugs/5413.zig");
63 _ = @import("behavior/bugs/5474.zig");65 _ = @import("behavior/bugs/5474.zig");
64 _ = @import("behavior/bugs/5487.zig");66 _ = @import("behavior/bugs/5487.zig");
67 _ = @import("behavior/bugs/6047.zig");
65 _ = @import("behavior/bugs/6456.zig");68 _ = @import("behavior/bugs/6456.zig");
66 _ = @import("behavior/bugs/6781.zig");69 _ = @import("behavior/bugs/6781.zig");
67 _ = @import("behavior/bugs/6850.zig");70 _ = @import("behavior/bugs/6850.zig");
68 _ = @import("behavior/bugs/6905.zig");71 _ = @import("behavior/bugs/6905.zig");
72 _ = @import("behavior/bugs/6947.zig");
69 _ = @import("behavior/bugs/7003.zig");73 _ = @import("behavior/bugs/7003.zig");
70 _ = @import("behavior/bugs/7047.zig");74 _ = @import("behavior/bugs/7047.zig");
71 _ = @import("behavior/bugs/7187.zig");75 _ = @import("behavior/bugs/7187.zig");
test/behavior/bugs/2622.zig created+16
...@@ -0,0 +1,16 @@
1const builtin = @import("builtin");
2
3var buf: []u8 = undefined;
4
5test "reslice of undefined global var slice" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11
12 var mem: [100]u8 = [_]u8{0} ** 100;
13 buf = &mem;
14 const x = buf[0..1];
15 try @import("std").testing.expect(x.len == 1 and x[0] == 0);
16}
test/behavior/bugs/2727.zig created+18
...@@ -0,0 +1,18 @@
1const builtin = @import("builtin");
2
3fn t() bool {
4 return true;
5}
6
7test {
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13
14 comptime var i: usize = 0;
15 inline while (i < 2) : (i += 1) {
16 if (t()) {} else return;
17 }
18}
test/behavior/bugs/6047.zig created+20
...@@ -0,0 +1,20 @@
1const builtin = @import("builtin");
2
3fn getError() !void {
4 return error.Test;
5}
6
7fn getError2() !void {
8 var a: u8 = 'c';
9 try if (a == 'a') getError() else if (a == 'b') getError() else getError();
10}
11
12test "`try`ing an if/else expression" {
13 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18
19 try @import("std").testing.expectError(error.Test, getError2());
20}
test/behavior/bugs/6947.zig created+16
...@@ -0,0 +1,16 @@
1const builtin = @import("builtin");
2
3fn destroy(ptr: *void) void {
4 _ = ptr;
5}
6
7test {
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13
14 var slice: []void = undefined;
15 destroy(&slice[0]);
16}
test/cases/compile_errors/invalid_store_to_comptime_field.zig+11-2
...@@ -41,7 +41,7 @@ pub export fn entry4() void {...@@ -41,7 +41,7 @@ pub export fn entry4() void {
41 _ = U.foo(.{ .foo = 2, .bar = 2 });41 _ = U.foo(.{ .foo = 2, .bar = 2 });
42}42}
43pub export fn entry5() void {43pub export fn entry5() void {
44 comptime var y = .{ 1, 2};44 comptime var y = .{ 1, 2 };
45 y = .{ 3, 4 };45 y = .{ 3, 4 };
46}46}
47// pub export fn entry5() void {47// pub export fn entry5() void {
...@@ -52,7 +52,15 @@ pub export fn entry5() void {...@@ -52,7 +52,15 @@ pub export fn entry5() void {
52// };52// };
53// _ = S.foo(.{ -1234, 5679, x });53// _ = S.foo(.{ -1234, 5679, x });
54// }54// }
5555pub export fn entry6() void {
56 const State = struct {
57 comptime id: bool = true,
58 fn init(comptime id: bool) @This() {
59 return @This(){ .id = id };
60 }
61 };
62 _ = State.init(false);
63}
5664
57// error65// error
58// target=native66// target=native
...@@ -65,3 +73,4 @@ pub export fn entry5() void {...@@ -65,3 +73,4 @@ pub export fn entry5() void {
65// :25:29: note: default value set here73// :25:29: note: default value set here
66// :41:16: error: value stored in comptime field does not match the default value of the field74// :41:16: error: value stored in comptime field does not match the default value of the field
67// :45:12: error: value stored in comptime field does not match the default value of the field75// :45:12: error: value stored in comptime field does not match the default value of the field
76// :59:35: error: value stored in comptime field does not match the default value of the field