Sema: implement comptime @memset

This commit is contained in:
Andrew Kelley
2023-04-23 14:52:12 -07:00
parent 0f65cc9275
commit 83a7303bbf
6 changed files with 38 additions and 27 deletions

View File

@@ -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);
}
}