diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-09-24 21:20:44 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-09-24 21:20:44 -0400 |
| commit | 0cfae753aa131f949253f3fba1e3a36c2bde6ac0 (patch) | |
| tree | d1403a97d7e86f547f8e6ca9994095f31c37d2a2 /test | |
| parent | 76f80f80ff1788af96ae87fa909c130336d5399b (diff) | |
Revert "Deprecate `defer`"
This reverts commit 7e3e245f6809946ea06ef1998bcabb7e0902fbd7.
Diffstat (limited to 'test')
| -rw-r--r-- | test/defer.tm | 79 | ||||
| -rw-r--r-- | test/lambdas.tm | 2 |
2 files changed, 80 insertions, 1 deletions
diff --git a/test/defer.tm b/test/defer.tm new file mode 100644 index 00000000..8f0cb3be --- /dev/null +++ b/test/defer.tm @@ -0,0 +1,79 @@ +func main() + x := 123 + nums : @[Int] + do + defer + nums.insert(x) + x = 999 + + assert nums[] == [123] + assert 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") + + >> thunk := func(return_early=no) + say("Entering thunk") + defer + say("Deferred thunk cleanup") + + if return_early + say("Returning early...") + return + + say("Finished thunk") + + >> thunk(no) + >> thunk(yes) + + >> defer_func(yes) + >> defer_func(no) + + >> counter := make_counter() + assert counter() == 1 + assert counter() == 2 + assert counter() == 3 + +func defer_func(return_early=no) + say("Entering defer_func") + defer + say("Deferred defer_func cleanup") + + if return_early + say("Returning early...") + return + + say("Finished defer_func") + +func make_counter(->func(->Int)) + i := 1 + return func() + defer i += 1 + return i + diff --git a/test/lambdas.tm b/test/lambdas.tm index 5508dba2..1d1b2775 100644 --- a/test/lambdas.tm +++ b/test/lambdas.tm @@ -31,6 +31,6 @@ func main() fn := func() return func() return func() - say("$outer") + defer say("$outer") return outer assert fn()()() == "Hello" |
