zed-industries/zed · error · syn::Error
failed to parse integer
Error message
failed to parse integer
What it means
Returned by parse_usize_from_expr when the integer literal in a #[gpui::test] argument (e.g. retries = ...) is syntactically an integer but base10_parse fails — typically because it overflows usize or uses an unsupported base. The literal itself is the fault.
Source
Thrown at crates/gpui_macros/src/test.rs:316
#on_failure_fn_name,
);
}
}
};
outer_fn.attrs.extend(inner_fn_attributes);
Ok(TokenStream::from(quote!(#outer_fn)))
}
fn parse_usize_from_expr(expr: &Expr) -> Result<usize, syn::Error> {
let Expr::Lit(ExprLit {
lit: Lit::Int(int), ..
}) = expr
else {
return Err(syn::Error::new(expr.span(), "expected an integer"));
};
int.base10_parse()
.map_err(|_| syn::Error::new(int.span(), "failed to parse integer"))
}
fn parse_u64_array(meta_list: &MetaList) -> Result<Vec<u64>, syn::Error> {
let mut result = Vec::new();
let tokens = &meta_list.tokens;
let parser = |input: ParseStream| {
let exprs = Punctuated::<Expr, Token![,]>::parse_terminated(input)?;
for expr in exprs {
if let Expr::Lit(ExprLit {
lit: Lit::Int(int), ..
}) = expr
{
let value: usize = int.base10_parse()?;
result.push(value as u64);
} else {
return Err(syn::Error::new(expr.span(), "expected an integer"));
}
}View on GitHub (pinned to f4178619ac)
Solutions
- Use a value within usize range
- Write the literal in base 10 without suffixes or bases the parser rejects
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/gpui_macros/src/test.rs:316 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/bbecb8e7834d324a.
Report an issue: GitHub.