use crate::ir::eval::fold_cast_literal;
use crate::ir::Expr;
pub(super) fn fold_cast(target: &crate::ir::DataType, value: &Expr) -> Option<Expr> {
if let Some(folded) = fold_cast_literal(target, value) {
return Some(folded);
}
match value {
Expr::Cast { value: inner, .. } => Some(Expr::Cast {
target: target.clone(),
value: inner.clone(),
}),
_ => None,
}
}