aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/defer.tm41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/defer.tm b/test/defer.tm
new file mode 100644
index 00000000..fcc14f16
--- /dev/null
+++ b/test/defer.tm
@@ -0,0 +1,41 @@
+func main():
+ x := 123
+ nums := @[:Int]
+ do:
+ defer:
+ nums:insert(x)
+ x = 999
+
+ >> nums
+ = @[123]
+ >> x
+ = 999
+
+ defer:
+ say("All done!")
+
+ for word in ["first", "second", "third"]:
+ defer:
+ say("Got {word} deferred")
+
+ if word == "second":
+ say("<skipped>")
+ skip
+ else if word == "third":
+ say("<stopped>")
+ stop
+
+ for i in 3:
+ defer:
+ say("Inner loop deferred {i}")
+
+ if i == 2:
+ say("<skipped inner>")
+ skip
+ else if i == 3:
+ say("<stopped inner>")
+ stop
+
+ say("Made it through inner loop")
+
+ say("Made it through the loop")