about summary refs log tree commit diff
path: root/src/root.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/root.zig')
-rw-r--r--src/root.zig14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/root.zig b/src/root.zig
index e2f79c8..bcc601d 100644
--- a/src/root.zig
+++ b/src/root.zig
@@ -287,24 +287,22 @@ pub fn unwrap(T: type, x: Value) !T {
         .@"struct" => |info| y: {
             const src = janet.unwrapStruct(x);
             var dest: T = undefined;
-            inline for (info.fields) |field| {
+            break :y inline for (info.fields) |field| {
                 const k = keyword(field.name);
                 const v = janet.structGet(src, k);
                 @field(dest, field.name) = if (isNil(v))
-                    field.defaultValue() orelse return error.MissingStructField
+                    field.defaultValue() orelse break error.MissingStructField
                 else
                     try unwrap(field.type, v);
-            }
-            break :y dest;
+            } else dest;
         },
         .@"union" => |info| if (info.tag_type != null) y: {
             const head = janet.tupleHead(janet.unwrapTuple(x));
             const k, const v = tupleData(2, head).*;
-            inline for (info.fields) |field| {
+            break :y inline for (info.fields) |field| {
                 if (equal(keyword(field.name), k))
-                    break :y @unionInit(T, field.name,
-                                            try unwrap(field.type, v));
-            } else break :y error.UnionTagNotFound;
+                    break @unionInit(T, field.name, try unwrap(field.type, v));
+            } else error.UnionTagNotFound;
         } else @compileError("can't wrap untagged union"),
         else => @compileError(@typeName(T)),
     };