diff options
Diffstat (limited to 'src/types.cpp')
| -rw-r--r-- | src/types.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/types.cpp b/src/types.cpp index 2541094e8..46ce0ee26 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -67,9 +67,10 @@ enum BasicFlag { BasicFlag_LLVM = GB_BIT(10), - BasicFlag_Numeric = BasicFlag_Integer | BasicFlag_Float | BasicFlag_Complex, - BasicFlag_Ordered = BasicFlag_Integer | BasicFlag_Float | BasicFlag_String | BasicFlag_Pointer | BasicFlag_Rune, - BasicFlag_ConstantType = BasicFlag_Boolean | BasicFlag_Numeric | BasicFlag_String | BasicFlag_Pointer | BasicFlag_Rune, + BasicFlag_Numeric = BasicFlag_Integer | BasicFlag_Float | BasicFlag_Complex, + BasicFlag_Ordered = BasicFlag_Integer | BasicFlag_Float | BasicFlag_String | BasicFlag_Pointer | BasicFlag_Rune, + BasicFlag_OrderedNumeric = BasicFlag_Integer | BasicFlag_Float | BasicFlag_Rune, + BasicFlag_ConstantType = BasicFlag_Boolean | BasicFlag_Numeric | BasicFlag_String | BasicFlag_Pointer | BasicFlag_Rune, }; struct BasicType { @@ -736,6 +737,14 @@ bool is_type_ordered(Type *t) { } return false; } +bool is_type_ordered_numeric(Type *t) { + t = core_type(t); + switch (t->kind) { + case Type_Basic: + return (t->Basic.flags & BasicFlag_OrderedNumeric) != 0; + } + return false; +} bool is_type_constant_type(Type *t) { t = core_type(t); if (t->kind == Type_Basic) { |