parser: port test "nosuspend block"

Implement nosuspend statement in expectStatement.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-02-10 14:45:37 +00:00
parent 2279ac85a0
commit 74d6a66a2d
2 changed files with 20 additions and 0 deletions

View File

@@ -1912,6 +1912,15 @@ static AstNodeIndex expectStatement(Parser* p, bool allow_defer_var) {
});
}
case TOKEN_KEYWORD_NOSUSPEND:
return addNode(&p->nodes,
(AstNodeItem) {
.tag = AST_NODE_NOSUSPEND,
.main_token = nextToken(p),
.data = {
.lhs = expectBlockExprStatement(p),
.rhs = 0,
},
});
case TOKEN_KEYWORD_SUSPEND:
case TOKEN_KEYWORD_ENUM:
case TOKEN_KEYWORD_STRUCT:

View File

@@ -1799,6 +1799,17 @@ test "zig fmt: if-else with comment before else" {
);
}
test "zig fmt: nosuspend block" {
try testCanonical(
\\pub fn main() anyerror!void {
\\ nosuspend {
\\ var foo: Foo = .{ .bar = 42 };
\\ }
\\}
\\
);
}
test "zig fmt: top-level tuple function call type" {
try testCanonical(
\\foo()