From e61bedaa25e4bc80847c4fb1508b5f4cdf35cd20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Marku=C5=A1i=C4=87?= Date: Sun, 31 May 2026 22:26:17 +0200 Subject: [PATCH] Add another defer exercise --- exercises/116_defer3.zig | 18 ++++++++++++++++++ patches/patches/116_defer3.patch | 14 ++++++++++++++ src/elrond.zig | 4 ++++ 3 files changed, 36 insertions(+) create mode 100644 exercises/116_defer3.zig create mode 100644 patches/patches/116_defer3.patch diff --git a/exercises/116_defer3.zig b/exercises/116_defer3.zig new file mode 100644 index 0000000..6e3cf6d --- /dev/null +++ b/exercises/116_defer3.zig @@ -0,0 +1,18 @@ +// +// When there are multiple defers in a single block, they are executed in reverse order. +// +const std = @import("std"); + +pub fn main() void { + var x: u32 = 100; + { + // Try reordering the statements to get the answer 42 + defer x = x / 10; + defer x = x + 11; + defer x = x * 2; + + // It might seem silly in this example, but it's important to know when + // deinitializing containers whose elements need to be deinitialized first. + } + std.debug.print("{d}\n", .{x}); +} diff --git a/patches/patches/116_defer3.patch b/patches/patches/116_defer3.patch new file mode 100644 index 0000000..7b2cce5 --- /dev/null +++ b/patches/patches/116_defer3.patch @@ -0,0 +1,14 @@ +--- exercises/116_defer3.zig 2026-05-31 22:29:56.189323732 +0200 ++++ answers/116_defer3.zig 2026-05-31 22:30:17.749186667 +0200 +@@ -7,9 +7,9 @@ + var x: u32 = 100; + { + // Try reordering the statements to get the answer 42 +- defer x = x / 10; +- defer x = x + 11; + defer x = x * 2; ++ defer x = x + 11; ++ defer x = x / 10; + + // It might seem silly in this example, but it's important to know when + // deinitializing containers whose elements need to be deinitialized first. diff --git a/src/elrond.zig b/src/elrond.zig index 35c8857..311026f 100644 --- a/src/elrond.zig +++ b/src/elrond.zig @@ -1223,6 +1223,10 @@ const exercises = [_]Exercise{ .main_file = "115_packed2.zig", .output = "", }, + .{ + .main_file = "116_defer3.zig", + .output = "42", + }, .{ .main_file = "999_the_end.zig", .output =