use serde::Serialize;
use super::*;
use crate::parser::UnaryOperator;
#[derive(Debug, PartialEq, Clone, Serialize)]
pub struct BoundUnaryOp {
pub op: UnaryOperator,
pub expr: Box<BoundExpr>,
pub return_type: DataType,
}
impl Binder {
pub fn bind_unary_op(
&mut self,
op: &UnaryOperator,
expr: &Expr,
) -> Result<BoundExpr, BindError> {
let bound_expr = self.bind_expr(expr)?;
Ok(BoundExpr::UnaryOp(BoundUnaryOp {
op: op.clone(),
return_type: bound_expr.return_type(),
expr: bound_expr.into(),
}))
}
}