use crate::{Expression, Node, NodeID, Statement};
use leo_span::Span;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Clone, PartialEq, Eq, Serialize, Deserialize, Debug)]
pub struct ReturnStatement {
pub expression: Expression,
pub span: Span,
pub id: NodeID,
}
impl fmt::Display for ReturnStatement {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
if let Expression::Unit(..) = self.expression {
write!(f, "return")
} else {
write!(f, "return {}", self.expression)
}
}
}
impl From<ReturnStatement> for Statement {
fn from(value: ReturnStatement) -> Self {
Statement::Return(value)
}
}
crate::simple_node_impl!(ReturnStatement);