fix: parsing diverts within content

This commit is contained in:
Brett Broadhurst 2026-03-30 17:19:12 -06:00
parent 2ee43514b4
commit 066369cc13
Failed to generate hash of commit
4 changed files with 45 additions and 6 deletions

View file

@ -785,6 +785,9 @@ fn parseIdentifierExpr(p: *Parse) Error!*Ast.Node {
}
fn parseDivertExpr(p: *Parse) Error!*Ast.Node {
try p.pushGrammar(.expression);
defer p.popGrammar();
const main_token = p.nextToken();
const node = try parseIdentifierExpr(p);
return .createBinary(p.arena, .divert_expr, .{
@ -794,9 +797,6 @@ fn parseDivertExpr(p: *Parse) Error!*Ast.Node {
}
fn parseDivertStmt(p: *Parse) Error!*Ast.Node {
try p.pushGrammar(.expression);
defer p.popGrammar();
const main_token = p.token;
const node = try parseDivertExpr(p);
_ = try p.expectNewline();
@ -980,7 +980,7 @@ fn parseContent(p: *Parse, options: ContentOptions) Error!?*Ast.Node {
const node: ?*Ast.Node = switch (p.token.tag) {
.eof, .newline, .left_arrow, .right_brace => break,
.left_brace => try parseLbraceExpr(p),
.right_arrow => try parseDivertStmt(p),
.right_arrow => try parseDivertExpr(p),
.glue => blk: {
while (true) {
_ = p.nextToken();