MCPcopy Create free account
hub / github.com/PRQL/prql / try_restrict_range

Function try_restrict_range

prqlc/prqlc/src/semantic/ast_expand.rs:374–392  ·  view source on GitHub ↗

Restricts a tuple of form `{start=a, end=b}` into a range `a..b`.

(expr: pl::Expr)

Source from the content-addressed store, hash-verified

372
373/// Restricts a tuple of form `{start=a, end=b}` into a range `a..b`.
374pub fn try_restrict_range(expr: pl::Expr) -> Result<(pl::Expr, pl::Expr), pl::Expr> {
375 let pl::ExprKind::Tuple(fields) = expr.kind else {
376 return Err(expr);
377 };
378
379 if fields.len() != 2
380 || fields[0].alias.as_deref() != Some("start")
381 || fields[1].alias.as_deref() != Some("end")
382 {
383 return Err(pl::Expr {
384 kind: pl::ExprKind::Tuple(fields),
385 ..expr
386 });
387 }
388
389 let [start, end]: [pl::Expr; 2] = fields.try_into().unwrap();
390
391 Ok((start, end))
392}
393
394/// Returns None if the Expr is a null literal and Some(expr) otherwise.
395pub fn restrict_null_literal(expr: pl::Expr) -> Option<pl::Expr> {

Callers 1

resolve_special_funcMethod · 0.85

Calls 1

lenMethod · 0.80

Tested by

no test coverage detected