fn parseSwitchProngList(p: *Parse) !Node.SubRange
fn parseSwitchProngList(p: *Parse) !Node.SubRange { const scratch_top = p.scratch.items.len; defer p.scratch.shrinkRetainingCapacity(scratch_top); while (true) { const item = try parseSwitchProng(p) orelse break; try p.scratch.append(p.gpa, item); switch (p.tokenTag(p.tok_i)) { .comma => p.tok_i += 1, // All possible delimiters. .colon, .r_paren, .r_brace, .r_bracket => break, // Likely just a missing comma; give error but continue parsing. else => try p.warn(.expected_comma_after_switch_prong), } } return p.listToSpan(p.scratch.items[scratch_top..]); }