aboutsummaryrefslogtreecommitdiff
path: root/src/types.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/types.cpp')
-rw-r--r--src/types.cpp19
1 files changed, 7 insertions, 12 deletions
diff --git a/src/types.cpp b/src/types.cpp
index b4dc17256..c79b8e652 100644
--- a/src/types.cpp
+++ b/src/types.cpp
@@ -1685,11 +1685,9 @@ bool is_type_map(Type *t) {
bool is_type_union_maybe_pointer(Type *t) {
t = base_type(t);
- if (t->kind == Type_Union && t->Union.kind == UnionType_maybe) {
- if (t->Union.variants.count == 1) {
- Type *v = t->Union.variants[0];
- return is_type_pointer(v) || is_type_multi_pointer(v);
- }
+ if (t->kind == Type_Union && t->Union.variants.count == 1) {
+ Type *v = t->Union.variants[0];
+ return is_type_internally_pointer_like(v);
}
return false;
}
@@ -1697,12 +1695,10 @@ bool is_type_union_maybe_pointer(Type *t) {
bool is_type_union_maybe_pointer_original_alignment(Type *t) {
t = base_type(t);
- if (t->kind == Type_Union && t->Union.kind == UnionType_maybe) {
- if (t->Union.variants.count == 1) {
- Type *v = t->Union.variants[0];
- if (is_type_pointer(v) || is_type_multi_pointer(v)) {
- return type_align_of(v) == type_align_of(t);
- }
+ if (t->kind == Type_Union && t->Union.variants.count == 1) {
+ Type *v = t->Union.variants[0];
+ if (is_type_internally_pointer_like(v)) {
+ return type_align_of(v) == type_align_of(t);
}
}
return false;
@@ -4054,7 +4050,6 @@ gbString write_type_to_string(gbString str, Type *type, bool shorthand=false) {
case Type_Union:
str = gb_string_appendc(str, "union");
switch (type->Union.kind) {
- case UnionType_maybe: str = gb_string_appendc(str, " #maybe"); break;
case UnionType_no_nil: str = gb_string_appendc(str, " #no_nil"); break;
case UnionType_shared_nil: str = gb_string_appendc(str, " #shared_nil"); break;
}