mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
std.zig.Ast: don't set the data field on .error_value and .enum_literal
The main_token already has the necessary information.
This commit is contained in:
parent
ba74af2ae8
commit
d84055f9c6
3 changed files with 14 additions and 16 deletions
|
|
@ -1000,7 +1000,7 @@ pub fn lastToken(tree: Ast, node: Node.Index) TokenIndex {
|
||||||
.grouped_expression, .asm_input => return tree.nodeData(n).node_and_token[1] + end_offset,
|
.grouped_expression, .asm_input => return tree.nodeData(n).node_and_token[1] + end_offset,
|
||||||
.multiline_string_literal => return tree.nodeData(n).token_and_token[1] + end_offset,
|
.multiline_string_literal => return tree.nodeData(n).token_and_token[1] + end_offset,
|
||||||
.asm_output => return tree.nodeData(n).opt_node_and_token[1] + end_offset,
|
.asm_output => return tree.nodeData(n).opt_node_and_token[1] + end_offset,
|
||||||
.error_value => return tree.nodeData(n).opt_token_and_opt_token[1].unwrap().? + end_offset,
|
.error_value => return tree.nodeMainToken(n) + 2 + end_offset,
|
||||||
|
|
||||||
.anyframe_literal,
|
.anyframe_literal,
|
||||||
.char_literal,
|
.char_literal,
|
||||||
|
|
@ -3713,7 +3713,7 @@ pub const Node = struct {
|
||||||
identifier,
|
identifier,
|
||||||
/// `.foo`.
|
/// `.foo`.
|
||||||
///
|
///
|
||||||
/// The `data` field is a `.token` to the `.`.
|
/// The `data` field is unused.
|
||||||
///
|
///
|
||||||
/// The `main_token` field is the identifier.
|
/// The `main_token` field is the identifier.
|
||||||
enum_literal,
|
enum_literal,
|
||||||
|
|
@ -3930,9 +3930,7 @@ pub const Node = struct {
|
||||||
asm_input,
|
asm_input,
|
||||||
/// `error.a`.
|
/// `error.a`.
|
||||||
///
|
///
|
||||||
/// The `data` field is a `.opt_token_and_opt_token`:
|
/// The `data` field is unused.
|
||||||
/// 1. a `OptionalTokenIndex` of `.`. Can't be `.none` unless a parsing error occured.
|
|
||||||
/// 2. a `OptionalTokenIndex` of `a`. Can't be `.none` unless a parsing error occured.
|
|
||||||
///
|
///
|
||||||
/// The `main_token` field is `error` token.
|
/// The `main_token` field is `error` token.
|
||||||
error_value,
|
error_value,
|
||||||
|
|
|
||||||
|
|
@ -1012,7 +1012,7 @@ fn expr(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.Index) InnerE
|
||||||
.ref_coerced_ty, .ptr, .inferred_ptr, .destructure => return rvalue(gz, ri, res, node),
|
.ref_coerced_ty, .ptr, .inferred_ptr, .destructure => return rvalue(gz, ri, res, node),
|
||||||
}
|
}
|
||||||
} else return simpleStrTok(gz, ri, tree.nodeMainToken(node), node, .enum_literal),
|
} else return simpleStrTok(gz, ri, tree.nodeMainToken(node), node, .enum_literal),
|
||||||
.error_value => return simpleStrTok(gz, ri, tree.nodeData(node).opt_token_and_opt_token[1].unwrap().?, node, .error_value),
|
.error_value => return simpleStrTok(gz, ri, tree.nodeMainToken(node) + 2, node, .error_value),
|
||||||
// TODO restore this when implementing https://github.com/ziglang/zig/issues/6025
|
// TODO restore this when implementing https://github.com/ziglang/zig/issues/6025
|
||||||
// .anyframe_literal => return rvalue(gz, ri, .anyframe_type, node),
|
// .anyframe_literal => return rvalue(gz, ri, .anyframe_type, node),
|
||||||
.anyframe_literal => {
|
.anyframe_literal => {
|
||||||
|
|
@ -8184,7 +8184,7 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref
|
||||||
if (tree.nodeTag(operand_node) == .error_value) {
|
if (tree.nodeTag(operand_node) == .error_value) {
|
||||||
// Hot path for `return error.Foo`. This bypasses result location logic as well as logic
|
// Hot path for `return error.Foo`. This bypasses result location logic as well as logic
|
||||||
// for detecting whether to add something to the function's inferred error set.
|
// for detecting whether to add something to the function's inferred error set.
|
||||||
const ident_token = tree.nodeData(operand_node).opt_token_and_opt_token[1].unwrap().?;
|
const ident_token = tree.nodeMainToken(operand_node) + 2;
|
||||||
const err_name_str_index = try astgen.identAsString(ident_token);
|
const err_name_str_index = try astgen.identAsString(ident_token);
|
||||||
const defer_counts = countDefers(defer_outer, scope);
|
const defer_counts = countDefers(defer_outer, scope);
|
||||||
if (!defer_counts.need_err_code) {
|
if (!defer_counts.need_err_code) {
|
||||||
|
|
|
||||||
|
|
@ -2647,11 +2647,14 @@ fn parsePrimaryTypeExpr(p: *Parse) !?Node.Index {
|
||||||
.keyword_for => return try p.parseFor(expectTypeExpr),
|
.keyword_for => return try p.parseFor(expectTypeExpr),
|
||||||
.keyword_while => return try p.parseWhileTypeExpr(),
|
.keyword_while => return try p.parseWhileTypeExpr(),
|
||||||
.period => switch (p.tokenTag(p.tok_i + 1)) {
|
.period => switch (p.tokenTag(p.tok_i + 1)) {
|
||||||
.identifier => return try p.addNode(.{
|
.identifier => {
|
||||||
.tag = .enum_literal,
|
p.tok_i += 1;
|
||||||
.data = .{ .token = p.nextToken() }, // dot
|
return try p.addNode(.{
|
||||||
.main_token = p.nextToken(), // identifier
|
.tag = .enum_literal,
|
||||||
}),
|
.main_token = p.nextToken(), // identifier
|
||||||
|
.data = undefined,
|
||||||
|
});
|
||||||
|
},
|
||||||
.l_brace => {
|
.l_brace => {
|
||||||
const lbrace = p.tok_i + 1;
|
const lbrace = p.tok_i + 1;
|
||||||
p.tok_i = lbrace + 1;
|
p.tok_i = lbrace + 1;
|
||||||
|
|
@ -2772,10 +2775,7 @@ fn parsePrimaryTypeExpr(p: *Parse) !?Node.Index {
|
||||||
return try p.addNode(.{
|
return try p.addNode(.{
|
||||||
.tag = .error_value,
|
.tag = .error_value,
|
||||||
.main_token = main_token,
|
.main_token = main_token,
|
||||||
.data = .{ .opt_token_and_opt_token = .{
|
.data = undefined,
|
||||||
.fromOptional(period),
|
|
||||||
.fromOptional(identifier),
|
|
||||||
} },
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue