From ee9b8fc921f48dc893808e1c9dbfbef321aa362c Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sun, 28 Feb 2021 17:18:03 +0700 Subject: [lang/zig] Learn some Zig --- lang/zig/error-set.zig | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 lang/zig/error-set.zig (limited to 'lang/zig/error-set.zig') diff --git a/lang/zig/error-set.zig b/lang/zig/error-set.zig new file mode 100644 index 0000000..60b01aa --- /dev/null +++ b/lang/zig/error-set.zig @@ -0,0 +1,22 @@ +const expect = @import("std").testing.expect; +const FileOpenError = error { AccessDenied, OutOfMemory, FileNotFound }; +const AllocationError = error { OutOfMemory }; + +fn foo(err: AllocationError) FileOpenError { + return err; +} + +test "coerce subset to superset" { + const err = foo(AllocationError.OutOfMemory); + expect(err == FileOpenError.OutOfMemory); + expect(err == AllocationError.OutOfMemory); + expect(err == error.OutOfMemory); +} + +fn bar(err: FileOpenError) AllocationError { + return err; +} + +test "coerce superset to subset" { + bar(FileOpenError.OutOfMemory) catch {}; +} -- cgit 1.4.1