aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-07-11 15:11:28 -0400
committerGitHub <noreply@github.com>2021-07-11 15:11:28 -0400
commit7ef85468265ecbc53efa18f67a5bd5ef46b8c7fb (patch)
treee4d188bc4388a33ce6402cf561e003e002e4ee75 /src
parentaa2a31612fa677ddb747f8fa730f6a5732b3afa9 (diff)
parentb0b9c3c2dc4e55609db44dc0564795b7e2ed1b34 (diff)
downloadzig-7ef85468265ecbc53efa18f67a5bd5ef46b8c7fb.tar.gz
zig-7ef85468265ecbc53efa18f67a5bd5ef46b8c7fb.zip
Merge pull request #9352 from g-w1/fix-9346
stage2 astgen: error for return outside of function scope
Diffstat (limited to 'src')
-rw-r--r--src/AstGen.zig6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/AstGen.zig b/src/AstGen.zig
index e2cdffc014..f62a8f18ab 100644
--- a/src/AstGen.zig
+++ b/src/AstGen.zig
@@ -4604,7 +4604,7 @@ fn tryExpr(
const astgen = parent_gz.astgen;
const fn_block = astgen.fn_block orelse {
- return astgen.failNode(node, "invalid 'try' outside function scope", .{});
+ return astgen.failNode(node, "'try' outside function scope", .{});
};
if (parent_gz.in_defer) return astgen.failNode(node, "'try' not allowed inside defer expression", .{});
@@ -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;