Skip to content

Commit f260ea0

Browse files
committed
std.zig.Ast: don't set the data field on .error_value and .enum_literal
The main_token already has the necessary information.
1 parent 9135209 commit f260ea0

File tree

3 files changed

+14
-16
lines changed

3 files changed

+14
-16
lines changed

lib/std/zig/Ast.zig

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,7 +1000,7 @@ pub fn lastToken(tree: Ast, node: Node.Index) TokenIndex {
10001000
.grouped_expression, .asm_input => return tree.nodeData(n).node_and_token[1] + end_offset,
10011001
.multiline_string_literal => return tree.nodeData(n).token_and_token[1] + end_offset,
10021002
.asm_output => return tree.nodeData(n).opt_node_and_token[1] + end_offset,
1003-
.error_value => return tree.nodeData(n).opt_token_and_opt_token[1].unwrap().? + end_offset,
1003+
.error_value => return tree.nodeMainToken(n) + 2 + end_offset,
10041004

10051005
.anyframe_literal,
10061006
.char_literal,
@@ -3713,7 +3713,7 @@ pub const Node = struct {
37133713
identifier,
37143714
/// `.foo`.
37153715
///
3716-
/// The `data` field is a `.token` to the `.`.
3716+
/// The `data` field is unused.
37173717
///
37183718
/// The `main_token` field is the identifier.
37193719
enum_literal,
@@ -3930,9 +3930,7 @@ pub const Node = struct {
39303930
asm_input,
39313931
/// `error.a`.
39323932
///
3933-
/// The `data` field is a `.opt_token_and_opt_token`:
3934-
/// 1. a `OptionalTokenIndex` of `.`. Can't be `.none` unless a parsing error occured.
3935-
/// 2. a `OptionalTokenIndex` of `a`. Can't be `.none` unless a parsing error occured.
3933+
/// The `data` field is unused.
39363934
///
39373935
/// The `main_token` field is `error` token.
39383936
error_value,

lib/std/zig/AstGen.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,7 +1012,7 @@ fn expr(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.Index) InnerE
10121012
.ref_coerced_ty, .ptr, .inferred_ptr, .destructure => return rvalue(gz, ri, res, node),
10131013
}
10141014
} else return simpleStrTok(gz, ri, tree.nodeMainToken(node), node, .enum_literal),
1015-
.error_value => return simpleStrTok(gz, ri, tree.nodeData(node).opt_token_and_opt_token[1].unwrap().?, node, .error_value),
1015+
.error_value => return simpleStrTok(gz, ri, tree.nodeMainToken(node) + 2, node, .error_value),
10161016
// TODO restore this when implementing https://github.com/ziglang/zig/issues/6025
10171017
// .anyframe_literal => return rvalue(gz, ri, .anyframe_type, node),
10181018
.anyframe_literal => {
@@ -8184,7 +8184,7 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref
81848184
if (tree.nodeTag(operand_node) == .error_value) {
81858185
// Hot path for `return error.Foo`. This bypasses result location logic as well as logic
81868186
// for detecting whether to add something to the function's inferred error set.
8187-
const ident_token = tree.nodeData(operand_node).opt_token_and_opt_token[1].unwrap().?;
8187+
const ident_token = tree.nodeMainToken(operand_node) + 2;
81888188
const err_name_str_index = try astgen.identAsString(ident_token);
81898189
const defer_counts = countDefers(defer_outer, scope);
81908190
if (!defer_counts.need_err_code) {

lib/std/zig/Parse.zig

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2647,11 +2647,14 @@ fn parsePrimaryTypeExpr(p: *Parse) !?Node.Index {
26472647
.keyword_for => return try p.parseFor(expectTypeExpr),
26482648
.keyword_while => return try p.parseWhileTypeExpr(),
26492649
.period => switch (p.tokenTag(p.tok_i + 1)) {
2650-
.identifier => return try p.addNode(.{
2651-
.tag = .enum_literal,
2652-
.data = .{ .token = p.nextToken() }, // dot
2653-
.main_token = p.nextToken(), // identifier
2654-
}),
2650+
.identifier => {
2651+
p.tok_i += 1;
2652+
return try p.addNode(.{
2653+
.tag = .enum_literal,
2654+
.main_token = p.nextToken(), // identifier
2655+
.data = undefined,
2656+
});
2657+
},
26552658
.l_brace => {
26562659
const lbrace = p.tok_i + 1;
26572660
p.tok_i = lbrace + 1;
@@ -2772,10 +2775,7 @@ fn parsePrimaryTypeExpr(p: *Parse) !?Node.Index {
27722775
return try p.addNode(.{
27732776
.tag = .error_value,
27742777
.main_token = main_token,
2775-
.data = .{ .opt_token_and_opt_token = .{
2776-
.fromOptional(period),
2777-
.fromOptional(identifier),
2778-
} },
2778+
.data = undefined,
27792779
});
27802780
},
27812781
},

0 commit comments

Comments
 (0)