types with zero bits do not have a pointer handle

This commit is contained in:
Andrew Kelley 2017-03-10 11:30:30 -05:00
parent 434f017aee
commit 7bc0145b80

View File

@ -2954,14 +2954,14 @@ bool handle_is_ptr(TypeTableEntry *type_entry) {
case TypeTableEntryIdArray: case TypeTableEntryIdArray:
case TypeTableEntryIdStruct: case TypeTableEntryIdStruct:
case TypeTableEntryIdUnion: case TypeTableEntryIdUnion:
return true; return type_has_bits(type_entry);
case TypeTableEntryIdErrorUnion: case TypeTableEntryIdErrorUnion:
return type_has_bits(type_entry->data.error.child_type); return type_has_bits(type_entry->data.error.child_type);
case TypeTableEntryIdEnum: case TypeTableEntryIdEnum:
assert(type_entry->data.enumeration.complete); assert(type_entry->data.enumeration.complete);
return type_entry->data.enumeration.gen_field_count != 0; return type_entry->data.enumeration.gen_field_count != 0;
case TypeTableEntryIdMaybe: case TypeTableEntryIdMaybe:
return !type_entry->data.maybe.child_type->zero_bits && return type_has_bits(type_entry->data.maybe.child_type) &&
type_entry->data.maybe.child_type->id != TypeTableEntryIdPointer && type_entry->data.maybe.child_type->id != TypeTableEntryIdPointer &&
type_entry->data.maybe.child_type->id != TypeTableEntryIdFn; type_entry->data.maybe.child_type->id != TypeTableEntryIdFn;
case TypeTableEntryIdTypeDecl: case TypeTableEntryIdTypeDecl: