#[cfg(feature = "pretty-print")]
mod display;
use super::*;
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SubscriptNode {
pub index0: bool,
pub terms: Vec<SubscriptTermNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum SubscriptTermNode {
Index(ExpressionNode),
Slice(SubscriptSliceNode),
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SubscriptSliceNode {
pub start: Option<ExpressionNode>,
pub end: Option<ExpressionNode>,
pub step: Option<ExpressionNode>,
pub span: Range<u32>,
}
impl SubscriptNode {
pub fn method(&self) -> &'static str {
if self.index0 { "subscript0" } else { "subscript1" }
}
}