File tree 2 files changed +26
-1
lines changed
2 files changed +26
-1
lines changed Original file line number Diff line number Diff line change @@ -1698,7 +1698,10 @@ fn resolveMaybeUndefValIntable(
1698
1698
.elem_ptr => check = check.castTag(.elem_ptr).?.data.array_ptr,
1699
1699
.eu_payload_ptr, .opt_payload_ptr => check = check.cast(Value.Payload.PayloadPtr).?.data.container_ptr,
1700
1700
.generic_poison => return error.GenericPoison,
1701
- else => return val,
1701
+ else => {
1702
+ try sema.resolveLazyValue(block, src, val);
1703
+ return val;
1704
+ },
1702
1705
};
1703
1706
}
1704
1707
Original file line number Diff line number Diff line change @@ -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
+ }
You can’t perform that action at this time.
0 commit comments