From 3204d00a5e7fe119b690e921138a439fb84dff5b Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Mon, 27 Jun 2022 18:32:59 +0300 Subject: move passing stage1 compile error tests to stage2 --- src/AstGen.zig | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/AstGen.zig') diff --git a/src/AstGen.zig b/src/AstGen.zig index ec8af65614..c4cba54bdc 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -4464,6 +4464,7 @@ fn containerDecl( var total_fields: usize = 0; var decls: usize = 0; var nonexhaustive_node: Ast.Node.Index = 0; + var nonfinal_nonexhaustive = false; for (container_decl.ast.members) |member_node| { const member = switch (node_tags[member_node]) { .container_field_init => tree.containerFieldInit(member_node), @@ -4515,6 +4516,8 @@ fn containerDecl( return astgen.failNode(member.ast.value_expr, "'_' is used to mark an enum as non-exhaustive and cannot be assigned a value", .{}); } continue; + } else if (nonexhaustive_node != 0) { + nonfinal_nonexhaustive = true; } total_fields += 1; if (member.ast.value_expr != 0) { @@ -4524,6 +4527,9 @@ fn containerDecl( values += 1; } } + if (nonfinal_nonexhaustive) { + return astgen.failNode(nonexhaustive_node, "'_' field of non-exhaustive enum must be last", .{}); + } break :blk .{ .total_fields = total_fields, .values = values, -- cgit v1.2.3