mirror of
https://github.com/ziglang/zig.git
synced 2026-02-14 05:20:34 +00:00
fix alignment behavior test case
As demonstrated by this new test case, stage1's functionality is incorrect since it does not handle slicing from len..len correctly. stage2 already has the correct behavior here.
This commit is contained in:
parent
4751356d7f
commit
83a2c41cd5
@ -18,20 +18,16 @@ test "global variable alignment" {
|
||||
}
|
||||
}
|
||||
|
||||
test "slicing array of length 1 can assume runtime index is always zero" {
|
||||
if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
|
||||
test "slicing array of length 1 can not assume runtime index is always zero" {
|
||||
if (builtin.zig_backend == .stage1) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||
|
||||
// TODO reevaluate this test case, because notice that you can
|
||||
// change `runtime_zero` to be `1` and the test still passes for stage1.
|
||||
// Reconsider also this code:
|
||||
// var array: [4]u8 = undefined;
|
||||
// var runtime: usize = 4;
|
||||
// var ptr = array[runtime..];
|
||||
// _ = ptr;
|
||||
|
||||
var runtime_zero: usize = 0;
|
||||
const slice = @as(*align(4) [1]u8, &foo)[runtime_zero..];
|
||||
comptime try expect(@TypeOf(slice) == []align(4) u8);
|
||||
var runtime_index: usize = 1;
|
||||
const slice = @as(*align(4) [1]u8, &foo)[runtime_index..];
|
||||
try expect(@TypeOf(slice) == []u8);
|
||||
try expect(slice.len == 0);
|
||||
try expect(@truncate(u2, @ptrToInt(slice.ptr) - 1) == 0);
|
||||
}
|
||||
|
||||
test "default alignment allows unspecified in type syntax" {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user