Commit ee173d5127

g-w1 <58830309+g-w1@users.noreply.github.com>
2021-07-15 09:55:22
parser: require block in suspend expression
1 parent 4ea7470
Changed files (3)
lib/std/zig/parse.zig
@@ -885,11 +885,7 @@ const Parser = struct {
             },
             .keyword_suspend => {
                 const token = p.nextToken();
-                // TODO remove this special case when 0.9.0 is released.
-                const block_expr: Node.Index = if (p.eatToken(.semicolon) != null)
-                    0
-                else
-                    try p.expectBlockExprStatement();
+                const block_expr = try p.expectBlockExprStatement();
                 return p.addNode(.{
                     .tag = .@"suspend",
                     .main_token = token,
lib/std/zig/parser_test.zig
@@ -92,21 +92,6 @@ test "zig fmt: rewrite callconv(.Inline) to the inline keyword" {
     );
 }
 
-// TODO Remove this after zig 0.9.0 is released.
-test "zig fmt: rewrite suspend without block expression" {
-    try testTransform(
-        \\fn foo() void {
-        \\    suspend;
-        \\}
-        \\
-    ,
-        \\fn foo() void {
-        \\    suspend {}
-        \\}
-        \\
-    );
-}
-
 // TODO Remove this after zig 0.9.0 is released.
 test "zig fmt: rewrite @byteOffsetOf to @offsetOf" {
     try testTransform(
lib/std/zig/render.zig
@@ -275,17 +275,8 @@ fn renderExpression(gpa: *Allocator, ais: *Ais, tree: ast.Tree, node: ast.Node.I
         .@"suspend" => {
             const suspend_token = main_tokens[node];
             const body = datas[node].lhs;
-            if (body != 0) {
-                try renderToken(ais, tree, suspend_token, .space);
-                return renderExpression(gpa, ais, tree, body, space);
-            } else {
-                // TODO remove this special case when 0.9.0 is released.
-                assert(space == .semicolon);
-                try renderToken(ais, tree, suspend_token, .space);
-                try ais.writer().writeAll("{}");
-                try ais.insertNewline();
-                return;
-            }
+            try renderToken(ais, tree, suspend_token, .space);
+            return renderExpression(gpa, ais, tree, body, space);
         },
 
         .@"catch" => {