(
tokens: &[Token],
pos: &mut usize,
depth: &mut usize,
)
| 316 | } |
| 317 | |
| 318 | fn parse_arg_list( |
| 319 | tokens: &[Token], |
| 320 | pos: &mut usize, |
| 321 | depth: &mut usize, |
| 322 | ) -> Result<Vec<SqlExpr>, ExprParseError> { |
| 323 | expect_token(tokens, pos, TokenKind::LParen, "(")?; |
| 324 | let mut args = Vec::new(); |
| 325 | if *pos < tokens.len() && tokens[*pos].kind == TokenKind::RParen { |
| 326 | *pos += 1; |
| 327 | return Ok(args); |
| 328 | } |
| 329 | loop { |
| 330 | args.push(parse_expr(tokens, pos, depth)?); |
| 331 | if *pos < tokens.len() && tokens[*pos].kind == TokenKind::Comma { |
| 332 | *pos += 1; |
| 333 | } else { |
| 334 | break; |
| 335 | } |
| 336 | } |
| 337 | expect_token(tokens, pos, TokenKind::RParen, ")")?; |
| 338 | Ok(args) |
| 339 | } |
| 340 | |
| 341 | // ── Helpers ─────────────────────────────────────────────────────────── |
| 342 |
no test coverage detected