diff options
| author | r00ster91 <r00ster91@proton.me> | 2023-03-05 15:45:23 +0100 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2023-03-05 23:01:17 +0200 |
| commit | f1ae688d371f49fdbf65f952d655905c74871fdb (patch) | |
| tree | b1855222065aa9e9b9dee3db4e7bc5240fd327f3 /test | |
| parent | 29c56a8aa74d1b1a19bece5ba5d738af1e3c9f6d (diff) | |
| download | zig-f1ae688d371f49fdbf65f952d655905c74871fdb.tar.gz zig-f1ae688d371f49fdbf65f952d655905c74871fdb.zip | |
AstGen: ensure certain builtin functions return void
Fixes #14779
Co-authored-by: Veikka Tuominen <git@vexu.eu>
Diffstat (limited to 'test')
| -rw-r--r-- | test/behavior/builtin_functions_returning_void_or_noreturn.zig | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/behavior/builtin_functions_returning_void_or_noreturn.zig b/test/behavior/builtin_functions_returning_void_or_noreturn.zig new file mode 100644 index 0000000000..072f5576cc --- /dev/null +++ b/test/behavior/builtin_functions_returning_void_or_noreturn.zig @@ -0,0 +1,32 @@ +const std = @import("std"); +const builtin = @import("builtin"); +const testing = std.testing; + +var x: u8 = 1; + +// This excludes builtin functions that return void or noreturn that cannot be tested. +test { + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO + + var val: u8 = undefined; + try testing.expectEqual({}, @atomicStore(u8, &val, 0, .Unordered)); + try testing.expectEqual(void, @TypeOf(@breakpoint())); + try testing.expectEqual({}, @export(x, .{ .name = "x" })); + try testing.expectEqual({}, @fence(.Acquire)); + try testing.expectEqual({}, @memcpy(@intToPtr([*]u8, 1), @intToPtr([*]u8, 1), 0)); + try testing.expectEqual({}, @memset(@intToPtr([*]u8, 1), undefined, 0)); + try testing.expectEqual(noreturn, @TypeOf(if (true) @panic("") else {})); + try testing.expectEqual({}, @prefetch(&val, .{})); + try testing.expectEqual({}, @setAlignStack(16)); + try testing.expectEqual({}, @setCold(true)); + try testing.expectEqual({}, @setEvalBranchQuota(0)); + try testing.expectEqual({}, @setFloatMode(.Optimized)); + try testing.expectEqual({}, @setRuntimeSafety(true)); + try testing.expectEqual(noreturn, @TypeOf(if (true) @trap() else {})); +} |
