bufixes; made `any_to_map` return an optional
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 3 Sep 2023 16:23:38 +0000 (11:23 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 3 Sep 2023 16:23:38 +0000 (11:23 -0500)
core/container/result.onyx
core/misc/any_utils.onyx

index edf2ec52f9669a9db792c396be4ac4825e531978..7183b8f6ef9f683835f1b86a619636c5646a0702 100644 (file)
@@ -26,7 +26,7 @@ Result :: union (Ok_Type: type_expr, Err_Type: type_expr) {
 
 #inject Result {
     #doc "Returns true if the result contains an Ok value."
-    is_ok :: (r: #Self) {
+    is_ok :: (r: #Self) -> bool {
         switch r {
             case .Ok do return true;
             case #default do return false;
@@ -34,7 +34,7 @@ Result :: union (Ok_Type: type_expr, Err_Type: type_expr) {
     }
 
     #doc "Returns true if the result contains an Err value."
-    is_err :: (r: #Self) {
+    is_err :: (r: #Self) -> bool {
         switch r {
             case .Err do return true;
             case #default do return false;
index b0564b3cbf77d75638deee631c93f66b08a7ed0f..6a8d208abd22f9426f4b4cf5c903010ed0270907 100644 (file)
@@ -118,15 +118,15 @@ any_member :: #match #locked {
    
     `m` would have two keys, "x" and "y".
 """
-any_to_map :: (v: any) -> (Map(str, any), success: bool) {
+any_to_map :: (v: any) -> ? Map(str, any) {
     vals := v;
-    if get_type_info(vals.type).kind == .Pointer {
+    if vals.type->info().kind == .Pointer {
         vals = any_dereference(vals);
     }
 
-    val_info := cast(&Type_Info_Struct) get_type_info(vals.type);
+    val_info := vals.type->info()->as_struct();
     if val_info.kind != .Struct {
-        return .{}, false;
+        return .{};
     }
 
     out: Map(str, any);
@@ -134,7 +134,7 @@ any_to_map :: (v: any) -> (Map(str, any), success: bool) {
         out->put(it.name, any_selector(vals, it.name));
     }
 
-    return out, true;
+    return out;
 }
 
 #doc "Creates an iterator out of an array-like any."