use crate::{CodeBuffer, Expression};
pub trait WithParams {
fn params(&self) -> &[Box<dyn Expression>];
fn with_param<P>(self, param: P) -> Self
where
P: 'static + Expression;
fn add_param<P>(&mut self, param: P)
where
P: 'static + Expression;
fn write_params(&self, b: &mut CodeBuffer) {
if let Some((first, rest)) = self.params().split_first() {
first.write(b);
for param in rest {
b.write(", ");
param.write(b);
}
}
}
fn write_params_with_parens(&self, b: &mut CodeBuffer) {
b.write("(");
self.write_params(b);
b.write(")");
}
}