Commit 53104b9165

Andrew Kelley <andrew@ziglang.org>
2023-02-20 01:36:35
add test coverage for fixed bug. closes #5410
1 parent 476bdc8
Changed files (1)
test
cases
test/cases/compile_errors/error_set_membership.zig
@@ -0,0 +1,31 @@
+const std = @import("std");
+
+const Error = error{InvalidCharacter};
+
+const Direction = enum { upside_down };
+
+const Barrrr = union(enum) {
+    float: f64,
+    direction: Direction,
+};
+
+fn fooey(bar: std.meta.Tag(Barrrr), args: []const []const u8) !Barrrr {
+    return switch (bar) {
+        .float => .{ .float = try std.fmt.parseFloat(f64, args[0]) },
+        .direction => if (std.mem.eql(u8, args[0], "upside_down"))
+            Barrrr{ .direction = .upside_down }
+        else
+            error.InvalidDirection,
+    };
+}
+
+pub fn main() Error!void {
+    std.debug.print("{}", .{try fooey(.direction, &[_][]const u8{ "one", "two", "three" })});
+}
+
+// error
+// backend=llvm
+// target=native
+//
+// :23:29: error: expected type 'error{InvalidCharacter}', found '@typeInfo(@typeInfo(@TypeOf(tmp.fooey)).Fn.return_type.?).ErrorUnion.error_set'
+// :23:29: note: 'error.InvalidDirection' not a member of destination error set