diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-12-27 14:44:04 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-12-27 14:44:04 -0700 |
| commit | 6e9fbc83ca2cfe145d73a102e4175e49524d0dee (patch) | |
| tree | b5537977dcf8f72d270ca84740cef82b6596914d /test/behavior | |
| parent | f4b067743f2ad25a1153153e3a89e0fe92837ea7 (diff) | |
| download | zig-6e9fbc83ca2cfe145d73a102e4175e49524d0dee.tar.gz zig-6e9fbc83ca2cfe145d73a102e4175e49524d0dee.zip | |
add behavior test for comptime pointer casting
comptime `@ptrCast` a subset of an array, then write through it
closes #2444
Diffstat (limited to 'test/behavior')
| -rw-r--r-- | test/behavior/array.zig | 1 | ||||
| -rw-r--r-- | test/behavior/bugs/12571.zig | 1 | ||||
| -rw-r--r-- | test/behavior/ptrcast.zig | 13 |
3 files changed, 15 insertions, 0 deletions
diff --git a/test/behavior/array.zig b/test/behavior/array.zig index 2f426bf5bf..52a4d7512a 100644 --- a/test/behavior/array.zig +++ b/test/behavior/array.zig @@ -61,6 +61,7 @@ test "array concat with undefined" { } test "array concat with tuple" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO diff --git a/test/behavior/bugs/12571.zig b/test/behavior/bugs/12571.zig index 4338051b18..ace1e93b3f 100644 --- a/test/behavior/bugs/12571.zig +++ b/test/behavior/bugs/12571.zig @@ -14,6 +14,7 @@ const Entry = packed struct { test { 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 const frame = Frame{ .num = 0x7FDE }; var entry = Entry{ .other = 0, .frame = .{ .num = 0xFFFFF } }; diff --git a/test/behavior/ptrcast.zig b/test/behavior/ptrcast.zig index e2d33f898c..0a983f82c6 100644 --- a/test/behavior/ptrcast.zig +++ b/test/behavior/ptrcast.zig @@ -257,3 +257,16 @@ test "@ptrCast slice to slice" { try expect(buf[1] == 42); try expect(alias.len == 4); } + +test "comptime @ptrCast a subset of an array, then write through it" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + + comptime { + var buff: [16]u8 align(4) = undefined; + const len_bytes = @ptrCast(*u32, &buff); + len_bytes.* = 16; + std.mem.copy(u8, buff[4..], "abcdef"); + } +} |
