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)?...@@ -10096,6 +10096,7 @@ ContainerField &lt;- IDENTIFIER (COLON TypeExpr)? (EQUAL Expr)?
10096Statement10096Statement
10097 &lt;- KEYWORD_comptime? VarDecl10097 &lt;- KEYWORD_comptime? VarDecl
10098 / KEYWORD_comptime BlockExprStatement10098 / KEYWORD_comptime BlockExprStatement
10099 / KEYWORD_nosuspend BlockExprStatement
10099 / KEYWORD_suspend (SEMICOLON / BlockExprStatement)10100 / KEYWORD_suspend (SEMICOLON / BlockExprStatement)
10100 / KEYWORD_defer BlockExprStatement10101 / KEYWORD_defer BlockExprStatement
10101 / KEYWORD_errdefer BlockExprStatement10102 / KEYWORD_errdefer BlockExprStatement
...@@ -10152,6 +10153,7 @@ PrimaryExpr...@@ -10152,6 +10153,7 @@ PrimaryExpr
10152 / IfExpr10153 / IfExpr
10153 / KEYWORD_break BreakLabel? Expr?10154 / KEYWORD_break BreakLabel? Expr?
10154 / KEYWORD_comptime Expr10155 / KEYWORD_comptime Expr
10156 / KEYWORD_nosuspend Expr
10155 / KEYWORD_continue BreakLabel?10157 / KEYWORD_continue BreakLabel?
10156 / KEYWORD_resume Expr10158 / KEYWORD_resume Expr
10157 / KEYWORD_return Expr?10159 / KEYWORD_return Expr?
...@@ -10514,6 +10516,7 @@ KEYWORD_for &lt;- 'for' end_of_word...@@ -10514,6 +10516,7 @@ KEYWORD_for &lt;- 'for' end_of_word
10514KEYWORD_if &lt;- 'if' end_of_word10516KEYWORD_if &lt;- 'if' end_of_word
10515KEYWORD_inline &lt;- 'inline' end_of_word10517KEYWORD_inline &lt;- 'inline' end_of_word
10516KEYWORD_noalias &lt;- 'noalias' end_of_word10518KEYWORD_noalias &lt;- 'noalias' end_of_word
10519KEYWORD_nosuspend &lt;- 'nosuspend' end_of_word
10517KEYWORD_null &lt;- 'null' end_of_word10520KEYWORD_null &lt;- 'null' end_of_word
10518KEYWORD_or &lt;- 'or' end_of_word10521KEYWORD_or &lt;- 'or' end_of_word
10519KEYWORD_orelse &lt;- 'orelse' end_of_word10522KEYWORD_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 {...@@ -1389,7 +1389,6 @@ fn parseSuffixExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node {
1389/// / IfTypeExpr1389/// / IfTypeExpr
1390/// / INTEGER1390/// / INTEGER
1391/// / KEYWORD_comptime TypeExpr1391/// / KEYWORD_comptime TypeExpr
1392/// / KEYWORD_nosuspend TypeExpr
1393/// / KEYWORD_error DOT IDENTIFIER1392/// / KEYWORD_error DOT IDENTIFIER
1394/// / KEYWORD_false1393/// / KEYWORD_false
1395/// / KEYWORD_null1394/// / KEYWORD_null
...@@ -1428,15 +1427,6 @@ fn parsePrimaryTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*N...@@ -1428,15 +1427,6 @@ fn parsePrimaryTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*N
1428 };1427 };
1429 return &node.base;1428 return &node.base;
1430 }1429 }
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 }
1440 if (eatToken(it, .Keyword_error)) |token| {1430 if (eatToken(it, .Keyword_error)) |token| {
1441 const period = try expectToken(it, tree, .Period);1431 const period = try expectToken(it, tree, .Period);
1442 const identifier = try expectNode(arena, it, tree, parseIdentifier, .{1432 const identifier = try expectNode(arena, it, tree, parseIdentifier, .{
src/parser.cpp-9
...@@ -1609,7 +1609,6 @@ static AstNode *ast_parse_suffix_expr(ParseContext *pc) {...@@ -1609,7 +1609,6 @@ static AstNode *ast_parse_suffix_expr(ParseContext *pc) {
1609// / IfTypeExpr1609// / IfTypeExpr
1610// / INTEGER1610// / INTEGER
1611// / KEYWORD_comptime TypeExpr1611// / KEYWORD_comptime TypeExpr
1612// / KEYWORD_nosuspend TypeExpr
1613// / KEYWORD_error DOT IDENTIFIER1612// / KEYWORD_error DOT IDENTIFIER
1614// / KEYWORD_false1613// / KEYWORD_false
1615// / KEYWORD_null1614// / KEYWORD_null
...@@ -1711,14 +1710,6 @@ static AstNode *ast_parse_primary_type_expr(ParseContext *pc) {...@@ -1711,14 +1710,6 @@ static AstNode *ast_parse_primary_type_expr(ParseContext *pc) {
1711 return res;1710 return res;
1712 }1711 }
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
1722 Token *error = eat_token_if(pc, TokenIdKeywordError);1713 Token *error = eat_token_if(pc, TokenIdKeywordError);
1723 if (error != nullptr) {1714 if (error != nullptr) {
1724 Token *dot = expect_token(pc, TokenIdDot);1715 Token *dot = expect_token(pc, TokenIdDot);