test_variable_func_alignment.zig (988B) - Raw
1 const expect = @import("std").testing.expect; 2 3 var foo: u8 align(4) = 100; 4 5 test "global variable alignment" { 6 try expect(@typeInfo(@TypeOf(&foo)).pointer.alignment == 4); 7 try expect(@TypeOf(&foo) == *align(4) u8); 8 const as_pointer_to_array: *align(4) [1]u8 = &foo; 9 const as_slice: []align(4) u8 = as_pointer_to_array; 10 const as_unaligned_slice: []u8 = as_slice; 11 try expect(as_unaligned_slice[0] == 100); 12 } 13 14 fn derp() align(@sizeOf(usize) * 2) i32 { 15 return 1234; 16 } 17 fn noop1() align(1) void {} 18 fn noop4() align(4) void {} 19 20 test "function alignment" { 21 try expect(derp() == 1234); 22 try expect(@TypeOf(derp) == fn () i32); 23 try expect(@TypeOf(&derp) == *align(@sizeOf(usize) * 2) const fn () i32); 24 25 noop1(); 26 try expect(@TypeOf(noop1) == fn () void); 27 try expect(@TypeOf(&noop1) == *align(1) const fn () void); 28 29 noop4(); 30 try expect(@TypeOf(noop4) == fn () void); 31 try expect(@TypeOf(&noop4) == *align(4) const fn () void); 32 } 33 34 // test