| ... | ... | @@ -203,6 +203,37 @@ test "comptime ptrcast keeps larger alignment" { |
| 203 | 203 | } |
| 204 | 204 | } |
| 205 | 205 | |
| 206 | test "ptrcast of const integer has the correct object size" { |
| 207 | const is_value = ~@intCast(isize, std.math.minInt(isize)); |
| 208 | const is_bytes = @ptrCast([*]const u8, &is_value)[0..@sizeOf(isize)]; |
| 209 | if (@sizeOf(isize) == 8) { |
| 210 | switch (native_endian) { |
| 211 | .Little => { |
| 212 | try expect(is_bytes[0] == 0xff); |
| 213 | try expect(is_bytes[1] == 0xff); |
| 214 | try expect(is_bytes[2] == 0xff); |
| 215 | try expect(is_bytes[3] == 0xff); |
| 216 | |
| 217 | try expect(is_bytes[4] == 0xff); |
| 218 | try expect(is_bytes[5] == 0xff); |
| 219 | try expect(is_bytes[6] == 0xff); |
| 220 | try expect(is_bytes[7] == 0x7f); |
| 221 | }, |
| 222 | .Big => { |
| 223 | try expect(is_bytes[0] == 0x7f); |
| 224 | try expect(is_bytes[1] == 0xff); |
| 225 | try expect(is_bytes[2] == 0xff); |
| 226 | try expect(is_bytes[3] == 0xff); |
| 227 | |
| 228 | try expect(is_bytes[4] == 0xff); |
| 229 | try expect(is_bytes[5] == 0xff); |
| 230 | try expect(is_bytes[6] == 0xff); |
| 231 | try expect(is_bytes[7] == 0xff); |
| 232 | }, |
| 233 | } |
| 234 | } |
| 235 | } |
| 236 | |
| 206 | 237 | test "implicit optional pointer to optional anyopaque pointer" { |
| 207 | 238 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 208 | 239 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |