diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-02-06 16:36:49 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-02-06 16:36:49 -0700 |
| commit | 65a03c5859e57820d2c28ad2952dda3fd4ac7d9c (patch) | |
| tree | cbf8162ed73547c27a535fe21ebea20888625639 /test/run_tests.cpp | |
| parent | 34a7e6fdb362cb7be1067b7d1fc110eb2f323c51 (diff) | |
| download | zig-65a03c5859e57820d2c28ad2952dda3fd4ac7d9c.tar.gz zig-65a03c5859e57820d2c28ad2952dda3fd4ac7d9c.zip | |
implement %defer and ?defer
see #110
Diffstat (limited to 'test/run_tests.cpp')
| -rw-r--r-- | test/run_tests.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/run_tests.cpp b/test/run_tests.cpp index 50fa09f5a9..bc3dcefeed 100644 --- a/test/run_tests.cpp +++ b/test/run_tests.cpp @@ -1545,6 +1545,42 @@ pub fn main(args: [][]u8) -> %void { } )SOURCE", "before\ndefer2\ndefer1\n"); + + add_simple_case("%defer and it fails", R"SOURCE( +import "std.zig"; +pub fn main(args: [][]u8) -> %void { + do_test() %% return; +} +fn do_test() -> %void { + %%stdout.printf("before\n"); + defer %%stdout.printf("defer1\n"); + %defer %%stdout.printf("deferErr\n"); + %return its_gonna_fail(); + defer %%stdout.printf("defer3\n"); + %%stdout.printf("after\n"); +} +error IToldYouItWouldFail; +fn its_gonna_fail() -> %void { + return error.IToldYouItWouldFail; +} + )SOURCE", "before\ndeferErr\ndefer1\n"); + + + add_simple_case("%defer and it passes", R"SOURCE( +import "std.zig"; +pub fn main(args: [][]u8) -> %void { + do_test() %% return; +} +fn do_test() -> %void { + %%stdout.printf("before\n"); + defer %%stdout.printf("defer1\n"); + %defer %%stdout.printf("deferErr\n"); + %return its_gonna_pass(); + defer %%stdout.printf("defer3\n"); + %%stdout.printf("after\n"); +} +fn its_gonna_pass() -> %void { } + )SOURCE", "before\nafter\ndefer3\ndefer1\n"); } |
