parent
af95e15572
commit
11ca38a4e9
@ -7985,9 +7985,10 @@ static ConstCastOnly types_match_const_cast_only(IrAnalyze *ira, TypeTableEntry
|
||||
|
||||
// * and [*] can do a const-cast-only to ?* and ?[*], respectively
|
||||
// but not if there is a mutable parent pointer
|
||||
// and not if the pointer is zero bits
|
||||
if (!wanted_is_mutable && wanted_type->id == TypeTableEntryIdOptional &&
|
||||
wanted_type->data.maybe.child_type->id == TypeTableEntryIdPointer &&
|
||||
actual_type->id == TypeTableEntryIdPointer)
|
||||
actual_type->id == TypeTableEntryIdPointer && type_has_bits(actual_type))
|
||||
{
|
||||
ConstCastOnly child = types_match_const_cast_only(ira,
|
||||
wanted_type->data.maybe.child_type, actual_type, source_node, wanted_is_mutable);
|
||||
|
@ -35,6 +35,7 @@ comptime {
|
||||
_ = @import("cases/math.zig");
|
||||
_ = @import("cases/merge_error_sets.zig");
|
||||
_ = @import("cases/misc.zig");
|
||||
_ = @import("cases/optional.zig");
|
||||
_ = @import("cases/namespace_depends_on_compile_var/index.zig");
|
||||
_ = @import("cases/new_stack_call.zig");
|
||||
_ = @import("cases/null.zig");
|
||||
|
9
test/cases/optional.zig
Normal file
9
test/cases/optional.zig
Normal file
@ -0,0 +1,9 @@
|
||||
const assert = @import("std").debug.assert;
|
||||
|
||||
pub const EmptyStruct = struct {};
|
||||
|
||||
test "optional pointer to size zero struct" {
|
||||
var e = EmptyStruct{};
|
||||
var o: ?*EmptyStruct = &e;
|
||||
assert(o != null);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user