aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJimmi Holst Christensen <jimmiholstchristensen@gmail.com>2018-04-28 16:27:31 +0200
committerJimmi Holst Christensen <jimmiholstchristensen@gmail.com>2018-04-28 16:27:31 +0200
commit2fc34eaa581cc31827e978fbd973bf36d2c647e2 (patch)
treed4123e07f42b89ee8fe829066bbca0cdaff514a0 /test
parent3178528335cb5efbf237cecb9ea9eb3bfa31b21f (diff)
downloadzig-2fc34eaa581cc31827e978fbd973bf36d2c647e2.tar.gz
zig-2fc34eaa581cc31827e978fbd973bf36d2c647e2.zip
Functions with infered error set can now return literals
fixes #852
Diffstat (limited to 'test')
-rw-r--r--test/cases/error.zig39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/cases/error.zig b/test/cases/error.zig
index c64c835fc4..2a1433df5b 100644
--- a/test/cases/error.zig
+++ b/test/cases/error.zig
@@ -202,3 +202,42 @@ const Error = error{};
fn foo3(b: usize) Error!usize {
return b;
}
+
+
+test "error: Infer error set from literals" {
+ _ = nullLiteral("n") catch |err| handleErrors(err);
+ _ = floatLiteral("n") catch |err| handleErrors(err);
+ _ = intLiteral("n") catch |err| handleErrors(err);
+ _ = comptime nullLiteral("n") catch |err| handleErrors(err);
+ _ = comptime floatLiteral("n") catch |err| handleErrors(err);
+ _ = comptime intLiteral("n") catch |err| handleErrors(err);
+}
+
+fn handleErrors(err: var) noreturn {
+ switch (err) {
+ error.T => {}
+ }
+
+ unreachable;
+}
+
+fn nullLiteral(str: []const u8) !?i64 {
+ if (str[0] == 'n')
+ return null;
+
+ return error.T;
+}
+
+fn floatLiteral(str: []const u8) !?f64 {
+ if (str[0] == 'n')
+ return 1.0;
+
+ return error.T;
+}
+
+fn intLiteral(str: []const u8) !?i64 {
+ if (str[0] == 'n')
+ return 1;
+
+ return error.T;
+}