aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-04-23 14:52:12 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-04-25 11:23:41 -0700
commit83a7303bbf92fcada2e61f2906f84ccf53e50ff0 (patch)
treee3930f9b1a3ee2c4f835055ab221197696ecb5c3 /test
parent0f65cc9275cde61fe20f28e4f059c8af4c63b051 (diff)
downloadzig-83a7303bbf92fcada2e61f2906f84ccf53e50ff0.tar.gz
zig-83a7303bbf92fcada2e61f2906f84ccf53e50ff0.zip
Sema: implement comptime `@memset`
Diffstat (limited to 'test')
-rw-r--r--test/behavior/basic.zig18
-rw-r--r--test/cases/compile_errors/incorrect_type_to_memset_memcpy.zig4
-rw-r--r--test/cases/safety/@tagName on corrupted enum value.zig2
-rw-r--r--test/cases/safety/@tagName on corrupted union value.zig2
-rw-r--r--test/cases/safety/switch on corrupted enum value.zig2
5 files changed, 6 insertions, 22 deletions
diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig
index 19ef38717a..ea2bf7847f 100644
--- a/test/behavior/basic.zig
+++ b/test/behavior/basic.zig
@@ -359,8 +359,7 @@ test "@memset on array pointers" {
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
try testMemsetArray();
- // TODO this doesn't pass yet
- // try comptime testMemsetArray();
+ try comptime testMemsetArray();
}
fn testMemsetArray() !void {
@@ -371,15 +370,7 @@ fn testMemsetArray() !void {
try expect(foo[0] == 'A');
try expect(foo[11] == 'A');
try expect(foo[19] == 'A');
-
- // memset array to undefined, ABI size == 1
- @setRuntimeSafety(true);
- @memset(&foo, undefined);
- try expect(foo[0] == 0xaa);
- try expect(foo[11] == 0xaa);
- try expect(foo[19] == 0xaa);
}
-
{
// memset array to non-undefined, ABI size > 1
var foo: [20]u32 = undefined;
@@ -387,13 +378,6 @@ fn testMemsetArray() !void {
try expect(foo[0] == 1234);
try expect(foo[11] == 1234);
try expect(foo[19] == 1234);
-
- // memset array to undefined, ABI size > 1
- @setRuntimeSafety(true);
- @memset(&foo, undefined);
- try expect(foo[0] == 0xaaaaaaaa);
- try expect(foo[11] == 0xaaaaaaaa);
- try expect(foo[19] == 0xaaaaaaaa);
}
}
diff --git a/test/cases/compile_errors/incorrect_type_to_memset_memcpy.zig b/test/cases/compile_errors/incorrect_type_to_memset_memcpy.zig
index d3a6b7cc4b..37d0b8d323 100644
--- a/test/cases/compile_errors/incorrect_type_to_memset_memcpy.zig
+++ b/test/cases/compile_errors/incorrect_type_to_memset_memcpy.zig
@@ -2,12 +2,12 @@ pub export fn entry() void {
var buf: [5]u8 = .{ 1, 2, 3, 4, 5 };
var slice: []u8 = &buf;
const a: u32 = 1234;
- @memcpy(slice, @ptrCast([*]const u8, &a), 4);
+ @memcpy(slice, @ptrCast([*]const u8, &a));
}
pub export fn entry1() void {
var buf: [5]u8 = .{ 1, 2, 3, 4, 5 };
var ptr: *u8 = &buf[0];
- @memcpy(ptr, 0, 4);
+ @memcpy(ptr, 0);
}
// error
diff --git a/test/cases/safety/@tagName on corrupted enum value.zig b/test/cases/safety/@tagName on corrupted enum value.zig
index 344b75effe..43af9fbda6 100644
--- a/test/cases/safety/@tagName on corrupted enum value.zig
+++ b/test/cases/safety/@tagName on corrupted enum value.zig
@@ -15,7 +15,7 @@ const E = enum(u32) {
pub fn main() !void {
var e: E = undefined;
- @memset(@ptrCast([*]u8, &e), 0x55, @sizeOf(E));
+ @memset(@ptrCast([*]u8, &e)[0..@sizeOf(E)], 0x55);
var n = @tagName(e);
_ = n;
return error.TestFailed;
diff --git a/test/cases/safety/@tagName on corrupted union value.zig b/test/cases/safety/@tagName on corrupted union value.zig
index f7ffb07871..a72755abdc 100644
--- a/test/cases/safety/@tagName on corrupted union value.zig
+++ b/test/cases/safety/@tagName on corrupted union value.zig
@@ -15,7 +15,7 @@ const U = union(enum(u32)) {
pub fn main() !void {
var u: U = undefined;
- @memset(@ptrCast([*]u8, &u), 0x55, @sizeOf(U));
+ @memset(@ptrCast([*]u8, &u)[0..@sizeOf(U)], 0x55);
var t: @typeInfo(U).Union.tag_type.? = u;
var n = @tagName(t);
_ = n;
diff --git a/test/cases/safety/switch on corrupted enum value.zig b/test/cases/safety/switch on corrupted enum value.zig
index 2240fe0c8e..687be0b598 100644
--- a/test/cases/safety/switch on corrupted enum value.zig
+++ b/test/cases/safety/switch on corrupted enum value.zig
@@ -15,7 +15,7 @@ const E = enum(u32) {
pub fn main() !void {
var e: E = undefined;
- @memset(@ptrCast([*]u8, &e), 0x55, @sizeOf(E));
+ @memset(@ptrCast([*]u8, &e)[0..@sizeOf(E)], 0x55);
switch (e) {
.X, .Y => @breakpoint(),
}