This commit is contained in:
nora 2022-09-13 22:00:48 +02:00
parent 81f0b8d9cd
commit db1f1a5ad7
4 changed files with 25 additions and 22 deletions

View file

@ -53,7 +53,7 @@ impl Parse for Input {
enum FmtPart {
Literal(Ident, String),
Spec(Ident, FmtSpec, Expr),
Spec(Ident, FmtSpec, Box<Expr>),
}
impl std::fmt::Debug for FmtPart {
@ -101,7 +101,7 @@ where
let argument = self.fmt_spec()?;
let expr = self.expect_expr();
self.fmt_parts
.push(FmtPart::Spec(self.crate_ident.clone(), argument, expr));
.push(FmtPart::Spec(self.crate_ident.clone(), argument, Box::new(expr)));
}
other => {
next_string.push(other);
@ -230,6 +230,11 @@ mod tests {
syn::parse_str("1").unwrap()
}
fn fake_expr_box() -> Box<Expr> {
Box::new(syn::parse_str("1").unwrap())
}
fn fake_exprs(count: usize) -> Vec<Expr> {
vec![fake_expr(); count]
}
@ -258,7 +263,7 @@ mod tests {
FmtSpec {
..FmtSpec::default()
},
fake_expr()
fake_expr_box()
)]
);
}
@ -274,7 +279,7 @@ mod tests {
kind: FmtType::Debug,
..FmtSpec::default()
},
fake_expr()
fake_expr_box()
)]
);
}
@ -295,7 +300,7 @@ mod tests {
kind: FmtType::Debug,
..FmtSpec::default()
},
fake_expr()
fake_expr_box()
)]
);
}

View file

@ -15,7 +15,7 @@ impl Error {
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Alignment {
Left,
Center,
@ -33,13 +33,13 @@ impl Alignment {
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Align {
pub kind: Alignment,
pub fill: Option<char>,
}
#[derive(Debug, PartialEq, Default)]
#[derive(Debug, PartialEq, Eq, Default)]
pub enum Argument {
#[default]
Positional,
@ -47,7 +47,7 @@ pub enum Argument {
Keyword(String),
}
#[derive(Debug, PartialEq, Default)]
#[derive(Debug, PartialEq, Eq, Default)]
pub enum FmtType {
#[default]
Default,
@ -57,13 +57,13 @@ pub enum FmtType {
Other(String),
}
#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Eq)]
pub enum Precision {
Num(usize),
Asterisk,
}
#[derive(Debug, PartialEq, Default)]
#[derive(Debug, PartialEq, Eq, Default)]
pub struct FmtSpec {
pub arg: Argument,
pub align: Option<Align>,