authorgravatar for techatrix@mailbox.orgTechatrix <techatrix@mailbox.org> 2025-02-25 15:29:51+01:00
committergravatar for techatrix@mailbox.orgTechatrix <techatrix@mailbox.org> 2025-03-07 22:22:01+01:00
log4129f7ff5a03cb3cd85a3ad5e3360098ab8ed796
tree3a501329a88919e96a0be660f907be11a549def9
parentd84055f9c69986f60087cf1a37f895362725f88d
signaturebadge-check Signed by SSH key SHA256:HYC3SjXQcAt6uwv9pu/6OoVQ2rUH8rb5zKiUHSe9uxk

std.zig.Ast: store lbrace and rbrace token in data of `.error_set_decl`

This makes the `.data` field the better choice over the `.main_token` for this tag.

5 files changed, 15 insertions(+), 13 deletions(-)

lib/compiler/reduce/Walk.zig+1-3
...@@ -444,9 +444,7 @@ fn walkExpression(w: *Walk, node: Ast.Node.Index) Error!void {...@@ -444,9 +444,7 @@ fn walkExpression(w: *Walk, node: Ast.Node.Index) Error!void {
444 },444 },
445445
446 .error_set_decl => {446 .error_set_decl => {
447 const error_token = ast.nodeMainToken(node);447 const lbrace, const rbrace = ast.nodeData(node).token_and_token;
448 const lbrace = error_token + 1;
449 const rbrace = ast.nodeData(node).token;
450448
451 var i = lbrace + 1;449 var i = lbrace + 1;
452 while (i < rbrace) : (i += 1) {450 while (i < rbrace) : (i += 1) {
lib/std/zig/Ast.zig+4-3
...@@ -996,9 +996,8 @@ pub fn lastToken(tree: Ast, node: Node.Index) TokenIndex {...@@ -996,9 +996,8 @@ pub fn lastToken(tree: Ast, node: Node.Index) TokenIndex {
996 .unwrap_optional,996 .unwrap_optional,
997 .asm_simple,997 .asm_simple,
998 => return tree.nodeData(n).node_and_token[1] + end_offset,998 => return tree.nodeData(n).node_and_token[1] + end_offset,
999 .error_set_decl => return tree.nodeData(n).token + end_offset,
1000 .grouped_expression, .asm_input => return tree.nodeData(n).node_and_token[1] + end_offset,999 .grouped_expression, .asm_input => return tree.nodeData(n).node_and_token[1] + end_offset,
1001 .multiline_string_literal => return tree.nodeData(n).token_and_token[1] + end_offset,1000 .multiline_string_literal, .error_set_decl => return tree.nodeData(n).token_and_token[1] + end_offset,
1002 .asm_output => return tree.nodeData(n).opt_node_and_token[1] + end_offset,1001 .asm_output => return tree.nodeData(n).opt_node_and_token[1] + end_offset,
1003 .error_value => return tree.nodeMainToken(n) + 2 + end_offset,1002 .error_value => return tree.nodeMainToken(n) + 2 + end_offset,
10041003
...@@ -3758,7 +3757,9 @@ pub const Node = struct {...@@ -3758,7 +3757,9 @@ pub const Node = struct {
3758 builtin_call_comma,3757 builtin_call_comma,
3759 /// `error{a, b}`.3758 /// `error{a, b}`.
3760 ///3759 ///
3761 /// The `data` field is a `.token` to the '}'.3760 /// The `data` field is a `.token_and_token`:
3761 /// 1. a `TokenIndex` to the `{` token.
3762 /// 2. a `TokenIndex` to the `}` token.
3762 ///3763 ///
3763 /// The `main_token` field is the `error`.3764 /// The `main_token` field is the `error`.
3764 error_set_decl,3765 error_set_decl,
lib/std/zig/AstGen.zig+3-4
...@@ -5974,9 +5974,9 @@ fn errorSetDecl(gz: *GenZir, ri: ResultInfo, node: Ast.Node.Index) InnerError!Zi...@@ -5974,9 +5974,9 @@ fn errorSetDecl(gz: *GenZir, ri: ResultInfo, node: Ast.Node.Index) InnerError!Zi
5974 var idents: std.AutoHashMapUnmanaged(Zir.NullTerminatedString, Ast.TokenIndex) = .empty;5974 var idents: std.AutoHashMapUnmanaged(Zir.NullTerminatedString, Ast.TokenIndex) = .empty;
5975 defer idents.deinit(gpa);5975 defer idents.deinit(gpa);
59765976
5977 const error_token = tree.nodeMainToken(node);5977 const lbrace, const rbrace = tree.nodeData(node).token_and_token;
5978 var tok_i = error_token + 2;5978 for (lbrace + 1..rbrace) |i| {
5979 while (true) : (tok_i += 1) {5979 const tok_i: Ast.TokenIndex = @intCast(i);
5980 switch (tree.tokenTag(tok_i)) {5980 switch (tree.tokenTag(tok_i)) {
5981 .doc_comment, .comma => {},5981 .doc_comment, .comma => {},
5982 .identifier => {5982 .identifier => {
...@@ -6003,7 +6003,6 @@ fn errorSetDecl(gz: *GenZir, ri: ResultInfo, node: Ast.Node.Index) InnerError!Zi...@@ -6003,7 +6003,6 @@ fn errorSetDecl(gz: *GenZir, ri: ResultInfo, node: Ast.Node.Index) InnerError!Zi
6003 try astgen.extra.append(gpa, @intFromEnum(str_index));6003 try astgen.extra.append(gpa, @intFromEnum(str_index));
6004 fields_len += 1;6004 fields_len += 1;
6005 },6005 },
6006 .r_brace => break,
6007 else => unreachable,6006 else => unreachable,
6008 }6007 }
6009 }6008 }
lib/std/zig/Parse.zig+6-1
...@@ -2763,7 +2763,12 @@ fn parsePrimaryTypeExpr(p: *Parse) !?Node.Index {...@@ -2763,7 +2763,12 @@ fn parsePrimaryTypeExpr(p: *Parse) !?Node.Index {
2763 return try p.addNode(.{2763 return try p.addNode(.{
2764 .tag = .error_set_decl,2764 .tag = .error_set_decl,
2765 .main_token = error_token,2765 .main_token = error_token,
2766 .data = .{ .token = p.tok_i - 1 }, // rbrace2766 .data = .{
2767 .token_and_token = .{
2768 error_token + 1, // lbrace
2769 p.tok_i - 1, // rbrace
2770 },
2771 },
2767 });2772 });
2768 },2773 },
2769 else => {2774 else => {
lib/std/zig/render.zig+1-2
...@@ -739,8 +739,7 @@ fn renderExpression(r: *Render, node: Ast.Node.Index, space: Space) Error!void {...@@ -739,8 +739,7 @@ fn renderExpression(r: *Render, node: Ast.Node.Index, space: Space) Error!void {
739739
740 .error_set_decl => {740 .error_set_decl => {
741 const error_token = tree.nodeMainToken(node);741 const error_token = tree.nodeMainToken(node);
742 const lbrace = error_token + 1;742 const lbrace, const rbrace = tree.nodeData(node).token_and_token;
743 const rbrace = tree.nodeData(node).token;
744743
745 try renderToken(r, error_token, .none);744 try renderToken(r, error_token, .none);
746745