From 18770721ac919abd8d4dc6d117a6798a462106be Mon Sep 17 00:00:00 2001 From: Jacob G-W Date: Sat, 10 Jul 2021 18:19:36 -0400 Subject: stage2 astgen: error for return outside of function scope --- src/AstGen.zig | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/AstGen.zig') 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; -- cgit v1.2.3