mirror of
https://github.com/ziglang/zig.git
synced 2025-12-24 15:13:08 +00:00
variables are allowed to be pointers to opaque
This commit is contained in:
parent
b5d9584e6f
commit
b00b7bd290
@ -9828,7 +9828,11 @@ static VarClassRequired get_var_class_required(TypeTableEntry *type_entry) {
|
||||
return VarClassRequiredConst;
|
||||
|
||||
case TypeTableEntryIdPointer:
|
||||
return get_var_class_required(type_entry->data.pointer.child_type);
|
||||
if (type_entry->data.pointer.child_type->id == TypeTableEntryIdOpaque) {
|
||||
return VarClassRequiredAny;
|
||||
} else {
|
||||
return get_var_class_required(type_entry->data.pointer.child_type);
|
||||
}
|
||||
case TypeTableEntryIdArray:
|
||||
return get_var_class_required(type_entry->data.array.child_type);
|
||||
case TypeTableEntryIdMaybe:
|
||||
|
||||
@ -546,3 +546,12 @@ test "@OpaqueType" {
|
||||
assert(mem.eql(u8, @typeName(OpaqueA), "OpaqueA"));
|
||||
assert(mem.eql(u8, @typeName(OpaqueB), "OpaqueB"));
|
||||
}
|
||||
|
||||
test "variable is allowed to be a pointer to an opaque type" {
|
||||
var x: i32 = 1234;
|
||||
_ = hereIsAnOpaqueType(@ptrCast(&OpaqueA, &x));
|
||||
}
|
||||
fn hereIsAnOpaqueType(ptr: &OpaqueA) -> &OpaqueA {
|
||||
var a = ptr;
|
||||
return a;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user