zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 35e989235b29c5d921c8cf053a1d2f92fa0ce57a (tree)
parent 9c36cf92f009eda14cb773e89148547dadb137c6
Author: Veikka Tuominen <git@vexu.eu>
Date:   Wed, 16 Feb 2022 13:19:43 +0200

parser: get rid of "invalid token" error

Diffstat:
Mlib/std/zig/Ast.zig | 6------
Mlib/std/zig/parse.zig | 11++++++-----
2 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/lib/std/zig/Ast.zig b/lib/std/zig/Ast.zig @@ -291,11 +291,6 @@ pub fn renderError(tree: Ast, parse_error: Error, stream: anytype) !void { .invalid_bit_range => { return stream.writeAll("bit range not allowed on slices and arrays"); }, - .invalid_token => { - return stream.print("invalid token: '{s}'", .{ - token_tags[parse_error.token].symbol(), - }); - }, .same_line_doc_comment => { return stream.writeAll("same line documentation comment"); }, @@ -2515,7 +2510,6 @@ pub const Error = struct { extra_volatile_qualifier, ptr_mod_on_array_child_type, invalid_bit_range, - invalid_token, same_line_doc_comment, unattached_doc_comment, varargs_nonfinal, diff --git a/lib/std/zig/parse.zig b/lib/std/zig/parse.zig @@ -1437,7 +1437,8 @@ const Parser = struct { } const rhs = try p.parseExprPrecedence(info.prec + 1); if (rhs == 0) { - return p.fail(.invalid_token); + try p.warn(.expected_expr); + return node; } node = try p.addNode(.{ @@ -1916,7 +1917,7 @@ const Parser = struct { /// IfExpr <- IfPrefix Expr (KEYWORD_else Payload? Expr)? fn parseIfExpr(p: *Parser) !Node.Index { - return p.parseIf(parseExpr); + return p.parseIf(expectExpr); } /// Block <- LBRACE Statement* RBRACE @@ -2384,7 +2385,7 @@ const Parser = struct { .builtin => return p.parseBuiltinCall(), .keyword_fn => return p.parseFnProto(), - .keyword_if => return p.parseIf(parseTypeExpr), + .keyword_if => return p.parseIf(expectTypeExpr), .keyword_switch => return p.expectSwitchExpr(), .keyword_extern, @@ -3577,7 +3578,7 @@ const Parser = struct { _ = try p.parsePtrPayload(); const then_expr = try bodyParseFn(p); - if (then_expr == 0) return p.fail(.invalid_token); + assert(then_expr != 0); _ = p.eatToken(.keyword_else) orelse return p.addNode(.{ .tag = .if_simple, @@ -3589,7 +3590,7 @@ const Parser = struct { }); _ = try p.parsePayload(); const else_expr = try bodyParseFn(p); - if (else_expr == 0) return p.fail(.invalid_token); + assert(then_expr != 0); return p.addNode(.{ .tag = .@"if",