aboutsummaryrefslogtreecommitdiff
path: root/test/run_tests.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-02-06 16:36:49 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-02-06 16:36:49 -0700
commit65a03c5859e57820d2c28ad2952dda3fd4ac7d9c (patch)
treecbf8162ed73547c27a535fe21ebea20888625639 /test/run_tests.cpp
parent34a7e6fdb362cb7be1067b7d1fc110eb2f323c51 (diff)
downloadzig-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.cpp36
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");
}