From ab8b14aa9fd6d434864476a37fb6fca75fedb121 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 16 Jan 2017 17:18:25 -0500 Subject: [PATCH] add test for compile error returning from defer expression closes #218 --- test/run_tests.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/run_tests.cpp b/test/run_tests.cpp index 7e616e0986..e99fbac0a9 100644 --- a/test/run_tests.cpp +++ b/test/run_tests.cpp @@ -1624,6 +1624,21 @@ fn f() { } )SOURCE", 1, ".tmp_source.zig:14:15: error: condition is always false; unnecessary if statement"); + add_compile_fail_case("return from defer expression", R"SOURCE( +pub fn testTrickyDefer() -> %void { + defer canFail() %% {}; + + defer %return canFail(); + + const a = maybeInt() ?? return; +} + +fn canFail() -> %void { } + +pub fn maybeInt() -> ?i32 { + return 0; +} + )SOURCE", 1, ".tmp_source.zig:5:11: error: cannot return from defer expression"); } //////////////////////////////////////////////////////////////////////////////