stage2 astgen: error for return outside of function scope

This commit is contained in:
Jacob G-W 2021-07-10 18:19:36 -04:00
parent 7b8a968f14
commit 18770721ac
2 changed files with 8 additions and 0 deletions

View File

@ -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;

View File

@ -2,6 +2,10 @@ const std = @import("std");
const TestContext = @import("../src/test.zig").TestContext;
pub fn addCases(ctx: *TestContext) !void {
ctx.objErrStage1("issue #9346: return outside of function scope",
\\pub const empty = return 1;
, &.{"tmp.zig:1:19: error: 'return' outside function scope"});
ctx.exeErrStage1("std.fmt error for unused arguments",
\\pub fn main() !void {
\\ @import("std").debug.print("{d} {d} {d} {d} {d}", .{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15});