diff options
| author | Jimmi Holst Christensen <jimmiholstchristensen@gmail.com> | 2018-04-28 16:27:31 +0200 |
|---|---|---|
| committer | Jimmi Holst Christensen <jimmiholstchristensen@gmail.com> | 2018-04-28 16:27:31 +0200 |
| commit | 2fc34eaa581cc31827e978fbd973bf36d2c647e2 (patch) | |
| tree | d4123e07f42b89ee8fe829066bbca0cdaff514a0 /test | |
| parent | 3178528335cb5efbf237cecb9ea9eb3bfa31b21f (diff) | |
| download | zig-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.zig | 39 |
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; +} |
