zed-industries/zed · error · syn::Error

invalid path argument

Error message

invalid path argument

What it means

Returned by the syn parser for #[gpui::test] macro arguments when a bare path meta (a path with no value or list) is encountered where a named argument like retries = N, seed = [...], or on_failure = "..." was expected. The invalid path argument is the macro input at fault.

Source

Thrown at crates/gpui_macros/src/test.rs:35

    on_failure_fn_name: proc_macro2::TokenStream,
}

impl Parse for Args {
    fn parse(input: ParseStream) -> Result<Self, syn::Error> {
        let mut seeds = Vec::<u64>::new();
        let mut max_retries = 0;
        let mut max_iterations = 1;
        let mut on_failure_fn_name = quote!(None);

        let metas = Punctuated::<Meta, Token![,]>::parse_terminated(input)?;

        for meta in metas {
            let ident = {
                let meta_path = match &meta {
                    Meta::NameValue(meta) => &meta.path,
                    Meta::List(list) => &list.path,
                    Meta::Path(path) => {
                        return Err(syn::Error::new(path.span(), "invalid path argument"));
                    }
                };
                let Some(ident) = meta_path.get_ident() else {
                    return Err(syn::Error::new(meta_path.span(), "unexpected path"));
                };
                ident.to_string()
            };

            match (&meta, ident.as_str()) {
                (Meta::NameValue(meta), "retries") => {
                    max_retries = parse_usize_from_expr(&meta.value)?
                }
                (Meta::NameValue(meta), "iterations") => {
                    max_iterations = parse_usize_from_expr(&meta.value)?
                }
                (Meta::NameValue(meta), "on_failure") => {
                    let Expr::Lit(ExprLit {
                        lit: Lit::Str(name),

View on GitHub (pinned to f4178619ac)

Solutions

  1. Use only supported simple option names (retries, iterations, seed, seeds, on_failure, ...)
  2. Fix the malformed attribute syntax
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/gpui_macros/src/test.rs:35 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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