summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--exercises/108_labeled_switch.zig16
-rw-r--r--patches/patches/108_labeled_switch.patch15
2 files changed, 21 insertions, 10 deletions
diff --git a/exercises/108_labeled_switch.zig b/exercises/108_labeled_switch.zig
index 623e359..dfc061a 100644
--- a/exercises/108_labeled_switch.zig
+++ b/exercises/108_labeled_switch.zig
@@ -6,14 +6,14 @@
// foo: switch (state) {
// 1 => continue :foo 2,
// 2 => continue :foo 3,
-// 3 => return,
+// 3 => break :foo,
// 4 => {},
// ...
// }
//
const std = @import("std");
-const PullRequestState = enum {
+const PullRequestState = enum(u8) {
Draft,
InReview,
Approved,
@@ -22,13 +22,17 @@ const PullRequestState = enum {
};
pub fn main() void {
- // Something is wrong, it seems your Pull Request can never be merged
- // try to fix it!
+ // Oh no, your pull request keeps being rejected,
+ // how would you fix it?
pr: switch (@as(PullRequestState, PullRequestState.Draft)) {
PullRequestState.Draft => continue :pr PullRequestState.InReview,
PullRequestState.InReview => continue :pr PullRequestState.Rejected,
PullRequestState.Approved => continue :pr PullRequestState.Merged,
- PullRequestState.Rejected => std.debug.print("The pull request has been rejected", .{}),
- PullRequestState.Merged => std.debug.print("The pull request has been merged", .{}),
+ PullRequestState.Rejected => {
+ std.debug.print("The pull request has been rejected", .{});
+ return;
+ },
+ PullRequestState.Merged => break, // Would you know where to break to?
}
+ std.debug.print("The pull request has been merged", .{});
}
diff --git a/patches/patches/108_labeled_switch.patch b/patches/patches/108_labeled_switch.patch
index dfb65dd..230b8fb 100644
--- a/patches/patches/108_labeled_switch.patch
+++ b/patches/patches/108_labeled_switch.patch
@@ -1,11 +1,18 @@
--- a/exercises/108_labeled_switch.zig
+++ b/exercises/108_labeled_switch.zig
-@@ -26,7 +26,7 @@ pub fn main() void {
- // try to fix it!
+@@ -26,13 +26,13 @@ pub fn main() void {
+ // how would you fix it?
pr: switch (@as(PullRequestState, PullRequestState.Draft)) {
PullRequestState.Draft => continue :pr PullRequestState.InReview,
- PullRequestState.InReview => continue :pr PullRequestState.Rejected,
+ PullRequestState.InReview => continue :pr PullRequestState.Approved,
PullRequestState.Approved => continue :pr PullRequestState.Merged,
- PullRequestState.Rejected => std.debug.print("The pull request has been rejected", .{}),
- PullRequestState.Merged => std.debug.print("The pull request has been merged", .{}),
+ PullRequestState.Rejected => {
+ std.debug.print("The pull request has been rejected", .{});
+ return;
+ },
+- PullRequestState.Merged => break, // Would you know where to break to?
++ PullRequestState.Merged => break :pr, // Would you know where to break to?
+ }
+ std.debug.print("The pull request has been merged", .{});
+ }