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

  1. Use a value within usize range
  2. 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


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/bbecb8e7834d324a. Report an issue: GitHub.