| ... | ... | @@ -1325,3 +1325,25 @@ test "value in if block is comptime known" { |
| 1325 | 1325 | }; |
| 1326 | 1326 | comptime try expect(std.mem.eql(u8, first, second)); |
| 1327 | 1327 | } |
| 1328 | |
| 1329 | test "lazy sizeof is resolved in division" { |
| 1330 | const A = struct { |
| 1331 | a: u32, |
| 1332 | }; |
| 1333 | const a = 2; |
| 1334 | try expect(@sizeOf(A) / a == 2); |
| 1335 | try expect(@sizeOf(A) - a == 2); |
| 1336 | } |
| 1337 | |
| 1338 | test "lazy value is resolved as slice operand" { |
| 1339 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1340 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1341 | |
| 1342 | const A = struct { a: u32 }; |
| 1343 | var a: [512]u64 = undefined; |
| 1344 | |
| 1345 | const ptr1 = a[0..@sizeOf(A)]; |
| 1346 | const ptr2 = @ptrCast([*]u8, &a)[0..@sizeOf(A)]; |
| 1347 | try expect(@ptrToInt(ptr1) == @ptrToInt(ptr2)); |
| 1348 | try expect(ptr1.len == ptr2.len); |
| 1349 | } |