use std::fmt;
use crate::compiler::state::{TypeInfo, TypeState};
use crate::compiler::{
Context, Expression,
expression::{Expr, Resolved},
};
#[derive(Debug, Clone, PartialEq)]
pub struct Group {
inner: Box<Expr>,
}
impl Group {
pub fn new(inner: Expr) -> Self {
Self {
inner: Box::new(inner),
}
}
}
impl Expression for Group {
fn resolve(&self, ctx: &mut Context) -> Resolved {
self.inner.resolve(ctx)
}
fn type_info(&self, state: &TypeState) -> TypeInfo {
self.inner.type_info(state)
}
}
impl fmt::Display for Group {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "({})", self.inner)
}
}