Bladeren bron

Nullable fixes for ??

Brian Fiete 5 jaren geleden
bovenliggende
commit
ad11792940
2 gewijzigde bestanden met toevoegingen van 14 en 1 verwijderingen
  1. 13 0
      BeefLibs/corlib/src/Nullable.bf
  2. 1 1
      IDEHelper/Compiler/BfAst.cpp

+ 13 - 0
BeefLibs/corlib/src/Nullable.bf

@@ -53,6 +53,14 @@ namespace System
         {
             return mValue;
         }
+
+        public bool TryGetValue(ref T outValue)
+        {
+            if (!mHasValue)
+                return false;
+            outValue = mValue;
+            return true;
+        }
         
         public T GetValueOrDefault(T defaultmValue)
         {
@@ -383,6 +391,11 @@ namespace System
 
         //
 
+		public static T operator??(Nullable<T> lhs, T rhs)
+		{
+		    return (lhs.mHasValue) ? lhs.mValue : rhs;
+		}
+
         public static TResult? operator??<TOther, TResult>(TOther lhs, Nullable<T> rhs) where TResult = operator TOther ?? T where TResult : struct
         {
             if (!rhs.mHasValue) return null;

+ 1 - 1
IDEHelper/Compiler/BfAst.cpp

@@ -1559,7 +1559,7 @@ const char* Beefy::BfGetOpName(BfBinaryOp binOp)
 	case BfBinaryOp_Compare: return "<=>";
 	case BfBinaryOp_ConditionalAnd: return "&&";
 	case BfBinaryOp_ConditionalOr: return "||";
-	case BfBinaryOp_NullCoalesce: return "&&";
+	case BfBinaryOp_NullCoalesce: return "??";
 	case BfBinaryOp_Is: return "is";
 	case BfBinaryOp_As: return "as";
 	default: return "???";