aboutsummaryrefslogtreecommitdiff
path: root/src/AstGen.zig
diff options
context:
space:
mode:
authorJacob G-W <jacoblevgw@gmail.com>2021-07-10 18:19:36 -0400
committerJacob G-W <jacoblevgw@gmail.com>2021-07-11 10:03:35 -0400
commit18770721ac919abd8d4dc6d117a6798a462106be (patch)
tree9b4e84d2ead256884a6fe9b839127f494973fa0f /src/AstGen.zig
parent7b8a968f14a8405c209f35d8a0f904d6f722e713 (diff)
downloadzig-18770721ac919abd8d4dc6d117a6798a462106be.tar.gz
zig-18770721ac919abd8d4dc6d117a6798a462106be.zip
stage2 astgen: error for return outside of function scope
Diffstat (limited to 'src/AstGen.zig')
-rw-r--r--src/AstGen.zig4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/AstGen.zig b/src/AstGen.zig
index e2cdffc014..0f497526d1 100644
--- a/src/AstGen.zig
+++ b/src/AstGen.zig
@@ -6167,6 +6167,10 @@ fn ret(gz: *GenZir, scope: *Scope, node: ast.Node.Index) InnerError!Zir.Inst.Ref
const node_datas = tree.nodes.items(.data);
const node_tags = tree.nodes.items(.tag);
+ if (astgen.fn_block == null) {
+ return astgen.failNode(node, "'return' outside function scope", .{});
+ }
+
if (gz.in_defer) return astgen.failNode(node, "cannot return from defer expression", .{});
const defer_outer = &astgen.fn_block.?.base;