diff --git a/lib/std/zig/AstGen.zig b/lib/std/zig/AstGen.zig index c7f2426b0a..5dc41cc9d2 100644 --- a/lib/std/zig/AstGen.zig +++ b/lib/std/zig/AstGen.zig @@ -5097,18 +5097,16 @@ fn structDeclInner( const gpa = astgen.gpa; const tree = astgen.tree; - { - const is_tuple = for (container_decl.ast.members) |member_node| { + is_tuple: { + const tuple_field_node = for (container_decl.ast.members) |member_node| { const container_field = tree.fullContainerField(member_node) orelse continue; - if (container_field.ast.tuple_like) break true; - } else false; + if (container_field.ast.tuple_like) break member_node; + } else break :is_tuple; - if (is_tuple) { - if (node == 0) { - return astgen.failTok(0, "file cannot be a tuple", .{}); - } else { - return tupleDecl(gz, scope, node, container_decl, layout, backing_int_node); - } + if (node == 0) { + return astgen.failNode(tuple_field_node, "file cannot be a tuple", .{}); + } else { + return tupleDecl(gz, scope, node, container_decl, layout, backing_int_node); } } diff --git a/test/cases/compile_errors/file_level_tuple_with_decls.zig b/test/cases/compile_errors/file_level_tuple_with_decls.zig new file mode 100644 index 0000000000..0b353fe227 --- /dev/null +++ b/test/cases/compile_errors/file_level_tuple_with_decls.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +u8, + +// error +// +// :3:1: error: file cannot be a tuple