From 654e30069d5886d558dfa5f513836e4bee034545 Mon Sep 17 00:00:00 2001 From: r00ster91 Date: Wed, 7 Dec 2022 21:37:40 +0100 Subject: [PATCH] behavior and cases: more test coverage for old issues Closes #2622 Closes #2727 Closes #6047 Closes #6947 Closes #6656 --- test/behavior.zig | 4 ++++ test/behavior/bugs/2622.zig | 16 +++++++++++++++ test/behavior/bugs/2727.zig | 18 +++++++++++++++++ test/behavior/bugs/6047.zig | 20 +++++++++++++++++++ test/behavior/bugs/6947.zig | 16 +++++++++++++++ .../invalid_store_to_comptime_field.zig | 13 ++++++++++-- 6 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 test/behavior/bugs/2622.zig create mode 100644 test/behavior/bugs/2727.zig create mode 100644 test/behavior/bugs/6047.zig create mode 100644 test/behavior/bugs/6947.zig diff --git a/test/behavior.zig b/test/behavior.zig index 94e06145f2..55077d4ea2 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -43,7 +43,9 @@ test { _ = @import("behavior/bugs/2346.zig"); _ = @import("behavior/bugs/2557.zig"); _ = @import("behavior/bugs/2578.zig"); + _ = @import("behavior/bugs/2622.zig"); _ = @import("behavior/bugs/2692.zig"); + _ = @import("behavior/bugs/2727.zig"); _ = @import("behavior/bugs/2889.zig"); _ = @import("behavior/bugs/3007.zig"); _ = @import("behavior/bugs/3046.zig"); @@ -62,10 +64,12 @@ test { _ = @import("behavior/bugs/5413.zig"); _ = @import("behavior/bugs/5474.zig"); _ = @import("behavior/bugs/5487.zig"); + _ = @import("behavior/bugs/6047.zig"); _ = @import("behavior/bugs/6456.zig"); _ = @import("behavior/bugs/6781.zig"); _ = @import("behavior/bugs/6850.zig"); _ = @import("behavior/bugs/6905.zig"); + _ = @import("behavior/bugs/6947.zig"); _ = @import("behavior/bugs/7003.zig"); _ = @import("behavior/bugs/7047.zig"); _ = @import("behavior/bugs/7187.zig"); diff --git a/test/behavior/bugs/2622.zig b/test/behavior/bugs/2622.zig new file mode 100644 index 0000000000..8a0d1a06ba --- /dev/null +++ b/test/behavior/bugs/2622.zig @@ -0,0 +1,16 @@ +const builtin = @import("builtin"); + +var buf: []u8 = undefined; + +test "reslice of undefined global var slice" { + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + + var mem: [100]u8 = [_]u8{0} ** 100; + buf = &mem; + const x = buf[0..1]; + try @import("std").testing.expect(x.len == 1 and x[0] == 0); +} diff --git a/test/behavior/bugs/2727.zig b/test/behavior/bugs/2727.zig new file mode 100644 index 0000000000..0478d41b63 --- /dev/null +++ b/test/behavior/bugs/2727.zig @@ -0,0 +1,18 @@ +const builtin = @import("builtin"); + +fn t() bool { + return true; +} + +test { + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + + comptime var i: usize = 0; + inline while (i < 2) : (i += 1) { + if (t()) {} else return; + } +} diff --git a/test/behavior/bugs/6047.zig b/test/behavior/bugs/6047.zig new file mode 100644 index 0000000000..22d660991a --- /dev/null +++ b/test/behavior/bugs/6047.zig @@ -0,0 +1,20 @@ +const builtin = @import("builtin"); + +fn getError() !void { + return error.Test; +} + +fn getError2() !void { + var a: u8 = 'c'; + try if (a == 'a') getError() else if (a == 'b') getError() else getError(); +} + +test "`try`ing an if/else expression" { + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + + try @import("std").testing.expectError(error.Test, getError2()); +} diff --git a/test/behavior/bugs/6947.zig b/test/behavior/bugs/6947.zig new file mode 100644 index 0000000000..2e891ac5b3 --- /dev/null +++ b/test/behavior/bugs/6947.zig @@ -0,0 +1,16 @@ +const builtin = @import("builtin"); + +fn destroy(ptr: *void) void { + _ = ptr; +} + +test { + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + + var slice: []void = undefined; + destroy(&slice[0]); +} diff --git a/test/cases/compile_errors/invalid_store_to_comptime_field.zig b/test/cases/compile_errors/invalid_store_to_comptime_field.zig index 6c528e0799..a86cb500d2 100644 --- a/test/cases/compile_errors/invalid_store_to_comptime_field.zig +++ b/test/cases/compile_errors/invalid_store_to_comptime_field.zig @@ -41,7 +41,7 @@ pub export fn entry4() void { _ = U.foo(.{ .foo = 2, .bar = 2 }); } pub export fn entry5() void { - comptime var y = .{ 1, 2}; + comptime var y = .{ 1, 2 }; y = .{ 3, 4 }; } // pub export fn entry5() void { @@ -52,7 +52,15 @@ pub export fn entry5() void { // }; // _ = S.foo(.{ -1234, 5679, x }); // } - +pub export fn entry6() void { + const State = struct { + comptime id: bool = true, + fn init(comptime id: bool) @This() { + return @This(){ .id = id }; + } + }; + _ = State.init(false); +} // error // target=native @@ -65,3 +73,4 @@ pub export fn entry5() void { // :25:29: note: default value set here // :41:16: error: value stored in comptime field does not match the default value of the field // :45:12: error: value stored in comptime field does not match the default value of the field +// :59:35: error: value stored in comptime field does not match the default value of the field