use super::*;
use crate::Type;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct CastExpression {
pub expression: Expression,
pub type_: Type,
pub span: Span,
pub id: NodeID,
}
impl fmt::Display for CastExpression {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
if self.expression.precedence() < 12 {
write!(f, "({})", self.expression)?;
} else {
write!(f, "{}", self.expression)?;
}
write!(f, " as {}", self.type_)
}
}
impl From<CastExpression> for Expression {
fn from(value: CastExpression) -> Self {
Expression::Cast(Box::new(value))
}
}
crate::simple_node_impl!(CastExpression);