fn parseAsmOutputItem(p: *Parse) !?Node.Index p: *Parse2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638fn parseAsmOutputItem(p: *Parse) !?Node.Index {
_ = p.eatToken(.l_bracket) orelse return null;
const identifier = try p.expectToken(.identifier);
_ = try p.expectToken(.r_bracket);
_ = try p.expectToken(.string_literal);
_ = try p.expectToken(.l_paren);
const type_expr: Node.OptionalIndex = blk: {
if (p.eatToken(.arrow)) |_| {
break :blk .fromOptional(try p.expectTypeExpr());
} else {
_ = try p.expectToken(.identifier);
break :blk .none;
}
};
const rparen = try p.expectToken(.r_paren);
return try p.addNode(.{
.tag = .asm_output,
.main_token = identifier,
.data = .{ .opt_node_and_token = .{
type_expr,
rparen,
} },
});
}