use crate::{Identifier, Mode, Node, NodeID, Type};
use leo_span::{Span, Symbol};
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Member {
pub mode: Mode,
pub identifier: Identifier,
pub type_: Type,
pub span: Span,
pub id: NodeID,
}
impl Member {
pub fn name(&self) -> Symbol {
self.identifier.name
}
}
impl fmt::Display for Member {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self.mode {
Mode::None => write!(f, "{}: {}", self.identifier, self.type_),
_ => write!(f, "{} {} {}", self.mode, self.identifier, self.type_),
}
}
}
crate::simple_node_impl!(Member);