From ac319b27348f60e37f3f1b478fee00202280715f Mon Sep 17 00:00:00 2001 From: Vexu Date: Thu, 14 May 2020 11:19:14 +0300 Subject: [PATCH] remove useless nosuspend parsing nosuspend cannot be used in a type expression and all other use casesare covered by PrimaryExpr --- doc/langref.html.in | 3 +++ lib/std/zig/parse.zig | 10 ---------- src/parser.cpp | 9 --------- 3 files changed, 3 insertions(+), 19 deletions(-) diff --git a/doc/langref.html.in b/doc/langref.html.in index 5bf91ca70f..0733540478 100644 --- a/doc/langref.html.in +++ b/doc/langref.html.in @@ -10096,6 +10096,7 @@ ContainerField <- IDENTIFIER (COLON TypeExpr)? (EQUAL Expr)? Statement <- KEYWORD_comptime? VarDecl / KEYWORD_comptime BlockExprStatement + / KEYWORD_nosuspend BlockExprStatement / KEYWORD_suspend (SEMICOLON / BlockExprStatement) / KEYWORD_defer BlockExprStatement / KEYWORD_errdefer BlockExprStatement @@ -10152,6 +10153,7 @@ PrimaryExpr / IfExpr / KEYWORD_break BreakLabel? Expr? / KEYWORD_comptime Expr + / KEYWORD_nosuspend Expr / KEYWORD_continue BreakLabel? / KEYWORD_resume Expr / KEYWORD_return Expr? @@ -10514,6 +10516,7 @@ KEYWORD_for <- 'for' end_of_word KEYWORD_if <- 'if' end_of_word KEYWORD_inline <- 'inline' end_of_word KEYWORD_noalias <- 'noalias' end_of_word +KEYWORD_nosuspend <- 'nosuspend' end_of_word KEYWORD_null <- 'null' end_of_word KEYWORD_or <- 'or' end_of_word KEYWORD_orelse <- 'orelse' end_of_word diff --git a/lib/std/zig/parse.zig b/lib/std/zig/parse.zig index 6c664bbda2..c16dba4a11 100644 --- a/lib/std/zig/parse.zig +++ b/lib/std/zig/parse.zig @@ -1389,7 +1389,6 @@ fn parseSuffixExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { /// / IfTypeExpr /// / INTEGER /// / KEYWORD_comptime TypeExpr -/// / KEYWORD_nosuspend TypeExpr /// / KEYWORD_error DOT IDENTIFIER /// / KEYWORD_false /// / KEYWORD_null @@ -1428,15 +1427,6 @@ fn parsePrimaryTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*N }; return &node.base; } - if (eatToken(it, .Keyword_nosuspend)) |token| { - const expr = (try parseTypeExpr(arena, it, tree)) orelse return null; - const node = try arena.create(Node.Nosuspend); - node.* = .{ - .nosuspend_token = token, - .expr = expr, - }; - return &node.base; - } if (eatToken(it, .Keyword_error)) |token| { const period = try expectToken(it, tree, .Period); const identifier = try expectNode(arena, it, tree, parseIdentifier, .{ diff --git a/src/parser.cpp b/src/parser.cpp index 1a929cd1b1..fc9814f393 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1609,7 +1609,6 @@ static AstNode *ast_parse_suffix_expr(ParseContext *pc) { // / IfTypeExpr // / INTEGER // / KEYWORD_comptime TypeExpr -// / KEYWORD_nosuspend TypeExpr // / KEYWORD_error DOT IDENTIFIER // / KEYWORD_false // / KEYWORD_null @@ -1711,14 +1710,6 @@ static AstNode *ast_parse_primary_type_expr(ParseContext *pc) { return res; } - Token *nosuspend = eat_token_if(pc, TokenIdKeywordNoSuspend); - if (nosuspend != nullptr) { - AstNode *expr = ast_expect(pc, ast_parse_type_expr); - AstNode *res = ast_create_node(pc, NodeTypeNoSuspend, nosuspend); - res->data.nosuspend_expr.expr = expr; - return res; - } - Token *error = eat_token_if(pc, TokenIdKeywordError); if (error != nullptr) { Token *dot = expect_token(pc, TokenIdDot);