authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-05-14 11:19:14+03:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-05-14 11:19:14+03:00
logac319b27348f60e37f3f1b478fee00202280715f
treed249f3b1ab6d65ad0dadd177ce9a9dab2112431c
parentc3b76d091337ba60d2ccb3632b525e5a42d1f2c5
signaturelock-open Commit is signed but in an unrecognized format.

remove useless nosuspend parsing

nosuspend cannot be used in a type expression and all other use casesare covered by PrimaryExpr

3 files changed, 3 insertions(+), 19 deletions(-)

doc/langref.html.in+3
......@@ -10096,6 +10096,7 @@ ContainerField &lt;- IDENTIFIER (COLON TypeExpr)? (EQUAL Expr)?
1009610096Statement
1009710097 &lt;- KEYWORD_comptime? VarDecl
1009810098 / KEYWORD_comptime BlockExprStatement
10099 / KEYWORD_nosuspend BlockExprStatement
1009910100 / KEYWORD_suspend (SEMICOLON / BlockExprStatement)
1010010101 / KEYWORD_defer BlockExprStatement
1010110102 / KEYWORD_errdefer BlockExprStatement
......@@ -10152,6 +10153,7 @@ PrimaryExpr
1015210153 / IfExpr
1015310154 / KEYWORD_break BreakLabel? Expr?
1015410155 / KEYWORD_comptime Expr
10156 / KEYWORD_nosuspend Expr
1015510157 / KEYWORD_continue BreakLabel?
1015610158 / KEYWORD_resume Expr
1015710159 / KEYWORD_return Expr?
......@@ -10514,6 +10516,7 @@ KEYWORD_for &lt;- 'for' end_of_word
1051410516KEYWORD_if &lt;- 'if' end_of_word
1051510517KEYWORD_inline &lt;- 'inline' end_of_word
1051610518KEYWORD_noalias &lt;- 'noalias' end_of_word
10519KEYWORD_nosuspend &lt;- 'nosuspend' end_of_word
1051710520KEYWORD_null &lt;- 'null' end_of_word
1051810521KEYWORD_or &lt;- 'or' end_of_word
1051910522KEYWORD_orelse &lt;- 'orelse' end_of_word
lib/std/zig/parse.zig-10
......@@ -1389,7 +1389,6 @@ fn parseSuffixExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node {
13891389/// / IfTypeExpr
13901390/// / INTEGER
13911391/// / KEYWORD_comptime TypeExpr
1392/// / KEYWORD_nosuspend TypeExpr
13931392/// / KEYWORD_error DOT IDENTIFIER
13941393/// / KEYWORD_false
13951394/// / KEYWORD_null
......@@ -1428,15 +1427,6 @@ fn parsePrimaryTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*N
14281427 };
14291428 return &node.base;
14301429 }
1431 if (eatToken(it, .Keyword_nosuspend)) |token| {
1432 const expr = (try parseTypeExpr(arena, it, tree)) orelse return null;
1433 const node = try arena.create(Node.Nosuspend);
1434 node.* = .{
1435 .nosuspend_token = token,
1436 .expr = expr,
1437 };
1438 return &node.base;
1439 }
14401430 if (eatToken(it, .Keyword_error)) |token| {
14411431 const period = try expectToken(it, tree, .Period);
14421432 const identifier = try expectNode(arena, it, tree, parseIdentifier, .{
src/parser.cpp-9
......@@ -1609,7 +1609,6 @@ static AstNode *ast_parse_suffix_expr(ParseContext *pc) {
16091609// / IfTypeExpr
16101610// / INTEGER
16111611// / KEYWORD_comptime TypeExpr
1612// / KEYWORD_nosuspend TypeExpr
16131612// / KEYWORD_error DOT IDENTIFIER
16141613// / KEYWORD_false
16151614// / KEYWORD_null
......@@ -1711,14 +1710,6 @@ static AstNode *ast_parse_primary_type_expr(ParseContext *pc) {
17111710 return res;
17121711 }
17131712
1714 Token *nosuspend = eat_token_if(pc, TokenIdKeywordNoSuspend);
1715 if (nosuspend != nullptr) {
1716 AstNode *expr = ast_expect(pc, ast_parse_type_expr);
1717 AstNode *res = ast_create_node(pc, NodeTypeNoSuspend, nosuspend);
1718 res->data.nosuspend_expr.expr = expr;
1719 return res;
1720 }
1721
17221713 Token *error = eat_token_if(pc, TokenIdKeywordError);
17231714 if (error != nullptr) {
17241715 Token *dot = expect_token(pc, TokenIdDot);