aboutsummaryrefslogtreecommitdiff
path: root/test/cases/while.zig
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-05-04 12:43:11 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-05-04 12:43:11 -0400
commitb6a679c0edd74d996bd0c1769cf4b161b4d42c4d (patch)
treeb9b90568cb38ec6edaa1fa094b8da18575144a08 /test/cases/while.zig
parent0454e610bf8627537855ce96e922dfbe7322e4a1 (diff)
downloadzig-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.zig61
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 }