aboutsummaryrefslogtreecommitdiff
path: root/src/types.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2018-11-17 10:08:06 +0000
committergingerBill <bill@gingerbill.org>2018-11-17 10:08:06 +0000
commitf61c4715c12647c9b6ec2ec745aeb835d3ad8df8 (patch)
tree9bd26ac750faf0668b61fdc962092b72a27b60bb /src/types.cpp
parent3061bc84789e82da7a72e118b17a8925cb27ef6a (diff)
Allow `opaque` to be polymorphic
Diffstat (limited to 'src/types.cpp')
-rw-r--r--src/types.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/types.cpp b/src/types.cpp
index e95fa7c3b..c91bb631c 100644
--- a/src/types.cpp
+++ b/src/types.cpp
@@ -1127,7 +1127,8 @@ bool is_type_polymorphic(Type *t) {
case Type_Named:
return is_type_polymorphic(t->Named.base);
-
+ case Type_Opaque:
+ return is_type_polymorphic(t->Opaque.elem);
case Type_Pointer:
return is_type_polymorphic(t->Pointer.elem);
case Type_Array:
@@ -2571,6 +2572,11 @@ gbString write_type_to_string(gbString str, Type *type) {
str = write_type_to_string(str, type->Pointer.elem);
break;
+ case Type_Opaque:
+ str = gb_string_appendc(str, "opaque ");
+ str = write_type_to_string(str, type->Opaque.elem);
+ break;
+
case Type_Array:
str = gb_string_appendc(str, gb_bprintf("[%d]", cast(int)type->Array.count));
str = write_type_to_string(str, type->Array.elem);