diff --git a/BeefLibs/corlib/src/Enum.bf b/BeefLibs/corlib/src/Enum.bf index ff9931a1..7b0ec9be 100644 --- a/BeefLibs/corlib/src/Enum.bf +++ b/BeefLibs/corlib/src/Enum.bf @@ -5,65 +5,56 @@ namespace System { struct Enum { - public static int Count + [Comptime(ConstEval=true)] + public static int GetCount() { - [Comptime(ConstEval=true)] - get + int count = 0; + for (var field in Compiler.OrigCalleeType.GetFields()) { - int count = 0; - for (var field in Compiler.OrigCalleeType.GetFields()) - { - if (field.IsEnumCase) - count++; - } - return count; + if (field.IsEnumCase) + count++; } + return count; } - public static var MinValue + [Comptime(ConstEval=true)] + public static var GetMinValue() { - [Comptime(ConstEval=true)] - get - { - Compiler.SetReturnType(Compiler.OrigCalleeType); + Compiler.SetReturnType(Compiler.OrigCalleeType); - int? minValue = null; - for (var field in Compiler.OrigCalleeType.GetFields()) + int? minValue = null; + for (var field in Compiler.OrigCalleeType.GetFields()) + { + if (field.IsEnumCase) { - if (field.IsEnumCase) - { - if (minValue == null) - minValue = field.[Friend]mFieldData.mData; - else - minValue = Math.Min(minValue.Value, field.[Friend]mFieldData.mData); - } + if (minValue == null) + minValue = field.[Friend]mFieldData.mData; + else + minValue = Math.Min(minValue.Value, field.[Friend]mFieldData.mData); } - return minValue.ValueOrDefault; } + return minValue.ValueOrDefault; } - public static var MaxValue + [Comptime(ConstEval=true)] + public static var GetMaxValue() { - [Comptime(ConstEval=true)] - get - { - Compiler.SetReturnType(Compiler.OrigCalleeType); + Compiler.SetReturnType(Compiler.OrigCalleeType); - int? maxValue = null; - for (var field in Compiler.OrigCalleeType.GetFields()) + int? maxValue = null; + for (var field in Compiler.OrigCalleeType.GetFields()) + { + if (field.IsEnumCase) { - if (field.IsEnumCase) - { - if (maxValue == null) - maxValue = field.[Friend]mFieldData.mData; - else - maxValue = Math.Max(maxValue.Value, field.[Friend]mFieldData.mData); - } + if (maxValue == null) + maxValue = field.[Friend]mFieldData.mData; + else + maxValue = Math.Max(maxValue.Value, field.[Friend]mFieldData.mData); } - if (maxValue == null) - return -1; - return maxValue.ValueOrDefault; } + if (maxValue == null) + return -1; + return maxValue.ValueOrDefault; } public static void EnumToString(Type type, String strBuffer, int64 iVal) diff --git a/IDEHelper/Tests/src/Enums.bf b/IDEHelper/Tests/src/Enums.bf index 2ae3953a..b880ee50 100644 --- a/IDEHelper/Tests/src/Enums.bf +++ b/IDEHelper/Tests/src/Enums.bf @@ -138,9 +138,9 @@ namespace Tests eg.Set(66); Test.Assert(eg == .B); - var ea = EnumA.MaxValue; + var ea = EnumA.GetMaxValue(); Test.Assert(ea == .B); - Test.Assert(EnumA.Count == 2); + Test.Assert(EnumA.GetCount() == 2); } } }