aboutsummaryrefslogtreecommitdiff
path: root/src/types.cpp
diff options
context:
space:
mode:
authorTohei Ichikawa <ichikawt@umich.edu>2025-06-24 22:58:00 -0400
committerTohei Ichikawa <ichikawt@umich.edu>2025-06-24 22:58:00 -0400
commit8410871cb8cc122572ff55ef929f6acd35782677 (patch)
tree85080b4a91897fa3c501bd494bc29cb1bb7efb4b /src/types.cpp
parent62e797b9d15d32b7db906e99e98f0943bf2aa6e3 (diff)
Fix bug where compiler treats uint enums as ints
Diffstat (limited to 'src/types.cpp')
-rw-r--r--src/types.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/types.cpp b/src/types.cpp
index 19df3de9d..0e885afab 100644
--- a/src/types.cpp
+++ b/src/types.cpp
@@ -1248,6 +1248,10 @@ gb_internal bool is_type_unsigned(Type *t) {
if (t->kind == Type_Basic) {
return (t->Basic.flags & BasicFlag_Unsigned) != 0;
}
+ if (t->kind == Type_Enum) {
+ // TODO(slowhei): Is an enum's base type guaranteed to be TypeKind::Basic? Even if its backing type is implicitly int?
+ return (t->Enum.base_type->Basic.flags & BasicFlag_Unsigned) != 0;
+ }
return false;
}
gb_internal bool is_type_integer_128bit(Type *t) {