fixed: weird issue with operator == for Optionals
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 18 Feb 2024 04:06:53 +0000 (22:06 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 18 Feb 2024 04:06:53 +0000 (22:06 -0600)
core/container/optional.onyx

index c94eb1a45889fda394b3c30863d2e767d73da532..b6133e7364143b828c4c5996b0acfeed2338855b 100644 (file)
@@ -255,11 +255,11 @@ use core
 
 #operator == (o1, o2: ?$T) -> bool {
     if cast(Optional(T).tag_enum, o1) != cast(Optional(T).tag_enum, o2) do return false;
+    if o1.tag == .None do return true;
 
-    return switch o1 {
-        case .None => true;
-        case .Some as v1 => v1 == o2->unwrap();
-    };
+    v1 := o1->unwrap();
+    v2 := o2->unwrap();
+    return v1 == v2;
 }
 
 #operator ?? macro (opt: ?$T, default: T) -> T {