diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2017-05-04 12:43:11 -0400 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2017-05-04 12:43:11 -0400 |
| commit | b6a679c0edd74d996bd0c1769cf4b161b4d42c4d (patch) | |
| tree | b9b90568cb38ec6edaa1fa094b8da18575144a08 /test/cases/while.zig | |
| parent | 0454e610bf8627537855ce96e922dfbe7322e4a1 (diff) | |
| download | zig-b6a679c0edd74d996bd0c1769cf4b161b4d42c4d.tar.gz zig-b6a679c0edd74d996bd0c1769cf4b161b4d42c4d.zip | |
implement else on loops and break can give an expression
closes #357
Diffstat (limited to 'test/cases/while.zig')
| -rw-r--r-- | test/cases/while.zig | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/cases/while.zig b/test/cases/while.zig index 476c29dd78..33833cecfa 100644 --- a/test/cases/while.zig +++ b/test/cases/while.zig @@ -134,3 +134,64 @@ fn getNumberOrNull() -> ?i32 { }; } +test "while on nullable with else result follow else prong" { + const result = while (returnNull()) |value| { + break value; + } else { + i32(2) + }; + assert(result == 2); +} + +test "while on nullable with else result follow break prong" { + const result = while (returnMaybe(10)) |value| { + break value; + } else { + i32(2) + }; + assert(result == 10); +} + +test "while on error union with else result follow else prong" { + const result = while (returnError()) |value| { + break value; + } else |err| { + i32(2) + }; + assert(result == 2); +} + +test "while on error union with else result follow break prong" { + const result = while (returnSuccess(10)) |value| { + break value; + } else |err| { + i32(2) + }; + assert(result == 10); +} + +test "while on bool with else result follow else prong" { + const result = while (returnFalse()) { + break i32(10); + } else { + i32(2) + }; + assert(result == 2); +} + +test "while on bool with else result follow break prong" { + const result = while (returnTrue()) { + break i32(10); + } else { + i32(2) + }; + assert(result == 10); +} + +fn returnNull() -> ?i32 { null } +fn returnMaybe(x: i32) -> ?i32 { x } +error YouWantedAnError; +fn returnError() -> %i32 { error.YouWantedAnError } +fn returnSuccess(x: i32) -> %i32 { x } +fn returnFalse() -> bool { false } +fn returnTrue() -> bool { true } |
