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

Method fold_expr

prqlc/prqlc/src/sql/pq/preprocess.rs:603–630  ·  view source on GitHub ↗
(&mut self, expr: Expr)

Source from the content-addressed store, hash-verified

601
602impl RqFold for Normalizer {
603 fn fold_expr(&mut self, expr: Expr) -> Result<Expr> {
604 let expr = Expr {
605 kind: rq::fold_expr_kind(self, expr.kind)?,
606 ..expr
607 };
608
609 if let ExprKind::Operator { name, args } = &expr.kind {
610 if name == "std.eq" && args.len() == 2 {
611 let (left, right) = (&args[0], &args[1]);
612 let span = expr.span;
613 let new_args = if let ExprKind::Literal(Literal::Null) = &left.kind {
614 vec![right.clone(), left.clone()]
615 } else {
616 vec![left.clone(), right.clone()]
617 };
618 let new_kind = ExprKind::Operator {
619 name: name.clone(),
620 args: new_args,
621 };
622 return Ok(Expr {
623 kind: new_kind,
624 span,
625 });
626 }
627 }
628
629 Ok(expr)
630 }
631}

Callers 2

collectMethod · 0.45
fold_sql_transformFunction · 0.45

Calls 2

lenMethod · 0.80
fold_expr_kindFunction · 0.50

Tested by

no test coverage detected