diff --git a/BeefLibs/corlib/src/IComparable.bf b/BeefLibs/corlib/src/IComparable.bf index 49d75e68..8ad50f28 100644 --- a/BeefLibs/corlib/src/IComparable.bf +++ b/BeefLibs/corlib/src/IComparable.bf @@ -18,11 +18,16 @@ namespace System } } - interface IInteger + interface INumeric + { + static Self operator+(Self lhs, Self rhs); + } + + interface IInteger : INumeric { } - interface IUnsigned + interface IUnsigned : INumeric { } diff --git a/BeefLibs/corlib/src/Int64.bf b/BeefLibs/corlib/src/Int64.bf index c300c6da..0977aa8a 100644 --- a/BeefLibs/corlib/src/Int64.bf +++ b/BeefLibs/corlib/src/Int64.bf @@ -17,12 +17,17 @@ namespace System public static int operator<=>(Int64 a, Int64 b) { - return (int64)a <=> (int64)b; + return (SelfBase)a <=> (SelfBase)b; + } + + public static Self operator+(Self lhs, Self rhs) + { + return (SelfBase)lhs + (SelfBase)rhs; } public static Int64 operator-(Int64 value) { - return (int64)value; + return -(SelfBase)value; } int IHashable.GetHashCode() diff --git a/BeefLibs/corlib/src/UInt64.bf b/BeefLibs/corlib/src/UInt64.bf index 8b19762e..94f6d7d7 100644 --- a/BeefLibs/corlib/src/UInt64.bf +++ b/BeefLibs/corlib/src/UInt64.bf @@ -16,7 +16,12 @@ namespace System public static int operator<=>(UInt64 a, UInt64 b) { - return (uint64)a <=> (uint64)b; + return (SelfBase)a <=> (SelfBase)b; + } + + public static Self operator+(Self lhs, Self rhs) + { + return (SelfBase)lhs + (SelfBase)rhs; } int IHashable.GetHashCode()