mod display;
use crate::{utils::comma_terms, ApplyTermNode, IdentifierNode};
use std::{
fmt::{Display, Formatter},
ops::Range,
};
pub struct GenericArgumentNode<E> {
pub terms: Vec<ApplyTermNode<IdentifierNode, E>>,
pub range: Range<usize>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct GenericCall<E> {
pub base: E,
pub terms: Vec<ApplyTermNode<IdentifierNode, E>>,
pub range: Range<usize>,
}
impl<E> GenericCall<E> {
pub fn rebase(mut self: Box<Self>, base: E) -> Box<Self> {
self.base = base;
self
}
}