Sema: fix mutation of optional ptr represented as regular ptr
This commit is contained in:
parent
c619371ec1
commit
1f748fe426
|
@ -22660,7 +22660,11 @@ fn beginComptimePtrMutation(
|
|||
.ty = payload_ty,
|
||||
},
|
||||
|
||||
else => unreachable,
|
||||
else => return ComptimePtrMutationKit{
|
||||
.decl_ref_mut = parent.decl_ref_mut,
|
||||
.pointee = .{ .direct = val_ptr },
|
||||
.ty = payload_ty,
|
||||
},
|
||||
}
|
||||
},
|
||||
.bad_decl_ty, .bad_ptr_ty => return parent,
|
||||
|
|
|
@ -1282,3 +1282,14 @@ test "optional pointer represented as a pointer value" {
|
|||
try expect(payload_ptr.*.* == 15);
|
||||
}
|
||||
}
|
||||
|
||||
test "mutate through pointer-like optional at comptime" {
|
||||
comptime {
|
||||
var val: u8 = 15;
|
||||
var opt_ptr: ?*const u8 = &val;
|
||||
|
||||
const payload_ptr = &opt_ptr.?;
|
||||
payload_ptr.* = &@as(u8, 16);
|
||||
try expect(payload_ptr.*.* == 16);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user