use crate::{Expression, Node, NodeID, NonNegativeNumber};
use leo_span::Span;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct TupleAccess {
pub tuple: Expression,
pub index: NonNegativeNumber,
pub span: Span,
pub id: NodeID,
}
impl fmt::Display for TupleAccess {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}.{}", self.tuple, self.index)
}
}
impl From<TupleAccess> for Expression {
fn from(value: TupleAccess) -> Self {
Expression::TupleAccess(Box::new(value))
}
}
crate::simple_node_impl!(TupleAccess);